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:
@@ -40,7 +40,7 @@ obfuscation.
|
|||||||
Checking if bytecode is valid is pretty simple: disassemble the code.
|
Checking if bytecode is valid is pretty simple: disassemble the code.
|
||||||
Python comes with a disassembly module called `dis`. A prerequisite
|
Python comes with a disassembly module called `dis`. A prerequisite
|
||||||
module for this package, `xdis` has a cross-python version
|
module for this package, `xdis` has a cross-python version
|
||||||
disassembler.
|
disassembler called `pydisasm`.
|
||||||
|
|
||||||
### Semantic equivalence vs. exact source code
|
### Semantic equivalence vs. exact source code
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@ provide the input command and the output from that, please give:
|
|||||||
|
|
||||||
Sure, I get it. No problem. There is Python assembly code on parse
|
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,
|
errors, so simply by hand decompile that. To get a full disassembly,
|
||||||
use pydisasm from the [xdis](https://pypi.python.org/pypi/xdis)
|
use `pydisasm` from the [xdis](https://pypi.python.org/pypi/xdis)
|
||||||
package. Opcodes are described in the documentation for
|
package. Opcodes are described in the documentation for
|
||||||
the [dis](https://docs.python.org/3.6/library/dis.html) module.
|
the [dis](https://docs.python.org/3.6/library/dis.html) module.
|
||||||
|
|
||||||
|
8
NEWS
8
NEWS
@@ -1,3 +1,11 @@
|
|||||||
|
uncompyle6 2.14.0 2017-12-10 Dr. Gecko
|
||||||
|
|
||||||
|
- Many decompilation bugfixes
|
||||||
|
- Grammar rule reduction and version isolation
|
||||||
|
- Match higher-level nonterminal names more closely
|
||||||
|
with Python AST
|
||||||
|
- Start automated Python stdlib testing - full round trip
|
||||||
|
|
||||||
uncompyle6 2.14.0 2017-11-26 johnnybamazing
|
uncompyle6 2.14.0 2017-11-26 johnnybamazing
|
||||||
|
|
||||||
- Start to isolate grammar rules between versions
|
- Start to isolate grammar rules between versions
|
||||||
|
BIN
test/bytecode_3.2/11_mkfunc_closure.pyc
Normal file
BIN
test/bytecode_3.2/11_mkfunc_closure.pyc
Normal file
Binary file not shown.
@@ -152,14 +152,14 @@ class Python35Parser(Python34Parser):
|
|||||||
nargs = token.attr % 256
|
nargs = token.attr % 256
|
||||||
map_unpack_n = "map_unpack_%s" % nargs
|
map_unpack_n = "map_unpack_%s" % nargs
|
||||||
rule = map_unpack_n + ' ::= ' + 'expr ' * (nargs)
|
rule = map_unpack_n + ' ::= ' + 'expr ' * (nargs)
|
||||||
|
print("XXXX", rule)
|
||||||
self.addRule(rule, nop_func)
|
self.addRule(rule, nop_func)
|
||||||
rule = "unmapexpr ::= %s %s" % (map_unpack_n, opname)
|
rule = "unmapexpr ::= %s %s" % (map_unpack_n, opname)
|
||||||
self.addRule(rule, nop_func)
|
self.addRule(rule, nop_func)
|
||||||
call_token = tokens[i+1]
|
call_token = tokens[i+1]
|
||||||
if self.version == 3.5:
|
rule = 'call ::= expr unmapexpr ' + call_token.kind
|
||||||
rule = 'call ::= expr unmapexpr ' + call_token.kind
|
print("XXXX2", rule)
|
||||||
self.addRule(rule, nop_func)
|
self.addRule(rule, nop_func)
|
||||||
pass
|
|
||||||
elif opname == 'BUILD_MAP_UNPACK':
|
elif opname == 'BUILD_MAP_UNPACK':
|
||||||
self.addRule("""
|
self.addRule("""
|
||||||
expr ::= unmap_dict
|
expr ::= unmap_dict
|
||||||
|
@@ -623,7 +623,7 @@ def make_function3(self, node, is_lambda, nested=1, codeNode=None):
|
|||||||
for n in node:
|
for n in node:
|
||||||
if n == 'pos_arg':
|
if n == 'pos_arg':
|
||||||
continue
|
continue
|
||||||
elif self.version >= 3.4 and not (n.kind in ('kwargs', 'kwarg')):
|
elif self.version >= 3.4 and not (n.kind in ('kwargs', 'kwargs1', 'kwarg')):
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
self.preorder(n)
|
self.preorder(n)
|
||||||
|
@@ -1,3 +1,3 @@
|
|||||||
# 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='2.14.0'
|
VERSION='2.14.1'
|
||||||
|
Reference in New Issue
Block a user