From 337a4381bba90f38f4630eeabf7eaa4a34d90764 Mon Sep 17 00:00:00 2001 From: Itamar Turner-Trauring Date: Fri, 24 Jul 2020 14:31:36 -0400 Subject: [PATCH] Finish port to Python 3. --- misc/python3/ratchet-passing | 10 ++++++++++ newsfragments/3357.minor | 1 + src/allmydata/test/test_version.py | 8 ++++++-- src/allmydata/util/verlib.py | 12 +++++++++++- src/allmydata/version_checks.py | 14 ++++++++++++-- 5 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 newsfragments/3357.minor diff --git a/misc/python3/ratchet-passing b/misc/python3/ratchet-passing index 293733b2b..522a9fc6d 100644 --- a/misc/python3/ratchet-passing +++ b/misc/python3/ratchet-passing @@ -45,3 +45,13 @@ allmydata.test.test_observer.Observer.test_oneshot_fireagain allmydata.test.test_python3.Python3PortingEffortTests.test_finished_porting allmydata.test.test_python3.Python3PortingEffortTests.test_ported_modules_distinct allmydata.test.test_python3.Python3PortingEffortTests.test_ported_modules_exist +allmydata.test.test_version.CheckRequirement.test_cross_check +allmydata.test.test_version.CheckRequirement.test_cross_check_unparseable_versions +allmydata.test.test_version.CheckRequirement.test_extract_openssl_version +allmydata.test.test_version.CheckRequirement.test_packages_from_pkg_resources +allmydata.test.test_version.T.test_report_import_error +allmydata.test.test_version.VersionTestCase.test_basic_versions +allmydata.test.test_version.VersionTestCase.test_comparison +allmydata.test.test_version.VersionTestCase.test_from_parts +allmydata.test.test_version.VersionTestCase.test_irrational_versions +allmydata.test.test_version.VersionTestCase.test_suggest_normalized_version diff --git a/newsfragments/3357.minor b/newsfragments/3357.minor new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/newsfragments/3357.minor @@ -0,0 +1 @@ + diff --git a/src/allmydata/test/test_version.py b/src/allmydata/test/test_version.py index 5f397d9f9..1b447e346 100644 --- a/src/allmydata/test/test_version.py +++ b/src/allmydata/test/test_version.py @@ -8,6 +8,10 @@ from __future__ import division from __future__ import print_function from __future__ import unicode_literals +from future.utils import PY2 +if PY2: + from builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, int, list, object, range, str, max, min # noqa: F401 + import sys import pkg_resources from operator import ( @@ -88,7 +92,7 @@ class CheckRequirement(unittest.TestCase): res = cross_check({}, [("foo", ("unparseable", "", None))]) self.failUnlessEqual(len(res), 1) - self.failUnlessIn("version 'unparseable'", res[0]) + self.assertTrue(("version 'unparseable'" in res[0]) or ("version u'unparseable'" in res[0])) self.failUnlessIn("was not found by pkg_resources", res[0]) res = cross_check({"distribute": ("1.0", "/somewhere")}, [("setuptools", ("2.0", "/somewhere", "distribute"))]) @@ -129,7 +133,7 @@ class CheckRequirement(unittest.TestCase): res = cross_check({"foo": ("1.0", "/somewhere")}, [("foo", ("2.0", "/somewhere_different", None))]) self.failUnlessEqual(len(res), 1) - self.failUnlessIn("but version '2.0'", res[0]) + self.assertTrue(("but version '2.0'" in res[0]) or ("but version u'2.0'" in res[0])) def test_extract_openssl_version(self): self.failUnlessEqual(extract_openssl_version(MockSSL("")), diff --git a/src/allmydata/util/verlib.py b/src/allmydata/util/verlib.py index 619f1a845..f69e34e3d 100644 --- a/src/allmydata/util/verlib.py +++ b/src/allmydata/util/verlib.py @@ -1,11 +1,21 @@ """ "Rational" version definition and parsing for DistutilsVersionFight discussion at PyCon 2009. -""" +Ported to Python 3. +""" +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + +from future.utils import PY2 +if PY2: + from builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, int, list, object, range, str, max, min # noqa: F401 import re + class IrrationalVersionError(Exception): """This is an irrational version.""" pass diff --git a/src/allmydata/version_checks.py b/src/allmydata/version_checks.py index c7f4d6c8a..51a49d78a 100644 --- a/src/allmydata/version_checks.py +++ b/src/allmydata/version_checks.py @@ -1,7 +1,17 @@ """ Produce reports about the versions of Python software in use by Tahoe-LAFS for debugging and auditing purposes. + +Ported to Python 3. """ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + +from future.utils import PY2 +if PY2: + from builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, int, list, object, range, str, max, min # noqa: F401 __all__ = [ "PackagingError", @@ -111,7 +121,7 @@ def _get_error_string(errors, debug=False): def _cross_check(pkg_resources_vers_and_locs, imported_vers_and_locs_list): """This function returns a list of errors due to any failed cross-checks.""" - from _auto_deps import not_import_versionable + from ._auto_deps import not_import_versionable errors = [] not_pkg_resourceable = ['python', 'platform', __appname__.lower(), 'openssl'] @@ -311,7 +321,7 @@ def _get_package_versions_and_locations(): imported_packages = set([p.lower() for (p, _) in packages]) extra_packages = [] - for pr_name, (pr_ver, pr_loc) in pkg_resources_vers_and_locs.iteritems(): + for pr_name, (pr_ver, pr_loc) in pkg_resources_vers_and_locs.items(): if pr_name not in imported_packages and pr_name not in ignorable: extra_packages.append( (pr_name, (pr_ver, pr_loc, "according to pkg_resources")) )