Skip to content

Commit dc063a2

Browse files
authored
gh-97966: Restore prior expectation that uname_result._fields and ._asdict would include the processor. (gh-98343)
1 parent e35ca41 commit dc063a2

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

Lib/platform.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -847,6 +847,8 @@ class uname_result(
847847
except when needed.
848848
"""
849849

850+
_fields = ('system', 'node', 'release', 'version', 'machine', 'processor')
851+
850852
@functools.cached_property
851853
def processor(self):
852854
return _unknown_as_blank(_Processor.get())
@@ -860,7 +862,7 @@ def __iter__(self):
860862
@classmethod
861863
def _make(cls, iterable):
862864
# override factory to affect length check
863-
num_fields = len(cls._fields)
865+
num_fields = len(cls._fields) - 1
864866
result = cls.__new__(cls, *iterable)
865867
if len(result) != num_fields + 1:
866868
msg = f'Expected {num_fields} arguments, got {len(result)}'
@@ -874,7 +876,7 @@ def __len__(self):
874876
return len(tuple(iter(self)))
875877

876878
def __reduce__(self):
877-
return uname_result, tuple(self)[:len(self._fields)]
879+
return uname_result, tuple(self)[:len(self._fields) - 1]
878880

879881

880882
_uname_cache = None

Lib/test/test_platform.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,14 @@ def test_uname_slices(self):
277277
self.assertEqual(res[:], expected)
278278
self.assertEqual(res[:5], expected[:5])
279279

280+
def test_uname_fields(self):
281+
self.assertIn('processor', platform.uname()._fields)
282+
283+
def test_uname_asdict(self):
284+
res = platform.uname()._asdict()
285+
self.assertEqual(len(res), 6)
286+
self.assertIn('processor', res)
287+
280288
@unittest.skipIf(sys.platform in ['win32', 'OpenVMS'], "uname -p not used")
281289
@support.requires_subprocess()
282290
def test_uname_processor(self):
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
On ``uname_result``, restored expectation that ``_fields`` and ``_asdict``
2+
would include all six properties including ``processor``.

0 commit comments

Comments
 (0)