mirror of
https://github.com/python/cpython.git
synced 2026-01-06 15:32:22 +00:00
Use sys.version_info instead of sys.version in packaging.
The contents of this attribute are an implementation detail, as documented for #9442, so we should not parse it, to support non-CPython VMs with distutils2 in the future. Unfortunately, one use comes directly from PEP 345, so an edit will have to be agreed before fixing the code (see comment in p7g.markers). Other remaining uses are found in p7g.compiler and could be replaced by the platform module (which also parses sys.version, but then it wouldn’t be my fault :)
This commit is contained in:
parent
ea0b1edf45
commit
9f90a731eb
8 changed files with 23 additions and 17 deletions
|
|
@ -7,9 +7,8 @@
|
|||
import os
|
||||
import msilib
|
||||
|
||||
|
||||
from sysconfig import get_python_version
|
||||
from shutil import rmtree
|
||||
from sysconfig import get_python_version
|
||||
from packaging.command.cmd import Command
|
||||
from packaging.version import NormalizedVersion
|
||||
from packaging.errors import PackagingOptionError
|
||||
|
|
@ -204,7 +203,7 @@ def run(self):
|
|||
target_version = self.target_version
|
||||
if not target_version:
|
||||
assert self.skip_build, "Should have already checked this"
|
||||
target_version = sys.version[0:3]
|
||||
target_version = '%s.%s' % sys.version_info[:2]
|
||||
plat_specifier = ".%s-%s" % (self.plat_name, target_version)
|
||||
build = self.get_finalized_command('build')
|
||||
build.build_lib = os.path.join(build.build_base,
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ def run(self):
|
|||
target_version = self.target_version
|
||||
if not target_version:
|
||||
assert self.skip_build, "Should have already checked this"
|
||||
target_version = sys.version[0:3]
|
||||
target_version = '%s.%s' % sys.version_info[:2]
|
||||
plat_specifier = ".%s-%s" % (self.plat_name, target_version)
|
||||
build = self.get_finalized_command('build')
|
||||
build.build_lib = os.path.join(build.build_base,
|
||||
|
|
|
|||
|
|
@ -82,8 +82,8 @@ def finalize_options(self):
|
|||
raise PackagingOptionError(
|
||||
"--plat-name only supported on Windows (try "
|
||||
"using './configure --help' on your platform)")
|
||||
|
||||
plat_specifier = ".%s-%s" % (self.plat_name, sys.version[0:3])
|
||||
pyversion = '%s.%s' % sys.version_info[:2]
|
||||
plat_specifier = ".%s-%s" % (self.plat_name, pyversion)
|
||||
|
||||
# Make it so Python 2.x and Python 2.x with --with-pydebug don't
|
||||
# share the same build directories. Doing so confuses the build
|
||||
|
|
@ -116,7 +116,7 @@ def finalize_options(self):
|
|||
'temp' + plat_specifier)
|
||||
if self.build_scripts is None:
|
||||
self.build_scripts = os.path.join(self.build_base,
|
||||
'scripts-' + sys.version[0:3])
|
||||
'scripts-' + pyversion)
|
||||
|
||||
if self.executable is None:
|
||||
self.executable = os.path.normpath(sys.executable)
|
||||
|
|
|
|||
|
|
@ -242,7 +242,7 @@ def finalize_options(self):
|
|||
# $platbase in the other installation directories and not worry
|
||||
# about needing recursive variable expansion (shudder).
|
||||
|
||||
py_version = sys.version.split()[0]
|
||||
py_version = '%s.%s' % sys.version_info[:2]
|
||||
prefix, exec_prefix, srcdir, projectbase = get_config_vars(
|
||||
'prefix', 'exec_prefix', 'srcdir', 'projectbase')
|
||||
|
||||
|
|
|
|||
|
|
@ -56,6 +56,10 @@
|
|||
from packaging.util import get_compiler_versions
|
||||
import sysconfig
|
||||
|
||||
# TODO use platform instead of sys.version
|
||||
# (platform does unholy sys.version parsing too, but at least it gives other
|
||||
# VMs a chance to override the returned values)
|
||||
|
||||
|
||||
def get_msvcr():
|
||||
"""Include the appropriate MSVC runtime library if Python was built
|
||||
|
|
|
|||
|
|
@ -1,11 +1,10 @@
|
|||
"""Parser for the environment markers micro-language defined in PEP 345."""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import platform
|
||||
import os
|
||||
|
||||
from tokenize import tokenize, NAME, OP, STRING, ENDMARKER, ENCODING
|
||||
from io import BytesIO
|
||||
from tokenize import tokenize, NAME, OP, STRING, ENDMARKER, ENCODING
|
||||
|
||||
__all__ = ['interpret']
|
||||
|
||||
|
|
@ -27,12 +26,15 @@ def _operate(operation, x, y):
|
|||
|
||||
# restricted set of variables
|
||||
_VARS = {'sys.platform': sys.platform,
|
||||
'python_version': sys.version[:3],
|
||||
'python_version': '%s.%s' % sys.version_info[:2],
|
||||
# FIXME parsing sys.platform is not reliable, but there is no other
|
||||
# way to get e.g. 2.7.2+, and the PEP is defined with sys.version
|
||||
'python_full_version': sys.version.split(' ', 1)[0],
|
||||
'os.name': os.name,
|
||||
'platform.version': platform.version(),
|
||||
'platform.machine': platform.machine(),
|
||||
'platform.python_implementation': platform.python_implementation()}
|
||||
'platform.python_implementation': platform.python_implementation(),
|
||||
}
|
||||
|
||||
|
||||
class _Operation:
|
||||
|
|
|
|||
|
|
@ -35,8 +35,8 @@
|
|||
DEFAULT_SIMPLE_INDEX_URL = "http://a.pypi.python.org/simple/"
|
||||
DEFAULT_HOSTS = ("*",)
|
||||
SOCKET_TIMEOUT = 15
|
||||
USER_AGENT = "Python-urllib/%s packaging/%s" % (
|
||||
sys.version[:3], packaging_version)
|
||||
USER_AGENT = "Python-urllib/%s.%s packaging/%s" % (
|
||||
sys.version_info[0], sys.version_info[1], packaging_version)
|
||||
|
||||
# -- Regexps -------------------------------------------------
|
||||
EGG_FRAGMENT = re.compile(r'^egg=([-A-Za-z0-9_.]+)$')
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@ def test_finalize_options(self):
|
|||
# build_platlib is 'build/lib.platform-x.x[-pydebug]'
|
||||
# examples:
|
||||
# build/lib.macosx-10.3-i386-2.7
|
||||
plat_spec = '.%s-%s' % (cmd.plat_name, sys.version[0:3])
|
||||
pyversion = '%s.%s' % sys.version_info[:2]
|
||||
plat_spec = '.%s-%s' % (cmd.plat_name, pyversion)
|
||||
if hasattr(sys, 'gettotalrefcount'):
|
||||
self.assertTrue(cmd.build_platlib.endswith('-pydebug'))
|
||||
plat_spec += '-pydebug'
|
||||
|
|
@ -41,7 +42,7 @@ def test_finalize_options(self):
|
|||
self.assertEqual(cmd.build_temp, wanted)
|
||||
|
||||
# build_scripts is build/scripts-x.x
|
||||
wanted = os.path.join(cmd.build_base, 'scripts-' + sys.version[0:3])
|
||||
wanted = os.path.join(cmd.build_base, 'scripts-' + pyversion)
|
||||
self.assertEqual(cmd.build_scripts, wanted)
|
||||
|
||||
# executable is os.path.normpath(sys.executable)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue