What’s New

What’s new in version 0.18.2 (2019-10-30)

This is a minor bug-fix release containing a number of fixes: - Fix min/max functions with generators, and ‘None’ default (PR #514) - Use BaseException in raise_() (PR #515) - Fix builtins.round() for Decimals (Issue #501) - Fix raise_from() to prevent failures with immutable classes (PR #518) - Make FixInput idempotent (Issue #427) - Fix type in newround (PR #521) - Support mimetype guessing in urllib2 for Py3.8+ (Issue #508)

Python 3.8 is not yet officially supported.

What’s new in version 0.18.1 (2019-10-09)

This is a minor bug-fix release containing a fix for raise_() when passed an exception that’s not an Exception (e.g. BaseException subclasses)

What’s new in version 0.18.0 (2019-10-09)

This is a major bug-fix and feature release, including:

  • Fix collections.abc import for py38+

  • Remove import for isnewbytes() function, reducing CPU cost significantly

  • Fix bug with importing past.translation when importing past which breaks zipped python installations

  • Fix an issue with copyreg import under Py3 that results in unexposed stdlib functionality

  • Export and document types in future.utils

  • Update behavior of newstr.__eq__() to match str.__eq__() as per reference docs

  • Fix raising and the raising fixer to handle cases where the syntax is ambigious

  • Allow “default” parameter in min() and max() (Issue #334)

  • Implement __hash__() in newstr (Issue #454)

  • Future proof some version checks to handle the fact that Py4 won’t be a major breaking release

  • Fix urllib.request imports for Python 3.8 compatibility (Issue #447)

  • Fix future import ordering (Issue #445)

  • Fixed bug in fix_division_safe fixture (Issue #434)

  • Do not globally destroy re.ASCII in PY3

  • Fix a bug in email.Message.set_boundary() (Issue #429)

  • Implement format_map() in str

  • Implement readinto() for socket.fp

As well as a number of corrections to a variety of documentation, and updates to test infrastructure.

What’s new in version 0.17.1 (2018-10-30)

This release address a packaging error because of an erroneous declaration that any built wheels are universal.

What’s new in version 0.17.0 (2018-10-19)

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)

This release removes the configparser package as an alias for ConfigParser on Py2 to improve compatibility with the backported configparser package <https://pypi.org/project/configparser/>. Previously python-future and the PyPI configparser backport clashed, causing various compatibility issues. (Issues #118, #181)

If your code previously relied on configparser being supplied by python-future, the recommended upgrade path is to run pip install configparser or add configparser to your requirements.txt file.

Note that, if you are upgrading future with pip, you may need to uninstall the old version of future or manually remove the site-packages/future-0.15.2-py2.7.egg folder for this change to take effect on your system.

This releases also fixes these bugs:

  • Fix newbytes constructor bug. (Issue #171)

  • Fix semantics of bool() with newobject. (Issue #211)

  • Fix standard_library.install_aliases() on PyPy. (Issue #205)

  • Fix assertRaises for pow and compile` on Python 3.5. (Issue #183)

  • Fix return argument of future.utils.ensure_new_type if conversion to new type does not exist. (Issue #185)

  • Add missing cmp_to_key for Py2.6. (Issue #189)

  • Allow the old_div fixer to be disabled. (Issue #190)

  • Improve compatibility with Google App Engine. (Issue #231)

  • Add some missing imports to the tkinter and tkinter.filedialog package namespaces. (Issues #212 and #233)

  • More complete implementation of raise_from on PY3. (Issues #141, #213 and #235, fix provided by Varriount)

What’s new in version 0.15.2 (2015-09-11)

This is a minor bug-fix release:

  • Fix socket.create_connection() backport on Py2.6 (issue #162)

  • Add more tests of urllib.request etc.

  • Fix newsuper() calls from the __init__ method of PyQt subclassses (issue #160, thanks to Christopher Arndt)

What’s new in version 0.15.1 (2015-09-09)

This is a minor bug-fix release:

  • Use 3-argument socket.create_connection() backport to restore Py2.6 compatibility in urllib.request.urlopen() (issue #162)

  • Remove breakpoint in future.backports.http.client triggered on certain data (issue #164)

  • Move exec fixer to stage 1 of futurize because the forward-compatible exec(a, b) idiom is supported in Python 2.6 and 2.7. See https://docs.python.org/2/reference/simple_stmts.html#exec.

What’s new in version 0.15.0 (2015-07-25)

This release fixes compatibility bugs with CherryPy’s Py2/3 compat layer and the latest version of the urllib3 package. It also adds some additional backports for Py2.6 and Py2.7 from Py3.4’s standard library.

New features:

  • install_aliases() now exposes full backports of the Py3 urllib submodules (parse, request etc.) from future.backports.urllib as submodules of urllib on Py2. This implies, for example, that urllib.parse.unquote now takes an optional encoding argument as it does on Py3. This improves compatibility with CherryPy’s Py2/3 compat layer (issue #158).

  • tkinter.ttk support (issue #151)

  • Backport of collections.ChainMap (issue #150)

  • Backport of itertools.count for Py2.6 (issue #152)

  • Enable and document support for the surrogateescape error handler for newstr and newbytes objects on Py2.x (issue #116). This feature is currently in alpha.

  • Add constants to http.client such as HTTP_PORT and BAD_REQUEST (issue #137)

  • Backport of reprlib.recursive_repr to Py2

Bug fixes:

  • Add HTTPMessage to http.client, which is missing from httplib.__all__ on Python <= 2.7.10. This restores compatibility with the latest urllib3 package (issue #159, thanks to Waldemar Kornewald)

  • Expand newint.__divmod__ and newint.__rdivmod__ to fall back to <type ‘long’> implementations where appropriate (issue #146 - thanks to Matt Bogosian)

  • Fix newrange slicing for some slice/range combos (issue #132, thanks to Brad Walker)

  • Small doc fixes (thanks to Michael Joseph and Tim Tröndle)

  • Improve robustness of test suite against opening .pyc files as text on Py2

  • Update backports of Counter and OrderedDict to use the newer implementations from Py3.4. This fixes .copy() preserving subclasses etc.

  • futurize no longer breaks working Py2 code by changing basestring to str. Instead it imports the basestring forward-port from past.builtins (issues #127 and #156)

  • future.utils: add string_types etc. and update docs (issue #126)

Previous versions

See Changes in previous versions for versions prior to v0.15.