Up to [cvs.NetBSD.org] / pkgsrc / lang / py-uncompyle6
Request diff between arbitrary revisions
Default branch: MAIN
Revision 1.28 / (download) - annotate - [select for diffs], Mon Jan 16 09:27:16 2023 UTC (8 months, 1 week ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2023Q3-base,
pkgsrc-2023Q3,
pkgsrc-2023Q2-base,
pkgsrc-2023Q2,
pkgsrc-2023Q1-base,
pkgsrc-2023Q1,
HEAD
Changes since 1.27: +4 -4
lines
Diff to previous 1.27 (colored)
py-uncompyle6: updated to 3.9.0 3.9.0: 2022-12-22 ================= * deparse generator expressions for Python 3.0 .. 3.2 * Python 3.0 list comprehension. * Fix Issues * Limited support for 3.8+ f-string "=" specifier * Correct 2.5-7 relative import formatting * Miscellaneous bug fixing * remove \n in lambda * Python 2.6 gramar cleanup * Correct some Python 2.6 chain compare decompilation * Ensure no parenthesis subscript slices * Correct 2.x formatting "slice2" nonterminal * Correct 3.7 imports * Improve "async for" parsing * Handle BUILD_MAP opcode * match Python AT better * Correct 3.7 positional args * PyPy 3.7 and PyPy 3.8 support * Miscellaneous linting, isorting, blacking
Revision 1.27 / (download) - annotate - [select for diffs], Sun Oct 31 08:44:00 2021 UTC (22 months, 4 weeks ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2022Q4-base,
pkgsrc-2022Q4,
pkgsrc-2022Q3-base,
pkgsrc-2022Q3,
pkgsrc-2022Q2-base,
pkgsrc-2022Q2,
pkgsrc-2022Q1-base,
pkgsrc-2022Q1,
pkgsrc-2021Q4-base,
pkgsrc-2021Q4
Changes since 1.26: +4 -4
lines
Diff to previous 1.26 (colored)
py-uncompyle6: updated to 3.8.0 3.8.0: 2020-10-29 ================= * Better handling of invalid bytecode magic * Support running from 3.9 and 3.10 although we do not support those bytecodes * Redo version comparisons using tuples instead of floats. This is needed for Python 3.10 * Split out into 3 branches so that the master branch can assume Python 3.6+ conventions, especially type annotations * Source Fragment fixes * Lambda-bug fixes 360 * Bug fixes
Revision 1.26 / (download) - annotate - [select for diffs], Tue Oct 26 10:51:51 2021 UTC (23 months ago) by nia
Branch: MAIN
Changes since 1.25: +2 -2
lines
Diff to previous 1.25 (colored)
lang: Replace RMD160 checksums with BLAKE2s checksums All checksums have been double-checked against existing RMD160 and SHA512 hashes The following distfiles could not be fetched (possibly fetched conditionally?): ./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-aarch64-unknown-linux-gnu.tar.gz ./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-aarch64-unknown-linux-musl.tar.gz ./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-aarch64-unknown-netbsd.tar.gz ./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-armv7-unknown-netbsd-eabihf.tar.gz ./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-i686-unknown-linux-gnu.tar.gz ./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-powerpc-unknown-netbsd90.tar.gz ./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-sparc64-unknown-netbsd.tar.gz ./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-x86_64-apple-darwin.tar.gz ./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-x86_64-unknown-freebsd.tar.gz ./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-x86_64-unknown-linux-gnu.tar.gz ./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-x86_64-unknown-linux-musl.tar.gz ./lang/smlnj/distinfo smlnj-110.73/boot.ppc-unix.tgz ./lang/smlnj/distinfo smlnj-110.73/boot.sparc-unix.tgz ./lang/oracle-jre8/distinfo jce_policy-8.zip ./lang/oracle-jre8/distinfo jre-8u202-linux-i586.tar.gz ./lang/oracle-jre8/distinfo jre-8u202-linux-x64.tar.gz ./lang/oracle-jre8/distinfo jre-8u202-macosx-x64.tar.gz ./lang/oracle-jre8/distinfo jre-8u202-solaris-x64.tar.gz ./lang/oracle-jdk8/distinfo jdk-8u202-linux-i586.tar.gz ./lang/oracle-jdk8/distinfo jdk-8u202-linux-x64.tar.gz ./lang/oracle-jdk8/distinfo jdk-8u202-solaris-x64.tar.gz ./lang/ghc80/distinfo ghc-7.10.3-boot-x86_64-unknown-solaris2.tar.xz ./lang/ghc80/distinfo ghc-8.0.2-boot-i386-unknown-freebsd.tar.xz ./lang/ghc80/distinfo ghc-8.0.2-boot-x86_64-unknown-freebsd.tar.xz ./lang/gcc5-aux/distinfo ada-bootstrap.i386.freebsd.100B.tar.bz2 ./lang/gcc5-aux/distinfo ada-bootstrap.i386.freebsd.84.tar.bz2 ./lang/gcc5-aux/distinfo ada-bootstrap.x86_64.dragonfly.41.tar.bz2 ./lang/gcc5-aux/distinfo ada-bootstrap.x86_64.freebsd.100B.tar.bz2 ./lang/gcc5-aux/distinfo ada-bootstrap.x86_64.freebsd.84.tar.bz2 ./lang/gcc5-aux/distinfo ada-bootstrap.x86_64.solaris.511.tar.bz2 ./lang/rust/distinfo rust-1.53.0-aarch64-apple-darwin.tar.gz ./lang/rust/distinfo rust-1.53.0-aarch64-unknown-linux-gnu.tar.gz ./lang/rust/distinfo rust-1.53.0-aarch64-unknown-netbsd.tar.gz ./lang/rust/distinfo rust-1.53.0-aarch64_be-unknown-netbsd.tar.gz ./lang/rust/distinfo rust-1.53.0-arm-unknown-linux-gnueabihf.tar.gz ./lang/rust/distinfo rust-1.53.0-armv7-unknown-linux-gnueabihf.tar.gz ./lang/rust/distinfo rust-1.53.0-i686-unknown-linux-gnu.tar.gz ./lang/rust/distinfo rust-1.53.0-powerpc-unknown-netbsd.tar.gz ./lang/rust/distinfo rust-1.53.0-powerpc-unknown-netbsd90.tar.gz ./lang/rust/distinfo rust-1.53.0-sparc64-unknown-netbsd.tar.gz ./lang/rust/distinfo rust-1.53.0-x86_64-apple-darwin.tar.gz ./lang/rust/distinfo rust-1.53.0-x86_64-unknown-freebsd.tar.gz ./lang/rust/distinfo rust-1.53.0-x86_64-unknown-illumos.tar.gz ./lang/rust/distinfo rust-1.53.0-x86_64-unknown-linux-gnu.tar.gz ./lang/rust/distinfo rust-std-1.53.0-aarch64-apple-darwin.tar.gz ./lang/rust/distinfo rust-std-1.53.0-aarch64-unknown-linux-gnu.tar.gz ./lang/rust/distinfo rust-std-1.53.0-aarch64-unknown-netbsd.tar.gz ./lang/rust/distinfo rust-std-1.53.0-aarch64_be-unknown-netbsd.tar.gz ./lang/rust/distinfo rust-std-1.53.0-arm-unknown-linux-gnueabihf.tar.gz ./lang/rust/distinfo rust-std-1.53.0-armv7-unknown-linux-gnueabihf.tar.gz ./lang/rust/distinfo rust-std-1.53.0-i686-unknown-linux-gnu.tar.gz ./lang/rust/distinfo rust-std-1.53.0-powerpc-unknown-netbsd.tar.gz ./lang/rust/distinfo rust-std-1.53.0-powerpc-unknown-netbsd90.tar.gz ./lang/rust/distinfo rust-std-1.53.0-sparc64-unknown-netbsd.tar.gz ./lang/rust/distinfo rust-std-1.53.0-x86_64-apple-darwin.tar.gz ./lang/rust/distinfo rust-std-1.53.0-x86_64-unknown-freebsd.tar.gz ./lang/rust/distinfo rust-std-1.53.0-x86_64-unknown-linux-gnu.tar.gz ./lang/smlnj11072/distinfo smlnj-110.72/boot.ppc-unix.tgz ./lang/smlnj11072/distinfo smlnj-110.72/boot.sparc-unix.tgz ./lang/ghc84/distinfo ghc-8.0.2-boot-x86_64-unknown-solaris2.tar.xz ./lang/ghc84/distinfo ghc-8.4.4-boot-i386-unknown-freebsd.tar.xz ./lang/ghc84/distinfo ghc-8.4.4-boot-x86_64-apple-darwin.tar.xz ./lang/ghc84/distinfo ghc-8.4.4-boot-x86_64-unknown-freebsd.tar.xz ./lang/ghc7/distinfo ghc-7.10.3-boot-i386-unknown-freebsd.tar.xz ./lang/ghc7/distinfo ghc-7.6.3-boot-i386-unknown-solaris2.tar.xz ./lang/ghc7/distinfo ghc-7.6.3-boot-powerpc-apple-darwin.tar.xz ./lang/ghc7/distinfo ghc-7.6.3-boot-x86_64-unknown-solaris2.tar.xz ./lang/ghc90/distinfo ghc-8.10.4-boot-x86_64-unknown-solaris2.tar.xz ./lang/ghc90/distinfo ghc-9.0.1-boot-aarch64-unknown-netbsd.tar.xz ./lang/ghc90/distinfo ghc-9.0.1-boot-i386-unknown-freebsd.tar.xz ./lang/ghc90/distinfo ghc-9.0.1-boot-x86_64-apple-darwin.tar.xz ./lang/ghc90/distinfo ghc-9.0.1-boot-x86_64-unknown-freebsd.tar.xz ./lang/openjdk8/distinfo openjdk7/bootstrap-jdk-1.7.76-freebsd-10-amd64-20150301.tar.xz ./lang/openjdk8/distinfo openjdk7/bootstrap-jdk-1.7.76-netbsd-7-sparc64-20150301.tar.xz ./lang/openjdk8/distinfo openjdk7/bootstrap-jdk-1.8.181-netbsd-8-aarch64-20180917.tar.xz ./lang/openjdk8/distinfo openjdk7/bootstrap-jdk7u60-bin-dragonfly-3.6-amd64-20140719.tar.bz2 ./lang/openjdk8/distinfo openjdk7/bootstrap-jdk7u60-bin-dragonfly-3.8-amd64-20140719.tar.bz2 ./lang/go-bin/distinfo go1.14.2.darwin-amd64.tar.gz ./lang/go-bin/distinfo go1.14.2.linux-386.tar.gz ./lang/go-bin/distinfo go1.14.2.linux-amd64.tar.gz ./lang/go-bin/distinfo go1.14.2.linux-arm64.tar.gz ./lang/go-bin/distinfo go1.14.2.linux-armv6l.tar.gz ./lang/go-bin/distinfo go1.14.2.netbsd-arm64.tar.gz ./lang/go-bin/distinfo go1.16beta1.darwin-arm64.tar.gz ./lang/gcc6-aux/distinfo ada-bootstrap.i386.freebsd.100B.tar.bz2 ./lang/gcc6-aux/distinfo ada-bootstrap.x86_64.dragonfly.41.tar.bz2 ./lang/gcc6-aux/distinfo ada-bootstrap.x86_64.freebsd.100B.tar.bz2 ./lang/gcc6-aux/distinfo ada-bootstrap.x86_64.freebsd.84.tar.bz2 ./lang/gcc6-aux/distinfo ada-bootstrap.x86_64.solaris.511.tar.bz2 ./lang/ghc810/distinfo ghc-8.8.4-boot-x86_64-unknown-solaris2.tar.xz ./lang/sun-jre7/distinfo UnlimitedJCEPolicyJDK7.zip ./lang/sun-jre7/distinfo jre-7u80-linux-x64.tar.gz ./lang/sun-jre7/distinfo jre-7u80-solaris-i586.tar.gz ./lang/sun-jre7/distinfo jre-7u80-solaris-x64.tar.gz ./lang/ghc88/distinfo ghc-8.4.4-boot-i386-unknown-freebsd.tar.xz ./lang/ghc88/distinfo ghc-8.4.4-boot-x86_64-apple-darwin.tar.xz ./lang/ghc88/distinfo ghc-8.4.4-boot-x86_64-unknown-freebsd.tar.xz ./lang/ghc88/distinfo ghc-8.4.4-boot-x86_64-unknown-solaris2.tar.xz ./lang/gcc-aux/distinfo ada-bootstrap.i386.dragonfly.36A.tar.bz2 ./lang/gcc-aux/distinfo ada-bootstrap.i386.freebsd.100B.tar.bz2 ./lang/gcc-aux/distinfo ada-bootstrap.i386.freebsd.84.tar.bz2 ./lang/gcc-aux/distinfo ada-bootstrap.x86_64.dragonfly.36A.tar.bz2 ./lang/gcc-aux/distinfo ada-bootstrap.x86_64.freebsd.100B.tar.bz2 ./lang/gcc-aux/distinfo ada-bootstrap.x86_64.freebsd.84.tar.bz2 ./lang/gcc-aux/distinfo ada-bootstrap.x86_64.solaris.511.tar.bz2 ./lang/gcc6/distinfo ecj-4.5.jar ./lang/openjdk11/distinfo bootstrap-jdk-1.11.0.7.10-netbsd-9-aarch64-20200509.tar.xz ./lang/sun-jdk7/distinfo jdk-7u80-linux-x64.tar.gz ./lang/sun-jdk7/distinfo jdk-7u80-solaris-i586.tar.gz ./lang/sun-jdk7/distinfo jdk-7u80-solaris-x64.tar.gz
Revision 1.25 / (download) - annotate - [select for diffs], Thu Oct 7 14:21:09 2021 UTC (23 months, 3 weeks ago) by nia
Branch: MAIN
Changes since 1.24: +1 -2
lines
Diff to previous 1.24 (colored)
lang: Remove SHA1 hashes for distfiles
Revision 1.24 / (download) - annotate - [select for diffs], Thu Sep 10 09:27:26 2020 UTC (3 years ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2021Q3-base,
pkgsrc-2021Q3,
pkgsrc-2021Q2-base,
pkgsrc-2021Q2,
pkgsrc-2021Q1-base,
pkgsrc-2021Q1,
pkgsrc-2020Q4-base,
pkgsrc-2020Q4,
pkgsrc-2020Q3-base,
pkgsrc-2020Q3
Changes since 1.23: +5 -5
lines
Diff to previous 1.23 (colored)
py-uncompyle6: updated to 3.7.4 3.7.4: Fragment parsing was borked. This means deparsing in trepan2/trepan3k was broken 3.7+: narrow precedence for call tatement del_stmt -> delete to better match Python AST 3.8+ Add another forelsestmt (found only in a loop) 3.8+ Add precedence on walrus operator More files blackened bump min xdis version 3.7.3: Mostly small miscellaneous bug fixes __doc__ = DocDescr() from test_descr.py was getting confused as a docstring. detect 2.7 exchandler range better Add for .. else reduction checks on 2.6 and before Add reduce check for 2.7 augmented assign Add VERSION in a pydoc-friendly way 3.7.2: Use newer xdis Docstrings (again) which were broken again on earlier Python Fix 2.6 and 2.7 decompilation bug in handling "list if" comprehensions
Revision 1.23 / (download) - annotate - [select for diffs], Sat Jun 20 16:23:16 2020 UTC (3 years, 3 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2020Q2-base,
pkgsrc-2020Q2
Changes since 1.22: +5 -5
lines
Diff to previous 1.22 (colored)
py-uncompyle6: updated to 3.7.1 3.7.1: Released to pick up new xdis version which has fixes to read bytestings better on 3.x Handle 3.7+ "else" branch removal adAs seen in _cmp() of python3.8/distutils/version.py with optimization -O2 3.6+ "with" and "with .. as" grammar improvements ast-check for "for" loop was missing some grammar rules
Revision 1.22 / (download) - annotate - [select for diffs], Sat May 23 08:41:53 2020 UTC (3 years, 4 months ago) by adam
Branch: MAIN
Changes since 1.21: +5 -5
lines
Diff to previous 1.21 (colored)
py-uncompyle6: updated to 3.7.0 3.7.0: The main impetus for this release is to pull in the recent changes from xdis. We simplify imports using xdis 4.6.0.
Revision 1.21 / (download) - annotate - [select for diffs], Tue Apr 28 11:03:22 2020 UTC (3 years, 5 months ago) by adam
Branch: MAIN
Changes since 1.20: +5 -5
lines
Diff to previous 1.20 (colored)
py-uncompyle6: updated to 3.6.7 3.6.7: xdis again More upheaval in xdis which we need to track here.
Revision 1.20 / (download) - annotate - [select for diffs], Wed Apr 22 20:49:07 2020 UTC (3 years, 5 months ago) by adam
Branch: MAIN
Changes since 1.19: +5 -5
lines
Diff to previous 1.19 (colored)
py-uncompyle6: updated to 3.6.6 3.6.6: 2020-4-20 Love in the time of Cholera The main reason for this release is an incompatablity bump in xdis which handles 3.7 SipHash better. Go over "yield" as an expression precidence Some small alignment with code in decompyle3 for "or" and "and" was done
Revision 1.19 / (download) - annotate - [select for diffs], Fri Apr 3 07:44:59 2020 UTC (3 years, 5 months ago) by adam
Branch: MAIN
Changes since 1.18: +5 -5
lines
Diff to previous 1.18 (colored)
py-uncompyle6: updated to 3.6.5 3.6.5: Back port some of the changes in decompile3 here which mostly helps 3.7 and 3.8 decompilation, although this may also help 3.6ish versions too. Handle nested async for in for... and better async comprehension detection via xdis. Still more work is needed. include token number in listings when -g and there is a parser error remove unneeded Makefiles now that remake 4.3+1.5dbg is a thing that has -c Bug in finding annotations in functions with docstrings Fix bug found by 2.4 sre_parse.py testing Fix transform module's ifelseif bugs Fix bug in 3.0 name module detection Fix docstring detection
Revision 1.18 / (download) - annotate - [select for diffs], Thu Feb 13 19:27:36 2020 UTC (3 years, 7 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2020Q1-base,
pkgsrc-2020Q1
Changes since 1.17: +5 -5
lines
Diff to previous 1.17 (colored)
py-uncompyle6: updated to 3.6.4 3.6.4: plateau The main focus in this release was fix some of the more glaring problems creapt in from the last release due to that refactor. uncompyle6 code is at a plateau where what is most needed is a code refactoring. In doing this, until everything refactored and replaced, decomplation may get worse. Therefore, this release largely serves as a checkpoint before more major upheaval. The upheaval, in started last release, I believe the pinnicle was around c90ff51 which wasn't a release. I suppose I should tag that. After c90ff5, I started down the road of redoing control flow in a more comprehensible, debuggable, and scalable way. See The Control Flow Mess. The bulk of the refactoring going on in the decompyle3 project, but I try to trickle down the changes. It is tricky because the changes are large and I have to figure decompose things so that little testable pieces can be done. And there is also the problem that what is in decompyle3 is incomplete as well. Other than control flow, another change that will probably happen in the next release is to redo the grammar for lambda expressions. Right now, we treat them as Python statements, you know, things with compound statements in them. But lambdas aren't that. And so there is hackery to paper over difference making a statement out of an expression the wrong thing to do. For example, a return of an "and" expression can be expressed as nested "if" statements with return inside them, but the "if" variant of the bytecode is not valid in a lambda. In the decompyle3 code, I've gone down the road making the grammar goal symbol be an expression. This also offers the opportunity to split the grammar making parsing inside lambda not only more reliable because the wrong choices don't exist, but also simpler and faster because all those rules just need don't need to exist in parsing. I cringe in thinking about how the code has lived for so long without noticing such a simple stupidity, and lapse of sufficient thought. 3.6.3: Martin and Susanne Of late, every release fixes major gaps and embarrassments of the last release.... And in some cases, like this one, exposes lacuna and rot. I now have [control] flow under control, even if it isn't the most optimal way. I now have greatly expanded automated testing. On the most recent Python versions I regularly decompile thousands of Python programs that are distributed with Python. when it is possible, I then decompile Python's standard test suite distributed with Python and run the decompiled source code which basically checks itself. This amounts to about 250 test programs per version. This is in addition to the 3 CI testing services which do different things. Does this mean the decompiler works perfectly? No. There are still a dozen or so failing programs, although the actual number of bugs is probably smaller though. However, in perparation of a more major refactoring of the parser grammar, this release was born. In many cases, decompilation is better. But there are some cases where decompilation has gotten worse. For lack of time (and interest) 3.0 bytecode suffered a hit. Possibly some code in the 3.x range did too. In time and with cleaner refactored code, this will come back. Commit c90ff51 was a local maxiumum before, I started reworking the grammar to separate productions that were specific to loops versus those that are not in loops. In the middle of that I added another grammar simplication to remove singleton productions of the form sstmts-> stmts. These were always was a bit ugly, and complicated output. At any rate if decompilation fails, you can try c90ff51. Or another decompiler. unpyc37 is pretty good for 3.7. wibiti uncompyle2 is great for 2.7. pycdc is mediocre for Python before 3.5 or so, and not that good for the most recent Python. Generally these programs will give some sort of answer even if it isn't correct. decompyle3 isn't that good for 3.7 and worse for 3.8, but right now it does things no other Python decompiler like unpyc37 or pycdc does. For example, decompyle3 handles variable annotations. As always, the issue trackers for the various programs will give you a sense for what needs to be done. For now, I've given up on reporting issues in the other decompilers because there are already enough issues reported, and they are just not getting fixed anyway.
Revision 1.17 / (download) - annotate - [select for diffs], Wed Jan 8 15:19:14 2020 UTC (3 years, 8 months ago) by adam
Branch: MAIN
Changes since 1.16: +5 -5
lines
Diff to previous 1.16 (colored)
py-uncompyle6: updated to 3.6.2 3.6.2: 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 projects Code 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 the IMPORT_NAME instruction, to indicate when an import contains a dotted import. Similarly, code for 3.7 import .. as is basically the same as from .. 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
Revision 1.16 / (download) - annotate - [select for diffs], Tue Dec 31 10:22:46 2019 UTC (3 years, 9 months ago) by adam
Branch: MAIN
Changes since 1.15: +5 -5
lines
Diff to previous 1.15 (colored)
py-uncompyle6: updated to 3.6.1 3.6.1: 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.
Revision 1.15 / (download) - annotate - [select for diffs], Wed Dec 11 13:19:20 2019 UTC (3 years, 9 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2019Q4-base,
pkgsrc-2019Q4
Changes since 1.14: +5 -5
lines
Diff to previous 1.14 (colored)
py-uncompyle6: updated to 3.6.0 3.6.0: The main focus in this release was more accurate decompilation especially for 3.7 and 3.8. However there are some improvments to Python 2.x as well, including one of the long-standing problems of detecting the difference between try ... and try else .... With this release we now rebase Python 3.7 on off of a 3.7 base; This is also as it is (now) in decompyle3. This facilitates removing some of the cruft in control-flow detection in the 2.7 uncompyle2 base. Alas, decompilation speed for 3.7 on is greatly increased. Hopefull this is temporary (cough, cough) until we can do a static control flow pass. Finally, runing in 3.9-dev is tolerated. We can disassemble, but no parse tables yet.
Revision 1.14 / (download) - annotate - [select for diffs], Wed Nov 20 09:30:21 2019 UTC (3 years, 10 months ago) by adam
Branch: MAIN
Changes since 1.13: +5 -5
lines
Diff to previous 1.13 (colored)
py-uncompyle6: updated to 3.5.1 3.5.1: Pypy 3.3, 3.5, 3.6, and 3.6.9 support Improve 3.0 decompilation - no parse errors on stlib bytecode. However accurate translation in - control-flow and and/or detection needs work Remove extraneous iter() in "for" of list comprehension "for" block without a POP_BLOCK and confusing JUMP_BACK for CONTINUE. Fix unmarshal incompletness detected in Pypy 3.6 Miscellaneous bugs fixed
Revision 1.13 / (download) - annotate - [select for diffs], Tue Oct 15 17:01:48 2019 UTC (3 years, 11 months ago) by adam
Branch: MAIN
Changes since 1.12: +5 -5
lines
Diff to previous 1.12 (colored)
py-uncompyle6: updated to 3.5.0 3.5.0: Fix fragment bugs - missing RETURN_LAST introduced when adding transformation layer - more parent entries on tokens Preliminary support for decompiling Python 1.0, 1.1. 1.2 and 1.6 - Newer xdis version needed
Revision 1.12 / (download) - annotate - [select for diffs], Mon Oct 7 05:43:16 2019 UTC (3 years, 11 months ago) by adam
Branch: MAIN
Changes since 1.11: +5 -5
lines
Diff to previous 1.11 (colored)
py-uncompyle6: updated to 3.4.1 3.4.1: Correct assert{,2} transforms Fragment parsing fixes: - Wasn't handling 3-arg %p - fielding error in code_deparse() Use newer xdis to better track Python 3.8.0
Revision 1.11 / (download) - annotate - [select for diffs], Mon Aug 26 06:55:16 2019 UTC (4 years, 1 month ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2019Q3-base,
pkgsrc-2019Q3
Changes since 1.10: +5 -5
lines
Diff to previous 1.10 (colored)
py-uncompyle6: updated to 3.4.0 3.4.0: The main change is to add a tree-transformation phase. This simplifies the code a little and allows us to turn if ...: raise AssertionError into assert, and many if ..: else if ... into if ... elif .. Use options --show=before and --show=after to see the before the tree transformation phase and after the tree transformation phase.
Revision 1.10 / (download) - annotate - [select for diffs], Thu Jul 4 11:59:34 2019 UTC (4 years, 2 months ago) by adam
Branch: MAIN
Changes since 1.9: +5 -5
lines
Diff to previous 1.9 (colored)
py-uncompyle6: updated to 3.3.5 3.3.5: Handle annotation args in Python 3.x Fix vararg and function signatures in 3.x Some 3.x < 3.6 while (1)/if fixes ãàothers remain Start reinstating else if -> elif LOAD_CONST -> LOAD_CODE where appropriate option --weak-verify is now --syntax-verify code cleanups, start using black to reformat text
Revision 1.9 / (download) - annotate - [select for diffs], Thu Jun 13 07:55:07 2019 UTC (4 years, 3 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2019Q2-base,
pkgsrc-2019Q2
Changes since 1.8: +5 -5
lines
Diff to previous 1.8 (colored)
py-uncompyle6: updated to 3.3.4 3.3.4: Major work was done by x0ret to correct function signatures and include annotation types Handle Python 3.6 STORE_ANNOTATION Friendlier assembly output LOAD_CONST replaced by LOAD_STR where appropriate to simplify parsing and improve clarity remove unneeded parenthesis in a generator expression when it is the single argument to the function Bug in noting an async function Handle unicode docstrings and fix docstring bugs Add uncompyle6 command-line short option -T as an alternate for --tree+ Some grammar cleanup
Revision 1.8 / (download) - annotate - [select for diffs], Mon May 20 07:47:05 2019 UTC (4 years, 4 months ago) by adam
Branch: MAIN
Changes since 1.7: +5 -5
lines
Diff to previous 1.7 (colored)
py-uncompyle6: updated to 3.3.3 3.3.3: As before, decomplation bugs fixed. The focus has primarily been on Python 3.7. But with this release, releases will be put on hold,as a better control-flow detection is worked on . Tis has been needed for a while, and is long overdue. It will probably also take a while to get done as good as what we have now. However this work will be done in a new project decompyle3. In contrast to uncompyle6 the code wil be written assuming a modern Python 3, e.g. 3.7. It is originally intended to decompile Python version 3.7 and greater. A number of Python 3.7+ chained comparisons were fixed Revise Python 3.6ish format string handling Go over operator precedence, e.g. for AST IfExp
Revision 1.7 / (download) - annotate - [select for diffs], Sat May 4 07:57:34 2019 UTC (4 years, 4 months ago) by adam
Branch: MAIN
Changes since 1.6: +5 -5
lines
Diff to previous 1.6 (colored)
py-uncompyle6: updated to 3.3.2 release-python-3.3.2 As before, lots of decomplation bugs fixed. The focus has primarily been on Python 3.6. We can now parse the entire 3.6.8 Python library and verify that without an error. The same is true for 3.5.8. A number of the bugs fixed though are not contained to these versions. In fact some span back as far as 2.x But as before, many more remain in the 3.7 and 3.8 range which will get addressed in future releases Pypy 3.6 support was started. Pypy 3.x detection fixed (via xdis)
Revision 1.6 / (download) - annotate - [select for diffs], Wed Apr 24 15:06:41 2019 UTC (4 years, 5 months ago) by adam
Branch: MAIN
Changes since 1.5: +5 -5
lines
Diff to previous 1.5 (colored)
py-uncompyle6: updated to 3.3.1 release-3.3.1 Lots of decomplation bugs, especially in the 3.x series fixed. Don't worry though, many more remain. * Add annotation return values in 3.6+ * Fix 3.6+ lambda parameter handling decompilation * Fix 3.7+ chained comparision decompilation * split out semantic-action customization into more separate files * Add 3.8 try/else * Fix 2.7 generator decompilation * Fix some parser failures fixes in 3.4+ using test_pyenvlib * Add more run tests
Revision 1.5 / (download) - annotate - [select for diffs], Wed Apr 17 12:17:31 2019 UTC (4 years, 5 months ago) by adam
Branch: MAIN
Changes since 1.4: +5 -5
lines
Diff to previous 1.4 (colored)
py-uncompyle6: updated to 3.3.0 release-3.3.0 First cut at Python 3.8 (many bugs remain) Reinstate -c | --compile (compile before disassembly) option The usual smattering of bug and doc fixes
Revision 1.4 / (download) - annotate - [select for diffs], Tue Mar 26 20:58:49 2019 UTC (4 years, 6 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2019Q1-base,
pkgsrc-2019Q1
Changes since 1.3: +5 -5
lines
Diff to previous 1.3 (colored)
py-uncompyle6: updated to 3.2.6 3.2.6: Bug Fixes * Python 3.x bytecode confusing "try/else" with "try" in a loop, * Python 3 bug in not detecting end bounds of an "if" ... "elif", * Comma placement in 3.6 and 3.7 **kwargs, * Fix "if" return boundary in 3.6+, * 2.7 can have two JUMP_BACKs at the end of a while loop Pull Requests * Better "assert" statement detemination in Python 2.7 * Python 3.7 testing * Run more f-string tests on Python 3.7 * support utf-8 chars in Python 3 sourcecode
Revision 1.3 / (download) - annotate - [select for diffs], Fri Jan 4 23:00:10 2019 UTC (4 years, 8 months ago) by adam
Branch: MAIN
Changes since 1.2: +5 -5
lines
Diff to previous 1.2 (colored)
py-uncompyle6: updated to 3.2.5 uncompyle6 3.2.5: - 3.7.2 Remove deprecation warning on regexp string that isn't raw - main.main() parameter codes is not used - note that - Improve Python 3.6+ control flow detection - More complete fragment instruction annotation for imports
Revision 1.2 / (download) - annotate - [select for diffs], Fri Nov 30 13:09:29 2018 UTC (4 years, 10 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2018Q4-base,
pkgsrc-2018Q4
Changes since 1.1: +5 -5
lines
Diff to previous 1.1 (colored)
py-uncompyle6: updated to 3.2.4 uncompyle6 3.2.4: - Bug fixes - Enhancements - Internal improvements
Revision 1.1 / (download) - annotate - [select for diffs], Thu Sep 20 13:48:55 2018 UTC (5 years ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2018Q3-base,
pkgsrc-2018Q3
py-uncompyle6: added version 3.2.3 A native Python cross-version decompiler and fragment decompiler. The successor to decompyle, uncompyle, and uncompyle2. uncompyle6 translates Python bytecode back into equivalent Python source code. It accepts bytecodes from Python version 1.3 to version 3.7, spanning over 22 years of Python releases. We include Dropbox's Python 2.5 bytecode and some PyPy bytecode.