]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-97966: Restore prior expectation that uname_result._fields and ._asdict would...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sat, 26 Nov 2022 13:53:00 +0000 (05:53 -0800)
committerGitHub <noreply@github.com>
Sat, 26 Nov 2022 13:53:00 +0000 (05:53 -0800)
(cherry picked from commit dc063a25d29840d863b15c86fdab15b4a1894c73)

Co-authored-by: Jason R. Coombs <jaraco@jaraco.com>
Lib/platform.py
Lib/test/test_platform.py
Misc/NEWS.d/next/Library/2022-10-16-18-52-00.gh-issue-97966.humlhz.rst [new file with mode: 0644]

index c272c407c77768323198747107e1873ab270bb84..9e9f3af3ce4b27b65cb259138a3d0bbe405f4ff3 100755 (executable)
@@ -785,6 +785,8 @@ class uname_result(
     except when needed.
     """
 
+    _fields = ('system', 'node', 'release', 'version', 'machine', 'processor')
+
     @functools.cached_property
     def processor(self):
         return _unknown_as_blank(_Processor.get())
@@ -798,7 +800,7 @@ class uname_result(
     @classmethod
     def _make(cls, iterable):
         # override factory to affect length check
-        num_fields = len(cls._fields)
+        num_fields = len(cls._fields) - 1
         result = cls.__new__(cls, *iterable)
         if len(result) != num_fields + 1:
             msg = f'Expected {num_fields} arguments, got {len(result)}'
@@ -812,7 +814,7 @@ class uname_result(
         return len(tuple(iter(self)))
 
     def __reduce__(self):
-        return uname_result, tuple(self)[:len(self._fields)]
+        return uname_result, tuple(self)[:len(self._fields) - 1]
 
 
 _uname_cache = None
index 9b2cd201f3c2fe69bb9faa8958644d05d370b7bb..c9f27575b51575bb4a59aab6bd57ecc5290598e4 100644 (file)
@@ -269,6 +269,14 @@ class PlatformTest(unittest.TestCase):
         self.assertEqual(res[:], expected)
         self.assertEqual(res[:5], expected[:5])
 
+    def test_uname_fields(self):
+        self.assertIn('processor', platform.uname()._fields)
+
+    def test_uname_asdict(self):
+        res = platform.uname()._asdict()
+        self.assertEqual(len(res), 6)
+        self.assertIn('processor', res)
+
     @unittest.skipIf(sys.platform in ['win32', 'OpenVMS'], "uname -p not used")
     @support.requires_subprocess()
     def test_uname_processor(self):
diff --git a/Misc/NEWS.d/next/Library/2022-10-16-18-52-00.gh-issue-97966.humlhz.rst b/Misc/NEWS.d/next/Library/2022-10-16-18-52-00.gh-issue-97966.humlhz.rst
new file mode 100644 (file)
index 0000000..b725465
--- /dev/null
@@ -0,0 +1,2 @@
+On ``uname_result``, restored expectation that ``_fields`` and ``_asdict``
+would include all six properties including ``processor``.