Changelogs » Astor

PyUp Safety actively tracks 232,000 Python packages for vulnerabilities and notifies you when to upgrade.

Astor

0.8.1

------------------
  
  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`_.)
  
  .. _`Issue 153`: https://github.com/berkerpeksag/astor/issues/153
  .. _`PR 155`: https://github.com/berkerpeksag/astor/pull/155
  
  * Fixed :func:`astor.to_source` incorrectly checking whether
  *source_generator_class* is a subclass of :class:`astor.code_gen.SourceGenerator`.
  (Reported by Yu-Chia "Hank" Liu in `Issue 158`_ and fixed by Will Crichton in `PR 164`_.)
  
  .. _`Issue 158`: https://github.com/berkerpeksag/astor/issues/158
  .. _`PR 164`: https://github.com/berkerpeksag/astor/pull/164
  
  * Fixed :exc:`TypeError` when AST nodes with unicode strings are passed to
  :func:`astor.to_source`.
  (Reported and fixed by Dominik Moritz in `PR 154`_.)
  
  .. _`PR 154`: https://github.com/berkerpeksag/astor/pull/154
  
  * Fixed installation issue with setuptools 41.4.0 or later due to the use of
  an undocumented feature.
  (Reported and fixed by Jonathan Ringer in `Issue 162`_ and `PR 163`_.)
  
  .. _`Issue 162`: https://github.com/berkerpeksag/astor/issues/162
  .. _`PR 163`: https://github.com/berkerpeksag/astor/pull/163

0.8.0

------------------
  
  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`_.)
  
  .. _`Issue 120`: https://github.com/berkerpeksag/astor/issues/120
  .. _`PR 121`: https://github.com/berkerpeksag/astor/pull/121
  
  * Support Python 3.8's assignment expressions.
  (Reported and fixed by Kodi Arfer in `Issue 126`_ and `PR 134`_.)
  
  .. _`Issue 126`: https://github.com/berkerpeksag/astor/issues/126
  .. _`PR 134`: https://github.com/berkerpeksag/astor/pull/134
  
  * Support Python 3.8's f-string debugging syntax.
  (Reported and fixed by Batuhan Taskaya in `Issue 138`_ and `PR 139`_.)
  
  .. _`Issue 138`: https://github.com/berkerpeksag/astor/issues/138
  .. _`PR 139`: https://github.com/berkerpeksag/astor/pull/139
  
  * :func:`astor.to_source` now has a *source_generator_class* parameter to
  customize source code generation.
  (Reported and fixed by matham in `Issue 113`_ and `PR 114`_.)
  
  .. _`Issue 113`: https://github.com/berkerpeksag/astor/issues/113
  .. _`PR 114`: https://github.com/berkerpeksag/astor/pull/114
  
  * The :class:`~SourceGenerator` class can now be imported from the
  :mod:`astor` package directly. Previously, the ``astor.code_gen``
  submodule was needed to be imported.
  
  * Support Python 3.8's positional only arguments. See :pep:`570` for
  more details.
  (Reported and fixed by Batuhan Taskaya in `Issue 142`_ and `PR 143`_.)
  
  .. _`Issue 142`: https://github.com/berkerpeksag/astor/issues/142
  .. _`PR 143`: https://github.com/berkerpeksag/astor/pull/143
  
  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`_.)
  
  .. _`Issue 119`: https://github.com/berkerpeksag/astor/issues/119
  .. _`PR 123`: https://github.com/berkerpeksag/astor/pull/123
  .. _`Issue 124`: https://github.com/berkerpeksag/astor/issues/124
  .. _`PR 125`: https://github.com/berkerpeksag/astor/pull/125
  
  * Fixed code generation with attributes of integer literals, and
  with ``u``-prefixed string literals.
  (Fixed by Kodi Arfer in `PR 133`_.)
  
  .. _`PR 133`: https://github.com/berkerpeksag/astor/pull/133
  
  * Fixed code generation with very large integers.
  (Reported by Adam Kucz in `Issue 127`_ and fixed by Kodi Arfer in `PR 130`_.)
  
  .. _`Issue 127`: https://github.com/berkerpeksag/astor/issues/127
  .. _`PR 130`: https://github.com/berkerpeksag/astor/pull/130
  
  * Fixed :class:`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`_.)
  
  .. _`Issue 136`: https://github.com/berkerpeksag/astor/issues/136
  .. _`PR 137`: https://github.com/berkerpeksag/astor/pull/137

0.7.1

------------------
  
  Bug fixes
  ~~~~~~~~~
  
  * Fixed installation error by adding the ``setuputils.py`` helper to the sdist.
  (Reported by Adam and fixed by Berker Peksag in `Issue 116`_.)
  
  .. _`Issue 116`: https://github.com/berkerpeksag/astor/issues/116

0.7.0

------------------
  
  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 argument ``async`` of the following methods
  to ``is_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`_.)
  
  .. _`Issue 86`: https://github.com/berkerpeksag/astor/issues/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`_.)
  
  .. _`Issue 89`: https://github.com/berkerpeksag/astor/issues/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`_.)
  
  .. _`Issue 85`: https://github.com/berkerpeksag/astor/issues/85
  .. _`Issue 100`: https://github.com/berkerpeksag/astor/issues/100
  
  * Improved code generation to support empty sets.
  (Reported and fixed by Kodi Arfer in `Issue 108`_.)
  
  .. _`Issue 108`: https://github.com/berkerpeksag/astor/issues/108

