You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-04 01:09:52 +08:00
Merge branch 'master' into python-2.4
This commit is contained in:
34
NEWS.md
34
NEWS.md
@@ -1,3 +1,37 @@
|
|||||||
|
3.6.1: 2019-12-10 Christmas Hannukah
|
||||||
|
====================================
|
||||||
|
|
||||||
|
Overall, as in the past, the focus has been on just fixing bugs, more geared
|
||||||
|
in the later 3.x range. Handling "async for/with" in 3.8+ works better.
|
||||||
|
|
||||||
|
Numerous bugs around handling `lambda` with keyword-only and `*` args in the
|
||||||
|
3.0-3.8 have been fixed. However many still remain.
|
||||||
|
|
||||||
|
`binary_expr` and `unary_expr` have been renamed to `bin_op` and
|
||||||
|
`unary_op` to better correspond the Python AST names.
|
||||||
|
|
||||||
|
Some work was done Python 3.7+ to handle `and` better; less was done
|
||||||
|
along the lines of handling `or`. Much more is needed to improve
|
||||||
|
parsing stability of 3.7+. More of what was done with `and` needs to
|
||||||
|
be done with `or` and this will happen first in the "decompyle3"
|
||||||
|
project.
|
||||||
|
|
||||||
|
Later this will probably be extended backwards to handle the 3.6-
|
||||||
|
versions better. This however comes with a big decompilation speed
|
||||||
|
penalty. When we redo control flow this should go back to normal, but
|
||||||
|
for now, accuracy is more important than speed.
|
||||||
|
|
||||||
|
Another `assert` transform rule was added. Parser rules to distingish
|
||||||
|
`try/finally` in 3.8 were added and we are more stringent about what
|
||||||
|
can be turned into an `assert`. There was some grammar cleanup here
|
||||||
|
too.
|
||||||
|
|
||||||
|
A number of small bugs were fixed, and some administrative changes to
|
||||||
|
make `make check-short` really be short, but check more throughly what
|
||||||
|
it checks. minimum xdis version needed was bumped to include in the
|
||||||
|
newer 3.6-3.9 releases. See the `ChangeLog` for details.
|
||||||
|
|
||||||
|
|
||||||
3.6.0: 2019-12-10 gecko gecko
|
3.6.0: 2019-12-10 gecko gecko
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
|
@@ -58,7 +58,7 @@ entry_points = {
|
|||||||
]}
|
]}
|
||||||
ftp_url = None
|
ftp_url = None
|
||||||
install_requires = ["spark-parser >= 1.8.9, < 1.9.0",
|
install_requires = ["spark-parser >= 1.8.9, < 1.9.0",
|
||||||
"xdis >= 4.2.1, < 4.3.0"]
|
"xdis >= 4.2.2, < 4.3.0"]
|
||||||
|
|
||||||
license = "GPL3"
|
license = "GPL3"
|
||||||
mailing_list = "python-debugger@googlegroups.com"
|
mailing_list = "python-debugger@googlegroups.com"
|
||||||
|
@@ -5,4 +5,4 @@ if [[ $0 == ${BASH_SOURCE[0]} ]] ; then
|
|||||||
echo "This script should be *sourced* rather than run directly through bash"
|
echo "This script should be *sourced* rather than run directly through bash"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
export PYVERSIONS='3.5.9 3.6.10 2.6.9 3.3.7 2.7.17 3.2.6 3.1.5 3.4.8 3.7.6 3.8.1'
|
export PYVERSIONS='3.5.9 3.6.9 2.6.9 3.3.7 2.7.17 3.2.6 3.1.5 3.4.8 3.7.6 3.8.1'
|
||||||
|
@@ -142,10 +142,11 @@ case $PYVERSION in
|
|||||||
SKIP_TESTS[test_base64.py]=1
|
SKIP_TESTS[test_base64.py]=1
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
3.3)
|
3.2)
|
||||||
SKIP_TESTS=(
|
SKIP_TESTS=(
|
||||||
[test_atexit.py]=1 #
|
[test_ast.py]=1 # Look at: AssertionError: b'hi' != 'hi'
|
||||||
[test_decorators.py]=1 # Control flow wrt "if elif"
|
[test_dis.py]=1 # We change line numbers - duh!
|
||||||
|
[test_quopri.py]=1 # TypeError: Can't convert 'bytes' object to str implicitly
|
||||||
)
|
)
|
||||||
if (( batch )) ; then
|
if (( batch )) ; then
|
||||||
# Fails in crontab environment?
|
# Fails in crontab environment?
|
||||||
@@ -155,10 +156,36 @@ case $PYVERSION in
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
3.5)
|
3.3)
|
||||||
SKIP_TESTS=(
|
SKIP_TESTS=(
|
||||||
[test_atexit.py]=1 #
|
[test_atexit.py]=1 #
|
||||||
[test_decorators.py]=1 # Control flow wrt "if elif"
|
)
|
||||||
|
if (( batch )) ; then
|
||||||
|
# Fails in crontab environment?
|
||||||
|
# Figure out what's up here
|
||||||
|
SKIP_TESTS[test_exception_variations.py]=1
|
||||||
|
SKIP_TESTS[test_quopri.py]=1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
3.4)
|
||||||
|
SKIP_TESTS=(
|
||||||
|
[test_atexit.py]=1 #
|
||||||
|
[test_dis.py]=1 # We change line numbers - duh!
|
||||||
|
)
|
||||||
|
if (( batch )) ; then
|
||||||
|
# Fails in crontab environment?
|
||||||
|
# Figure out what's up here
|
||||||
|
SKIP_TESTS[test_exception_variations.py]=1
|
||||||
|
SKIP_TESTS[test_quopri.py]=1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
3.5)
|
||||||
|
SKIP_TESTS=(
|
||||||
|
[test_ast.py]=1 #
|
||||||
|
[test_atexit.py]=1 #
|
||||||
|
[test_builtin.py]=1 #
|
||||||
|
[test_compare.py]=1
|
||||||
[test_dis.py]=1 # We change line numbers - duh!
|
[test_dis.py]=1 # We change line numbers - duh!
|
||||||
)
|
)
|
||||||
if (( batch )) ; then
|
if (( batch )) ; then
|
||||||
@@ -171,11 +198,18 @@ case $PYVERSION in
|
|||||||
|
|
||||||
3.6)
|
3.6)
|
||||||
SKIP_TESTS=(
|
SKIP_TESTS=(
|
||||||
|
[test_ast.py]=1 #
|
||||||
|
[test_atexit.py]=1 #
|
||||||
|
[test_bdb.py]=1 #
|
||||||
|
[test_builtin.py]=1 #
|
||||||
|
[test_compare.py]=1
|
||||||
|
[test_compile.py]=1
|
||||||
[test_contains.py]=1 # Code "while False: yield None" is optimized away in compilation
|
[test_contains.py]=1 # Code "while False: yield None" is optimized away in compilation
|
||||||
[test_decorators.py]=1 # Control flow wrt "if elif"
|
[test_contextlib_async.py]=1 # Investigate
|
||||||
|
[test_coroutines.py]=1 # Parse error
|
||||||
|
[test_curses.py]=1 # Parse error
|
||||||
[test_dis.py]=1 # We change line numbers - duh!
|
[test_dis.py]=1 # We change line numbers - duh!
|
||||||
[test_pow.py]=1 # Control flow wrt "continue"
|
[test_quopri.py]=1 # AssertionError: b'123=four' != '123=four'
|
||||||
[test_quopri.py]=1 # Only fails on POWER
|
|
||||||
)
|
)
|
||||||
;;
|
;;
|
||||||
3.7)
|
3.7)
|
||||||
@@ -187,6 +221,7 @@ case $PYVERSION in
|
|||||||
[test_builtin.py]=1 #
|
[test_builtin.py]=1 #
|
||||||
[test_cmdline.py]=1 # Interactive?
|
[test_cmdline.py]=1 # Interactive?
|
||||||
[test_codecs-3.7.py]=1
|
[test_codecs-3.7.py]=1
|
||||||
|
[test_collections.py]=1 # Fixed I think in decompyle3 - pull from there
|
||||||
[test_compare.py]=1
|
[test_compare.py]=1
|
||||||
[test_compile.py]=1
|
[test_compile.py]=1
|
||||||
[test_contains.py]=1 # Code "while False: yield None" is optimized away in compilation
|
[test_contains.py]=1 # Code "while False: yield None" is optimized away in compilation
|
||||||
@@ -202,7 +237,7 @@ case $PYVERSION in
|
|||||||
3.8)
|
3.8)
|
||||||
SKIP_TESTS=(
|
SKIP_TESTS=(
|
||||||
[test_contains.py]=1 # Code "while False: yield None" is optimized away in compilation
|
[test_contains.py]=1 # Code "while False: yield None" is optimized away in compilation
|
||||||
[test_collections.py]=1 # parse error
|
[test_collections.py]=1 # Fixed I think in decompyle3 - pull from there
|
||||||
[test_decorators.py]=1 # Control flow wrt "if elif"
|
[test_decorators.py]=1 # Control flow wrt "if elif"
|
||||||
[test_dis.py]=1 # We change line numbers - duh!
|
[test_dis.py]=1 # We change line numbers - duh!
|
||||||
[test_pow.py]=1 # Control flow wrt "continue"
|
[test_pow.py]=1 # Control flow wrt "continue"
|
||||||
|
@@ -12,4 +12,4 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
# This file is suitable for sourcing inside bash as
|
# This file is suitable for sourcing inside bash as
|
||||||
# well as importing into Python
|
# well as importing into Python
|
||||||
VERSION="3.6.0" # noqa
|
VERSION="3.6.1" # noqa
|
||||||
|
Reference in New Issue
Block a user