From f26857f197a776dec621333cc8f259d3d8eed320 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Fri, 8 May 2020 19:47:57 -0400 Subject: [PATCH 1/2] bpo-40570: Improve compatibility of uname_result with late-bound .platform. --- Lib/platform.py | 7 ++++--- Lib/test/test_platform.py | 7 +++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Lib/platform.py b/Lib/platform.py index 049c2c6ef25a1b..e9f50ab622d316 100755 --- a/Lib/platform.py +++ b/Lib/platform.py @@ -798,9 +798,10 @@ def __iter__(self): ) def __getitem__(self, key): - if key == 5: - return self.processor - return super().__getitem__(key) + return tuple(iter(self))[key] + + def __len__(self): + return len(tuple(iter(self))) _uname_cache = None diff --git a/Lib/test/test_platform.py b/Lib/test/test_platform.py index 7664b38a720a7e..6960082e923190 100644 --- a/Lib/test/test_platform.py +++ b/Lib/test/test_platform.py @@ -154,11 +154,18 @@ def test_uname(self): res = platform.uname() self.assertTrue(any(res)) self.assertEqual(res[0], res.system) + self.assertEqual(res[-6], res.system) self.assertEqual(res[1], res.node) + self.assertEqual(res[-5], res.node) self.assertEqual(res[2], res.release) + self.assertEqual(res[-4], res.release) self.assertEqual(res[3], res.version) + self.assertEqual(res[-3], res.version) self.assertEqual(res[4], res.machine) + self.assertEqual(res[-2], res.machine) self.assertEqual(res[5], res.processor) + self.assertEqual(res[-1], res.processor) + self.assertEqual(len(res), 6) @unittest.skipIf(sys.platform in ['win32', 'OpenVMS'], "uname -p not used") def test_uname_processor(self): From 10c3389528eda7e7beb3ed666b34d0fd75520631 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Fri, 8 May 2020 20:16:47 -0400 Subject: [PATCH 2/2] Add test capturing ability to cast uname to a tuple. --- Lib/test/test_platform.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Lib/test/test_platform.py b/Lib/test/test_platform.py index 6960082e923190..a5c35dff79b8bc 100644 --- a/Lib/test/test_platform.py +++ b/Lib/test/test_platform.py @@ -167,6 +167,14 @@ def test_uname(self): self.assertEqual(res[-1], res.processor) self.assertEqual(len(res), 6) + def test_uname_cast_to_tuple(self): + res = platform.uname() + expected = ( + res.system, res.node, res.release, res.version, res.machine, + res.processor, + ) + self.assertEqual(tuple(res), expected) + @unittest.skipIf(sys.platform in ['win32', 'OpenVMS'], "uname -p not used") def test_uname_processor(self): """ 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