From aedba08847222aa76c30244d5d2be3ae99786b8f Mon Sep 17 00:00:00 2001 From: Ed Schofield Date: Wed, 1 Oct 2014 09:41:11 +1000 Subject: [PATCH] Modify config to expect the new project layout --- MANIFEST.in | 11 ++++---- discover_tests.py | 10 +++++--- src/futurize.py => futurize.py | 8 +++--- src/pasteurize.py => pasteurize.py | 3 +++ setup.py | 24 +++++++++--------- .../disabled => tests/future}/__init__.py | 0 tests/future/disabled/__init__.py | 0 .../disabled/disabled_test_http_cookies.py | 0 .../disabled/disabled_test_httpservers.py | 0 .../disabled_test_urllib2_localnet.py | 0 .../disabled/disabled_test_urllib2net.py | 0 .../future}/disabled/disabled_test_xmlrpc.py | 0 .../disabled/disabled_test_xmlrpc_net.py | 0 .../future}/disabled/test_email/__init__.py | 0 .../future}/disabled/test_email/__main__.py | 0 .../disabled/test_email/data/PyBanner048.gif | Bin .../disabled/test_email/data/audiotest.au | Bin .../disabled/test_email/data/msg_01.txt | 0 .../disabled/test_email/data/msg_02.txt | 0 .../disabled/test_email/data/msg_03.txt | 0 .../disabled/test_email/data/msg_04.txt | 0 .../disabled/test_email/data/msg_05.txt | 0 .../disabled/test_email/data/msg_06.txt | 0 .../disabled/test_email/data/msg_07.txt | 0 .../disabled/test_email/data/msg_08.txt | 0 .../disabled/test_email/data/msg_09.txt | 0 .../disabled/test_email/data/msg_10.txt | 0 .../disabled/test_email/data/msg_11.txt | 0 .../disabled/test_email/data/msg_12.txt | 0 .../disabled/test_email/data/msg_12a.txt | 0 .../disabled/test_email/data/msg_13.txt | 0 .../disabled/test_email/data/msg_14.txt | 0 .../disabled/test_email/data/msg_15.txt | 0 .../disabled/test_email/data/msg_16.txt | 0 .../disabled/test_email/data/msg_17.txt | 0 .../disabled/test_email/data/msg_18.txt | 0 .../disabled/test_email/data/msg_19.txt | 0 .../disabled/test_email/data/msg_20.txt | 0 .../disabled/test_email/data/msg_21.txt | 0 .../disabled/test_email/data/msg_22.txt | 0 .../disabled/test_email/data/msg_23.txt | 0 .../disabled/test_email/data/msg_24.txt | 0 .../disabled/test_email/data/msg_25.txt | 0 .../disabled/test_email/data/msg_26.txt | 0 .../disabled/test_email/data/msg_27.txt | 0 .../disabled/test_email/data/msg_28.txt | 0 .../disabled/test_email/data/msg_29.txt | 0 .../disabled/test_email/data/msg_30.txt | 0 .../disabled/test_email/data/msg_31.txt | 0 .../disabled/test_email/data/msg_32.txt | 0 .../disabled/test_email/data/msg_33.txt | 0 .../disabled/test_email/data/msg_34.txt | 0 .../disabled/test_email/data/msg_35.txt | 0 .../disabled/test_email/data/msg_36.txt | 0 .../disabled/test_email/data/msg_37.txt | 0 .../disabled/test_email/data/msg_38.txt | 0 .../disabled/test_email/data/msg_39.txt | 0 .../disabled/test_email/data/msg_40.txt | 0 .../disabled/test_email/data/msg_41.txt | 0 .../disabled/test_email/data/msg_42.txt | 0 .../disabled/test_email/data/msg_43.txt | 0 .../disabled/test_email/data/msg_44.txt | 0 .../disabled/test_email/data/msg_45.txt | 0 .../disabled/test_email/data/msg_46.txt | 0 .../disabled_test__encoded_words.py | 0 .../disabled_test__header_value_parser.py | 0 .../test_email/disabled_test_asian_codecs.py | 0 .../disabled_test_defect_handling.py | 0 .../test_email/disabled_test_email.py | 0 .../test_email/disabled_test_generator.py | 0 .../disabled_test_headerregistry.py | 0 .../test_email/disabled_test_inversion.py | 0 .../test_email/disabled_test_message.py | 0 .../test_email/disabled_test_parser.py | 0 .../test_email/disabled_test_pickleable.py | 0 .../test_email/disabled_test_policy.py | 0 .../test_email/disabled_test_utils.py | 0 .../tests => tests/future}/test_buffer.py | 0 .../tests => tests/future}/test_builtins.py | 0 .../future}/test_builtins_explicit_import.py | 0 .../tests => tests/future}/test_bytes.py | 0 .../future}/test_common_iterators.py | 0 .../tests => tests/future}/test_decorators.py | 0 .../tests => tests/future}/test_dict.py | 0 .../future}/test_explicit_imports.py | 0 .../tests => tests/future}/test_futurize.py | 0 .../tests => tests/future}/test_html.py | 0 .../tests => tests/future}/test_htmlparser.py | 0 .../future}/test_http_cookiejar.py | 0 .../tests => tests/future}/test_httplib.py | 0 .../future}/test_import_star.py | 0 .../future}/test_imports_urllib.py | 0 .../future/tests => tests/future}/test_int.py | 0 .../future}/test_int_old_division.py | 0 .../tests => tests/future}/test_isinstance.py | 0 .../future}/test_libfuturize_fixers.py | 0 .../tests => tests/future}/test_list.py | 0 .../tests => tests/future}/test_magicsuper.py | 0 .../tests => tests/future}/test_object.py | 0 .../tests => tests/future}/test_pasteurize.py | 0 .../future}/test_py2_str_literals_to_bytes.py | 0 .../tests => tests/future}/test_requests.py | 0 .../future}/test_standard_library.py | 0 .../future/tests => tests/future}/test_str.py | 0 .../tests => tests/future}/test_super.py | 0 .../future}/test_surrogateescape.py | 0 .../tests => tests/future}/test_urllib.py | 0 .../tests => tests/future}/test_urllib2.py | 0 .../future}/test_urllib_response.py | 0 .../tests => tests/future}/test_urllibnet.py | 0 .../tests => tests/future}/test_urlparse.py | 0 .../tests => tests/future}/test_utils.py | 0 tests/past/__init__.py | 0 .../tests => tests/past}/test_basestring.py | 0 .../tests => tests/past}/test_builtins.py | 0 .../tests => tests/past}/test_noniterators.py | 0 .../past/tests => tests/past}/test_olddict.py | 0 {src/past/tests => tests/past}/test_oldstr.py | 0 .../tests => tests/past}/test_translation.py | 0 119 files changed, 33 insertions(+), 23 deletions(-) rename src/futurize.py => futurize.py (66%) rename src/pasteurize.py => pasteurize.py (77%) rename {src/future/tests/disabled => tests/future}/__init__.py (100%) create mode 100644 tests/future/disabled/__init__.py rename {src/future/tests => tests/future}/disabled/disabled_test_http_cookies.py (100%) rename {src/future/tests => tests/future}/disabled/disabled_test_httpservers.py (100%) rename {src/future/tests => tests/future}/disabled/disabled_test_urllib2_localnet.py (100%) rename {src/future/tests => tests/future}/disabled/disabled_test_urllib2net.py (100%) rename {src/future/tests => tests/future}/disabled/disabled_test_xmlrpc.py (100%) rename {src/future/tests => tests/future}/disabled/disabled_test_xmlrpc_net.py (100%) rename {src/future/tests => tests/future}/disabled/test_email/__init__.py (100%) rename {src/future/tests => tests/future}/disabled/test_email/__main__.py (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/PyBanner048.gif (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/audiotest.au (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_01.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_02.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_03.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_04.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_05.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_06.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_07.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_08.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_09.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_10.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_11.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_12.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_12a.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_13.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_14.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_15.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_16.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_17.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_18.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_19.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_20.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_21.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_22.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_23.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_24.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_25.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_26.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_27.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_28.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_29.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_30.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_31.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_32.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_33.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_34.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_35.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_36.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_37.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_38.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_39.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_40.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_41.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_42.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_43.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_44.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_45.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/data/msg_46.txt (100%) rename {src/future/tests => tests/future}/disabled/test_email/disabled_test__encoded_words.py (100%) rename {src/future/tests => tests/future}/disabled/test_email/disabled_test__header_value_parser.py (100%) rename {src/future/tests => tests/future}/disabled/test_email/disabled_test_asian_codecs.py (100%) rename {src/future/tests => tests/future}/disabled/test_email/disabled_test_defect_handling.py (100%) rename {src/future/tests => tests/future}/disabled/test_email/disabled_test_email.py (100%) rename {src/future/tests => tests/future}/disabled/test_email/disabled_test_generator.py (100%) rename {src/future/tests => tests/future}/disabled/test_email/disabled_test_headerregistry.py (100%) rename {src/future/tests => tests/future}/disabled/test_email/disabled_test_inversion.py (100%) rename {src/future/tests => tests/future}/disabled/test_email/disabled_test_message.py (100%) rename {src/future/tests => tests/future}/disabled/test_email/disabled_test_parser.py (100%) rename {src/future/tests => tests/future}/disabled/test_email/disabled_test_pickleable.py (100%) rename {src/future/tests => tests/future}/disabled/test_email/disabled_test_policy.py (100%) rename {src/future/tests => tests/future}/disabled/test_email/disabled_test_utils.py (100%) rename {src/future/tests => tests/future}/test_buffer.py (100%) rename {src/future/tests => tests/future}/test_builtins.py (100%) rename {src/future/tests => tests/future}/test_builtins_explicit_import.py (100%) rename {src/future/tests => tests/future}/test_bytes.py (100%) rename {src/future/tests => tests/future}/test_common_iterators.py (100%) rename {src/future/tests => tests/future}/test_decorators.py (100%) rename {src/future/tests => tests/future}/test_dict.py (100%) rename {src/future/tests => tests/future}/test_explicit_imports.py (100%) rename {src/future/tests => tests/future}/test_futurize.py (100%) rename {src/future/tests => tests/future}/test_html.py (100%) rename {src/future/tests => tests/future}/test_htmlparser.py (100%) rename {src/future/tests => tests/future}/test_http_cookiejar.py (100%) rename {src/future/tests => tests/future}/test_httplib.py (100%) rename {src/future/tests => tests/future}/test_import_star.py (100%) rename {src/future/tests => tests/future}/test_imports_urllib.py (100%) rename {src/future/tests => tests/future}/test_int.py (100%) rename {src/future/tests => tests/future}/test_int_old_division.py (100%) rename {src/future/tests => tests/future}/test_isinstance.py (100%) rename {src/future/tests => tests/future}/test_libfuturize_fixers.py (100%) rename {src/future/tests => tests/future}/test_list.py (100%) rename {src/future/tests => tests/future}/test_magicsuper.py (100%) rename {src/future/tests => tests/future}/test_object.py (100%) rename {src/future/tests => tests/future}/test_pasteurize.py (100%) rename {src/future/tests => tests/future}/test_py2_str_literals_to_bytes.py (100%) rename {src/future/tests => tests/future}/test_requests.py (100%) rename {src/future/tests => tests/future}/test_standard_library.py (100%) rename {src/future/tests => tests/future}/test_str.py (100%) rename {src/future/tests => tests/future}/test_super.py (100%) rename {src/future/tests => tests/future}/test_surrogateescape.py (100%) rename {src/future/tests => tests/future}/test_urllib.py (100%) rename {src/future/tests => tests/future}/test_urllib2.py (100%) rename {src/future/tests => tests/future}/test_urllib_response.py (100%) rename {src/future/tests => tests/future}/test_urllibnet.py (100%) rename {src/future/tests => tests/future}/test_urlparse.py (100%) rename {src/future/tests => tests/future}/test_utils.py (100%) create mode 100644 tests/past/__init__.py rename {src/past/tests => tests/past}/test_basestring.py (100%) rename {src/past/tests => tests/past}/test_builtins.py (100%) rename {src/past/tests => tests/past}/test_noniterators.py (100%) rename {src/past/tests => tests/past}/test_olddict.py (100%) rename {src/past/tests => tests/past}/test_oldstr.py (100%) rename {src/past/tests => tests/past}/test_translation.py (100%) diff --git a/MANIFEST.in b/MANIFEST.in index e17513b6..5b62df76 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -18,9 +18,10 @@ recursive-include docs *.sh recursive-include docs *.tiff recursive-include docs *.txt recursive-include docs Makefile -recursive-include future *.au -recursive-include future *.gif -recursive-include future *.pem -recursive-include future *.py -recursive-include future *.txt +recursive-include src *.py +recursive-include src *.pem +recursive-include tests *.au +recursive-include tests *.gif +recursive-include tests *.py +recursive-include tests *.txt diff --git a/discover_tests.py b/discover_tests.py index 2617b1c9..9f2e581d 100644 --- a/discover_tests.py +++ b/discover_tests.py @@ -8,17 +8,21 @@ import unittest if not hasattr(unittest.defaultTestLoader, 'discover'): - import unittest2 as unittest + try: + import unittest2 as unittest + except ImportError: + raise ImportError('The unittest2 module is required to run tests on Python 2.6') def additional_tests(): setup_file = sys.modules['__main__'].__file__ setup_dir = os.path.abspath(os.path.dirname(setup_file)) - testsuite = unittest.defaultTestLoader.discover(setup_dir) + test_dir = os.path.join(setup_dir, 'tests') + test_suite = unittest.defaultTestLoader.discover(test_dir) blacklist = [] if '/home/travis' in __file__: # Skip some tests that fail on travis-ci blacklist.append('test_command') - return exclude_tests(testsuite, blacklist) + return exclude_tests(test_suite, blacklist) class SkipCase(unittest.TestCase): diff --git a/src/futurize.py b/futurize.py similarity index 66% rename from src/futurize.py rename to futurize.py index b69785a2..1b3f34a0 100755 --- a/src/futurize.py +++ b/futurize.py @@ -3,10 +3,12 @@ futurize.py =========== -Like Armin Ronacher's ``modernize.py``, but using the ``future`` package rather than a direct dependency on ``six``'. +This script is only used by the unit tests. Another script called +"futurize" is created automatically (without the .py extension) by +setuptools. -futurize.py attempts to turn Py2 code into valid, clean Py3 code that is also -compatible with Py2 when using the ``future`` package. +futurize.py attempts to turn Py2 code into valid, clean Py3 code that is +also compatible with Py2 when using the ``future`` package. Licensing diff --git a/src/pasteurize.py b/pasteurize.py similarity index 77% rename from src/pasteurize.py rename to pasteurize.py index d3be98a8..4e24731c 100755 --- a/src/pasteurize.py +++ b/pasteurize.py @@ -3,6 +3,9 @@ pasteurize.py ============= +This script is only used by the unit tests. Another script called "pasteurize" +is created automatically (without the .py extension) by setuptools. + pasteurize.py attempts to turn Py3 code into relatively clean Py3 code that is also compatible with Py2 when using the ``future`` package. diff --git a/setup.py b/setup.py index c0b9b965..a0148f3a 100755 --- a/setup.py +++ b/setup.py @@ -1,18 +1,16 @@ #!/usr/bin/env python +from __future__ import absolute_import + import os import os.path import sys -import future -from future.standard_library import exclude_local_folder_imports - -with exclude_local_folder_imports('configparser', 'reprlib'): - try: - from setuptools import setup - except ImportError: - from distutils.core import setup +try: + from setuptools import setup +except ImportError: + from distutils.core import setup if sys.argv[-1] == 'publish': @@ -41,14 +39,14 @@ "future.moves.tkinter", "future.moves.urllib", "future.moves.xmlrpc", - "future.tests", + "future.tests", # for future.tests.base # "future.tests.test_email", "future.utils", "past", "past.builtins", "past.types", "past.utils", - "past.tests", + # "past.tests", "past.translation", "libfuturize", "libfuturize.fixes", @@ -84,6 +82,7 @@ 'check_rst.sh', 'TESTING.txt', ], + 'tests': ['*.py'], } REQUIRES = [] @@ -91,9 +90,10 @@ if sys.version_info[:2] == (2, 6): REQUIRES += ['importlib', 'argparse'] TEST_REQUIRES += ['unittest2'] -VERSION = future.__version__ +import src.future +VERSION = src.future.__version__ DESCRIPTION = "Clean single-source support for Python 3 and 2" -LONG_DESC = future.__doc__ +LONG_DESC = src.future.__doc__ AUTHOR = "Ed Schofield" AUTHOR_EMAIL = "ed@pythoncharmers.com" URL="https://python-future.org" diff --git a/src/future/tests/disabled/__init__.py b/tests/future/__init__.py similarity index 100% rename from src/future/tests/disabled/__init__.py rename to tests/future/__init__.py diff --git a/tests/future/disabled/__init__.py b/tests/future/disabled/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/future/tests/disabled/disabled_test_http_cookies.py b/tests/future/disabled/disabled_test_http_cookies.py similarity index 100% rename from src/future/tests/disabled/disabled_test_http_cookies.py rename to tests/future/disabled/disabled_test_http_cookies.py diff --git a/src/future/tests/disabled/disabled_test_httpservers.py b/tests/future/disabled/disabled_test_httpservers.py similarity index 100% rename from src/future/tests/disabled/disabled_test_httpservers.py rename to tests/future/disabled/disabled_test_httpservers.py diff --git a/src/future/tests/disabled/disabled_test_urllib2_localnet.py b/tests/future/disabled/disabled_test_urllib2_localnet.py similarity index 100% rename from src/future/tests/disabled/disabled_test_urllib2_localnet.py rename to tests/future/disabled/disabled_test_urllib2_localnet.py diff --git a/src/future/tests/disabled/disabled_test_urllib2net.py b/tests/future/disabled/disabled_test_urllib2net.py similarity index 100% rename from src/future/tests/disabled/disabled_test_urllib2net.py rename to tests/future/disabled/disabled_test_urllib2net.py diff --git a/src/future/tests/disabled/disabled_test_xmlrpc.py b/tests/future/disabled/disabled_test_xmlrpc.py similarity index 100% rename from src/future/tests/disabled/disabled_test_xmlrpc.py rename to tests/future/disabled/disabled_test_xmlrpc.py diff --git a/src/future/tests/disabled/disabled_test_xmlrpc_net.py b/tests/future/disabled/disabled_test_xmlrpc_net.py similarity index 100% rename from src/future/tests/disabled/disabled_test_xmlrpc_net.py rename to tests/future/disabled/disabled_test_xmlrpc_net.py diff --git a/src/future/tests/disabled/test_email/__init__.py b/tests/future/disabled/test_email/__init__.py similarity index 100% rename from src/future/tests/disabled/test_email/__init__.py rename to tests/future/disabled/test_email/__init__.py diff --git a/src/future/tests/disabled/test_email/__main__.py b/tests/future/disabled/test_email/__main__.py similarity index 100% rename from src/future/tests/disabled/test_email/__main__.py rename to tests/future/disabled/test_email/__main__.py diff --git a/src/future/tests/disabled/test_email/data/PyBanner048.gif b/tests/future/disabled/test_email/data/PyBanner048.gif similarity index 100% rename from src/future/tests/disabled/test_email/data/PyBanner048.gif rename to tests/future/disabled/test_email/data/PyBanner048.gif diff --git a/src/future/tests/disabled/test_email/data/audiotest.au b/tests/future/disabled/test_email/data/audiotest.au similarity index 100% rename from src/future/tests/disabled/test_email/data/audiotest.au rename to tests/future/disabled/test_email/data/audiotest.au diff --git a/src/future/tests/disabled/test_email/data/msg_01.txt b/tests/future/disabled/test_email/data/msg_01.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_01.txt rename to tests/future/disabled/test_email/data/msg_01.txt diff --git a/src/future/tests/disabled/test_email/data/msg_02.txt b/tests/future/disabled/test_email/data/msg_02.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_02.txt rename to tests/future/disabled/test_email/data/msg_02.txt diff --git a/src/future/tests/disabled/test_email/data/msg_03.txt b/tests/future/disabled/test_email/data/msg_03.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_03.txt rename to tests/future/disabled/test_email/data/msg_03.txt diff --git a/src/future/tests/disabled/test_email/data/msg_04.txt b/tests/future/disabled/test_email/data/msg_04.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_04.txt rename to tests/future/disabled/test_email/data/msg_04.txt diff --git a/src/future/tests/disabled/test_email/data/msg_05.txt b/tests/future/disabled/test_email/data/msg_05.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_05.txt rename to tests/future/disabled/test_email/data/msg_05.txt diff --git a/src/future/tests/disabled/test_email/data/msg_06.txt b/tests/future/disabled/test_email/data/msg_06.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_06.txt rename to tests/future/disabled/test_email/data/msg_06.txt diff --git a/src/future/tests/disabled/test_email/data/msg_07.txt b/tests/future/disabled/test_email/data/msg_07.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_07.txt rename to tests/future/disabled/test_email/data/msg_07.txt diff --git a/src/future/tests/disabled/test_email/data/msg_08.txt b/tests/future/disabled/test_email/data/msg_08.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_08.txt rename to tests/future/disabled/test_email/data/msg_08.txt diff --git a/src/future/tests/disabled/test_email/data/msg_09.txt b/tests/future/disabled/test_email/data/msg_09.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_09.txt rename to tests/future/disabled/test_email/data/msg_09.txt diff --git a/src/future/tests/disabled/test_email/data/msg_10.txt b/tests/future/disabled/test_email/data/msg_10.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_10.txt rename to tests/future/disabled/test_email/data/msg_10.txt diff --git a/src/future/tests/disabled/test_email/data/msg_11.txt b/tests/future/disabled/test_email/data/msg_11.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_11.txt rename to tests/future/disabled/test_email/data/msg_11.txt diff --git a/src/future/tests/disabled/test_email/data/msg_12.txt b/tests/future/disabled/test_email/data/msg_12.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_12.txt rename to tests/future/disabled/test_email/data/msg_12.txt diff --git a/src/future/tests/disabled/test_email/data/msg_12a.txt b/tests/future/disabled/test_email/data/msg_12a.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_12a.txt rename to tests/future/disabled/test_email/data/msg_12a.txt diff --git a/src/future/tests/disabled/test_email/data/msg_13.txt b/tests/future/disabled/test_email/data/msg_13.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_13.txt rename to tests/future/disabled/test_email/data/msg_13.txt diff --git a/src/future/tests/disabled/test_email/data/msg_14.txt b/tests/future/disabled/test_email/data/msg_14.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_14.txt rename to tests/future/disabled/test_email/data/msg_14.txt diff --git a/src/future/tests/disabled/test_email/data/msg_15.txt b/tests/future/disabled/test_email/data/msg_15.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_15.txt rename to tests/future/disabled/test_email/data/msg_15.txt diff --git a/src/future/tests/disabled/test_email/data/msg_16.txt b/tests/future/disabled/test_email/data/msg_16.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_16.txt rename to tests/future/disabled/test_email/data/msg_16.txt diff --git a/src/future/tests/disabled/test_email/data/msg_17.txt b/tests/future/disabled/test_email/data/msg_17.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_17.txt rename to tests/future/disabled/test_email/data/msg_17.txt diff --git a/src/future/tests/disabled/test_email/data/msg_18.txt b/tests/future/disabled/test_email/data/msg_18.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_18.txt rename to tests/future/disabled/test_email/data/msg_18.txt diff --git a/src/future/tests/disabled/test_email/data/msg_19.txt b/tests/future/disabled/test_email/data/msg_19.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_19.txt rename to tests/future/disabled/test_email/data/msg_19.txt diff --git a/src/future/tests/disabled/test_email/data/msg_20.txt b/tests/future/disabled/test_email/data/msg_20.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_20.txt rename to tests/future/disabled/test_email/data/msg_20.txt diff --git a/src/future/tests/disabled/test_email/data/msg_21.txt b/tests/future/disabled/test_email/data/msg_21.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_21.txt rename to tests/future/disabled/test_email/data/msg_21.txt diff --git a/src/future/tests/disabled/test_email/data/msg_22.txt b/tests/future/disabled/test_email/data/msg_22.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_22.txt rename to tests/future/disabled/test_email/data/msg_22.txt diff --git a/src/future/tests/disabled/test_email/data/msg_23.txt b/tests/future/disabled/test_email/data/msg_23.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_23.txt rename to tests/future/disabled/test_email/data/msg_23.txt diff --git a/src/future/tests/disabled/test_email/data/msg_24.txt b/tests/future/disabled/test_email/data/msg_24.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_24.txt rename to tests/future/disabled/test_email/data/msg_24.txt diff --git a/src/future/tests/disabled/test_email/data/msg_25.txt b/tests/future/disabled/test_email/data/msg_25.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_25.txt rename to tests/future/disabled/test_email/data/msg_25.txt diff --git a/src/future/tests/disabled/test_email/data/msg_26.txt b/tests/future/disabled/test_email/data/msg_26.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_26.txt rename to tests/future/disabled/test_email/data/msg_26.txt diff --git a/src/future/tests/disabled/test_email/data/msg_27.txt b/tests/future/disabled/test_email/data/msg_27.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_27.txt rename to tests/future/disabled/test_email/data/msg_27.txt diff --git a/src/future/tests/disabled/test_email/data/msg_28.txt b/tests/future/disabled/test_email/data/msg_28.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_28.txt rename to tests/future/disabled/test_email/data/msg_28.txt diff --git a/src/future/tests/disabled/test_email/data/msg_29.txt b/tests/future/disabled/test_email/data/msg_29.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_29.txt rename to tests/future/disabled/test_email/data/msg_29.txt diff --git a/src/future/tests/disabled/test_email/data/msg_30.txt b/tests/future/disabled/test_email/data/msg_30.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_30.txt rename to tests/future/disabled/test_email/data/msg_30.txt diff --git a/src/future/tests/disabled/test_email/data/msg_31.txt b/tests/future/disabled/test_email/data/msg_31.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_31.txt rename to tests/future/disabled/test_email/data/msg_31.txt diff --git a/src/future/tests/disabled/test_email/data/msg_32.txt b/tests/future/disabled/test_email/data/msg_32.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_32.txt rename to tests/future/disabled/test_email/data/msg_32.txt diff --git a/src/future/tests/disabled/test_email/data/msg_33.txt b/tests/future/disabled/test_email/data/msg_33.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_33.txt rename to tests/future/disabled/test_email/data/msg_33.txt diff --git a/src/future/tests/disabled/test_email/data/msg_34.txt b/tests/future/disabled/test_email/data/msg_34.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_34.txt rename to tests/future/disabled/test_email/data/msg_34.txt diff --git a/src/future/tests/disabled/test_email/data/msg_35.txt b/tests/future/disabled/test_email/data/msg_35.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_35.txt rename to tests/future/disabled/test_email/data/msg_35.txt diff --git a/src/future/tests/disabled/test_email/data/msg_36.txt b/tests/future/disabled/test_email/data/msg_36.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_36.txt rename to tests/future/disabled/test_email/data/msg_36.txt diff --git a/src/future/tests/disabled/test_email/data/msg_37.txt b/tests/future/disabled/test_email/data/msg_37.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_37.txt rename to tests/future/disabled/test_email/data/msg_37.txt diff --git a/src/future/tests/disabled/test_email/data/msg_38.txt b/tests/future/disabled/test_email/data/msg_38.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_38.txt rename to tests/future/disabled/test_email/data/msg_38.txt diff --git a/src/future/tests/disabled/test_email/data/msg_39.txt b/tests/future/disabled/test_email/data/msg_39.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_39.txt rename to tests/future/disabled/test_email/data/msg_39.txt diff --git a/src/future/tests/disabled/test_email/data/msg_40.txt b/tests/future/disabled/test_email/data/msg_40.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_40.txt rename to tests/future/disabled/test_email/data/msg_40.txt diff --git a/src/future/tests/disabled/test_email/data/msg_41.txt b/tests/future/disabled/test_email/data/msg_41.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_41.txt rename to tests/future/disabled/test_email/data/msg_41.txt diff --git a/src/future/tests/disabled/test_email/data/msg_42.txt b/tests/future/disabled/test_email/data/msg_42.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_42.txt rename to tests/future/disabled/test_email/data/msg_42.txt diff --git a/src/future/tests/disabled/test_email/data/msg_43.txt b/tests/future/disabled/test_email/data/msg_43.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_43.txt rename to tests/future/disabled/test_email/data/msg_43.txt diff --git a/src/future/tests/disabled/test_email/data/msg_44.txt b/tests/future/disabled/test_email/data/msg_44.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_44.txt rename to tests/future/disabled/test_email/data/msg_44.txt diff --git a/src/future/tests/disabled/test_email/data/msg_45.txt b/tests/future/disabled/test_email/data/msg_45.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_45.txt rename to tests/future/disabled/test_email/data/msg_45.txt diff --git a/src/future/tests/disabled/test_email/data/msg_46.txt b/tests/future/disabled/test_email/data/msg_46.txt similarity index 100% rename from src/future/tests/disabled/test_email/data/msg_46.txt rename to tests/future/disabled/test_email/data/msg_46.txt diff --git a/src/future/tests/disabled/test_email/disabled_test__encoded_words.py b/tests/future/disabled/test_email/disabled_test__encoded_words.py similarity index 100% rename from src/future/tests/disabled/test_email/disabled_test__encoded_words.py rename to tests/future/disabled/test_email/disabled_test__encoded_words.py diff --git a/src/future/tests/disabled/test_email/disabled_test__header_value_parser.py b/tests/future/disabled/test_email/disabled_test__header_value_parser.py similarity index 100% rename from src/future/tests/disabled/test_email/disabled_test__header_value_parser.py rename to tests/future/disabled/test_email/disabled_test__header_value_parser.py diff --git a/src/future/tests/disabled/test_email/disabled_test_asian_codecs.py b/tests/future/disabled/test_email/disabled_test_asian_codecs.py similarity index 100% rename from src/future/tests/disabled/test_email/disabled_test_asian_codecs.py rename to tests/future/disabled/test_email/disabled_test_asian_codecs.py diff --git a/src/future/tests/disabled/test_email/disabled_test_defect_handling.py b/tests/future/disabled/test_email/disabled_test_defect_handling.py similarity index 100% rename from src/future/tests/disabled/test_email/disabled_test_defect_handling.py rename to tests/future/disabled/test_email/disabled_test_defect_handling.py diff --git a/src/future/tests/disabled/test_email/disabled_test_email.py b/tests/future/disabled/test_email/disabled_test_email.py similarity index 100% rename from src/future/tests/disabled/test_email/disabled_test_email.py rename to tests/future/disabled/test_email/disabled_test_email.py diff --git a/src/future/tests/disabled/test_email/disabled_test_generator.py b/tests/future/disabled/test_email/disabled_test_generator.py similarity index 100% rename from src/future/tests/disabled/test_email/disabled_test_generator.py rename to tests/future/disabled/test_email/disabled_test_generator.py diff --git a/src/future/tests/disabled/test_email/disabled_test_headerregistry.py b/tests/future/disabled/test_email/disabled_test_headerregistry.py similarity index 100% rename from src/future/tests/disabled/test_email/disabled_test_headerregistry.py rename to tests/future/disabled/test_email/disabled_test_headerregistry.py diff --git a/src/future/tests/disabled/test_email/disabled_test_inversion.py b/tests/future/disabled/test_email/disabled_test_inversion.py similarity index 100% rename from src/future/tests/disabled/test_email/disabled_test_inversion.py rename to tests/future/disabled/test_email/disabled_test_inversion.py diff --git a/src/future/tests/disabled/test_email/disabled_test_message.py b/tests/future/disabled/test_email/disabled_test_message.py similarity index 100% rename from src/future/tests/disabled/test_email/disabled_test_message.py rename to tests/future/disabled/test_email/disabled_test_message.py diff --git a/src/future/tests/disabled/test_email/disabled_test_parser.py b/tests/future/disabled/test_email/disabled_test_parser.py similarity index 100% rename from src/future/tests/disabled/test_email/disabled_test_parser.py rename to tests/future/disabled/test_email/disabled_test_parser.py diff --git a/src/future/tests/disabled/test_email/disabled_test_pickleable.py b/tests/future/disabled/test_email/disabled_test_pickleable.py similarity index 100% rename from src/future/tests/disabled/test_email/disabled_test_pickleable.py rename to tests/future/disabled/test_email/disabled_test_pickleable.py diff --git a/src/future/tests/disabled/test_email/disabled_test_policy.py b/tests/future/disabled/test_email/disabled_test_policy.py similarity index 100% rename from src/future/tests/disabled/test_email/disabled_test_policy.py rename to tests/future/disabled/test_email/disabled_test_policy.py diff --git a/src/future/tests/disabled/test_email/disabled_test_utils.py b/tests/future/disabled/test_email/disabled_test_utils.py similarity index 100% rename from src/future/tests/disabled/test_email/disabled_test_utils.py rename to tests/future/disabled/test_email/disabled_test_utils.py diff --git a/src/future/tests/test_buffer.py b/tests/future/test_buffer.py similarity index 100% rename from src/future/tests/test_buffer.py rename to tests/future/test_buffer.py diff --git a/src/future/tests/test_builtins.py b/tests/future/test_builtins.py similarity index 100% rename from src/future/tests/test_builtins.py rename to tests/future/test_builtins.py diff --git a/src/future/tests/test_builtins_explicit_import.py b/tests/future/test_builtins_explicit_import.py similarity index 100% rename from src/future/tests/test_builtins_explicit_import.py rename to tests/future/test_builtins_explicit_import.py diff --git a/src/future/tests/test_bytes.py b/tests/future/test_bytes.py similarity index 100% rename from src/future/tests/test_bytes.py rename to tests/future/test_bytes.py diff --git a/src/future/tests/test_common_iterators.py b/tests/future/test_common_iterators.py similarity index 100% rename from src/future/tests/test_common_iterators.py rename to tests/future/test_common_iterators.py diff --git a/src/future/tests/test_decorators.py b/tests/future/test_decorators.py similarity index 100% rename from src/future/tests/test_decorators.py rename to tests/future/test_decorators.py diff --git a/src/future/tests/test_dict.py b/tests/future/test_dict.py similarity index 100% rename from src/future/tests/test_dict.py rename to tests/future/test_dict.py diff --git a/src/future/tests/test_explicit_imports.py b/tests/future/test_explicit_imports.py similarity index 100% rename from src/future/tests/test_explicit_imports.py rename to tests/future/test_explicit_imports.py diff --git a/src/future/tests/test_futurize.py b/tests/future/test_futurize.py similarity index 100% rename from src/future/tests/test_futurize.py rename to tests/future/test_futurize.py diff --git a/src/future/tests/test_html.py b/tests/future/test_html.py similarity index 100% rename from src/future/tests/test_html.py rename to tests/future/test_html.py diff --git a/src/future/tests/test_htmlparser.py b/tests/future/test_htmlparser.py similarity index 100% rename from src/future/tests/test_htmlparser.py rename to tests/future/test_htmlparser.py diff --git a/src/future/tests/test_http_cookiejar.py b/tests/future/test_http_cookiejar.py similarity index 100% rename from src/future/tests/test_http_cookiejar.py rename to tests/future/test_http_cookiejar.py diff --git a/src/future/tests/test_httplib.py b/tests/future/test_httplib.py similarity index 100% rename from src/future/tests/test_httplib.py rename to tests/future/test_httplib.py diff --git a/src/future/tests/test_import_star.py b/tests/future/test_import_star.py similarity index 100% rename from src/future/tests/test_import_star.py rename to tests/future/test_import_star.py diff --git a/src/future/tests/test_imports_urllib.py b/tests/future/test_imports_urllib.py similarity index 100% rename from src/future/tests/test_imports_urllib.py rename to tests/future/test_imports_urllib.py diff --git a/src/future/tests/test_int.py b/tests/future/test_int.py similarity index 100% rename from src/future/tests/test_int.py rename to tests/future/test_int.py diff --git a/src/future/tests/test_int_old_division.py b/tests/future/test_int_old_division.py similarity index 100% rename from src/future/tests/test_int_old_division.py rename to tests/future/test_int_old_division.py diff --git a/src/future/tests/test_isinstance.py b/tests/future/test_isinstance.py similarity index 100% rename from src/future/tests/test_isinstance.py rename to tests/future/test_isinstance.py diff --git a/src/future/tests/test_libfuturize_fixers.py b/tests/future/test_libfuturize_fixers.py similarity index 100% rename from src/future/tests/test_libfuturize_fixers.py rename to tests/future/test_libfuturize_fixers.py diff --git a/src/future/tests/test_list.py b/tests/future/test_list.py similarity index 100% rename from src/future/tests/test_list.py rename to tests/future/test_list.py diff --git a/src/future/tests/test_magicsuper.py b/tests/future/test_magicsuper.py similarity index 100% rename from src/future/tests/test_magicsuper.py rename to tests/future/test_magicsuper.py diff --git a/src/future/tests/test_object.py b/tests/future/test_object.py similarity index 100% rename from src/future/tests/test_object.py rename to tests/future/test_object.py diff --git a/src/future/tests/test_pasteurize.py b/tests/future/test_pasteurize.py similarity index 100% rename from src/future/tests/test_pasteurize.py rename to tests/future/test_pasteurize.py diff --git a/src/future/tests/test_py2_str_literals_to_bytes.py b/tests/future/test_py2_str_literals_to_bytes.py similarity index 100% rename from src/future/tests/test_py2_str_literals_to_bytes.py rename to tests/future/test_py2_str_literals_to_bytes.py diff --git a/src/future/tests/test_requests.py b/tests/future/test_requests.py similarity index 100% rename from src/future/tests/test_requests.py rename to tests/future/test_requests.py diff --git a/src/future/tests/test_standard_library.py b/tests/future/test_standard_library.py similarity index 100% rename from src/future/tests/test_standard_library.py rename to tests/future/test_standard_library.py diff --git a/src/future/tests/test_str.py b/tests/future/test_str.py similarity index 100% rename from src/future/tests/test_str.py rename to tests/future/test_str.py diff --git a/src/future/tests/test_super.py b/tests/future/test_super.py similarity index 100% rename from src/future/tests/test_super.py rename to tests/future/test_super.py diff --git a/src/future/tests/test_surrogateescape.py b/tests/future/test_surrogateescape.py similarity index 100% rename from src/future/tests/test_surrogateescape.py rename to tests/future/test_surrogateescape.py diff --git a/src/future/tests/test_urllib.py b/tests/future/test_urllib.py similarity index 100% rename from src/future/tests/test_urllib.py rename to tests/future/test_urllib.py diff --git a/src/future/tests/test_urllib2.py b/tests/future/test_urllib2.py similarity index 100% rename from src/future/tests/test_urllib2.py rename to tests/future/test_urllib2.py diff --git a/src/future/tests/test_urllib_response.py b/tests/future/test_urllib_response.py similarity index 100% rename from src/future/tests/test_urllib_response.py rename to tests/future/test_urllib_response.py diff --git a/src/future/tests/test_urllibnet.py b/tests/future/test_urllibnet.py similarity index 100% rename from src/future/tests/test_urllibnet.py rename to tests/future/test_urllibnet.py diff --git a/src/future/tests/test_urlparse.py b/tests/future/test_urlparse.py similarity index 100% rename from src/future/tests/test_urlparse.py rename to tests/future/test_urlparse.py diff --git a/src/future/tests/test_utils.py b/tests/future/test_utils.py similarity index 100% rename from src/future/tests/test_utils.py rename to tests/future/test_utils.py diff --git a/tests/past/__init__.py b/tests/past/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/past/tests/test_basestring.py b/tests/past/test_basestring.py similarity index 100% rename from src/past/tests/test_basestring.py rename to tests/past/test_basestring.py diff --git a/src/past/tests/test_builtins.py b/tests/past/test_builtins.py similarity index 100% rename from src/past/tests/test_builtins.py rename to tests/past/test_builtins.py diff --git a/src/past/tests/test_noniterators.py b/tests/past/test_noniterators.py similarity index 100% rename from src/past/tests/test_noniterators.py rename to tests/past/test_noniterators.py diff --git a/src/past/tests/test_olddict.py b/tests/past/test_olddict.py similarity index 100% rename from src/past/tests/test_olddict.py rename to tests/past/test_olddict.py diff --git a/src/past/tests/test_oldstr.py b/tests/past/test_oldstr.py similarity index 100% rename from src/past/tests/test_oldstr.py rename to tests/past/test_oldstr.py diff --git a/src/past/tests/test_translation.py b/tests/past/test_translation.py similarity index 100% rename from src/past/tests/test_translation.py rename to tests/past/test_translation.py