From b599af3b64473611288918deb4f362cf16aea608 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E4=B9=9D=E9=BC=8E?= <109224573@qq.com> Date: Mon, 17 May 2021 12:15:03 +0800 Subject: sys._home -> sys.base_exec_prefix --- distutils/command/build_ext.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/distutils/command/build_ext.py b/distutils/command/build_ext.py index bbb34833..55ea0cb9 100644 --- a/distutils/command/build_ext.py +++ b/distutils/command/build_ext.py @@ -202,9 +202,7 @@ class build_ext(Command): # Append the source distribution include and library directories, # this allows distutils on windows to work in the source tree self.include_dirs.append(os.path.dirname(get_config_h_filename())) - _sys_home = getattr(sys, '_home', None) - if _sys_home: - self.library_dirs.append(_sys_home) + self.library_dirs.append(sys.base_exec_prefix) # Use the .lib files for the correct architecture if self.plat_name == 'win32': -- cgit v1.2.1 From 45a280caafc8e072f6b126c566864bac6c2a3db0 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 12 Dec 2021 11:09:26 -0500 Subject: Remove LooseVersion.__init__ as it's identical to super().__init__ --- distutils/version.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/distutils/version.py b/distutils/version.py index c33bebae..f09889ac 100644 --- a/distutils/version.py +++ b/distutils/version.py @@ -301,11 +301,6 @@ class LooseVersion (Version): component_re = re.compile(r'(\d+ | [a-z]+ | \.)', re.VERBOSE) - def __init__ (self, vstring=None): - if vstring: - self.parse(vstring) - - def parse (self, vstring): # I've given up on thinking I can reconstruct the version string # from the parsed tuple -- so I just store the string here for -- cgit v1.2.1 From 1701579e0827317d8888c2254a17b5786b6b5246 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 12 Dec 2021 11:20:19 -0500 Subject: Mark Version classes as deprecated. --- distutils/version.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/distutils/version.py b/distutils/version.py index f09889ac..47d88917 100644 --- a/distutils/version.py +++ b/distutils/version.py @@ -27,6 +27,8 @@ Every version number class implements the following interface: """ import re +import warnings + class Version: """Abstract base class for version numbering classes. Just provides @@ -36,6 +38,12 @@ class Version: """ def __init__ (self, vstring=None): + warnings.warn( + "distutils Version classes are deprecated. " + "Use packaging.version instead.", + DeprecationWarning, + stacklevel=2, + ) if vstring: self.parse(vstring) -- cgit v1.2.1 From d8c16238d73ca844dfe902708e73363db186b1f7 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 12 Dec 2021 11:27:01 -0500 Subject: Suppress deprecation warnings in distutils test suite. --- distutils/cygwinccompiler.py | 8 +++++--- distutils/tests/test_version.py | 8 ++++++++ distutils/version.py | 15 ++++++++++++++- distutils/versionpredicate.py | 7 +++++-- 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/distutils/cygwinccompiler.py b/distutils/cygwinccompiler.py index f80ca622..ad6cc44b 100644 --- a/distutils/cygwinccompiler.py +++ b/distutils/cygwinccompiler.py @@ -53,6 +53,7 @@ import copy from subprocess import Popen, PIPE, check_output import re +import distutils.version from distutils.unixccompiler import UnixCCompiler from distutils.file_util import write_file from distutils.errors import (DistutilsExecError, CCompilerError, @@ -405,9 +406,10 @@ def _find_exe_version(cmd): result = RE_VERSION.search(out_string) if result is None: return None - # LooseVersion works with strings - # so we need to decode our bytes - return LooseVersion(result.group(1).decode()) + # LooseVersion works with strings; decode + ver_str = result.group(1).decode() + with distutils.version.suppress_known_deprecation(): + return LooseVersion(ver_str) def get_versions(): """ Try to find out the versions of gcc, ld and dllwrap. diff --git a/distutils/tests/test_version.py b/distutils/tests/test_version.py index 8671cd2f..d50cca1f 100644 --- a/distutils/tests/test_version.py +++ b/distutils/tests/test_version.py @@ -1,11 +1,19 @@ """Tests for distutils.version.""" import unittest +import distutils from distutils.version import LooseVersion from distutils.version import StrictVersion from test.support import run_unittest class VersionTestCase(unittest.TestCase): + def setUp(self): + self.ctx = distutils.version.suppress_known_deprecation() + self.ctx.__enter__() + + def tearDown(self): + self.ctx.__exit__(None, None, None) + def test_prerelease(self): version = StrictVersion('1.2.3a1') self.assertEqual(version.version, (1, 2, 3)) diff --git a/distutils/version.py b/distutils/version.py index 47d88917..35e181db 100644 --- a/distutils/version.py +++ b/distutils/version.py @@ -28,6 +28,18 @@ Every version number class implements the following interface: import re import warnings +import contextlib + + +@contextlib.contextmanager +def suppress_known_deprecation(): + with warnings.catch_warnings(record=True) as ctx: + warnings.filterwarnings( + action='default', + category=DeprecationWarning, + message="distutils Version classes are deprecated.", + ) + yield ctx class Version: @@ -173,7 +185,8 @@ class StrictVersion (Version): def _cmp (self, other): if isinstance(other, str): - other = StrictVersion(other) + with suppress_known_deprecation(): + other = StrictVersion(other) elif not isinstance(other, StrictVersion): return NotImplemented diff --git a/distutils/versionpredicate.py b/distutils/versionpredicate.py index 062c98f2..55f25d91 100644 --- a/distutils/versionpredicate.py +++ b/distutils/versionpredicate.py @@ -23,7 +23,9 @@ def splitUp(pred): if not res: raise ValueError("bad package restriction syntax: %r" % pred) comp, verStr = res.groups() - return (comp, distutils.version.StrictVersion(verStr)) + with distutils.version.suppress_known_deprecation(): + other = distutils.version.StrictVersion(verStr) + return (comp, other) compmap = {"<": operator.lt, "<=": operator.le, "==": operator.eq, ">": operator.gt, ">=": operator.ge, "!=": operator.ne} @@ -162,5 +164,6 @@ def split_provision(value): raise ValueError("illegal provides specification: %r" % value) ver = m.group(2) or None if ver: - ver = distutils.version.StrictVersion(ver) + with distutils.version.suppress_known_deprecation(): + ver = distutils.version.StrictVersion(ver) return m.group(1), ver -- cgit v1.2.1