From 8a776176e2dc84c9481f71b7532f47670d267660 Mon Sep 17 00:00:00 2001 From: rocky Date: Sat, 15 Apr 2017 10:41:13 -0400 Subject: [PATCH] Add how to report a bug Add test case for ... if 1 else ... --- HOW-TO-REPORT-A-BUG.md | 63 +++++++++++++++++++++++++++++ MANIFEST.in | 1 + test/bytecode_2.7/03_if_1_else.pyc | Bin 0 -> 151 bytes 3 files changed, 64 insertions(+) create mode 100644 HOW-TO-REPORT-A-BUG.md create mode 100644 test/bytecode_2.7/03_if_1_else.pyc diff --git a/HOW-TO-REPORT-A-BUG.md b/HOW-TO-REPORT-A-BUG.md new file mode 100644 index 00000000..51912b27 --- /dev/null +++ b/HOW-TO-REPORT-A-BUG.md @@ -0,0 +1,63 @@ +# How to report a Bug + +## The difficulty of the Problem + +There is no Python decompiler yet, that I know about that will +decompyle everything. This one probably does the +best job of *any* Python decompiler. But it is a constant work in progress, as Python keeps changing as does its code generation. + +I have found bugs in *every* Python decompiler I have tried. Even +those for the authors/maintainers clam that it works across some +version of the entire Python standard library. And I don't mean that +the program doesn't come out with the same Python source instructions, +but that the program is *semantically* not equivalent. + +So it is likely you'll find a mistranslation in decompiling. + +## What to send (minimum requirements) + +The basic requirement is pretty simple: + +* Python bytecode +* Source text + +## What to send (additional helpful information) + +Some kind folks also give the invocation they used and the output +which usually includes an error message produced. This is helpful. I +can figure out what OS you are running this on and what version of +*uncomplye6* was used. Therefore, if you don't provide the input +command and the output from that, please give: + +* _uncompile6_ version used +* OS that you used this on +* Python interpreter version used + + +### But I don't *have* the source code! + +Sure, I get it. No problem. There is Python assembly code on parse +errors, so simply by hand decompile that. To get a full disassembly, use pydisasm from the [xdis](https://pypi.python.org/pypi/xdis) package. + +### But I don't *have* the source code and am incapable of figuring how how to do a hand disassembly! + +Well, you could learn. No one is born into this world knowing how to disassemble Python bytecode. And as Richard Feynman once said, "What one fool can learn, so can another." + +## Narrowing the problem + +I don't need the entire source code base for which one file or module +can't be decompiled. I just need that one file or module only. If +there are several files, file a bug report for each file. + +Python modules can get quite large, and usually decompilation problems +occur in a single function or maybe the main-line code but not any of +the functions or classes. So please chop down the source code by +removing those parts that do to decompile properly. + +By doing this, you'll probably have a better sense of what exactly is +the problem. Perhaps you can find the boundary of what decompiles, and +what doesn't. That is useful. Or maybe the same file will decompile +properly on a neighboring version of Python. That is helpful too. + +In sum, the more you can isolate or narrow the problem, the more +likley the problem will be fixed and fixed sooner. diff --git a/MANIFEST.in b/MANIFEST.in index 57fd5586..66b57604 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,6 +1,7 @@ include README.rst include ChangeLog include HISTORY.md +include HOW-TO-REPORT-A-BUG.md include LICENSE include Makefile include requirements.txt diff --git a/test/bytecode_2.7/03_if_1_else.pyc b/test/bytecode_2.7/03_if_1_else.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2300d43079ea93c56600cf0cf0e0fbb93261c64e GIT binary patch literal 151 zcmZSn%*(~2@+l&j0SXv_v;z