Skip to content

Commit 2c3d508

Browse files
authored
bpo-40570: Improve compatibility of uname_result with late-bound .platform (#20015)
* bpo-40570: Improve compatibility of uname_result with late-bound .platform. * Add test capturing ability to cast uname to a tuple.
1 parent 77c6146 commit 2c3d508

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

Lib/platform.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -798,9 +798,10 @@ def __iter__(self):
798798
)
799799

800800
def __getitem__(self, key):
801-
if key == 5:
802-
return self.processor
803-
return super().__getitem__(key)
801+
return tuple(iter(self))[key]
802+
803+
def __len__(self):
804+
return len(tuple(iter(self)))
804805

805806

806807
_uname_cache = None

Lib/test/test_platform.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,11 +154,26 @@ def test_uname(self):
154154
res = platform.uname()
155155
self.assertTrue(any(res))
156156
self.assertEqual(res[0], res.system)
157+
self.assertEqual(res[-6], res.system)
157158
self.assertEqual(res[1], res.node)
159+
self.assertEqual(res[-5], res.node)
158160
self.assertEqual(res[2], res.release)
161+
self.assertEqual(res[-4], res.release)
159162
self.assertEqual(res[3], res.version)
163+
self.assertEqual(res[-3], res.version)
160164
self.assertEqual(res[4], res.machine)
165+
self.assertEqual(res[-2], res.machine)
161166
self.assertEqual(res[5], res.processor)
167+
self.assertEqual(res[-1], res.processor)
168+
self.assertEqual(len(res), 6)
169+
170+
def test_uname_cast_to_tuple(self):
171+
res = platform.uname()
172+
expected = (
173+
res.system, res.node, res.release, res.version, res.machine,
174+
res.processor,
175+
)
176+
self.assertEqual(tuple(res), expected)
162177

163178
@unittest.skipIf(sys.platform in ['win32', 'OpenVMS'], "uname -p not used")
164179
def test_uname_processor(self):

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy