From 1cfe843d23c901ff9dac1e81aef8dda9a73ec7fe Mon Sep 17 00:00:00 2001 From: Alexandre Detiste Date: Fri, 23 Feb 2024 00:40:25 +0100 Subject: [PATCH 1/3] more python2 removal --- docs/conf.py | 3 - integration/test_aaa_aardvark.py | 5 -- integration/test_sftp.py | 5 -- integration/test_streaming_logs.py | 4 - misc/simulators/sizes.py | 6 -- src/allmydata/__main__.py | 5 -- src/allmydata/_monkeypatch.py | 27 ------- src/allmydata/blacklist.py | 4 - src/allmydata/check_results.py | 4 - src/allmydata/codec.py | 4 - src/allmydata/crypto/__init__.py | 4 - src/allmydata/crypto/aes.py | 4 - src/allmydata/crypto/error.py | 5 -- src/allmydata/crypto/util.py | 4 - src/allmydata/deep_stats.py | 4 - src/allmydata/dirnode.py | 4 - src/allmydata/frontends/auth.py | 4 - src/allmydata/frontends/sftpd.py | 4 - src/allmydata/hashtree.py | 5 -- src/allmydata/history.py | 5 -- src/allmydata/immutable/checker.py | 4 - .../immutable/downloader/__init__.py | 6 -- src/allmydata/immutable/downloader/common.py | 5 -- src/allmydata/immutable/downloader/fetcher.py | 5 -- src/allmydata/immutable/downloader/finder.py | 3 - src/allmydata/immutable/downloader/node.py | 4 - .../immutable/downloader/segmentation.py | 4 - src/allmydata/immutable/downloader/share.py | 4 - src/allmydata/immutable/downloader/status.py | 4 - src/allmydata/immutable/encode.py | 5 -- src/allmydata/immutable/filenode.py | 5 -- src/allmydata/immutable/happiness_upload.py | 5 -- src/allmydata/immutable/literal.py | 5 -- src/allmydata/immutable/offloaded.py | 4 - src/allmydata/immutable/repairer.py | 4 - src/allmydata/interfaces.py | 4 - src/allmydata/introducer/__init__.py | 6 -- src/allmydata/introducer/client.py | 3 - src/allmydata/introducer/common.py | 4 - src/allmydata/introducer/interfaces.py | 3 - src/allmydata/monitor.py | 4 - src/allmydata/mutable/checker.py | 3 - src/allmydata/mutable/layout.py | 4 - src/allmydata/mutable/publish.py | 4 - src/allmydata/mutable/repairer.py | 4 - src/allmydata/scripts/admin.py | 4 - src/allmydata/scripts/backupdb.py | 4 - src/allmydata/scripts/default_nodedir.py | 5 -- src/allmydata/scripts/runner.py | 21 ----- src/allmydata/scripts/slow_operation.py | 2 - src/allmydata/scripts/tahoe_add_alias.py | 4 - src/allmydata/scripts/tahoe_backup.py | 4 - src/allmydata/scripts/tahoe_check.py | 4 - src/allmydata/scripts/tahoe_cp.py | 4 - src/allmydata/scripts/tahoe_get.py | 2 - src/allmydata/scripts/tahoe_ls.py | 4 - src/allmydata/scripts/tahoe_manifest.py | 2 - src/allmydata/scripts/tahoe_mkdir.py | 4 - src/allmydata/scripts/tahoe_mv.py | 4 - src/allmydata/scripts/tahoe_run.py | 4 - src/allmydata/scripts/tahoe_status.py | 4 - src/allmydata/scripts/tahoe_unlink.py | 4 - src/allmydata/scripts/tahoe_webopen.py | 4 - src/allmydata/storage/common.py | 2 - src/allmydata/storage/crawler.py | 2 - src/allmydata/storage/expirer.py | 4 - src/allmydata/storage/immutable.py | 2 - src/allmydata/storage/immutable_schema.py | 5 -- src/allmydata/storage/lease.py | 5 -- src/allmydata/storage/mutable.py | 5 -- src/allmydata/storage/mutable_schema.py | 5 -- src/allmydata/storage/shares.py | 5 -- src/allmydata/test/__init__.py | 4 - src/allmydata/test/cli/common.py | 4 - src/allmydata/test/cli/test_admin.py | 4 - src/allmydata/test/cli/test_alias.py | 4 - src/allmydata/test/cli/test_backup.py | 4 - src/allmydata/test/cli/test_backupdb.py | 5 -- src/allmydata/test/cli/test_check.py | 4 - src/allmydata/test/cli/test_cli.py | 4 - src/allmydata/test/cli/test_cp.py | 8 -- src/allmydata/test/cli/test_create_alias.py | 4 - src/allmydata/test/cli/test_list.py | 2 - src/allmydata/test/cli/test_mv.py | 4 - src/allmydata/test/cli/test_status.py | 3 - src/allmydata/test/cli_node_api.py | 4 - src/allmydata/test/common.py | 3 - src/allmydata/test/common_util.py | 2 - src/allmydata/test/common_web.py | 4 - src/allmydata/test/matchers.py | 4 - src/allmydata/test/mutable/test_checker.py | 4 - src/allmydata/test/mutable/test_datahandle.py | 4 - .../test/mutable/test_different_encoding.py | 4 - src/allmydata/test/mutable/test_exceptions.py | 5 -- src/allmydata/test/mutable/test_filehandle.py | 4 - src/allmydata/test/mutable/test_filenode.py | 4 - .../test/mutable/test_interoperability.py | 4 - .../test/mutable/test_multiple_encodings.py | 4 - .../test/mutable/test_multiple_versions.py | 4 - src/allmydata/test/mutable/test_problems.py | 4 - src/allmydata/test/mutable/test_repair.py | 4 - src/allmydata/test/mutable/test_roundtrip.py | 4 - src/allmydata/test/mutable/test_servermap.py | 5 -- src/allmydata/test/mutable/test_update.py | 4 - src/allmydata/test/mutable/util.py | 2 - src/allmydata/test/storage_plugin.py | 3 - src/allmydata/test/strategies.py | 4 - src/allmydata/test/test_abbreviate.py | 4 - src/allmydata/test/test_base32.py | 4 - src/allmydata/test/test_base62.py | 5 -- src/allmydata/test/test_checker.py | 6 -- src/allmydata/test/test_codec.py | 4 - src/allmydata/test/test_common_util.py | 2 - src/allmydata/test/test_configutil.py | 5 -- src/allmydata/test/test_connections.py | 4 - src/allmydata/test/test_consumer.py | 5 -- src/allmydata/test/test_crawler.py | 5 -- src/allmydata/test/test_crypto.py | 4 - src/allmydata/test/test_deepcheck.py | 14 ---- src/allmydata/test/test_dictutil.py | 26 ------- src/allmydata/test/test_dirnode.py | 5 -- src/allmydata/test/test_encode.py | 3 - src/allmydata/test/test_encodingutil.py | 33 -------- src/allmydata/test/test_filenode.py | 4 - src/allmydata/test/test_happiness.py | 6 -- src/allmydata/test/test_hashutil.py | 4 - src/allmydata/test/test_humanreadable.py | 5 -- src/allmydata/test/test_hung_server.py | 4 - src/allmydata/test/test_i2p_provider.py | 4 - src/allmydata/test/test_immutable.py | 4 - src/allmydata/test/test_introducer.py | 4 - src/allmydata/test/test_json_metadata.py | 4 - src/allmydata/test/test_log.py | 2 - src/allmydata/test/test_monitor.py | 5 -- src/allmydata/test/test_multi_introducers.py | 3 - src/allmydata/test/test_netstring.py | 4 - src/allmydata/test/test_no_network.py | 4 - src/allmydata/test/test_observer.py | 5 -- src/allmydata/test/test_openmetrics.py | 8 -- .../test/test_python2_regressions.py | 77 ------------------- src/allmydata/test/test_repairer.py | 4 - src/allmydata/test/test_runner.py | 28 ------- src/allmydata/test/test_sftp.py | 4 - src/allmydata/test/test_spans.py | 5 -- src/allmydata/test/test_statistics.py | 4 - src/allmydata/test/test_stats.py | 4 - src/allmydata/test/test_storage_web.py | 7 -- src/allmydata/test/test_time_format.py | 4 - src/allmydata/test/test_upload.py | 4 - src/allmydata/test/test_uri.py | 5 -- src/allmydata/test/test_util.py | 7 -- src/allmydata/test/web/common.py | 4 - src/allmydata/test/web/matchers.py | 4 - src/allmydata/test/web/test_common.py | 4 - src/allmydata/test/web/test_grid.py | 4 - src/allmydata/test/web/test_introducer.py | 4 - src/allmydata/test/web/test_logs.py | 4 - src/allmydata/test/web/test_private.py | 4 - src/allmydata/test/web/test_root.py | 4 - src/allmydata/test/web/test_status.py | 4 - src/allmydata/test/web/test_util.py | 4 - src/allmydata/unknown.py | 4 - src/allmydata/util/abbreviate.py | 4 - src/allmydata/util/assertutil.py | 6 -- src/allmydata/util/base62.py | 2 - src/allmydata/util/configutil.py | 6 -- src/allmydata/util/consumer.py | 4 - src/allmydata/util/dbutil.py | 5 -- src/allmydata/util/encodingutil.py | 3 - src/allmydata/util/fileutil.py | 8 -- src/allmydata/util/gcutil.py | 4 - src/allmydata/util/happinessutil.py | 5 -- src/allmydata/util/humanreadable.py | 5 -- src/allmydata/util/idlib.py | 4 - src/allmydata/util/jsonbytes.py | 18 ----- src/allmydata/util/log.py | 2 - src/allmydata/util/mathutil.py | 6 -- src/allmydata/util/netstring.py | 4 - src/allmydata/util/observer.py | 5 -- src/allmydata/util/rrefutil.py | 4 - src/allmydata/util/spans.py | 4 - src/allmydata/util/statistics.py | 5 -- src/allmydata/util/time_format.py | 3 - src/allmydata/util/yamlutil.py | 27 ------- src/allmydata/web/check_results.py | 4 - src/allmydata/web/directory.py | 6 -- src/allmydata/web/info.py | 4 - src/allmydata/web/operations.py | 4 - src/allmydata/web/private.py | 4 - src/allmydata/web/status.py | 4 - src/allmydata/web/storage.py | 4 - src/allmydata/web/storage_plugins.py | 4 - 192 files changed, 1037 deletions(-) delete mode 100644 src/allmydata/test/test_python2_regressions.py diff --git a/docs/conf.py b/docs/conf.py index cc9a11166..79a57e48c 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -12,9 +12,6 @@ # All configuration values have a default; values that are commented out # serve to show the default. -import sys -import os - # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. diff --git a/integration/test_aaa_aardvark.py b/integration/test_aaa_aardvark.py index e92403497..4a2ef71a6 100644 --- a/integration/test_aaa_aardvark.py +++ b/integration/test_aaa_aardvark.py @@ -6,11 +6,6 @@ # longer" to start the first test as the fixtures get built -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - - def test_create_flogger(flog_gatherer): print("Created flog_gatherer") diff --git a/integration/test_sftp.py b/integration/test_sftp.py index 2fdc7522e..8202245ce 100644 --- a/integration/test_sftp.py +++ b/integration/test_sftp.py @@ -10,11 +10,6 @@ These tests use Paramiko, rather than Twisted's Conch, because: 2. Its API is much simpler to use. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os.path from posixpath import join from stat import S_ISDIR diff --git a/integration/test_streaming_logs.py b/integration/test_streaming_logs.py index f70a42ead..efdb23df8 100644 --- a/integration/test_streaming_logs.py +++ b/integration/test_streaming_logs.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from six import ensure_text import json diff --git a/misc/simulators/sizes.py b/misc/simulators/sizes.py index 4b4f6d1fd..d9f861c2f 100644 --- a/misc/simulators/sizes.py +++ b/misc/simulators/sizes.py @@ -1,11 +1,5 @@ #! /usr/bin/env python - -from future.utils import PY2 -if PY2: - from future.builtins import input - - import random, math, re from twisted.python import usage diff --git a/src/allmydata/__main__.py b/src/allmydata/__main__.py index 972167b30..c6b200991 100644 --- a/src/allmydata/__main__.py +++ b/src/allmydata/__main__.py @@ -2,11 +2,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import sys from allmydata.scripts.runner import run diff --git a/src/allmydata/_monkeypatch.py b/src/allmydata/_monkeypatch.py index 520a4194a..b5f171224 100644 --- a/src/allmydata/_monkeypatch.py +++ b/src/allmydata/_monkeypatch.py @@ -4,41 +4,14 @@ Monkey-patching of third party libraries. Ported to Python 3. """ - from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from warnings import catch_warnings def patch(): """Path third-party libraries to make Tahoe-LAFS work.""" - # Make sure Foolscap always get native strings passed to method names in callRemote. - # This can be removed when any one of the following happens: - # - # 1. Tahoe-LAFS on Python 2 switches to version of Foolscap that fixes - # https://github.com/warner/foolscap/issues/72 - # 2. Foolscap is dropped as a dependency. - # 3. Tahoe-LAFS drops Python 2 support. if not PY2: # Python 3 doesn't need to monkey patch Foolscap return - - # We need to suppress warnings so as to prevent unexpected output from - # breaking some integration tests. - with catch_warnings(record=True): - # Only tested with this version; ensure correctness with new releases, - # and then either update the assert or hopefully drop the monkeypatch. - from foolscap import __version__ - assert __version__ == "0.13.1", "Wrong version %s of Foolscap" % (__version__,) - - from foolscap.referenceable import RemoteReference - original_getMethodInfo = RemoteReference._getMethodInfo - - def _getMethodInfo(self, name): - if isinstance(name, str): - name = name.encode("utf-8") - return original_getMethodInfo(self, name) - RemoteReference._getMethodInfo = _getMethodInfo diff --git a/src/allmydata/blacklist.py b/src/allmydata/blacklist.py index a019ccb69..db499315a 100644 --- a/src/allmydata/blacklist.py +++ b/src/allmydata/blacklist.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os from zope.interface import implementer diff --git a/src/allmydata/check_results.py b/src/allmydata/check_results.py index 1dbf2f7d5..8c44fd71e 100644 --- a/src/allmydata/check_results.py +++ b/src/allmydata/check_results.py @@ -1,10 +1,6 @@ """Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from past.builtins import unicode from zope.interface import implementer diff --git a/src/allmydata/codec.py b/src/allmydata/codec.py index b58ebae57..d8a3527c1 100644 --- a/src/allmydata/codec.py +++ b/src/allmydata/codec.py @@ -4,10 +4,6 @@ CRS encoding and decoding. Ported to Python 3. """ -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, list, object, range, str, max, min # noqa: F401 - from zope.interface import implementer from allmydata.util import mathutil from allmydata.util.assertutil import precondition diff --git a/src/allmydata/crypto/__init__.py b/src/allmydata/crypto/__init__.py index 3ba70e605..ec50d070d 100644 --- a/src/allmydata/crypto/__init__.py +++ b/src/allmydata/crypto/__init__.py @@ -9,7 +9,3 @@ objects that `cryptography` documents. Ported to Python 3. """ - -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, list, object, range, str, max, min # noqa: F401 diff --git a/src/allmydata/crypto/aes.py b/src/allmydata/crypto/aes.py index 6e1b93c03..2fa5f8684 100644 --- a/src/allmydata/crypto/aes.py +++ b/src/allmydata/crypto/aes.py @@ -10,10 +10,6 @@ objects that `cryptography` documents. Ported to Python 3. """ -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, list, object, range, str, max, min # noqa: F401 - import six from cryptography.hazmat.backends import default_backend diff --git a/src/allmydata/crypto/error.py b/src/allmydata/crypto/error.py index ea3f78162..f860cf57b 100644 --- a/src/allmydata/crypto/error.py +++ b/src/allmydata/crypto/error.py @@ -4,11 +4,6 @@ Exceptions raise by allmydata.crypto.* modules Ported to Python 3. """ -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, list, object, range, str, max, min # noqa: F401 - - class BadSignature(Exception): """ An alleged signature did not match diff --git a/src/allmydata/crypto/util.py b/src/allmydata/crypto/util.py index 20f4bca85..09836533f 100644 --- a/src/allmydata/crypto/util.py +++ b/src/allmydata/crypto/util.py @@ -4,10 +4,6 @@ Utilities used by allmydata.crypto modules Ported to Python 3. """ -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, list, object, range, str, max, min # noqa: F401 - from allmydata.crypto.error import BadPrefixError diff --git a/src/allmydata/deep_stats.py b/src/allmydata/deep_stats.py index a80abe508..b3671718b 100644 --- a/src/allmydata/deep_stats.py +++ b/src/allmydata/deep_stats.py @@ -3,10 +3,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import math from allmydata.interfaces import IImmutableFileNode diff --git a/src/allmydata/dirnode.py b/src/allmydata/dirnode.py index 67e44faf4..5ba75f6c0 100644 --- a/src/allmydata/dirnode.py +++ b/src/allmydata/dirnode.py @@ -3,10 +3,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - # Skip dict so it doesn't break things. - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, list, object, range, str, max, min # noqa: F401 from past.builtins import unicode import time diff --git a/src/allmydata/frontends/auth.py b/src/allmydata/frontends/auth.py index 6d58cf567..973dd2301 100644 --- a/src/allmydata/frontends/auth.py +++ b/src/allmydata/frontends/auth.py @@ -2,10 +2,6 @@ Authentication for frontends. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from zope.interface import implementer from twisted.internet import defer from twisted.cred import checkers, credentials diff --git a/src/allmydata/frontends/sftpd.py b/src/allmydata/frontends/sftpd.py index e3c0eb674..eaa89160c 100644 --- a/src/allmydata/frontends/sftpd.py +++ b/src/allmydata/frontends/sftpd.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import six import heapq, traceback, stat, struct from stat import S_IFREG, S_IFDIR diff --git a/src/allmydata/hashtree.py b/src/allmydata/hashtree.py index ca043f234..6c4436958 100644 --- a/src/allmydata/hashtree.py +++ b/src/allmydata/hashtree.py @@ -49,11 +49,6 @@ or eat your children, but it might. Use at your own risk. Ported to Python 3. """ - -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, list, object, range, str, max, min # noqa: F401 - from allmydata.util import mathutil # from the pyutil library from allmydata.util import base32 diff --git a/src/allmydata/history.py b/src/allmydata/history.py index 5629d7c43..befc8cf3d 100644 --- a/src/allmydata/history.py +++ b/src/allmydata/history.py @@ -1,11 +1,6 @@ """Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - - import weakref class History(object): diff --git a/src/allmydata/immutable/checker.py b/src/allmydata/immutable/checker.py index 0e8ba14d8..483ddb2a2 100644 --- a/src/allmydata/immutable/checker.py +++ b/src/allmydata/immutable/checker.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from zope.interface import implementer from twisted.internet import defer from foolscap.api import DeadReferenceError, RemoteException diff --git a/src/allmydata/immutable/downloader/__init__.py b/src/allmydata/immutable/downloader/__init__.py index 84d6b71f9..d4f3fe345 100644 --- a/src/allmydata/immutable/downloader/__init__.py +++ b/src/allmydata/immutable/downloader/__init__.py @@ -1,9 +1,3 @@ """ Ported to Python 3. """ - - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - diff --git a/src/allmydata/immutable/downloader/common.py b/src/allmydata/immutable/downloader/common.py index e0d1fe3af..30f5bcf4b 100644 --- a/src/allmydata/immutable/downloader/common.py +++ b/src/allmydata/immutable/downloader/common.py @@ -2,11 +2,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - (AVAILABLE, PENDING, OVERDUE, COMPLETE, CORRUPT, DEAD, BADSEGNUM) = \ ("AVAILABLE", "PENDING", "OVERDUE", "COMPLETE", "CORRUPT", "DEAD", "BADSEGNUM") diff --git a/src/allmydata/immutable/downloader/fetcher.py b/src/allmydata/immutable/downloader/fetcher.py index ccffa4889..e8e4eefbc 100644 --- a/src/allmydata/immutable/downloader/fetcher.py +++ b/src/allmydata/immutable/downloader/fetcher.py @@ -2,11 +2,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from twisted.python.failure import Failure from foolscap.api import eventually from allmydata.interfaces import NotEnoughSharesError, NoSharesError diff --git a/src/allmydata/immutable/downloader/finder.py b/src/allmydata/immutable/downloader/finder.py index 1992e72c1..886859e6e 100644 --- a/src/allmydata/immutable/downloader/finder.py +++ b/src/allmydata/immutable/downloader/finder.py @@ -2,9 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from six import ensure_str import time diff --git a/src/allmydata/immutable/downloader/node.py b/src/allmydata/immutable/downloader/node.py index 3c69b4084..dcb336f95 100644 --- a/src/allmydata/immutable/downloader/node.py +++ b/src/allmydata/immutable/downloader/node.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import time now = time.time from zope.interface import Interface diff --git a/src/allmydata/immutable/downloader/segmentation.py b/src/allmydata/immutable/downloader/segmentation.py index 4691f2602..80166c965 100644 --- a/src/allmydata/immutable/downloader/segmentation.py +++ b/src/allmydata/immutable/downloader/segmentation.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import time now = time.time from zope.interface import implementer diff --git a/src/allmydata/immutable/downloader/share.py b/src/allmydata/immutable/downloader/share.py index 02e8554d4..7bbf2b900 100644 --- a/src/allmydata/immutable/downloader/share.py +++ b/src/allmydata/immutable/downloader/share.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import struct import time now = time.time diff --git a/src/allmydata/immutable/downloader/status.py b/src/allmydata/immutable/downloader/status.py index 11b3e88a7..4136db3c5 100644 --- a/src/allmydata/immutable/downloader/status.py +++ b/src/allmydata/immutable/downloader/status.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import itertools from zope.interface import implementer from allmydata.interfaces import IDownloadStatus diff --git a/src/allmydata/immutable/encode.py b/src/allmydata/immutable/encode.py index b838e71e1..9d7af2650 100644 --- a/src/allmydata/immutable/encode.py +++ b/src/allmydata/immutable/encode.py @@ -4,11 +4,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import time from zope.interface import implementer from twisted.internet import defer diff --git a/src/allmydata/immutable/filenode.py b/src/allmydata/immutable/filenode.py index 761e663dd..8dda50bee 100644 --- a/src/allmydata/immutable/filenode.py +++ b/src/allmydata/immutable/filenode.py @@ -2,11 +2,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from functools import reduce import binascii from time import time as now diff --git a/src/allmydata/immutable/happiness_upload.py b/src/allmydata/immutable/happiness_upload.py index 2bc0016b0..a0af17891 100644 --- a/src/allmydata/immutable/happiness_upload.py +++ b/src/allmydata/immutable/happiness_upload.py @@ -5,11 +5,6 @@ on. Ported to Python 3. """ -from future.utils import PY2 -if PY2: - # We omit dict, just in case newdict breaks things for external Python 2 code. - from builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, list, object, range, str, max, min # noqa: F401 - from queue import PriorityQueue diff --git a/src/allmydata/immutable/literal.py b/src/allmydata/immutable/literal.py index 1ae2743f8..05f0ed1bc 100644 --- a/src/allmydata/immutable/literal.py +++ b/src/allmydata/immutable/literal.py @@ -2,11 +2,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from io import BytesIO from zope.interface import implementer diff --git a/src/allmydata/immutable/offloaded.py b/src/allmydata/immutable/offloaded.py index a98d3372b..c609f3b8a 100644 --- a/src/allmydata/immutable/offloaded.py +++ b/src/allmydata/immutable/offloaded.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os, stat, time, weakref from zope.interface import implementer from twisted.internet import defer diff --git a/src/allmydata/immutable/repairer.py b/src/allmydata/immutable/repairer.py index 87873369a..d12220810 100644 --- a/src/allmydata/immutable/repairer.py +++ b/src/allmydata/immutable/repairer.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from zope.interface import implementer from twisted.internet import defer from allmydata.storage.server import si_b2a diff --git a/src/allmydata/interfaces.py b/src/allmydata/interfaces.py index 7bfcc9a13..168a7b8e4 100644 --- a/src/allmydata/interfaces.py +++ b/src/allmydata/interfaces.py @@ -7,10 +7,6 @@ Note that for RemoteInterfaces, the __remote_name__ needs to be a native string """ from future.utils import PY2, native_str -if PY2: - # Don't import object/str/dict/etc. types, so we don't break any - # interfaces. Not importing open() because it triggers bogus flake8 error. - from builtins import filter, map, zip, ascii, chr, hex, input, next, oct, pow, round, super, range, max, min # noqa: F401 from past.builtins import long from typing import Dict diff --git a/src/allmydata/introducer/__init__.py b/src/allmydata/introducer/__init__.py index d654f6c89..52aa56597 100644 --- a/src/allmydata/introducer/__init__.py +++ b/src/allmydata/introducer/__init__.py @@ -2,12 +2,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - - from allmydata.introducer.server import create_introducer # apparently need to support "old .tac files" that may have diff --git a/src/allmydata/introducer/client.py b/src/allmydata/introducer/client.py index 4c8abff60..e6eab3b9f 100644 --- a/src/allmydata/introducer/client.py +++ b/src/allmydata/introducer/client.py @@ -2,9 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from past.builtins import long from six import ensure_text, ensure_str diff --git a/src/allmydata/introducer/common.py b/src/allmydata/introducer/common.py index 21b16a599..3b85318ce 100644 --- a/src/allmydata/introducer/common.py +++ b/src/allmydata/introducer/common.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import re from foolscap.furl import decode_furl diff --git a/src/allmydata/introducer/interfaces.py b/src/allmydata/introducer/interfaces.py index ca97b425f..4667c7be0 100644 --- a/src/allmydata/introducer/interfaces.py +++ b/src/allmydata/introducer/interfaces.py @@ -4,9 +4,6 @@ Ported to Python 3. from future.utils import PY2, native_str -if PY2: - # Omitted types (bytes etc.) so future variants don't confuse Foolscap. - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, object, range, max, min # noqa: F401 from zope.interface import Interface from foolscap.api import StringConstraint, SetOf, DictOf, Any, \ diff --git a/src/allmydata/monitor.py b/src/allmydata/monitor.py index c2aae826e..0a213635b 100644 --- a/src/allmydata/monitor.py +++ b/src/allmydata/monitor.py @@ -4,10 +4,6 @@ Manage status of long-running operations. Ported to Python 3. """ -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, list, object, range, str, max, min # noqa: F401 - from zope.interface import Interface, implementer from allmydata.util import observer diff --git a/src/allmydata/mutable/checker.py b/src/allmydata/mutable/checker.py index ee57e2ed9..14120c476 100644 --- a/src/allmydata/mutable/checker.py +++ b/src/allmydata/mutable/checker.py @@ -2,9 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from six import ensure_str from allmydata.uri import from_string diff --git a/src/allmydata/mutable/layout.py b/src/allmydata/mutable/layout.py index 9057745e7..6a5993993 100644 --- a/src/allmydata/mutable/layout.py +++ b/src/allmydata/mutable/layout.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - # Omit dict so Python 3 changes don't leak into API callers on Python 2. - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, list, object, range, str, max, min # noqa: F401 from past.utils import old_div import struct diff --git a/src/allmydata/mutable/publish.py b/src/allmydata/mutable/publish.py index 9df1d20b2..ee9faeb2b 100644 --- a/src/allmydata/mutable/publish.py +++ b/src/allmydata/mutable/publish.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os, time from io import BytesIO from itertools import count diff --git a/src/allmydata/mutable/repairer.py b/src/allmydata/mutable/repairer.py index 5c6537769..4d1df410b 100644 --- a/src/allmydata/mutable/repairer.py +++ b/src/allmydata/mutable/repairer.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from zope.interface import implementer from twisted.internet import defer from allmydata.interfaces import IRepairResults, ICheckResults diff --git a/src/allmydata/scripts/admin.py b/src/allmydata/scripts/admin.py index d1bd59600..34f6e2eaf 100644 --- a/src/allmydata/scripts/admin.py +++ b/src/allmydata/scripts/admin.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from six import ensure_binary from twisted.python import usage diff --git a/src/allmydata/scripts/backupdb.py b/src/allmydata/scripts/backupdb.py index 21db88ee2..45c2bc026 100644 --- a/src/allmydata/scripts/backupdb.py +++ b/src/allmydata/scripts/backupdb.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os.path, sys, time, random, stat from allmydata.util.netstring import netstring diff --git a/src/allmydata/scripts/default_nodedir.py b/src/allmydata/scripts/default_nodedir.py index 89d13cd1b..c1711b55c 100644 --- a/src/allmydata/scripts/default_nodedir.py +++ b/src/allmydata/scripts/default_nodedir.py @@ -2,11 +2,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import sys import six from allmydata.util.assertutil import precondition diff --git a/src/allmydata/scripts/runner.py b/src/allmydata/scripts/runner.py index 18387cea5..32c68ee57 100644 --- a/src/allmydata/scripts/runner.py +++ b/src/allmydata/scripts/runner.py @@ -107,27 +107,6 @@ def parse_options(argv, config=None): try: config.parseOptions(argv) except usage.error as e: - if six.PY2: - # On Python 2 the exception may hold non-ascii in a byte string. - # This makes it impossible to convert the exception to any kind of - # string using str() or unicode(). It could also hold non-ascii - # in a unicode string which still makes it difficult to convert it - # to a byte string later. - # - # So, reach inside and turn it into some entirely safe ascii byte - # strings that will survive being written to stdout without - # causing too much damage in the process. - # - # As a result, non-ascii will not be rendered correctly but - # instead as escape sequences. At least this can go away when - # we're done with Python 2 support. - raise usage.error(*( - arg.encode("ascii", errors="backslashreplace") - if isinstance(arg, unicode) - else arg.decode("utf-8").encode("ascii", errors="backslashreplace") - for arg - in e.args - )) raise return config diff --git a/src/allmydata/scripts/slow_operation.py b/src/allmydata/scripts/slow_operation.py index 092e85823..e1a944ba7 100644 --- a/src/allmydata/scripts/slow_operation.py +++ b/src/allmydata/scripts/slow_operation.py @@ -3,8 +3,6 @@ Ported to Python 3. """ from future.utils import PY2, PY3 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from six import ensure_str diff --git a/src/allmydata/scripts/tahoe_add_alias.py b/src/allmydata/scripts/tahoe_add_alias.py index e29d974f4..ac57879b0 100644 --- a/src/allmydata/scripts/tahoe_add_alias.py +++ b/src/allmydata/scripts/tahoe_add_alias.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os.path import codecs diff --git a/src/allmydata/scripts/tahoe_backup.py b/src/allmydata/scripts/tahoe_backup.py index 058febb8c..7ca79d393 100644 --- a/src/allmydata/scripts/tahoe_backup.py +++ b/src/allmydata/scripts/tahoe_backup.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os.path import time from urllib.parse import quote as url_quote diff --git a/src/allmydata/scripts/tahoe_check.py b/src/allmydata/scripts/tahoe_check.py index d88d3689e..91125a3a3 100644 --- a/src/allmydata/scripts/tahoe_check.py +++ b/src/allmydata/scripts/tahoe_check.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from six import ensure_str, ensure_text from urllib.parse import quote as url_quote diff --git a/src/allmydata/scripts/tahoe_cp.py b/src/allmydata/scripts/tahoe_cp.py index 9ccbf2a05..1e9726605 100644 --- a/src/allmydata/scripts/tahoe_cp.py +++ b/src/allmydata/scripts/tahoe_cp.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os.path from urllib.parse import quote as url_quote from collections import defaultdict diff --git a/src/allmydata/scripts/tahoe_get.py b/src/allmydata/scripts/tahoe_get.py index cf0dd8afa..332529d04 100644 --- a/src/allmydata/scripts/tahoe_get.py +++ b/src/allmydata/scripts/tahoe_get.py @@ -3,8 +3,6 @@ Ported to Python 3. """ from future.utils import PY2, PY3 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from urllib.parse import quote as url_quote from allmydata.scripts.common import get_alias, DEFAULT_ALIAS, escape_path, \ diff --git a/src/allmydata/scripts/tahoe_ls.py b/src/allmydata/scripts/tahoe_ls.py index b20dec723..d38fe060c 100644 --- a/src/allmydata/scripts/tahoe_ls.py +++ b/src/allmydata/scripts/tahoe_ls.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from six import ensure_text import time diff --git a/src/allmydata/scripts/tahoe_manifest.py b/src/allmydata/scripts/tahoe_manifest.py index e1ee95ef6..1cc5ba591 100644 --- a/src/allmydata/scripts/tahoe_manifest.py +++ b/src/allmydata/scripts/tahoe_manifest.py @@ -3,8 +3,6 @@ Ported to Python 3. """ from future.utils import PY2, PY3 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from six import ensure_str diff --git a/src/allmydata/scripts/tahoe_mkdir.py b/src/allmydata/scripts/tahoe_mkdir.py index 2bc35c391..8a9dc6262 100644 --- a/src/allmydata/scripts/tahoe_mkdir.py +++ b/src/allmydata/scripts/tahoe_mkdir.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from urllib.parse import quote as url_quote from allmydata.scripts.common_http import do_http, check_http_error from allmydata.scripts.common import get_alias, DEFAULT_ALIAS, UnknownAliasError diff --git a/src/allmydata/scripts/tahoe_mv.py b/src/allmydata/scripts/tahoe_mv.py index bd1e4f810..016c0e725 100644 --- a/src/allmydata/scripts/tahoe_mv.py +++ b/src/allmydata/scripts/tahoe_mv.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import re from urllib.parse import quote as url_quote import json diff --git a/src/allmydata/scripts/tahoe_run.py b/src/allmydata/scripts/tahoe_run.py index 345f85815..d7b570faa 100644 --- a/src/allmydata/scripts/tahoe_run.py +++ b/src/allmydata/scripts/tahoe_run.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - __all__ = [ "RunOptions", "run", diff --git a/src/allmydata/scripts/tahoe_status.py b/src/allmydata/scripts/tahoe_status.py index 5c8c6aee0..c7f19910b 100644 --- a/src/allmydata/scripts/tahoe_status.py +++ b/src/allmydata/scripts/tahoe_status.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os from sys import stdout as _sys_stdout from urllib.parse import urlencode diff --git a/src/allmydata/scripts/tahoe_unlink.py b/src/allmydata/scripts/tahoe_unlink.py index 29da80811..8531ce059 100644 --- a/src/allmydata/scripts/tahoe_unlink.py +++ b/src/allmydata/scripts/tahoe_unlink.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from urllib.parse import quote as url_quote from allmydata.scripts.common_http import do_http, format_http_success, format_http_error from allmydata.scripts.common import get_alias, DEFAULT_ALIAS, escape_path, \ diff --git a/src/allmydata/scripts/tahoe_webopen.py b/src/allmydata/scripts/tahoe_webopen.py index 2b16f09e1..011677b4e 100644 --- a/src/allmydata/scripts/tahoe_webopen.py +++ b/src/allmydata/scripts/tahoe_webopen.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from urllib.parse import quote as url_quote from allmydata.scripts.common import get_alias, DEFAULT_ALIAS, escape_path, \ diff --git a/src/allmydata/storage/common.py b/src/allmydata/storage/common.py index e9f5e4e5d..a7b45ca0f 100644 --- a/src/allmydata/storage/common.py +++ b/src/allmydata/storage/common.py @@ -3,8 +3,6 @@ Ported to Python 3. """ from future.utils import PY2, PY3 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 import os.path from allmydata.util import base32 diff --git a/src/allmydata/storage/crawler.py b/src/allmydata/storage/crawler.py index 8a7304808..a464449ed 100644 --- a/src/allmydata/storage/crawler.py +++ b/src/allmydata/storage/crawler.py @@ -6,8 +6,6 @@ Ported to Python 3. from future.utils import PY2, PY3 -if PY2: - from builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 import os import time diff --git a/src/allmydata/storage/expirer.py b/src/allmydata/storage/expirer.py index bcff8aeeb..c0968fd39 100644 --- a/src/allmydata/storage/expirer.py +++ b/src/allmydata/storage/expirer.py @@ -1,7 +1,3 @@ - -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, list, object, range, str, max, min # noqa: F401 import json import time import os diff --git a/src/allmydata/storage/immutable.py b/src/allmydata/storage/immutable.py index fc696ff60..90d6d4d2d 100644 --- a/src/allmydata/storage/immutable.py +++ b/src/allmydata/storage/immutable.py @@ -4,8 +4,6 @@ Ported to Python 3. from future.utils import PY2, bytes_to_native_str -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 import os, stat, struct, time diff --git a/src/allmydata/storage/immutable_schema.py b/src/allmydata/storage/immutable_schema.py index beb184700..2798ea0cb 100644 --- a/src/allmydata/storage/immutable_schema.py +++ b/src/allmydata/storage/immutable_schema.py @@ -2,11 +2,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import struct import attr diff --git a/src/allmydata/storage/lease.py b/src/allmydata/storage/lease.py index ad21ce598..4a8b10d01 100644 --- a/src/allmydata/storage/lease.py +++ b/src/allmydata/storage/lease.py @@ -2,11 +2,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import struct, time import attr diff --git a/src/allmydata/storage/mutable.py b/src/allmydata/storage/mutable.py index cb9116a21..d13a68020 100644 --- a/src/allmydata/storage/mutable.py +++ b/src/allmydata/storage/mutable.py @@ -2,11 +2,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os, stat, struct from allmydata.interfaces import ( diff --git a/src/allmydata/storage/mutable_schema.py b/src/allmydata/storage/mutable_schema.py index b8530e0aa..389d743f4 100644 --- a/src/allmydata/storage/mutable_schema.py +++ b/src/allmydata/storage/mutable_schema.py @@ -2,11 +2,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import struct import attr diff --git a/src/allmydata/storage/shares.py b/src/allmydata/storage/shares.py index 5fe2b106c..6c9526b47 100644 --- a/src/allmydata/storage/shares.py +++ b/src/allmydata/storage/shares.py @@ -2,11 +2,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from allmydata.storage.mutable import MutableShareFile from allmydata.storage.immutable import ShareFile diff --git a/src/allmydata/test/__init__.py b/src/allmydata/test/__init__.py index 14ec9b054..6779aa527 100644 --- a/src/allmydata/test/__init__.py +++ b/src/allmydata/test/__init__.py @@ -16,10 +16,6 @@ some side-effects which make things better when the test suite runs. Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from traceback import extract_stack, format_list from foolscap.pb import Listener diff --git a/src/allmydata/test/cli/common.py b/src/allmydata/test/cli/common.py index 45cafbec6..351b48baa 100644 --- a/src/allmydata/test/cli/common.py +++ b/src/allmydata/test/cli/common.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from six import ensure_str, ensure_text from ...scripts import runner diff --git a/src/allmydata/test/cli/test_admin.py b/src/allmydata/test/cli/test_admin.py index d1e9263d0..a6370d6e4 100644 --- a/src/allmydata/test/cli/test_admin.py +++ b/src/allmydata/test/cli/test_admin.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - # We're going to override stdin/stderr, so want to match their behavior on respective Python versions. from io import StringIO diff --git a/src/allmydata/test/cli/test_alias.py b/src/allmydata/test/cli/test_alias.py index 025a7ae9d..bbbafcabc 100644 --- a/src/allmydata/test/cli/test_alias.py +++ b/src/allmydata/test/cli/test_alias.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import json from twisted.trial import unittest diff --git a/src/allmydata/test/cli/test_backup.py b/src/allmydata/test/cli/test_backup.py index 804817132..744d40f78 100644 --- a/src/allmydata/test/cli/test_backup.py +++ b/src/allmydata/test/cli/test_backup.py @@ -3,8 +3,6 @@ Ported to Python 3. """ from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 import os.path from six.moves import cStringIO as StringIO @@ -368,8 +366,6 @@ class Backup(GridTestMixin, CLITestMixin, StallMixin, unittest.TestCase): nice_doc = u"nice_d\u00F8c.lyx" try: doc_pattern_arg_unicode = doc_pattern_arg = u"*d\u00F8c*" - if PY2: - doc_pattern_arg = doc_pattern_arg.encode(get_io_encoding()) except UnicodeEncodeError: raise unittest.SkipTest("A non-ASCII command argument could not be encoded on this platform.") diff --git a/src/allmydata/test/cli/test_backupdb.py b/src/allmydata/test/cli/test_backupdb.py index ca18a4a74..359b06f4f 100644 --- a/src/allmydata/test/cli/test_backupdb.py +++ b/src/allmydata/test/cli/test_backupdb.py @@ -2,11 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - # Don't import future bytes so we don't break a couple of tests - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, dict, list, object, range, str, max, min # noqa: F401 - import sys import os.path, time from six.moves import cStringIO as StringIO diff --git a/src/allmydata/test/cli/test_check.py b/src/allmydata/test/cli/test_check.py index 24fd0d8e8..56b36a8d5 100644 --- a/src/allmydata/test/cli/test_check.py +++ b/src/allmydata/test/cli/test_check.py @@ -1,7 +1,3 @@ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from six import ensure_text import os.path diff --git a/src/allmydata/test/cli/test_cli.py b/src/allmydata/test/cli/test_cli.py index d7fde2742..ce51cb4f3 100644 --- a/src/allmydata/test/cli/test_cli.py +++ b/src/allmydata/test/cli/test_cli.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from six.moves import cStringIO as StringIO import re from six import ensure_text diff --git a/src/allmydata/test/cli/test_cp.py b/src/allmydata/test/cli/test_cp.py index 5e8e411ad..2dbc6d37e 100644 --- a/src/allmydata/test/cli/test_cp.py +++ b/src/allmydata/test/cli/test_cp.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os.path, json from twisted.trial import unittest from twisted.python import usage @@ -73,8 +69,6 @@ class Cp(GridTestMixin, CLITestMixin, unittest.TestCase): self.failUnlessIn("files whose names could not be converted", err) else: self.failUnlessReallyEqual(rc, 0) - if PY2: - out = out.decode(get_io_encoding()) self.failUnlessReallyEqual(out, u"Metallica\n\u00C4rtonwall\n\u00C4rtonwall-2\n") self.assertEqual(len(err), 0, err) d.addCallback(_check) @@ -231,8 +225,6 @@ class Cp(GridTestMixin, CLITestMixin, unittest.TestCase): self.failUnlessIn("files whose names could not be converted", err) else: self.failUnlessReallyEqual(rc, 0) - if PY2: - out = out.decode(get_io_encoding()) self.failUnlessReallyEqual(out, u"\u00C4rtonwall\n") self.assertEqual(len(err), 0, err) d.addCallback(_check) diff --git a/src/allmydata/test/cli/test_create_alias.py b/src/allmydata/test/cli/test_create_alias.py index cb8526087..862b2896a 100644 --- a/src/allmydata/test/cli/test_create_alias.py +++ b/src/allmydata/test/cli/test_create_alias.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from six.moves import StringIO import os.path from twisted.trial import unittest diff --git a/src/allmydata/test/cli/test_list.py b/src/allmydata/test/cli/test_list.py index 141908987..24af04ba9 100644 --- a/src/allmydata/test/cli/test_list.py +++ b/src/allmydata/test/cli/test_list.py @@ -3,8 +3,6 @@ Ported to Python 3. """ from future.utils import PY2, PY3 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from six import ensure_str from twisted.trial import unittest diff --git a/src/allmydata/test/cli/test_mv.py b/src/allmydata/test/cli/test_mv.py index cb998025d..183e94725 100644 --- a/src/allmydata/test/cli/test_mv.py +++ b/src/allmydata/test/cli/test_mv.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os.path from twisted.trial import unittest from allmydata.util import fileutil diff --git a/src/allmydata/test/cli/test_status.py b/src/allmydata/test/cli/test_status.py index e8d2ca3c8..a3921b442 100644 --- a/src/allmydata/test/cli/test_status.py +++ b/src/allmydata/test/cli/test_status.py @@ -2,9 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from six import ensure_text import os diff --git a/src/allmydata/test/cli_node_api.py b/src/allmydata/test/cli_node_api.py index e7d5e6600..bed4cfd55 100644 --- a/src/allmydata/test/cli_node_api.py +++ b/src/allmydata/test/cli_node_api.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - __all__ = [ "CLINodeAPI", "Expect", diff --git a/src/allmydata/test/common.py b/src/allmydata/test/common.py index 485da9254..4ec3c2300 100644 --- a/src/allmydata/test/common.py +++ b/src/allmydata/test/common.py @@ -1427,7 +1427,4 @@ class TrialTestCase(_TrialTestCase): you try to turn that Exception instance into a string. """ - if six.PY2: - if isinstance(msg, six.text_type): - return super(TrialTestCase, self).fail(msg.encode("utf8")) return super(TrialTestCase, self).fail(msg) diff --git a/src/allmydata/test/common_util.py b/src/allmydata/test/common_util.py index 12e5cec72..fce2881b0 100644 --- a/src/allmydata/test/common_util.py +++ b/src/allmydata/test/common_util.py @@ -4,8 +4,6 @@ Ported to Python 3. from future.utils import PY2, PY3, bchr, binary_type from future.builtins import str as future_str -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, dict, list, object, range, str, max, min # noqa: F401 import os import sys diff --git a/src/allmydata/test/common_web.py b/src/allmydata/test/common_web.py index e43474da1..1f8a58d96 100644 --- a/src/allmydata/test/common_web.py +++ b/src/allmydata/test/common_web.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from six import ensure_str __all__ = [ diff --git a/src/allmydata/test/matchers.py b/src/allmydata/test/matchers.py index 20edd88c2..fc746aed0 100644 --- a/src/allmydata/test/matchers.py +++ b/src/allmydata/test/matchers.py @@ -4,10 +4,6 @@ Testtools-style matchers useful to the Tahoe-LAFS test suite. Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import attr from hyperlink import DecodedURL diff --git a/src/allmydata/test/mutable/test_checker.py b/src/allmydata/test/mutable/test_checker.py index 8eaa6c845..8018c5d05 100644 --- a/src/allmydata/test/mutable/test_checker.py +++ b/src/allmydata/test/mutable/test_checker.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from ..common import AsyncTestCase from foolscap.api import flushEventualQueue from allmydata.monitor import Monitor diff --git a/src/allmydata/test/mutable/test_datahandle.py b/src/allmydata/test/mutable/test_datahandle.py index 79536e7d1..6ddbb61b3 100644 --- a/src/allmydata/test/mutable/test_datahandle.py +++ b/src/allmydata/test/mutable/test_datahandle.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from ..common import SyncTestCase from allmydata.mutable.publish import MutableData from testtools.matchers import Equals, HasLength diff --git a/src/allmydata/test/mutable/test_different_encoding.py b/src/allmydata/test/mutable/test_different_encoding.py index 6bfc7e89a..8efb0bf82 100644 --- a/src/allmydata/test/mutable/test_different_encoding.py +++ b/src/allmydata/test/mutable/test_different_encoding.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from ..common import AsyncTestCase from .util import FakeStorage, make_nodemaker diff --git a/src/allmydata/test/mutable/test_exceptions.py b/src/allmydata/test/mutable/test_exceptions.py index fa1c1a884..1b83f7eb4 100644 --- a/src/allmydata/test/mutable/test_exceptions.py +++ b/src/allmydata/test/mutable/test_exceptions.py @@ -2,11 +2,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from ..common import SyncTestCase from allmydata.mutable.common import NeedMoreDataError, UncoordinatedWriteError diff --git a/src/allmydata/test/mutable/test_filehandle.py b/src/allmydata/test/mutable/test_filehandle.py index 1e6c61c68..78597f774 100644 --- a/src/allmydata/test/mutable/test_filehandle.py +++ b/src/allmydata/test/mutable/test_filehandle.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os from io import BytesIO from ..common import SyncTestCase diff --git a/src/allmydata/test/mutable/test_filenode.py b/src/allmydata/test/mutable/test_filenode.py index ca76be1b0..89881111a 100644 --- a/src/allmydata/test/mutable/test_filenode.py +++ b/src/allmydata/test/mutable/test_filenode.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from six.moves import cStringIO as StringIO from twisted.internet import defer, reactor from ..common import AsyncBrokenTestCase diff --git a/src/allmydata/test/mutable/test_interoperability.py b/src/allmydata/test/mutable/test_interoperability.py index 745baca97..deb20bb17 100644 --- a/src/allmydata/test/mutable/test_interoperability.py +++ b/src/allmydata/test/mutable/test_interoperability.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os, base64 from ..common import AsyncTestCase from testtools.matchers import HasLength diff --git a/src/allmydata/test/mutable/test_multiple_encodings.py b/src/allmydata/test/mutable/test_multiple_encodings.py index 8ccfd387e..7f9699a07 100644 --- a/src/allmydata/test/mutable/test_multiple_encodings.py +++ b/src/allmydata/test/mutable/test_multiple_encodings.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from ..common import AsyncTestCase from testtools.matchers import Equals from allmydata.interfaces import SDMF_VERSION diff --git a/src/allmydata/test/mutable/test_multiple_versions.py b/src/allmydata/test/mutable/test_multiple_versions.py index c9c1f15aa..2062b01d4 100644 --- a/src/allmydata/test/mutable/test_multiple_versions.py +++ b/src/allmydata/test/mutable/test_multiple_versions.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from ..common import AsyncTestCase from testtools.matchers import Equals, HasLength from allmydata.monitor import Monitor diff --git a/src/allmydata/test/mutable/test_problems.py b/src/allmydata/test/mutable/test_problems.py index 6f22c02c2..d94668ff4 100644 --- a/src/allmydata/test/mutable/test_problems.py +++ b/src/allmydata/test/mutable/test_problems.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os, base64 from ..common import AsyncTestCase from testtools.matchers import HasLength diff --git a/src/allmydata/test/mutable/test_repair.py b/src/allmydata/test/mutable/test_repair.py index f4ae53e13..dd2b435e5 100644 --- a/src/allmydata/test/mutable/test_repair.py +++ b/src/allmydata/test/mutable/test_repair.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from ..common import AsyncTestCase from testtools.matchers import Equals, HasLength from allmydata.interfaces import IRepairResults, ICheckAndRepairResults diff --git a/src/allmydata/test/mutable/test_roundtrip.py b/src/allmydata/test/mutable/test_roundtrip.py index eddd7f3df..238e69c61 100644 --- a/src/allmydata/test/mutable/test_roundtrip.py +++ b/src/allmydata/test/mutable/test_roundtrip.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from six.moves import cStringIO as StringIO from ..common import AsyncTestCase from testtools.matchers import Equals, HasLength, Contains diff --git a/src/allmydata/test/mutable/test_servermap.py b/src/allmydata/test/mutable/test_servermap.py index b3a247015..eaf2eddbc 100644 --- a/src/allmydata/test/mutable/test_servermap.py +++ b/src/allmydata/test/mutable/test_servermap.py @@ -2,11 +2,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from ..common import AsyncTestCase from testtools.matchers import Equals, NotEquals, HasLength from twisted.internet import defer diff --git a/src/allmydata/test/mutable/test_update.py b/src/allmydata/test/mutable/test_update.py index 02fca24b2..37a4aa6b7 100644 --- a/src/allmydata/test/mutable/test_update.py +++ b/src/allmydata/test/mutable/test_update.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import re from ..common import AsyncTestCase from testtools.matchers import ( diff --git a/src/allmydata/test/mutable/util.py b/src/allmydata/test/mutable/util.py index 336b8bfd7..11696a83d 100644 --- a/src/allmydata/test/mutable/util.py +++ b/src/allmydata/test/mutable/util.py @@ -3,8 +3,6 @@ Ported to Python 3. """ from future.utils import PY2, bchr -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from past.builtins import long diff --git a/src/allmydata/test/storage_plugin.py b/src/allmydata/test/storage_plugin.py index cb18f4dda..b1950387b 100644 --- a/src/allmydata/test/storage_plugin.py +++ b/src/allmydata/test/storage_plugin.py @@ -5,9 +5,6 @@ functionality. Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from future.utils import native_str, native_str_to_bytes from six import ensure_str diff --git a/src/allmydata/test/strategies.py b/src/allmydata/test/strategies.py index 92290203e..a15e40d9a 100644 --- a/src/allmydata/test/strategies.py +++ b/src/allmydata/test/strategies.py @@ -4,10 +4,6 @@ Hypothesis strategies use for testing Tahoe-LAFS. Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from hypothesis.strategies import ( one_of, builds, diff --git a/src/allmydata/test/test_abbreviate.py b/src/allmydata/test/test_abbreviate.py index cefa7f23f..082dadf4f 100644 --- a/src/allmydata/test/test_abbreviate.py +++ b/src/allmydata/test/test_abbreviate.py @@ -4,10 +4,6 @@ Tests for allmydata.util.abbreviate. Ported to Python 3. """ -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, list, object, range, str, max, min # noqa: F401 - from datetime import timedelta from twisted.trial import unittest diff --git a/src/allmydata/test/test_base32.py b/src/allmydata/test/test_base32.py index 236560599..83625371f 100644 --- a/src/allmydata/test/test_base32.py +++ b/src/allmydata/test/test_base32.py @@ -4,10 +4,6 @@ Tests for allmydata.util.base32. Ported to Python 3. """ -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, list, object, range, str, max, min # noqa: F401 - import base64 from twisted.trial import unittest diff --git a/src/allmydata/test/test_base62.py b/src/allmydata/test/test_base62.py index 258ca62ec..d77eaef9c 100644 --- a/src/allmydata/test/test_base62.py +++ b/src/allmydata/test/test_base62.py @@ -4,11 +4,6 @@ Tests for allmydata.util.base62. Ported to Python 3. """ - -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, list, object, range, str, max, min # noqa: F401 - from past.builtins import chr as byteschr import random, unittest diff --git a/src/allmydata/test/test_checker.py b/src/allmydata/test/test_checker.py index a33fc23b5..f116606db 100644 --- a/src/allmydata/test/test_checker.py +++ b/src/allmydata/test/test_checker.py @@ -2,12 +2,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - - import json import os.path, shutil diff --git a/src/allmydata/test/test_codec.py b/src/allmydata/test/test_codec.py index efb575cd7..59595f760 100644 --- a/src/allmydata/test/test_codec.py +++ b/src/allmydata/test/test_codec.py @@ -4,10 +4,6 @@ Tests for allmydata.codec. Ported to Python 3. """ -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, list, object, range, str, max, min # noqa: F401 - import os from twisted.trial import unittest from twisted.python import log diff --git a/src/allmydata/test/test_common_util.py b/src/allmydata/test/test_common_util.py index b1c698208..7f865d743 100644 --- a/src/allmydata/test/test_common_util.py +++ b/src/allmydata/test/test_common_util.py @@ -3,8 +3,6 @@ This module has been ported to Python 3. """ from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 import sys import random diff --git a/src/allmydata/test/test_configutil.py b/src/allmydata/test/test_configutil.py index d1931479f..a4e7f56ea 100644 --- a/src/allmydata/test/test_configutil.py +++ b/src/allmydata/test/test_configutil.py @@ -4,11 +4,6 @@ Tests for allmydata.util.configutil. Ported to Python 3. """ -from future.utils import PY2 -if PY2: - # Omitted dict, cause worried about interactions. - from builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, list, object, range, str, max, min # noqa: F401 - import os.path from configparser import ( ConfigParser, diff --git a/src/allmydata/test/test_connections.py b/src/allmydata/test/test_connections.py index 3cf8ed937..8cc985816 100644 --- a/src/allmydata/test/test_connections.py +++ b/src/allmydata/test/test_connections.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from twisted.trial import unittest from twisted.internet import reactor diff --git a/src/allmydata/test/test_consumer.py b/src/allmydata/test/test_consumer.py index 9465b42cd..085f6b7ac 100644 --- a/src/allmydata/test/test_consumer.py +++ b/src/allmydata/test/test_consumer.py @@ -4,11 +4,6 @@ Tests for allmydata.util.consumer. Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from zope.interface import implementer from twisted.internet.interfaces import IPushProducer, IPullProducer diff --git a/src/allmydata/test/test_crawler.py b/src/allmydata/test/test_crawler.py index 02181dd55..7a28c1d35 100644 --- a/src/allmydata/test/test_crawler.py +++ b/src/allmydata/test/test_crawler.py @@ -6,11 +6,6 @@ Ported to Python 3. from future.utils import PY2, PY3 -if PY2: - # Don't use future bytes, since it breaks tests. No further works is - # needed, once we're only on Python 3 we'll be deleting this future imports - # anyway, and tests pass just fine on Python 3. - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, dict, list, object, range, str, max, min # noqa: F401 import time import os.path diff --git a/src/allmydata/test/test_crypto.py b/src/allmydata/test/test_crypto.py index 2114b053b..aee9b4156 100644 --- a/src/allmydata/test/test_crypto.py +++ b/src/allmydata/test/test_crypto.py @@ -1,8 +1,4 @@ -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, list, object, range, str, max, min # noqa: F401 - from future.utils import native_bytes import unittest diff --git a/src/allmydata/test/test_deepcheck.py b/src/allmydata/test/test_deepcheck.py index 8af75bcd0..7473363c7 100644 --- a/src/allmydata/test/test_deepcheck.py +++ b/src/allmydata/test/test_deepcheck.py @@ -2,20 +2,6 @@ Ported to Python 3. """ -# Python 2 compatibility -# Can't use `builtins.str` because something deep in Twisted callbacks ends up repr'ing -# a `future.types.newstr.newstr` as a *Python 3* byte string representation under -# *Python 2*: -# File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py27/lib/python2.7/site-packages/allmydata/util/netstring.py", line 43, in split_netstring -# assert data[position] == b","[0], position -# exceptions.AssertionError: 15 -# ... -# (Pdb) pp data -# '334:12:b\'mutable-good\',90:URI:SSK-RO:... -from past.builtins import unicode as str -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, max, min # noqa: F401 from six import ensure_text import os, json diff --git a/src/allmydata/test/test_dictutil.py b/src/allmydata/test/test_dictutil.py index ce1c4a74c..8ee119a4f 100644 --- a/src/allmydata/test/test_dictutil.py +++ b/src/allmydata/test/test_dictutil.py @@ -3,10 +3,6 @@ Tests for allmydata.util.dictutil. """ from __future__ import annotations -from future.utils import PY2, PY3 - -from unittest import skipIf - from twisted.trial import unittest from allmydata.util import dictutil @@ -88,7 +84,6 @@ class DictUtil(unittest.TestCase): class TypedKeyDict(unittest.TestCase): """Tests for dictionaries that limit keys.""" - @skipIf(PY2, "Python 2 doesn't have issues mixing bytes and unicode.") def setUp(self): pass @@ -141,27 +136,6 @@ class TypedKeyDict(unittest.TestCase): self.assertEqual(d[u"456"], 300) -class TypedKeyDictPython2(unittest.TestCase): - """Tests for dictionaries that limit keys on Python 2.""" - - @skipIf(PY3, "Testing Python 2 behavior.") - def test_python2(self): - """ - On Python2, BytesKeyDict and UnicodeKeyDict are unnecessary, because - dicts can mix both without problem so you don't get confusing behavior - if you get the type wrong. - - Eventually in a Python 3-only world mixing bytes and unicode will be - bad, thus the existence of these classes, but as we port there will be - situations where it's mixed on Python 2, which again is fine. - """ - self.assertIs(dictutil.UnicodeKeyDict, dict) - self.assertIs(dictutil.BytesKeyDict, dict) - # Demonstration of how bytes and unicode can be mixed: - d = {u"abc": 1} - self.assertEqual(d[b"abc"], 1) - - class FilterTests(unittest.TestCase): """ Tests for ``dictutil.filter``. diff --git a/src/allmydata/test/test_dirnode.py b/src/allmydata/test/test_dirnode.py index 2349f3c4e..2ef57b0af 100644 --- a/src/allmydata/test/test_dirnode.py +++ b/src/allmydata/test/test_dirnode.py @@ -5,11 +5,6 @@ Ported to Python 3. from past.builtins import long -from future.utils import PY2 -if PY2: - # Skip list() since it results in spurious test failures - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, object, range, str, max, min # noqa: F401 - import time import unicodedata from zope.interface import implementer diff --git a/src/allmydata/test/test_encode.py b/src/allmydata/test/test_encode.py index 33c946010..8ce5e757a 100644 --- a/src/allmydata/test/test_encode.py +++ b/src/allmydata/test/test_encode.py @@ -2,9 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from past.builtins import chr as byteschr, long from zope.interface import implementer diff --git a/src/allmydata/test/test_encodingutil.py b/src/allmydata/test/test_encodingutil.py index b218b0bd9..64b9a243d 100644 --- a/src/allmydata/test/test_encodingutil.py +++ b/src/allmydata/test/test_encodingutil.py @@ -1,8 +1,5 @@ from future.utils import PY2, PY3 -if PY2: - # We don't import str because omg way too ambiguous in this context. - from builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, max, min # noqa: F401 from past.builtins import unicode @@ -137,19 +134,6 @@ class EncodingUtil(ReallyEqualMixin): def test_unicode_to_url(self): self.failUnless(unicode_to_url(lumiere_nfc), b"lumi\xc3\xa8re") - @skipIf(PY3, "Python 3 is always Unicode, regardless of OS.") - def test_unicode_to_output_py2(self): - if 'argv' not in dir(self): - return - - mock_stdout = MockStdout() - mock_stdout.encoding = self.io_encoding - self.patch(sys, 'stdout', mock_stdout) - - _reload() - self.failUnlessReallyEqual(unicode_to_output(lumiere_nfc), self.argv) - - @skipIf(PY2, "Python 3 only.") def test_unicode_to_output_py3(self): self.failUnlessReallyEqual(unicode_to_output(lumiere_nfc), lumiere_nfc) @@ -167,20 +151,6 @@ class EncodingUtil(ReallyEqualMixin): self.assertIsInstance(result, type(expected_value)) self.assertEqual(result, expected_value) - @skipIf(PY3, "Python 3 only.") - def test_unicode_platform_py2(self): - matrix = { - 'linux2': False, - 'linux3': False, - 'openbsd4': False, - 'win32': True, - 'darwin': True, - } - - _reload() - self.failUnlessReallyEqual(unicode_platform(), matrix[self.platform]) - - @skipIf(PY2, "Python 3 isn't Python 2.") def test_unicode_platform_py3(self): _reload() self.failUnlessReallyEqual(unicode_platform(), True) @@ -361,9 +331,6 @@ class QuoteOutput(ReallyEqualMixin, unittest.TestCase): def test_quote_output_utf8(self, enc='utf-8'): def check(inp, out, optional_quotes=False, quote_newlines=None): - if PY2: - # On Python 3 output is always Unicode: - out = out.encode('utf-8') self._check(inp, out, enc, optional_quotes, quote_newlines) self._test_quote_output_all(enc) diff --git a/src/allmydata/test/test_filenode.py b/src/allmydata/test/test_filenode.py index 2bf1edd6c..311e6516c 100644 --- a/src/allmydata/test/test_filenode.py +++ b/src/allmydata/test/test_filenode.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from twisted.trial import unittest from allmydata import uri, client from allmydata.monitor import Monitor diff --git a/src/allmydata/test/test_happiness.py b/src/allmydata/test/test_happiness.py index 8f21b1363..190a7c7d4 100644 --- a/src/allmydata/test/test_happiness.py +++ b/src/allmydata/test/test_happiness.py @@ -6,12 +6,6 @@ allmydata.util.happinessutil. Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - # We omit dict, just in case newdict breaks things. - from builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, list, object, range, str, max, min # noqa: F401 - from twisted.trial import unittest from hypothesis import given from hypothesis.strategies import text, sets diff --git a/src/allmydata/test/test_hashutil.py b/src/allmydata/test/test_hashutil.py index d64fb8abc..9be8f05d6 100644 --- a/src/allmydata/test/test_hashutil.py +++ b/src/allmydata/test/test_hashutil.py @@ -4,10 +4,6 @@ Tests for allmydata.util.hashutil. Ported to Python 3. """ -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, list, object, range, str, max, min # noqa: F401 - from twisted.trial import unittest from allmydata.util import hashutil, base32 diff --git a/src/allmydata/test/test_humanreadable.py b/src/allmydata/test/test_humanreadable.py index 9cdc9678c..caf85ee6c 100644 --- a/src/allmydata/test/test_humanreadable.py +++ b/src/allmydata/test/test_humanreadable.py @@ -4,11 +4,6 @@ Tests for allmydata.util.humanreadable. This module has been ported to Python 3. """ - -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, list, object, range, str, max, min # noqa: F401 - from past.builtins import long from twisted.trial import unittest diff --git a/src/allmydata/test/test_hung_server.py b/src/allmydata/test/test_hung_server.py index 24e2810e0..a78f8614e 100644 --- a/src/allmydata/test/test_hung_server.py +++ b/src/allmydata/test/test_hung_server.py @@ -4,10 +4,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os, shutil from twisted.trial import unittest from twisted.internet import defer diff --git a/src/allmydata/test/test_i2p_provider.py b/src/allmydata/test/test_i2p_provider.py index 8628aeed6..3b99646bf 100644 --- a/src/allmydata/test/test_i2p_provider.py +++ b/src/allmydata/test/test_i2p_provider.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os from twisted.trial import unittest from twisted.internet import defer, error diff --git a/src/allmydata/test/test_immutable.py b/src/allmydata/test/test_immutable.py index 303485831..39c31623d 100644 --- a/src/allmydata/test/test_immutable.py +++ b/src/allmydata/test/test_immutable.py @@ -2,10 +2,6 @@ This module has been ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import random from twisted.trial import unittest diff --git a/src/allmydata/test/test_introducer.py b/src/allmydata/test/test_introducer.py index 2fd6ff69b..d37df48a9 100644 --- a/src/allmydata/test/test_introducer.py +++ b/src/allmydata/test/test_introducer.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from six import ensure_binary, ensure_text import os, re, itertools diff --git a/src/allmydata/test/test_json_metadata.py b/src/allmydata/test/test_json_metadata.py index 822d37925..950a5847c 100644 --- a/src/allmydata/test/test_json_metadata.py +++ b/src/allmydata/test/test_json_metadata.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from twisted.trial.unittest import TestCase from allmydata.web.common import get_filenode_metadata, SDMF_VERSION, MDMF_VERSION diff --git a/src/allmydata/test/test_log.py b/src/allmydata/test/test_log.py index c3472cad8..ea03ba730 100644 --- a/src/allmydata/test/test_log.py +++ b/src/allmydata/test/test_log.py @@ -6,8 +6,6 @@ Ported to Python 3. from future.utils import PY2, native_str -if PY2: - from builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from twisted.trial import unittest from twisted.python.failure import Failure diff --git a/src/allmydata/test/test_monitor.py b/src/allmydata/test/test_monitor.py index bede3e001..492597bd9 100644 --- a/src/allmydata/test/test_monitor.py +++ b/src/allmydata/test/test_monitor.py @@ -2,11 +2,6 @@ Tests for allmydata.monitor. """ - -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, list, object, range, str, max, min # noqa: F401 - from twisted.trial import unittest from allmydata.monitor import Monitor, OperationCancelledError diff --git a/src/allmydata/test/test_multi_introducers.py b/src/allmydata/test/test_multi_introducers.py index 7f42177ab..f5d0ff98c 100644 --- a/src/allmydata/test/test_multi_introducers.py +++ b/src/allmydata/test/test_multi_introducers.py @@ -2,9 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from six import ensure_binary import os diff --git a/src/allmydata/test/test_netstring.py b/src/allmydata/test/test_netstring.py index 54cc16df8..6f9a21ee2 100644 --- a/src/allmydata/test/test_netstring.py +++ b/src/allmydata/test/test_netstring.py @@ -4,10 +4,6 @@ Tests for allmydata.util.netstring. Ported to Python 3. """ -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, list, object, range, str, max, min # noqa: F401 - from twisted.trial import unittest from allmydata.util.netstring import netstring, split_netstring diff --git a/src/allmydata/test/test_no_network.py b/src/allmydata/test/test_no_network.py index 2d6bdb896..88eb27979 100644 --- a/src/allmydata/test/test_no_network.py +++ b/src/allmydata/test/test_no_network.py @@ -4,10 +4,6 @@ Test the NoNetworkGrid test harness. Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from twisted.trial import unittest from twisted.application import service from allmydata.test.no_network import NoNetworkGrid diff --git a/src/allmydata/test/test_observer.py b/src/allmydata/test/test_observer.py index ddc58b074..6d26b2470 100644 --- a/src/allmydata/test/test_observer.py +++ b/src/allmydata/test/test_observer.py @@ -4,11 +4,6 @@ Tests for allmydata.util.observer. Ported to Python 3. """ - -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, list, object, range, str, max, min # noqa: F401 - from twisted.trial import unittest from twisted.internet import defer, reactor from allmydata.util import observer diff --git a/src/allmydata/test/test_openmetrics.py b/src/allmydata/test/test_openmetrics.py index 2199bcc5f..4987aed11 100644 --- a/src/allmydata/test/test_openmetrics.py +++ b/src/allmydata/test/test_openmetrics.py @@ -4,14 +4,6 @@ Tests for ``/statistics?t=openmetrics``. Ported to Python 3. """ - -from future.utils import PY2 - -if PY2: - # fmt: off - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - # fmt: on - from prometheus_client.openmetrics import parser from treq.testing import RequestTraversalAgent diff --git a/src/allmydata/test/test_python2_regressions.py b/src/allmydata/test/test_python2_regressions.py deleted file mode 100644 index 9a12f0374..000000000 --- a/src/allmydata/test/test_python2_regressions.py +++ /dev/null @@ -1,77 +0,0 @@ -""" -Tests to check for Python2 regressions -""" - - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - -from unittest import skipUnless -from inspect import isclass - -from twisted.python.modules import getModule - -from testtools import ( - TestCase, -) -from testtools.matchers import ( - Equals, -) - -BLACKLIST = { - "allmydata.scripts.types_", - "allmydata.test._win_subprocess", - "allmydata.windows.registry", - "allmydata.windows.fixups", -} - - -def is_new_style(cls): - """ - :return bool: ``True`` if and only if the given class is "new style". - """ - # All new-style classes are instances of type. By definition. - return isinstance(cls, type) - -def defined_here(cls, where): - """ - :return bool: ``True`` if and only if the given class was defined in a - module with the given name. - - :note: Classes can lie about where they are defined. Try not to do that. - """ - return cls.__module__ == where - - -class PythonTwoRegressions(TestCase): - """ - Regression tests for Python 2 behaviors related to Python 3 porting. - """ - @skipUnless(PY2, "No point in running on Python 3.") - def test_new_style_classes(self): - """ - All classes in Tahoe-LAFS are new-style. - """ - newstyle = set() - classic = set() - for mod in getModule("allmydata").walkModules(): - if mod.name in BLACKLIST: - continue - - # iterAttributes will only work on loaded modules. So, load it. - mod.load() - - for attr in mod.iterAttributes(): - value = attr.load() - if isclass(value) and defined_here(value, mod.name): - if is_new_style(value): - newstyle.add(value) - else: - classic.add(value) - - self.assertThat( - classic, - Equals(set()), - "Expected to find no classic classes.", - ) diff --git a/src/allmydata/test/test_repairer.py b/src/allmydata/test/test_repairer.py index 280825775..cf1cf843b 100644 --- a/src/allmydata/test/test_repairer.py +++ b/src/allmydata/test/test_repairer.py @@ -3,10 +3,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from allmydata.test import common from allmydata.monitor import Monitor from allmydata import check_results diff --git a/src/allmydata/test/test_runner.py b/src/allmydata/test/test_runner.py index b784b2c61..e7cb4b082 100644 --- a/src/allmydata/test/test_runner.py +++ b/src/allmydata/test/test_runner.py @@ -3,8 +3,6 @@ Ported to Python 3 """ from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from six import ensure_text @@ -12,11 +10,6 @@ import os.path, re, sys from os import linesep import locale -import six - -from testtools import ( - skipUnless, -) from testtools.matchers import ( MatchesListwise, MatchesAny, @@ -99,27 +92,6 @@ srcfile = allmydata.__file__ rootdir = get_root_from_file(srcfile) -class ParseOptionsTests(SyncTestCase): - """ - Tests for ``parse_options``. - """ - @skipUnless(six.PY2, "Only Python 2 exceptions must stringify to bytes.") - def test_nonascii_unknown_subcommand_python2(self): - """ - When ``parse_options`` is called with an argv indicating a subcommand that - does not exist and which also contains non-ascii characters, the - exception it raises includes the subcommand encoded as UTF-8. - """ - tricky = u"\u00F6" - try: - parse_options([tricky]) - except usage.error as e: - self.assertEqual( - b"Unknown command: \\xf6", - b"{}".format(e), - ) - - class ParseOrExitTests(SyncTestCase): """ Tests for ``parse_or_exit``. diff --git a/src/allmydata/test/test_sftp.py b/src/allmydata/test/test_sftp.py index d1902b9ee..a7de35320 100644 --- a/src/allmydata/test/test_sftp.py +++ b/src/allmydata/test/test_sftp.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import re, struct, traceback, time, calendar from stat import S_IFREG, S_IFDIR diff --git a/src/allmydata/test/test_spans.py b/src/allmydata/test/test_spans.py index e1ac9a229..e6e510e5d 100644 --- a/src/allmydata/test/test_spans.py +++ b/src/allmydata/test/test_spans.py @@ -2,11 +2,6 @@ Tests for allmydata.util.spans. """ - -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, list, object, range, str, max, min # noqa: F401 - from past.builtins import long import binascii diff --git a/src/allmydata/test/test_statistics.py b/src/allmydata/test/test_statistics.py index ce91e4efb..2442e14a2 100644 --- a/src/allmydata/test/test_statistics.py +++ b/src/allmydata/test/test_statistics.py @@ -4,10 +4,6 @@ Tests for allmydata.util.statistics. Ported to Python 3. """ -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, list, object, range, str, max, min # noqa: F401 - from six.moves import StringIO # native string StringIO from twisted.trial import unittest diff --git a/src/allmydata/test/test_stats.py b/src/allmydata/test/test_stats.py index 8f02640e0..aba3a0e9c 100644 --- a/src/allmydata/test/test_stats.py +++ b/src/allmydata/test/test_stats.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from twisted.trial import unittest from twisted.application import service from allmydata.stats import CPUUsageMonitor diff --git a/src/allmydata/test/test_storage_web.py b/src/allmydata/test/test_storage_web.py index 10249c83a..e9bca2183 100644 --- a/src/allmydata/test/test_storage_web.py +++ b/src/allmydata/test/test_storage_web.py @@ -4,13 +4,6 @@ Tests for twisted.storage that uses Web APIs. Partially ported to Python 3. """ - -from future.utils import PY2 -if PY2: - # Omitted list since it broke a test on Python 2. Shouldn't require further - # work, when we switch to Python 3 we'll be dropping this, anyway. - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, object, range, str, max, min # noqa: F401 - import time import os.path import re diff --git a/src/allmydata/test/test_time_format.py b/src/allmydata/test/test_time_format.py index 2f10a3ea9..0b409feed 100644 --- a/src/allmydata/test/test_time_format.py +++ b/src/allmydata/test/test_time_format.py @@ -2,10 +2,6 @@ Tests for allmydata.util.time_format. """ -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, list, object, range, str, max, min # noqa: F401 - from past.builtins import long import time diff --git a/src/allmydata/test/test_upload.py b/src/allmydata/test/test_upload.py index f9541e946..ecb76ec27 100644 --- a/src/allmydata/test/test_upload.py +++ b/src/allmydata/test/test_upload.py @@ -4,10 +4,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os, shutil from io import BytesIO from base64 import ( diff --git a/src/allmydata/test/test_uri.py b/src/allmydata/test/test_uri.py index 7f4908da6..ae4bf2002 100644 --- a/src/allmydata/test/test_uri.py +++ b/src/allmydata/test/test_uri.py @@ -4,11 +4,6 @@ Tests for allmydata.uri. Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, dict, hex, input, next, oct, open, pow, round, super, bytes, list, object, range, str, max, min # noqa: F401 - import os from twisted.trial import unittest from allmydata import uri diff --git a/src/allmydata/test/test_util.py b/src/allmydata/test/test_util.py index 0b4917381..b6056b7e4 100644 --- a/src/allmydata/test/test_util.py +++ b/src/allmydata/test/test_util.py @@ -2,11 +2,6 @@ Ported to Python3. """ - -from future.utils import PY2 -if PY2: - # open is not here because we want to use native strings on Py2 - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 import six import os, time, sys import yaml @@ -189,8 +184,6 @@ class FileUtil(ReallyEqualMixin, unittest.TestCase): self.failUnlessRaises(AssertionError, fileutil.abspath_expanduser_unicode, b"bytestring") saved_cwd = os.path.normpath(os.getcwd()) - if PY2: - saved_cwd = saved_cwd.decode("utf8") abspath_cwd = fileutil.abspath_expanduser_unicode(u".") abspath_cwd_notlong = fileutil.abspath_expanduser_unicode(u".", long_path=False) self.failUnless(isinstance(saved_cwd, str), saved_cwd) diff --git a/src/allmydata/test/web/common.py b/src/allmydata/test/web/common.py index be7fe0af1..f92548810 100644 --- a/src/allmydata/test/web/common.py +++ b/src/allmydata/test/web/common.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import re unknown_rwcap = u"lafs://from_the_future_rw_\u263A".encode('utf-8') diff --git a/src/allmydata/test/web/matchers.py b/src/allmydata/test/web/matchers.py index f6d52aaad..669e7ddf4 100644 --- a/src/allmydata/test/web/matchers.py +++ b/src/allmydata/test/web/matchers.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import attr from testtools.matchers import Mismatch diff --git a/src/allmydata/test/web/test_common.py b/src/allmydata/test/web/test_common.py index 6c19a5b78..34c9a17a3 100644 --- a/src/allmydata/test/web/test_common.py +++ b/src/allmydata/test/web/test_common.py @@ -4,10 +4,6 @@ Tests for ``allmydata.web.common``. Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import gc from bs4 import ( diff --git a/src/allmydata/test/web/test_grid.py b/src/allmydata/test/web/test_grid.py index 0a7c913c0..86404a7bf 100644 --- a/src/allmydata/test/web/test_grid.py +++ b/src/allmydata/test/web/test_grid.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os.path, re from urllib.parse import quote as url_quote import json diff --git a/src/allmydata/test/web/test_introducer.py b/src/allmydata/test/web/test_introducer.py index d21a663f7..6741c1a2d 100644 --- a/src/allmydata/test/web/test_introducer.py +++ b/src/allmydata/test/web/test_introducer.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import json from os.path import join diff --git a/src/allmydata/test/web/test_logs.py b/src/allmydata/test/web/test_logs.py index 093503265..34ecccff6 100644 --- a/src/allmydata/test/web/test_logs.py +++ b/src/allmydata/test/web/test_logs.py @@ -4,10 +4,6 @@ Tests for ``allmydata.web.logs``. Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import json from twisted.internet.defer import inlineCallbacks diff --git a/src/allmydata/test/web/test_private.py b/src/allmydata/test/web/test_private.py index 5652e8008..110e31ff1 100644 --- a/src/allmydata/test/web/test_private.py +++ b/src/allmydata/test/web/test_private.py @@ -4,10 +4,6 @@ Tests for ``allmydata.web.private``. Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from testtools.matchers import ( Equals, ) diff --git a/src/allmydata/test/web/test_root.py b/src/allmydata/test/web/test_root.py index e810f9a14..f3b877b2d 100644 --- a/src/allmydata/test/web/test_root.py +++ b/src/allmydata/test/web/test_root.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import time import json diff --git a/src/allmydata/test/web/test_status.py b/src/allmydata/test/web/test_status.py index c46ac4500..81c9568e5 100644 --- a/src/allmydata/test/web/test_status.py +++ b/src/allmydata/test/web/test_status.py @@ -4,10 +4,6 @@ Tests for ```allmydata.web.status```. Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from bs4 import BeautifulSoup from twisted.web.template import flattenString diff --git a/src/allmydata/test/web/test_util.py b/src/allmydata/test/web/test_util.py index 5afe884b0..c21a66e98 100644 --- a/src/allmydata/test/web/test_util.py +++ b/src/allmydata/test/web/test_util.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from twisted.trial import unittest from allmydata.web import status, common from allmydata.dirnode import ONLY_FILES diff --git a/src/allmydata/unknown.py b/src/allmydata/unknown.py index bfb56496d..2a81437f6 100644 --- a/src/allmydata/unknown.py +++ b/src/allmydata/unknown.py @@ -1,10 +1,6 @@ """Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from zope.interface import implementer from twisted.internet import defer from allmydata.interfaces import IFilesystemNode, MustNotBeUnknownRWError, \ diff --git a/src/allmydata/util/abbreviate.py b/src/allmydata/util/abbreviate.py index e775813bd..80abf7b05 100644 --- a/src/allmydata/util/abbreviate.py +++ b/src/allmydata/util/abbreviate.py @@ -4,10 +4,6 @@ Convert timestamps to abbreviated English text. Ported to Python 3. """ -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, list, object, range, str, max, min # noqa: F401 - import re from datetime import timedelta diff --git a/src/allmydata/util/assertutil.py b/src/allmydata/util/assertutil.py index 2088f505c..776ed7ef7 100644 --- a/src/allmydata/util/assertutil.py +++ b/src/allmydata/util/assertutil.py @@ -7,12 +7,6 @@ have tests. Ported to Python 3. """ - -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, list, object, range, str, max, min # noqa: F401 - - # The API importers expect: from pyutil.assertutil import _assert, precondition, postcondition diff --git a/src/allmydata/util/base62.py b/src/allmydata/util/base62.py index dcde36562..2c4425562 100644 --- a/src/allmydata/util/base62.py +++ b/src/allmydata/util/base62.py @@ -5,8 +5,6 @@ Ported to Python 3. """ 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, list, object, range, str, max, min # noqa: F401 if PY2: import string diff --git a/src/allmydata/util/configutil.py b/src/allmydata/util/configutil.py index 749f6d7d7..bdb872132 100644 --- a/src/allmydata/util/configutil.py +++ b/src/allmydata/util/configutil.py @@ -6,12 +6,6 @@ Configuration is returned as Unicode strings. Ported to Python 3. """ -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, list, object, range, str, max, min # noqa: F401 - -# On Python 2 we use the backport package; that means we always get unicode -# out. from configparser import ConfigParser import attr diff --git a/src/allmydata/util/consumer.py b/src/allmydata/util/consumer.py index cd73119fe..c899fc25e 100644 --- a/src/allmydata/util/consumer.py +++ b/src/allmydata/util/consumer.py @@ -5,10 +5,6 @@ a filenode's read() method. See download_to_data() for an example of its use. Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from zope.interface import implementer from twisted.internet.interfaces import IConsumer diff --git a/src/allmydata/util/dbutil.py b/src/allmydata/util/dbutil.py index ac7ddbfeb..b27b58ab5 100644 --- a/src/allmydata/util/dbutil.py +++ b/src/allmydata/util/dbutil.py @@ -6,11 +6,6 @@ Test coverage currently provided by test_backupdb.py. Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os, sys import sqlite3 diff --git a/src/allmydata/util/encodingutil.py b/src/allmydata/util/encodingutil.py index d13011dd2..0625bfdec 100644 --- a/src/allmydata/util/encodingutil.py +++ b/src/allmydata/util/encodingutil.py @@ -10,9 +10,6 @@ Unicode is the default everywhere in Python 3. from future.utils import PY2, PY3, native_str from future.builtins import str as future_str -if PY2: - # We omit str() because that seems too tricky to get right. - from builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, max, min # noqa: F401 from past.builtins import unicode from six import ensure_str diff --git a/src/allmydata/util/fileutil.py b/src/allmydata/util/fileutil.py index 0df3781b5..0a4eebaba 100644 --- a/src/allmydata/util/fileutil.py +++ b/src/allmydata/util/fileutil.py @@ -4,12 +4,6 @@ Ported to Python3. Futz with files like a pro. """ - -from future.utils import PY2 -if PY2: - # open is not here because we want to use native strings on Py2 - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import sys, os, stat, tempfile, time, binascii import six from collections import namedtuple @@ -342,8 +336,6 @@ def abspath_expanduser_unicode(path, base=None, long_path=True): if not os.path.isabs(path): if base is None: cwd = os.getcwd() - if PY2: - cwd = cwd.decode('utf8') path = os.path.join(cwd, path) else: path = os.path.join(base, path) diff --git a/src/allmydata/util/gcutil.py b/src/allmydata/util/gcutil.py index 9eed8b1f4..2302ae6b7 100644 --- a/src/allmydata/util/gcutil.py +++ b/src/allmydata/util/gcutil.py @@ -11,10 +11,6 @@ Helpers for managing garbage collection. Ported to Python 3. """ -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, list, object, range, str, max, min # noqa: F401 - __all__ = [ "fileDescriptorResource", ] diff --git a/src/allmydata/util/happinessutil.py b/src/allmydata/util/happinessutil.py index 7f5d0f8a7..19b602826 100644 --- a/src/allmydata/util/happinessutil.py +++ b/src/allmydata/util/happinessutil.py @@ -5,11 +5,6 @@ reporting it in messages. Ported to Python 3. """ -from future.utils import PY2 -if PY2: - # We omit dict, just in case newdict breaks things. - from builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, list, object, range, str, max, min # noqa: F401 - from copy import deepcopy from allmydata.immutable.happiness_upload import residual_network from allmydata.immutable.happiness_upload import augmenting_path_for diff --git a/src/allmydata/util/humanreadable.py b/src/allmydata/util/humanreadable.py index 2eaa7c79a..356edb659 100644 --- a/src/allmydata/util/humanreadable.py +++ b/src/allmydata/util/humanreadable.py @@ -4,11 +4,6 @@ Utilities for turning objects into human-readable strings. This module has been ported to Python 3. """ - -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, list, object, range, str, max, min # noqa: F401 - import os from reprlib import Repr diff --git a/src/allmydata/util/idlib.py b/src/allmydata/util/idlib.py index c74f11599..26dd72445 100644 --- a/src/allmydata/util/idlib.py +++ b/src/allmydata/util/idlib.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from six import ensure_text from foolscap import base32 diff --git a/src/allmydata/util/jsonbytes.py b/src/allmydata/util/jsonbytes.py index 24c8f3311..0762702f9 100644 --- a/src/allmydata/util/jsonbytes.py +++ b/src/allmydata/util/jsonbytes.py @@ -4,25 +4,9 @@ A JSON encoder than can serialize bytes. Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import json import codecs -if PY2: - def backslashreplace_py2(ex): - """ - On Python 2 'backslashreplace' error handler doesn't work, so write our - own. - """ - return ''.join('\\x{:02x}'.format(ord(c)) - for c in ex.object[ex.start:ex.end]), ex.end - - codecs.register_error("backslashreplace_tahoe_py2", backslashreplace_py2) - def bytes_to_unicode(any_bytes, obj): """Convert bytes to unicode. @@ -31,8 +15,6 @@ def bytes_to_unicode(any_bytes, obj): :param obj: Object to de-byte-ify. """ errors = "backslashreplace" if any_bytes else "strict" - if PY2 and errors == "backslashreplace": - errors = "backslashreplace_tahoe_py2" def doit(obj): """Convert any bytes objects to unicode, recursively.""" diff --git a/src/allmydata/util/log.py b/src/allmydata/util/log.py index afd612d7a..3589bc366 100644 --- a/src/allmydata/util/log.py +++ b/src/allmydata/util/log.py @@ -5,8 +5,6 @@ Ported to Python 3. """ 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, list, object, range, str, max, min # noqa: F401 from six import ensure_str from pyutil import nummedobj diff --git a/src/allmydata/util/mathutil.py b/src/allmydata/util/mathutil.py index a6a58e834..2aeb11b9e 100644 --- a/src/allmydata/util/mathutil.py +++ b/src/allmydata/util/mathutil.py @@ -6,12 +6,6 @@ Backwards compatibility for direct imports. Ported to Python 3. """ - -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, list, object, range, str, max, min # noqa: F401 - - # The API importers expect: from pyutil.mathutil import div_ceil, next_multiple, pad_size, is_power_of_k, next_power_of_k, ave, log_ceil, log_floor diff --git a/src/allmydata/util/netstring.py b/src/allmydata/util/netstring.py index 23d8492ab..db913172f 100644 --- a/src/allmydata/util/netstring.py +++ b/src/allmydata/util/netstring.py @@ -4,10 +4,6 @@ Netstring encoding and decoding. Ported to Python 3. """ -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, list, object, range, str, max, min # noqa: F401 - from past.builtins import long try: diff --git a/src/allmydata/util/observer.py b/src/allmydata/util/observer.py index b753d51ad..2fa514a02 100644 --- a/src/allmydata/util/observer.py +++ b/src/allmydata/util/observer.py @@ -4,11 +4,6 @@ Observer for Twisted code. Ported to Python 3. """ - -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, list, object, range, str, max, min # noqa: F401 - import weakref from twisted.internet import defer from foolscap.api import eventually diff --git a/src/allmydata/util/rrefutil.py b/src/allmydata/util/rrefutil.py index 1fb757f34..15622435d 100644 --- a/src/allmydata/util/rrefutil.py +++ b/src/allmydata/util/rrefutil.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from foolscap.api import Violation, RemoteException diff --git a/src/allmydata/util/spans.py b/src/allmydata/util/spans.py index 4ddc67704..e5b265aaa 100644 --- a/src/allmydata/util/spans.py +++ b/src/allmydata/util/spans.py @@ -1,8 +1,4 @@ -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, list, object, range, str, max, min # noqa: F401 - class Spans(object): """I represent a compressed list of booleans, one per index (an integer). diff --git a/src/allmydata/util/statistics.py b/src/allmydata/util/statistics.py index 35a7216a2..9881dc13f 100644 --- a/src/allmydata/util/statistics.py +++ b/src/allmydata/util/statistics.py @@ -11,11 +11,6 @@ Ported to Python 3. # Transitive Grace Period Public License, version 1 or later. - -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, list, object, range, str, max, min # noqa: F401 - from allmydata.util.mathutil import round_sigfigs import math from functools import reduce diff --git a/src/allmydata/util/time_format.py b/src/allmydata/util/time_format.py index af98bf1d2..14cf4688e 100644 --- a/src/allmydata/util/time_format.py +++ b/src/allmydata/util/time_format.py @@ -5,9 +5,6 @@ ISO-8601: http://www.cl.cam.ac.uk/~mgk25/iso-time.html """ -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, list, object, range, str, max, min # noqa: F401 from future.utils import native_str import calendar, datetime, re, time diff --git a/src/allmydata/util/yamlutil.py b/src/allmydata/util/yamlutil.py index eae1f8a6e..512d5a2a9 100644 --- a/src/allmydata/util/yamlutil.py +++ b/src/allmydata/util/yamlutil.py @@ -2,35 +2,8 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import yaml - -if PY2: - # On Python 2 the way pyyaml deals with Unicode strings is inconsistent. - # - # >>> yaml.safe_load(yaml.safe_dump(u"hello")) - # 'hello' - # >>> yaml.safe_load(yaml.safe_dump(u"hello\u1234")) - # u'hello\u1234' - # - # In other words, Unicode strings get roundtripped to byte strings, but - # only sometimes. - # - # In order to ensure unicode stays unicode, we add a configuration saying - # that the YAML String Language-Independent Type ("a sequence of zero or - # more Unicode characters") should be the underlying Unicode string object, - # rather than converting to bytes when possible. - # - # Reference: https://yaml.org/type/str.html - def construct_unicode(loader, node): - return node.value - yaml.SafeLoader.add_constructor("tag:yaml.org,2002:str", - construct_unicode) - def safe_load(f): return yaml.safe_load(f) diff --git a/src/allmydata/web/check_results.py b/src/allmydata/web/check_results.py index 4bb34a2a8..1ec835658 100644 --- a/src/allmydata/web/check_results.py +++ b/src/allmydata/web/check_results.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import time from twisted.web import ( diff --git a/src/allmydata/web/directory.py b/src/allmydata/web/directory.py index 4012f93fd..001caf22f 100644 --- a/src/allmydata/web/directory.py +++ b/src/allmydata/web/directory.py @@ -2,12 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, max, min # noqa: F401 - # Don't use Future's str so that we don't get leaks into bad byte formatting - from past.builtins import unicode as str - from urllib.parse import quote as url_quote from datetime import timedelta diff --git a/src/allmydata/web/info.py b/src/allmydata/web/info.py index ff126a2a1..e10e59061 100644 --- a/src/allmydata/web/info.py +++ b/src/allmydata/web/info.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import os from urllib.parse import quote as urlquote diff --git a/src/allmydata/web/operations.py b/src/allmydata/web/operations.py index 4319a4d9c..0b71cc404 100644 --- a/src/allmydata/web/operations.py +++ b/src/allmydata/web/operations.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import time from hyperlink import ( DecodedURL, diff --git a/src/allmydata/web/private.py b/src/allmydata/web/private.py index 55cace5a3..4410399b8 100644 --- a/src/allmydata/web/private.py +++ b/src/allmydata/web/private.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import attr from zope.interface import ( diff --git a/src/allmydata/web/status.py b/src/allmydata/web/status.py index 96d68c87f..07d0256e8 100644 --- a/src/allmydata/web/status.py +++ b/src/allmydata/web/status.py @@ -2,10 +2,6 @@ Ported to Python 3. """ - -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 from past.builtins import long import itertools diff --git a/src/allmydata/web/storage.py b/src/allmydata/web/storage.py index ebbef4fa3..aeefcf62a 100644 --- a/src/allmydata/web/storage.py +++ b/src/allmydata/web/storage.py @@ -2,10 +2,6 @@ Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - import time from twisted.python.filepath import FilePath from twisted.web.template import ( diff --git a/src/allmydata/web/storage_plugins.py b/src/allmydata/web/storage_plugins.py index 9be4e84af..ad448ccdd 100644 --- a/src/allmydata/web/storage_plugins.py +++ b/src/allmydata/web/storage_plugins.py @@ -5,10 +5,6 @@ of all enabled storage client plugins. Ported to Python 3. """ -from future.utils import PY2 -if PY2: - from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, list, object, range, str, max, min # noqa: F401 - from twisted.web.resource import ( Resource, NoResource, From b2541be7c6dee914fe71c62e70622bae07f0e555 Mon Sep 17 00:00:00 2001 From: Itamar Turner-Trauring Date: Tue, 27 Feb 2024 15:32:42 -0500 Subject: [PATCH 2/3] News fragment. --- newsfragments/4092.minor | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 newsfragments/4092.minor diff --git a/newsfragments/4092.minor b/newsfragments/4092.minor new file mode 100644 index 000000000..e69de29bb From 3fb0bcfff792df45273e47454b2acaa8a6c80cba Mon Sep 17 00:00:00 2001 From: Itamar Turner-Trauring Date: Tue, 27 Feb 2024 15:37:53 -0500 Subject: [PATCH 3/3] Remove unnecessary imports. --- src/allmydata/_monkeypatch.py | 1 - src/allmydata/interfaces.py | 2 +- src/allmydata/introducer/interfaces.py | 2 +- src/allmydata/scripts/runner.py | 3 +-- src/allmydata/scripts/slow_operation.py | 2 +- src/allmydata/scripts/tahoe_get.py | 2 +- src/allmydata/scripts/tahoe_manifest.py | 2 +- src/allmydata/storage/common.py | 2 +- src/allmydata/storage/immutable.py | 2 +- src/allmydata/test/cli/test_backup.py | 2 +- src/allmydata/test/cli/test_cp.py | 3 +-- src/allmydata/test/cli/test_list.py | 2 +- src/allmydata/test/mutable/util.py | 2 +- src/allmydata/test/test_crawler.py | 2 +- src/allmydata/test/test_log.py | 2 +- src/allmydata/test/test_runner.py | 3 --- src/allmydata/util/encodingutil.py | 2 +- src/allmydata/util/jsonbytes.py | 1 - 18 files changed, 15 insertions(+), 22 deletions(-) diff --git a/src/allmydata/_monkeypatch.py b/src/allmydata/_monkeypatch.py index b5f171224..cbd3ddd13 100644 --- a/src/allmydata/_monkeypatch.py +++ b/src/allmydata/_monkeypatch.py @@ -6,7 +6,6 @@ Ported to Python 3. from future.utils import PY2 -from warnings import catch_warnings def patch(): diff --git a/src/allmydata/interfaces.py b/src/allmydata/interfaces.py index 168a7b8e4..96fccb958 100644 --- a/src/allmydata/interfaces.py +++ b/src/allmydata/interfaces.py @@ -6,7 +6,7 @@ Ported to Python 3. Note that for RemoteInterfaces, the __remote_name__ needs to be a native string because of https://github.com/warner/foolscap/blob/43f4485a42c9c28e2c79d655b3a9e24d4e6360ca/src/foolscap/remoteinterface.py#L67 """ -from future.utils import PY2, native_str +from future.utils import native_str from past.builtins import long from typing import Dict diff --git a/src/allmydata/introducer/interfaces.py b/src/allmydata/introducer/interfaces.py index 4667c7be0..13cd7c3da 100644 --- a/src/allmydata/introducer/interfaces.py +++ b/src/allmydata/introducer/interfaces.py @@ -3,7 +3,7 @@ Ported to Python 3. """ -from future.utils import PY2, native_str +from future.utils import native_str from zope.interface import Interface from foolscap.api import StringConstraint, SetOf, DictOf, Any, \ diff --git a/src/allmydata/scripts/runner.py b/src/allmydata/scripts/runner.py index 32c68ee57..73e2e4b59 100644 --- a/src/allmydata/scripts/runner.py +++ b/src/allmydata/scripts/runner.py @@ -1,6 +1,5 @@ import os, sys from io import StringIO -from past.builtins import unicode import six from twisted.python import usage @@ -106,7 +105,7 @@ def parse_options(argv, config=None): config = Options() try: config.parseOptions(argv) - except usage.error as e: + except usage.error: raise return config diff --git a/src/allmydata/scripts/slow_operation.py b/src/allmydata/scripts/slow_operation.py index e1a944ba7..236c2bf0b 100644 --- a/src/allmydata/scripts/slow_operation.py +++ b/src/allmydata/scripts/slow_operation.py @@ -2,7 +2,7 @@ Ported to Python 3. """ -from future.utils import PY2, PY3 +from future.utils import PY3 from six import ensure_str diff --git a/src/allmydata/scripts/tahoe_get.py b/src/allmydata/scripts/tahoe_get.py index 332529d04..f22d3d293 100644 --- a/src/allmydata/scripts/tahoe_get.py +++ b/src/allmydata/scripts/tahoe_get.py @@ -2,7 +2,7 @@ Ported to Python 3. """ -from future.utils import PY2, PY3 +from future.utils import PY3 from urllib.parse import quote as url_quote from allmydata.scripts.common import get_alias, DEFAULT_ALIAS, escape_path, \ diff --git a/src/allmydata/scripts/tahoe_manifest.py b/src/allmydata/scripts/tahoe_manifest.py index 1cc5ba591..0cd6100bf 100644 --- a/src/allmydata/scripts/tahoe_manifest.py +++ b/src/allmydata/scripts/tahoe_manifest.py @@ -2,7 +2,7 @@ Ported to Python 3. """ -from future.utils import PY2, PY3 +from future.utils import PY3 from six import ensure_str diff --git a/src/allmydata/storage/common.py b/src/allmydata/storage/common.py index a7b45ca0f..c0d77a6b7 100644 --- a/src/allmydata/storage/common.py +++ b/src/allmydata/storage/common.py @@ -2,7 +2,7 @@ Ported to Python 3. """ -from future.utils import PY2, PY3 +from future.utils import PY3 import os.path from allmydata.util import base32 diff --git a/src/allmydata/storage/immutable.py b/src/allmydata/storage/immutable.py index 90d6d4d2d..7a61a1e62 100644 --- a/src/allmydata/storage/immutable.py +++ b/src/allmydata/storage/immutable.py @@ -3,7 +3,7 @@ Ported to Python 3. """ -from future.utils import PY2, bytes_to_native_str +from future.utils import bytes_to_native_str import os, stat, struct, time diff --git a/src/allmydata/test/cli/test_backup.py b/src/allmydata/test/cli/test_backup.py index 744d40f78..c951e7ee3 100644 --- a/src/allmydata/test/cli/test_backup.py +++ b/src/allmydata/test/cli/test_backup.py @@ -14,7 +14,7 @@ from twisted.python.monkey import MonkeyPatcher from allmydata.util import fileutil from allmydata.util.fileutil import abspath_expanduser_unicode -from allmydata.util.encodingutil import get_io_encoding, unicode_to_argv +from allmydata.util.encodingutil import unicode_to_argv from allmydata.util.namespace import Namespace from allmydata.scripts import cli, backupdb from ..common_util import StallMixin diff --git a/src/allmydata/test/cli/test_cp.py b/src/allmydata/test/cli/test_cp.py index 2dbc6d37e..2751dc055 100644 --- a/src/allmydata/test/cli/test_cp.py +++ b/src/allmydata/test/cli/test_cp.py @@ -9,8 +9,7 @@ from twisted.internet import defer from allmydata.scripts import cli from allmydata.util import fileutil -from allmydata.util.encodingutil import (quote_output, get_io_encoding, - unicode_to_output, to_bytes) +from allmydata.util.encodingutil import (quote_output, unicode_to_output, to_bytes) from allmydata.util.assertutil import _assert from ..no_network import GridTestMixin from .common import CLITestMixin diff --git a/src/allmydata/test/cli/test_list.py b/src/allmydata/test/cli/test_list.py index 24af04ba9..55e1d7cc1 100644 --- a/src/allmydata/test/cli/test_list.py +++ b/src/allmydata/test/cli/test_list.py @@ -2,7 +2,7 @@ Ported to Python 3. """ -from future.utils import PY2, PY3 +from future.utils import PY3 from six import ensure_str from twisted.trial import unittest diff --git a/src/allmydata/test/mutable/util.py b/src/allmydata/test/mutable/util.py index 11696a83d..5a2a6a8f8 100644 --- a/src/allmydata/test/mutable/util.py +++ b/src/allmydata/test/mutable/util.py @@ -2,7 +2,7 @@ Ported to Python 3. """ -from future.utils import PY2, bchr +from future.utils import bchr from past.builtins import long diff --git a/src/allmydata/test/test_crawler.py b/src/allmydata/test/test_crawler.py index 7a28c1d35..71b0f3dee 100644 --- a/src/allmydata/test/test_crawler.py +++ b/src/allmydata/test/test_crawler.py @@ -5,7 +5,7 @@ Ported to Python 3. """ -from future.utils import PY2, PY3 +from future.utils import PY3 import time import os.path diff --git a/src/allmydata/test/test_log.py b/src/allmydata/test/test_log.py index ea03ba730..c3671f9b9 100644 --- a/src/allmydata/test/test_log.py +++ b/src/allmydata/test/test_log.py @@ -5,7 +5,7 @@ Ported to Python 3. """ -from future.utils import PY2, native_str +from future.utils import native_str from twisted.trial import unittest from twisted.python.failure import Failure diff --git a/src/allmydata/test/test_runner.py b/src/allmydata/test/test_runner.py index e7cb4b082..f62afd0b0 100644 --- a/src/allmydata/test/test_runner.py +++ b/src/allmydata/test/test_runner.py @@ -46,9 +46,6 @@ from allmydata.util.pid import ( ) from allmydata.test import common_util import allmydata -from allmydata.scripts.runner import ( - parse_options, -) from allmydata.scripts.tahoe_run import ( on_stdin_close, ) diff --git a/src/allmydata/util/encodingutil.py b/src/allmydata/util/encodingutil.py index 0625bfdec..cf8d83a42 100644 --- a/src/allmydata/util/encodingutil.py +++ b/src/allmydata/util/encodingutil.py @@ -8,7 +8,7 @@ Once Python 2 support is dropped, most of this module will obsolete, since Unicode is the default everywhere in Python 3. """ -from future.utils import PY2, PY3, native_str +from future.utils import PY3, native_str from future.builtins import str as future_str from past.builtins import unicode diff --git a/src/allmydata/util/jsonbytes.py b/src/allmydata/util/jsonbytes.py index 0762702f9..7415b4f02 100644 --- a/src/allmydata/util/jsonbytes.py +++ b/src/allmydata/util/jsonbytes.py @@ -5,7 +5,6 @@ Ported to Python 3. """ import json -import codecs def bytes_to_unicode(any_bytes, obj):