1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
|
.. _whats-new:
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 :ref:`whats-old` for versions prior to v0.15.
|