- Fix issue with fix_str shadowing fix_bytes (Denis Zawada, #1011581)
- Use temporary value to prevent shadowing function name in decorators
with the same name, e.g. if you use (@property def foo...) and then
(@foo.setter def foo...) (Denis Zawada, #1008074)
- Use entry_points.console_scripts instead of custom script for '3to2'
- fix_kwargs no longer breaks docstrings when adding code to fix parameters.
(Denis Zawada, #880389)
- Format template strings, that use auto-numbered fields, are now converted
to use explicitly numbered fields, thus extending compatibility with
Python 2.6 even further. (Denis Zawada, #881113)
- Chained exceptions (raise E from E) are now included in the __cause__
attribute whenever possible. (Denis Zawada, #881136)
- Function annotations are now collected and set manually. You can access them
via the func_annotations property, exactly like in Python 3.
(Denis Zawada, #881134)
- New fixer fix_funcdecorator, fix_classdecorator equivalent for decorated
functions, is now available and auto-enabled (as a dependency for
fix_annotations) (Denis Zawada)
- __annotations__ attributes are now renamed to func_annotations.
- Attribute renamers with special names (e.g. __nonzero__) are now more
- Method renamers have been DRYed and marked as BM_compatible.
- Some minor issues with preserving whitespace in fix_classdecorator have
been resolved by switching to new implementation, that could be reused.
- Fix_str have been split into fix_str and fix_str_literals. This has allowed
to mark fix_str_literals as BM_compatible and shaved off almost 2 seconds
from the test suite run.
- fix_super now refactors magic super (super() with no arguments) by searching
the parsing tree for class name and the first argument, the same mechanism
used by Python 3 runtime. Until now super() used `self.__class__` instead
of a class name, which caused trouble with non-trivial inheritence.
(Denis Zawada, #880377; originally reported in lib3to2 1.0 series)
- fix_next now correctly parenthesizes generator statements.
(Denis Zawada, #880378)
- fix_next is now aware of extend form of the `next` builting, i.e
next(iterable[, default]). If extended signature is detected, a warning is
reported and the code remains unaltered. This provides compatibility with
Python 2.6–7. (Denis Zawada, #880383)
- Python 3 __str__ methods are now converted to __unicode__ in Python 2,
while __bytes__ are converted to __str__. This further extends unicode
compatibility between runtimes. (Denis Zawada, #880382)
- Python 3 default absolute import behavior is now enforced in Python 2.5–7
using the ‘from __future__ import __absolute_import__’ directive.
(Denis Zawada, #880388)
- Testing infrastructure is now compatible with nose runner. (Denis Zawada)
- Calling this 1.0, because it looks pretty close to what it should look like
- Creating a separate branch that uses "two2three" instead of "lib2to3" from
PyPI as a dependency, to make 3to2 more accessible to non-bleeding-edge users
- First release after Google Summer of Code 2010 was finished; various small
changes are not reported here.
- fix_bytes: much more thorough
- fix_fullargspec: new fixer, fixes "getfullargspec" -> "getargspec"
- fix_raise: added a quick fix for "raise x from y" -> "raise x"
- fix_kwargs: new fixer, fixes keyword-only arguments
- fix_unpacking: added support for implicit assignment context
- fix_open: new fixer, replaces open() with io.open()
- fix_imports and fix_imports2: bugfixes
- fix_unittest: new explicit-only fixer for unittest -> unittest2
- First non-alpha, non-beta release!
- Using "#!/usr/bin/env python3.1" instead of "#!/usr/bin/env python3" to
reflect that lib3to2 has only been tested with Python 3.1.
- fix_imports2: treating "from dbm import ..." as though it were written
"from dbm.__init__ import ...", for the purpose of catching whichdb and
- fix_imports2: warning about "from urllib import request" and
"import urllib.request as spam" ambiguity.
- Development is now done exclusively in Python 3, and releases are generated
by running 3to2 on itself.
For now, this requires that 3to2 already be installed.
- Given a recent enough version of lib2to3 installed, 3to2 will now run on
- fix_imports2 rewritten, now fixes cases of "from urllib.request import ..."
and "import urllib.request". No fixes are currently planned for the
"from urllib import request" or "import urllib.request as spam" wordings.
- 3to2 now performs an explicit check on the interpreter version
when run directly and exits when it is incorrect
- Slightly more robust Makefile adds local targets ('install-local',
'test-local', 'uninstall-local') that use site-directories in users'
- Some documentation fixes
- Fixer added for dictionary and set comprehensions
- Fixer added for extended iterable unpacking in explicit assignment context
(warns that it cannot convert the implicit assignment context version)
- Release numbering scheme changed to conform to PEP 386 guidelines.
- Minor documentation improvements.
- Removed an unnecessary line that was causing a DeprecationWarning.
- print fix renamed to printfunction and made explicit only.
- new print fix refactors print functions into print statements.
- First release after Google Summer of Code 2009(tm)
- imports and imports2 fixes are explicit-only due to known crashes. Run 3to2
with the -fimports and/or -fimports2 switch to enable those fixes only.
- features fix might not fix all features.