gh-136066: simplify platform._platform() (#136069)

This commit is contained in:
Bénédikt Tran 2025-06-29 09:56:52 +02:00 committed by GitHub
parent 30ba03ea8e
commit bd928a3035
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 21 additions and 17 deletions

View file

@ -612,6 +612,9 @@ def system_alias(system, release, version):
### Various internal helpers
# Table for cleaning up characters in filenames.
_SIMPLE_SUBSTITUTIONS = str.maketrans(r' /\:;"()', r'_-------')
def _platform(*args):
""" Helper to format the platform string in a filename
@ -621,28 +624,13 @@ def _platform(*args):
platform = '-'.join(x.strip() for x in filter(len, args))
# Cleanup some possible filename obstacles...
platform = platform.replace(' ', '_')
platform = platform.replace('/', '-')
platform = platform.replace('\\', '-')
platform = platform.replace(':', '-')
platform = platform.replace(';', '-')
platform = platform.replace('"', '-')
platform = platform.replace('(', '-')
platform = platform.replace(')', '-')
platform = platform.translate(_SIMPLE_SUBSTITUTIONS)
# No need to report 'unknown' information...
platform = platform.replace('unknown', '')
# Fold '--'s and remove trailing '-'
while True:
cleaned = platform.replace('--', '-')
if cleaned == platform:
break
platform = cleaned
while platform and platform[-1] == '-':
platform = platform[:-1]
return platform
return re.sub(r'-{2,}', '-', platform).rstrip('-')
def _node(default=''):

View file

@ -133,6 +133,22 @@ class PlatformTest(unittest.TestCase):
for terse in (False, True):
res = platform.platform(aliased, terse)
def test__platform(self):
for src, res in [
('foo bar', 'foo_bar'),
(
'1/2\\3:4;5"6(7)8(7)6"5;4:3\\2/1',
'1-2-3-4-5-6-7-8-7-6-5-4-3-2-1'
),
('--', ''),
('-f', '-f'),
('-foo----', '-foo'),
('--foo---', '-foo'),
('---foo--', '-foo'),
]:
with self.subTest(src=src):
self.assertEqual(platform._platform(src), res)
def test_system(self):
res = platform.system()