Release Notes¶
0.8.1 - 2019-12-10¶
Bug fixes¶
- Fixed precedence issue for f-string expressions that caused redundant parenthesis around expression. (Reported by Ilya Kamenshchikov in Issue 153 and fixed by Batuhan Taskaya in PR 155.)
- Fixed
astor.to_source()
incorrectly checking whether source_generator_class is a subclass ofastor.code_gen.SourceGenerator
. (Reported by Yu-Chia “Hank” Liu in Issue 158 and fixed by Will Crichton in PR 164.)
- Fixed
TypeError
when AST nodes with unicode strings are passed toastor.to_source()
. (Reported and fixed by Dominik Moritz in PR 154.)
0.8.0 - 2019-05-19¶
New features¶
- Support
ast.Constant
nodes being emitted by Python 3.8 (and initially created in Python 3.6). (Reported and fixed by Chris Rink in Issue 120 and PR 121.)
- Support Python 3.8’s assignment expressions. (Reported and fixed by Kodi Arfer in Issue 126 and PR 134.)
- Support Python 3.8’s f-string debugging syntax. (Reported and fixed by Batuhan Taskaya in Issue 138 and PR 139.)
Bug fixes¶
- Fix string parsing when there is a newline inside an f-string. (Reported by Adam Cécile in Issue 119 and fixed by Felix Yan in PR 123.)
- Fixed code generation with escaped braces in f-strings. (Reported by Felix Yan in Issue 124 and fixed by Kodi Arfer in PR 125.)
- Fixed code generation with attributes of integer literals, and
with
u
-prefixed string literals. (Fixed by Kodi Arfer in PR 133.)
- Fixed code generation with very large integers. (Reported by Adam Kucz in Issue 127 and fixed by Kodi Arfer in PR 130.)
- Fixed
astor.tree_walk.TreeWalk
when attempting to access attributes created by Python’s type system (such as__dict__
and__weakref__
) (Reported and fixed by esupoff in Issue 136 and PR 137.)
0.7.1 - 2018-07-06¶
0.7.0 - 2018-07-05¶
New features¶
Added initial support for Python 3.7.0.
Note that if you have a subclass of
astor.code_gen.SourceGenerator
, you may need to rename the keyword argumentasync
of the following methods tois_async
:visit_FunctionDef(..., is_async=False)
visit_For(..., is_async=False)
visit_With(..., is_async=False)
(Reported and fixed by Berker Peksag in Issue 86.)
- Dropped support for Python 2.6 and Python 3.3.
Bug fixes¶
- Fixed a bug where newlines would be inserted to a wrong place during printing f-strings with trailing newlines. (Reported by Felix Yan and contributed by Radomír Bosák in Issue 89.)
- Improved code generation to support
ast.Num
nodes containing infinities or NaNs. (Reported and fixed by Kodi Arfer in Issue 85 and Issue 100.)
- Improved code generation to support empty sets. (Reported and fixed by Kodi Arfer in Issue 108.)
0.6.2 - 2017-11-11¶
0.6.1 - 2017-11-11¶
New features¶
- Added
astor.parse_file()
as an alias toastor.code_to_ast.parsefile()
. (Contributed by Berker Peksag.)
Bug fixes¶
- Fix compatibility layer for the
astor.codegen
submodule. Importingastor.codegen
now succeeds and raises aDeprecationWarning
instead ofImportError
. (Contributed by Berker Peksag.)
0.6 - 2017-10-31¶
New features¶
New
astor.rtrip
command-line tool to test round-tripping of Python source to AST and back to source. (Contributed by Patrick Maupin.)New pretty printer outputs much better looking code:
- Remove parentheses where not necessary
- Use triple-quoted strings where it makes sense
- Add placeholder for function to do nice line wrapping on output
(Contributed by Patrick Maupin.)
Additional Python 3.5 support:
(Contributed by Zack M. Davis.)
Added Python 3.6 feature support:
(Contributed by Ryan Gonzalez.)
Code cleanup, including renaming for PEP8 and deprecation of old names. See Deprecations for more information. (Contributed by Leonard Truong in Issue 36.)
Bug fixes¶
Don’t put trailing comma-spaces in dictionaries. astor will now create
{'three': 3}
instead of{'three': 3, }
. (Contributed by Zack M. Davis.)Fixed several bugs in code generation:
- Keyword-only arguments should come before
**
from .. import <member>
with no trailing module name did not work- Support
from .. import foo as bar
syntax - Support
with foo: ...
,with foo as bar: ...
andwith foo, bar as baz: ...
syntax - Support
1eNNNN
syntax - Support
return (yield foo)
syntax - Support unary operations such as
-(1) + ~(2) + +(3)
- Support
if (yield): pass
- Support
if (yield from foo): pass
try...finally
block needs to come after thetry...else
clause- Wrap integers with parentheses where applicable (e.g.
(0).real
should generated) - When the
yield
keyword is an expression rather than a statement, it can be a syntax error if it is not enclosed in parentheses - Remove extraneous parentheses around
yield from
(Contributed by Patrick Maupin in Issue 27.)
- Keyword-only arguments should come before
0.5 - 2015-04-18¶
0.4 - 2014-06-29¶
New features¶
- Added initial test suite and documentation
Bug fixes¶
- Added a visitor for
NameConstant
0.3 - 2013-12-10¶
New features¶
- Added support for Python 3.3.
- Added
YieldFrom
- Updated
Try
andWith
.
- Added
Bug fixes¶
- Fixed a packaging bug on Python 3 – see pull requests #1 and #2 for more information.
0.2.1 – 2012-09-20¶
Enhancements¶
- Modified TreeWalk to add
_name
suffix for functions that work on attribute names
0.1 – 2012-09-19¶
- Initial release
- Based on Armin Ronacher’s codegen
- Several bug fixes to that and new tree walker