diff --git a/.travis.yml b/.travis.yml index 684ac64a..eb28e459 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,8 +4,12 @@ cache: pip matrix: include: + - python: 2.6 + env: TOXENV=py26 - python: 2.7 env: TOXENV=py27 + - python: 3.3 + env: TOXENV=py33 - python: 3.4 env: TOXENV=py34 - python: 3.5 @@ -18,7 +22,10 @@ matrix: sudo: required # required for Python 3.7 (travis-ci/travis-ci#9069) install: - - pip install tox + - pip install tox==2.9.1 + - pip install virtualenv==15.2.0 + - pip install py==1.4.30 + - pip install pluggy==0.5.2 before_script: # Run flake8 tests only on Python 2.7 and 3.7... diff --git a/LICENSE.txt b/LICENSE.txt index c4dfd4b0..d41c85d1 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2013-2016 Python Charmers Pty Ltd, Australia +Copyright (c) 2013-2018 Python Charmers Pty Ltd, Australia Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.rst b/README.rst index e6801d90..807ea2a0 100644 --- a/README.rst +++ b/README.rst @@ -264,12 +264,14 @@ For more info, see :ref:`translation`. Licensing --------- -:Author: Ed Schofield +:Author: Ed Schofield, Jordan M. Adler, et al -:Copyright: 2013-2016 Python Charmers Pty Ltd, Australia. +:Copyright: 2013-2018 Python Charmers Pty Ltd, Australia. -:Sponsor: Python Charmers Pty Ltd, Australia, and Python Charmers Pte - Ltd, Singapore. http://pythoncharmers.com +:Sponsors: Python Charmers Pty Ltd, Australia, and Python Charmers Pte + Ltd, Singapore. http://pythoncharmers.com + + Pinterest https://opensource.pinterest.com/ :Licence: MIT. See ``LICENSE.txt`` or `here `_. diff --git a/docs/compatible_idioms.rst b/docs/compatible_idioms.rst index 9fa0a19e..52a6a8b0 100644 --- a/docs/compatible_idioms.rst +++ b/docs/compatible_idioms.rst @@ -3,7 +3,7 @@ Cheat Sheet: Writing Python 2-3 compatible code =============================================== -- **Copyright (c):** 2013-2016 Python Charmers Pty Ltd, Australia. +- **Copyright (c):** 2013-2018 Python Charmers Pty Ltd, Australia. - **Author:** Ed Schofield. - **Licence:** Creative Commons Attribution. diff --git a/docs/conf.py b/docs/conf.py index cce52ff6..72911405 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -51,7 +51,7 @@ # General information about the project. project = u'Python-Future' -copyright = u'2013-2016, Python Charmers Pty Ltd, Australia' +copyright = u'2013-2018, Python Charmers Pty Ltd, Australia' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the diff --git a/docs/credits.rst b/docs/credits.rst index c713d36d..3cf1c9c8 100644 --- a/docs/credits.rst +++ b/docs/credits.rst @@ -8,7 +8,7 @@ Licence The software is distributed under an MIT licence. The text is as follows (from ``LICENSE.txt``):: - Copyright (c) 2013-2016 Python Charmers Pty Ltd, Australia + Copyright (c) 2013-2018 Python Charmers Pty Ltd, Australia Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -30,33 +30,33 @@ The software is distributed under an MIT licence. The text is as follows .. _sponsor: -Sponsor -------- +Sponsors +-------- Python Charmers Pty Ltd, Australia, and Python Charmers Pte Ltd, Singapore. http://pythoncharmers.com +Pinterest https://opensource.pinterest.com/ .. _authors: +Maintainer +---------- +Python-Future is currently maintained by Jordan M. Adler . + Authors ------- +Python-Future is largely written by Ed Schofield with the help of various contributors: -Python-Future is written and maintained by Ed Schofield with the help of -various contributors: - -Development Lead -~~~~~~~~~~~~~~~~ - -- Ed Schofield - -Patches -~~~~~~~ - +- Grant Bakker - Jacob Beck +- Nate Bogdanowicz - Denis Cornehl - Nicolas Delaby +- Jon Dufresne - Corey Farwell - Eric Firing +- Maximilian Hils +- Martijn Jacobs - Michael Joseph - Waldemar Kornewald - Alexey Kotlyarov @@ -65,26 +65,37 @@ Patches - Joshua Landau - German Larrain - Chris Lasher +- Calum Lind +- Jon Parise +- Matthew Parnell +- Miga Purg +- Éloi Rivard - Elliott Sales de Andrade +- Yury Selivanov - Tim Shaffer +- Louis Sautier - Daniel Szoska +- Flaviu Tamas - Jeff Tratner - Tim Tröndle - Brad Walker -- Mystic-Mirage (GitHub) -- str4d (GitHub) -- 9seconds (GitHub) -- Varriount (GitHub) +- cclaus (GiHub user) +- lsm (GiHub user) +- Mystic-Mirage (GitHub user) +- str4d (GitHub user) +- 9seconds (GitHub user) +- Varriount (GitHub user) Suggestions and Feedback ~~~~~~~~~~~~~~~~~~~~~~~~ - Chris Adams - Martijn Faassen +- Joe Gordon - Lion Krischer - Danielle Madeley - Val Markovic -- wluebbe (GitHub) +- wluebbe (GitHub user) Other Credits diff --git a/docs/notebooks/Writing Python 2-3 compatible code.ipynb b/docs/notebooks/Writing Python 2-3 compatible code.ipynb index 8ac0bd80..a3e5e156 100644 --- a/docs/notebooks/Writing Python 2-3 compatible code.ipynb +++ b/docs/notebooks/Writing Python 2-3 compatible code.ipynb @@ -11,7 +11,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "- **Copyright (c):** 2013-2016 Python Charmers Pty Ltd, Australia.\n", + "- **Copyright (c):** 2013-2018 Python Charmers Pty Ltd, Australia.\n", "- **Author:** Ed Schofield.\n", "- **Licence:** Creative Commons Attribution.\n", "\n", diff --git a/docs/whatsnew.rst b/docs/whatsnew.rst index 46b49bbf..1cde2a44 100644 --- a/docs/whatsnew.rst +++ b/docs/whatsnew.rst @@ -3,15 +3,25 @@ What's New ********** -.. _whats-new-0.16.x: - -What's new in version 0.16.1 (unreleased) +What's new in version 0.17 (2018-10-19) ========================================= -This is a minor bug-fix release: - -- Fix `from collections import ChainMap` after install_aliases() (issue #226) - +This is a major bug-fix release, including: + +- Fix ``from collections import ChainMap`` after install_aliases() (issue #226) +- Fix multiple import from ``__future__`` bug in futurize (issue #113) +- Add support for proper %s formatting of newbytes +- Properly implement iterator protocol for newrange object +- Fix ``past.translation`` on read-only file systems +- Fix Tkinter import bug introduced in Python 2.7.4 (issue #262) +- Correct TypeError to ValueError in a specific edge case for newrange +- Support inequality tests betwen newstrs and newbytes +- Add type check to __get__ in newsuper +- Fix fix_divsion_safe to support better conversion of complex expressions, and + skip obvious float division. + +As well as a number of corrections to a variety of documentation, and updates to +test infrastructure. What's new in version 0.16.0 (2016-10-27) ========================================== diff --git a/futurize.py b/futurize.py index 5f1a7732..41080cf0 100755 --- a/futurize.py +++ b/futurize.py @@ -13,7 +13,7 @@ Licensing --------- -Copyright 2013-2016 Python Charmers Pty Ltd, Australia. +Copyright 2013-2018 Python Charmers Pty Ltd, Australia. The software is distributed under an MIT licence. See LICENSE.txt. """ diff --git a/pasteurize.py b/pasteurize.py index db7931ab..c0bd7e09 100755 --- a/pasteurize.py +++ b/pasteurize.py @@ -12,7 +12,7 @@ Licensing --------- -Copyright 2013-2016 Python Charmers Pty Ltd, Australia. +Copyright 2013-2018 Python Charmers Pty Ltd, Australia. The software is distributed under an MIT licence. See LICENSE.txt. """ diff --git a/setup.py b/setup.py index 05ee3243..2f7b36a3 100755 --- a/setup.py +++ b/setup.py @@ -96,8 +96,10 @@ CLASSIFIERS = [ "Programming Language :: Python", "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", @@ -174,7 +176,7 @@ packages=PACKAGES, package_data=PACKAGE_DATA, include_package_data=True, - python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", + python_requires=">=2.6, !=3.0.*, !=3.1.*, !=3.2.*", classifiers=CLASSIFIERS, **setup_kwds ) diff --git a/src/future/__init__.py b/src/future/__init__.py index aee268a9..211fb43b 100644 --- a/src/future/__init__.py +++ b/src/future/__init__.py @@ -76,7 +76,7 @@ Licensing --------- -Copyright 2013-2016 Python Charmers Pty Ltd, Australia. +Copyright 2013-2018 Python Charmers Pty Ltd, Australia. The software is distributed under an MIT licence. See LICENSE.txt. """ @@ -84,7 +84,7 @@ __title__ = 'future' __author__ = 'Ed Schofield' __license__ = 'MIT' -__copyright__ = 'Copyright 2013-2016 Python Charmers Pty Ltd' +__copyright__ = 'Copyright 2013-2018 Python Charmers Pty Ltd' __ver_major__ = 0 __ver_minor__ = 17 __ver_patch__ = 0 diff --git a/src/future/backports/misc.py b/src/future/backports/misc.py index e883d335..ef752078 100644 --- a/src/future/backports/misc.py +++ b/src/future/backports/misc.py @@ -817,7 +817,7 @@ def __delitem__(self, key): try: del self.maps[0][key] except KeyError: - raise KeyError('Key not found in the first mapping: {!r}'.format(key)) + raise KeyError('Key not found in the first mapping: {0!r}'.format(key)) def popitem(self): 'Remove and return an item pair from maps[0]. Raise KeyError is maps[0] is empty.' @@ -831,7 +831,7 @@ def pop(self, key, *args): try: return self.maps[0].pop(key, *args) except KeyError: - raise KeyError('Key not found in the first mapping: {!r}'.format(key)) + raise KeyError('Key not found in the first mapping: {0!r}'.format(key)) def clear(self): 'Clear maps[0], leaving maps[1:] intact.' diff --git a/src/past/__init__.py b/src/past/__init__.py index 06293a89..3b5d9db1 100644 --- a/src/past/__init__.py +++ b/src/past/__init__.py @@ -80,7 +80,7 @@ Licensing --------- -Copyright 2013-2016 Python Charmers Pty Ltd, Australia. +Copyright 2013-2018 Python Charmers Pty Ltd, Australia. The software is distributed under an MIT licence. See LICENSE.txt. """ diff --git a/tests/test_future/test_futurize.py b/tests/test_future/test_futurize.py index 9ba53ee6..5549a010 100644 --- a/tests/test_future/test_futurize.py +++ b/tests/test_future/test_futurize.py @@ -1194,7 +1194,7 @@ def total_count(self): x = 3 / 2 y = 3. / 2 - foo = range(100) + foo = list(range(100)) assert x == 1 and isinstance(x, int) assert y == 1.5 and isinstance(y, float) a = 1 + foo[len(foo) / 2] diff --git a/tox.ini b/tox.ini index 96f949a3..f5c013f8 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,9 @@ [tox] -envlist = py27,py34,py35,py36,py37 +envlist = py26,py27,py33,py34,py35,py36,py37 [testenv] -deps = pytest +deps = + pytest + unittest2 + py26: importlib commands = pytest {posargs}