0.6.2

------------------
  
  Bug fixes
  ~~~~~~~~~
  
  * Restore backwards compatibility that was broken after 0.6.1.
  You can now continue to use the following pattern::
  
  import astor
  
  class SpamCodeGenerator(astor.codegen.SourceGenerator):
  ...
  
  (Reported by Dan Moldovan and fixed by Berker Peksag in `Issue 87`_.)
  
  .. _`Issue 87`: https://github.com/berkerpeksag/astor/issues/87

0.6.1

------------------
  
  New features
  ~~~~~~~~~~~~
  
  * Added ``astor.parse_file()`` as an alias to
  ``astor.code_to_ast.parsefile()``.
  (Contributed by Berker Peksag.)
  
  Bug fixes
  ~~~~~~~~~
  
  * Fix compatibility layer for the ``astor.codegen`` submodule. Importing
  ``astor.codegen`` now succeeds and raises a :exc:`DeprecationWarning`
  instead of :exc:`ImportError`.
  (Contributed by Berker Peksag.)

0.6

----------------
  
  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:
  
  - Additional unpacking generalizations (:pep:`448`)
  - Async and await (:pep:`492`)
  
  (Contributed by Zack M. Davis.)
  
  * Added Python 3.6 feature support:
  
  - f-strings (:pep:`498`)
  - async comprehensions (:pep:`530`)
  - variable annotations (:pep:`526`)
  
  (Contributed by Ryan Gonzalez.)
  
  * Code cleanup, including renaming for PEP8 and deprecation of old names.
  See :ref:`deprecations` for more information.
  (Contributed by Leonard Truong in `Issue 36`_.)
  
  .. _`Issue 36`: https://github.com/berkerpeksag/astor/issues/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: ...`` and
  ``with 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 the ``try...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`_.)
  
  .. _`Issue 27`: https://github.com/berkerpeksag/astor/issues/27

0.5

----------------
  
  New features
  ~~~~~~~~~~~~
  
  * Added support for Python 3.5 infix matrix multiplication (:pep:`465`)
  (Contributed by Zack M. Davis.)

0.4.1

------------------
  
  Bug fixes
  ~~~~~~~~~
  
  * Added missing ``SourceGenerator.visit_arguments()``

0.4

----------------
  
  New features
  ~~~~~~~~~~~~
  
  * Added initial test suite and documentation
  
  Bug fixes
  ~~~~~~~~~
  
  * Added a visitor for ``NameConstant``

0.3

----------------
  
  New features
  ~~~~~~~~~~~~
  
  * Added support for Python 3.3.
  
  - Added ``YieldFrom``
  - Updated ``Try`` and ``With``.
  
  Bug fixes
  ~~~~~~~~~
  
  * Fixed a packaging bug on Python 3 -- see pull requests 1 and 2 for more information.

0.2.1

-------------------
  
  Enhancements
  ~~~~~~~~~~~~
  
  * Modified TreeWalk to add ``_name`` suffix for functions that work on attribute names

0.2

-----------------
  
  Enhancements
  ~~~~~~~~~~~~
  
  * Initial Python 3 support
  * Test of treewalk

0.1

-----------------
  
  * Initial release
  * Based on Armin Ronacher's codegen
  * Several bug fixes to that and new tree walker