Skip to content

Commit

Permalink
bpo-26544: Get rid of dependence from distutils in platform. (GH-8356)
Browse files Browse the repository at this point in the history
  • Loading branch information
serhiy-storchaka committed Aug 27, 2018
1 parent b44a1d4 commit 7d81e8f
Showing 1 changed file with 30 additions and 1 deletion.
31 changes: 30 additions & 1 deletion Lib/platform.py
Expand Up @@ -132,6 +132,35 @@
# Standard Unix uses /dev/null
DEV_NULL = '/dev/null'

# Helper for comparing two version number strings.
# Based on the description of the PHP's version_compare():
# http://php.net/manual/en/function.version-compare.php

_ver_stages = {
# any string not found in this dict, will get 0 assigned
'dev': 10,
'alpha': 20, 'a': 20,
'beta': 30, 'b': 30,
'c': 40,
'RC': 50, 'rc': 50,
# number, will get 100 assigned
'pl': 200, 'p': 200,
}

_component_re = re.compile(r'([0-9]+|[._+-])')

def _comparable_version(version):
result = []
for v in _component_re.split(version):
if v not in '._+-':
try:
v = int(v, 10)
t = 100
except ValueError:
t = _ver_stages.get(v, 0)
result.extend((t, v))
return result

### Platform specific APIs

_libc_search = re.compile(b'(__libc_init)'
Expand All @@ -155,7 +184,7 @@ def libc_ver(executable=sys.executable, lib='', version='', chunksize=16384):
The file is read and scanned in chunks of chunksize bytes.
"""
from distutils.version import LooseVersion as V
V = _comparable_version
if hasattr(os.path, 'realpath'):
# Python 2.2 introduced os.path.realpath(); it is used
# here to work around problems with Cygwin not being
Expand Down

0 comments on commit 7d81e8f

Please sign in to comment.