python-uncompyle6 v3.6.2 Release Notes
Release Date: 2020-01-05 // over 4 years ago-
Yet again the focus has been on just fixing bugs, mostly geared in the
later 3.x range. To get some sense what sill needs fixing, consult
โ test/stdlib/runtests.sh. And that only has a portion of what's known.make_function.py
has gotten so complex that it was split out into 3 parts
to handle different version ranges: Python <3, Python 3.0..3.6 and Python 3.7+.๐ An important fix is that we had been dropping docstrings in Python 3 code as a result
๐ of a incomplete merge from the decompile3 base with respect to the transform phase.Also important (at least to me) is that we can now handle 3.6+
variable type annotations. Some of the decompile3 code uses that in
its source code, and I now use variable annotations in conjunction
with mypy in some of my other Python projectsCode generation for imports, especially where the import is dotted
๐ changed a bit in 3.7; with this release are just now tracking that
๐ change better. For this I've added pseudo instruction
IMPORT_NAME_ATTR
, derived from theIMPORT_NAME
instruction, to
indicate when an import contains a dotted import. Similarly, code for
3.7import .. as
is basically the same asfrom .. import
, the
only difference is the target of the name changes to an "alias" in the
former. As a result, the disambiguation is now done on the semantic
๐ action side, rathero than in parsing grammar rules.๐ Some small specific fixes:
- ๐ 3.7+ some chained compare parsing has been fixed. Other remain.
- ๐ better if/else rule checking in the 3.4 and below range.
- ๐ 3.4+ keyword-only parameter handling was fixed more generally
- ๐ 3.3 .. 3.5 keyword-only parameter args in lambda was fixed