Changelogs » Awkwardduet



awkwardduet 1.1a4

Bug Fixes
- Fix issue with fix_str shadowing fix_bytes (Denis Zawada, #1011581)


awkwardduet 1.1a3

Bug Fixes
- 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'


Bug Fixes

- fix_kwargs no longer breaks docstrings when adding code to fix parameters.
(Denis Zawada, #880389)

New Features

- 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.


Bug Fixes

- 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)

New Features

- 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)


General Notes

- 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.

Specific Fixers

- 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

- fix_imports and fix_imports2: bugfixes

- fix_unittest: new explicit-only fixer for unittest -> unittest2


General Notes

- 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.

Specific Fixers

- fix_imports2: treating "from dbm import ..." as though it were written
"from dbm.__init__ import ...", for the purpose of catching whichdb and
anydbm usage.

- fix_imports2: warning about "from urllib import request" and
"import urllib.request as spam" ambiguity.


General Notes

- 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
Python 2.5.

Specific Fixers

- 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.


General Notes

- 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'
home directories.

- Some documentation fixes

Specific Fixers

- 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)


General Notes

- Release numbering scheme changed to conform to PEP 386 guidelines.

- Minor documentation improvements.

- Removed an unnecessary line that was causing a DeprecationWarning.

Specific Fixers

- print fix renamed to printfunction and made explicit only.

- new print fix refactors print functions into print statements.


General Notes

- First release after Google Summer of Code 2009(tm)

Specific Fixers

- 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.