From 7f035e7613f406eec8c65d52548c6ee182caf690 Mon Sep 17 00:00:00 2001 From: rocky Date: Wed, 13 Dec 2017 10:05:53 -0500 Subject: [PATCH] Sync with Python 2.4 branch --- HOW-TO-REPORT-A-BUG.md | 45 ++++++++++++++++++++++++++--------------- README.rst | 14 ++++++++----- test/stdlib/runtests.sh | 2 ++ 3 files changed, 40 insertions(+), 21 deletions(-) diff --git a/HOW-TO-REPORT-A-BUG.md b/HOW-TO-REPORT-A-BUG.md index 8cf68d1d..5e78ee13 100644 --- a/HOW-TO-REPORT-A-BUG.md +++ b/HOW-TO-REPORT-A-BUG.md @@ -10,23 +10,36 @@ decompile everything. Overall, I think this one probably does the best job of *any* Python decompiler that handles such a wide range of versions. -But at any given time, there are maybe dozens of valid Python bytecode -files that I know of that will cause problems. And when I get through -those and all the issues of decompiler bugs that are currently logged, -I could probably easily find dozens more bugs just by doing a -decompile of all the Python bytecode on any one of my -computers. Unless you want to help out by _fixing_ bugs, or are -willing to do work by isolating and narrowing bugs, don't feel you are -doing me a favor by doing scans on your favorite sets of bytecode -files. +But at any given time, there are a number of valid Python bytecode +files that I know of that will cause problems. See, for example, the +list in +[`test/stdlib/runtests.sh`](https://github.com/rocky/python-uncompyle6/blob/master/test/stdlib/runtests.sh). -In sum, it is not uncommon that you will find a mistranslation in -decompiling. Furthermore, you may be expected to do some work in order -to have your bug worthy of being considered above other bugs. +But I understand: you would the bugs _you_ encounter addressed before +all the other known bugs. -No one is getting paid to work to work on this project, let alone bugs -you may have an interest in. If you require decompiling bytecode -immediately, consider using a decompilation service. +From my standpoint, the good thing about the bugs listed in +`runtests.sh` is that each test case is small and isolated to a single +kind of problem. And I'll tend to fix easier, more isolated cases than +generic "something's wrong" kinds of bugs where I'd have to do a bit +of work to figure out what's up, if not use some sort of mind reading, +make some guesses, and perform some experiments to see if the guesses +are correct. I can't read minds, nor am I into guessing games; I'd +rather devote the effort spent instead towards fixing bugs that are +precisely defined. + +And it often turns out that by just fixing the well-defined and +prescribed cases, the ill-defined amorphous cases as well will get +handled as well. + +In sum, you may need to do some work to have the bug you have found +handled before the hundreds of other bugs, and things I could be +doing. + +No one is getting paid to work to work on this project, let alone the +bugs you may have an interest in. If you require decompiling bytecode +immediately, consider using a decompilation service, listed further +down in this document. ## Is it really a bug? @@ -114,7 +127,7 @@ Also try to narrow the bug. See below. Some kind folks also give the invocation they used and the output which usually includes an error message produced. This is helpful. From this, I can figure out what OS you are running this on -and what version of *uncomplye6* was used. Therefore, if you don't +and what version of *uncomplye6* was used. Therefore, if you _don't_ provide the input command and the output from that, please give: * _uncompyle6_ version used diff --git a/README.rst b/README.rst index df77d3c5..685f8308 100644 --- a/README.rst +++ b/README.rst @@ -163,10 +163,9 @@ python 2.3-2.4 since a lot of the goodness of early the version of the decompiler from that era has been preserved (and Python compilation in that era was minimal) -Later distributions average about 200 files. There is some work to do -on the lower end Python versions which is more difficult for us to -handle since we don't have a Python interpreter for versions 1.5, 1.6, -and 2.0. +There is some work to do on the lower end Python versions which is +more difficult for us to handle since we don't have a Python +interpreter for versions 1.5, 1.6, and 2.0. In the Python 3 series, Python support is is strongest around 3.4 or 3.3 and drops off as you move further away from those versions. Python @@ -187,7 +186,11 @@ handled. We also don't handle PJOrion_ obfuscated code. For that try: PJOrion Deobfuscator_ to unscramble the bytecode to get valid bytecode before -trying this tool. +trying this tool. This program can't decompile Microsoft Windows EXE +files created by Py2EXE_, although we can probably decompile the code +after you extract the bytecode properly. For situations like this, you +might want to consider a decompilation service like [Crazy +Compilers](http://www.crazy-compilers.com/decompyle/). Handling pathologically long lists of expressions or statements is slow. @@ -219,3 +222,4 @@ See Also :target: https://travis-ci.org/rocky/python-uncompyle6 .. _PJOrion: http://www.koreanrandom.com/forum/topic/15280-pjorion-%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%B4%D0%B5%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%BE%D0%B1%D1%84 .. _Deobfuscator: https://github.com/extremecoders-re/PjOrion-Deobfuscator +.. _Py2EXE: https://en.wikipedia.org/wiki/Py2exe diff --git a/test/stdlib/runtests.sh b/test/stdlib/runtests.sh index 994df916..aee3cb7f 100755 --- a/test/stdlib/runtests.sh +++ b/test/stdlib/runtests.sh @@ -36,8 +36,10 @@ case $PYVERSION in [test_codecs.py]=1 # need to fix tryelse [test_decorators.py]=1 # Syntax error decorators? [test_dis.py]=1 # We change line numbers - duh! + [test_exceptions.py]=1 [test_extcall.py]=1 # TypeError: saboteur() takes no arguments (1 given) [test_format.py]=1 # Control flow? + [test_functools.py]=1 [test_grammar.py]=1 # Too many stmts. Handle large stmts [test_grp.py]=1 # Long test - might work Control flow? [test_long_future.py]=1 # Control flow?