STINNER Victor <[email protected]> added the comment:
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.
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue28468>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com