Message381758
The distro module has been mentioned multiple times. I looked at its code base and I suggest to not add it to the Python stdlib. It contains code specific to some Linux distributions. Examples.
elif 'ubuntu_codename' in props:
# Same as above but a non-standard field name used on older Ubuntus
props['codename'] = props['ubuntu_codename']
NORMALIZED_LSB_ID = {
'enterpriseenterpriseas': 'oracle', # Oracle Enterprise Linux 4
'enterpriseenterpriseserver': 'oracle', # Oracle Linux 5
'redhatenterpriseworkstation': 'rhel', # RHEL 6, 7 Workstation
'redhatenterpriseserver': 'rhel', # RHEL 6, 7 Server
'redhatenterprisecomputenode': 'rhel', # RHEL 6 ComputeNode
}
basenames = ['SuSE-release',
'arch-release',
'base-release',
'centos-release',
'fedora-release',
'gentoo-release',
'mageia-release',
'mandrake-release',
'mandriva-release',
'mandrivalinux-release',
'manjaro-release',
'oracle-release',
'redhat-release',
'sl-release',
'slackware-version']
platform.linux_distribution() has been removed because it was difficult to keep the implementation up to date, whereas Python are rarely or not updated during the lifecycle of a Linux distribution version.
--
The os-release file is different: the filename is standardized and the file format is standardized. I expect really minor maintenance on a function parsing it.
Note: distro doesn't specify an encoding when opening os-release, but use the locale encoding. I suggest to use UTF-8.
The distro module remains useful since it tries to better API. For example, variable names are converted to lowercase and it extracts the codebase from the version variable:
elif 'version' in props:
# If there is no version_codename, parse it from the version
codename = re.search(r'(\(\D+\))|,(\s+)?\D+', props['version'])
if codename:
codename = codename.group()
codename = codename.strip('()')
codename = codename.strip(',')
codename = codename.strip()
# codename appears within paranthese.
props['codename'] = codename
But again, I don't think that we should implement such heuristics (code specific to some Linux distributions) in the stdlib, to minimize the maintenance burden. |
|
Date |
User |
Action |
Args |
2020-11-24 16:51:15 | vstinner | set | recipients:
+ vstinner, doko, christian.heimes, r.david.murray, pmpp, matrixise, cstratak |
2020-11-24 16:51:15 | vstinner | set | messageid: <1606236675.09.0.546228007943.issue28468@roundup.psfhosted.org> |
2020-11-24 16:51:15 | vstinner | link | issue28468 messages |
2020-11-24 16:51:14 | vstinner | create | |
|