You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-04 01:09:52 +08:00
Compare commits
61 Commits
release-2.
...
release-2.
Author | SHA1 | Date | |
---|---|---|---|
|
077bca6141 | ||
|
31ebe88b38 | ||
|
bc2a36b9f7 | ||
|
66739752d8 | ||
|
716ee6d361 | ||
|
ca00e433b7 | ||
|
f0cc2df543 | ||
|
52da6f4a8f | ||
|
54a0af733b | ||
|
2927921856 | ||
|
cd480c8670 | ||
|
7d42329c31 | ||
|
b89177d234 | ||
|
31691b2003 | ||
|
09ef875b3e | ||
|
0129c3a16e | ||
|
4d5a3bc449 | ||
|
8d90e33832 | ||
|
0533bbb758 | ||
|
b82a8b90d5 | ||
|
d3a32b6877 | ||
|
21e51004ae | ||
|
d5b023aec4 | ||
|
e50bebb7c8 | ||
|
2e91de8355 | ||
|
5bbe2c4a45 | ||
|
6ffd2fca90 | ||
|
b3ede4b64b | ||
|
1785113045 | ||
|
657eeb7de8 | ||
|
313a8578b3 | ||
|
a30f3625ac | ||
|
e17d94f28f | ||
|
16af79f042 | ||
|
116263dd8c | ||
|
34841abe14 | ||
|
226f3c7e63 | ||
|
f77c4b53c4 | ||
|
6f0a252693 | ||
|
625feb0517 | ||
|
820fdb4771 | ||
|
d774222eb1 | ||
|
7ec54b15d8 | ||
|
7c5b8d803c | ||
|
c508413689 | ||
|
f859758aff | ||
|
44cd349cc7 | ||
|
276709cbb9 | ||
|
4640e7dece | ||
|
ce8c7a4dc2 | ||
|
6bd61deccc | ||
|
3ac3ef24ac | ||
|
d6ac51d0a2 | ||
|
69a8404edb | ||
|
008bd79719 | ||
|
e8ee3ac751 | ||
|
7a2703634f | ||
|
fe9c8d5734 | ||
|
0409cee6a9 | ||
|
39f0f7440b | ||
|
1d533cbb23 |
@@ -3,7 +3,13 @@ language: python
|
||||
sudo: false
|
||||
|
||||
python:
|
||||
- '2.6'
|
||||
- '2.7'
|
||||
- '3.4'
|
||||
- '3.5'
|
||||
|
||||
install:
|
||||
- pip install -r requirements-dev.txt
|
||||
|
||||
script:
|
||||
- python ./setup.py develop && COMPILE='--compile' make check-2.7
|
||||
- python ./setup.py develop && COMPILE='--compile' make check
|
||||
|
429
ChangeLog
429
ChangeLog
@@ -1,3 +1,432 @@
|
||||
2016-01-02 rocky <rb@dustyfeet.com>
|
||||
|
||||
* __pkginfo__.py: Get ready for release 2.1.3
|
||||
|
||||
2016-01-02 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/opcodes/opcode_23.py, uncompyle6/opcodes/opcode_25.py,
|
||||
uncompyle6/opcodes/opcode_26.py, uncompyle6/opcodes/opcode_27.py,
|
||||
uncompyle6/opcodes/opcode_32.py, uncompyle6/opcodes/opcode_33.py,
|
||||
uncompyle6/opcodes/opcode_34.py, uncompyle6/opcodes/opcode_35.py,
|
||||
uncompyle6/opcodes/opcode_3x.py, uncompyle6/parser.py,
|
||||
uncompyle6/scanner.py, uncompyle6/scanners/scanner32.py,
|
||||
uncompyle6/scanners/scanner33.py, uncompyle6/scanners/scanner34.py,
|
||||
uncompyle6/scanners/scanner35.py: Start to DRY opcode code. Limited
|
||||
support for decopyling Python 3.5
|
||||
|
||||
2016-01-02 rocky <rb@dustyfeet.com>
|
||||
|
||||
* test/Makefile, test/ok_lib3.4/antigravity.py,
|
||||
test/ok_lib3.4/bisect.py, test/test_pythonlib.py: Start 3.4 library
|
||||
verify tests
|
||||
|
||||
2016-01-02 rocky <rb@dustyfeet.com>
|
||||
|
||||
* README.rst: Regularize spelling of bytecode
|
||||
|
||||
2016-01-02 rocky <rb@dustyfeet.com>
|
||||
|
||||
* Makefile, README.rst: Add download shield. Add check-rst target
|
||||
|
||||
2016-01-02 R. Bernstein <rocky@users.noreply.github.com>
|
||||
|
||||
* README.rst: Update README.rst
|
||||
|
||||
2016-01-02 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/semantics/fragments.py: Track recent source class
|
||||
semantic actions in fragment actions
|
||||
|
||||
2016-01-02 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/scanner.py, uncompyle6/scanners/scanner25.py,
|
||||
uncompyle6/scanners/scanner26.py, uncompyle6/scanners/scanner27.py:
|
||||
Make ScannerXX() initialization the same on Python 2.x and 3.x
|
||||
|
||||
2016-01-02 rocky <rb@dustyfeet.com>
|
||||
|
||||
* test/Makefile,
|
||||
test/simple_source/comprehension/05_list_comprehension.py,
|
||||
test/simple_source/def/02_closure.py, test/test_pythonlib.py,
|
||||
uncompyle6/main.py, uncompyle6/verify.py: Verify 3.4 bytecode.
|
||||
verify API call bug fixed.
|
||||
|
||||
2016-01-02 rocky <rb@dustyfeet.com>
|
||||
|
||||
* test/simple_source/def/05_class.py, uncompyle6/load.py,
|
||||
uncompyle6/main.py, uncompyle6/parsers/parse3.py,
|
||||
uncompyle6/semantics/pysource.py: Python 3 class deparsing. stop
|
||||
earlier in uncompyle6 on a syntax error.
|
||||
|
||||
2016-01-01 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/scanners/scanner3.py: Fix make_closure compilation from
|
||||
2.x of 3.3 bytecode
|
||||
|
||||
2016-01-01 rocky <rb@dustyfeet.com>
|
||||
|
||||
* test/simple_source/def/02_closure.py,
|
||||
uncompyle6/parsers/parse3.py, uncompyle6/semantics/pysource.py: Work
|
||||
on MAKE_CLOSURE rules for Python 3.3
|
||||
|
||||
2015-12-31 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/semantics/fragments.py: track source deparsing
|
||||
superclass bug fix
|
||||
|
||||
2015-12-31 rocky <rb@dustyfeet.com>
|
||||
|
||||
* ChangeLog, NEWS, __pkginfo__.py: Get ready for release 2.1.2
|
||||
|
||||
2015-12-31 rocky <rb@dustyfeet.com>
|
||||
|
||||
* test/base_tests/compile_tests,
|
||||
test/base_tests/python2.7/test_applyEquiv.py,
|
||||
test/base_tests/python2.7/test_augmentedAssign.py,
|
||||
test/base_tests/python2.7/test_class.py,
|
||||
test/base_tests/python2.7/test_del.py,
|
||||
test/base_tests/python2.7/test_divide_future.py,
|
||||
test/base_tests/python2.7/test_divide_no_future.py,
|
||||
test/base_tests/python2.7/test_docstring.py,
|
||||
test/base_tests/python2.7/test_empty.py,
|
||||
test/base_tests/python2.7/test_exceptions.py,
|
||||
test/base_tests/python2.7/test_exec.py,
|
||||
test/base_tests/python2.7/test_expressions.py,
|
||||
test/base_tests/python2.7/test_extendedImport.py,
|
||||
test/base_tests/python2.7/test_extendedPrint.py,
|
||||
test/base_tests/python2.7/test_extendedarg.py-notyet,
|
||||
test/base_tests/python2.7/test_functions.py,
|
||||
test/base_tests/python2.7/test_global.py,
|
||||
test/base_tests/python2.7/test_globals.py,
|
||||
test/base_tests/python2.7/test_import.py,
|
||||
test/base_tests/python2.7/test_import_as.py,
|
||||
test/base_tests/python2.7/test_integers.py,
|
||||
test/base_tests/python2.7/test_iterators.py,
|
||||
test/base_tests/python2.7/test_lambda.py,
|
||||
test/base_tests/python2.7/test_listComprehensions.py,
|
||||
test/base_tests/python2.7/test_loops.py,
|
||||
test/base_tests/python2.7/test_loops2.py,
|
||||
test/base_tests/python2.7/test_mine.py,
|
||||
test/base_tests/python2.7/test_misc.py,
|
||||
test/base_tests/python2.7/test_nested_elif.py,
|
||||
test/base_tests/python2.7/test_nested_scopes.py,
|
||||
test/base_tests/python2.7/test_prettyprint.py,
|
||||
test/base_tests/python2.7/test_print.py,
|
||||
test/base_tests/python2.7/test_print_to.py,
|
||||
test/base_tests/python2.7/test_single_stmt.py,
|
||||
test/base_tests/python2.7/test_slices.py,
|
||||
test/base_tests/python2.7/test_tuple_params.py-notyet,
|
||||
test/base_tests/python2.7/test_tuples.py-notyet,
|
||||
test/base_tests/python2.7/test_yield.py,
|
||||
test/base_tests/python3.4/__init__.py: Remove tests we will never
|
||||
use
|
||||
|
||||
2015-12-31 rocky <rb@dustyfeet.com>
|
||||
|
||||
* .travis.yml, Makefile: Try travis testing on Python 3.5. Fix up
|
||||
Makefile to avoid pytest on 3.5 for now
|
||||
|
||||
2015-12-31 rocky <rb@dustyfeet.com>
|
||||
|
||||
* test/ok_lib2.7/dircache.py, test/ok_lib2.7/dis.py: Add a few tests
|
||||
from Python 2.7 standard library
|
||||
|
||||
2015-12-31 rocky <rb@dustyfeet.com>
|
||||
|
||||
* test/simple_source/def/05_class.py, uncompyle6/parsers/parse3.py,
|
||||
uncompyle6/semantics/fragments.py, uncompyle6/semantics/pysource.py:
|
||||
Handle Python 3.3 > dotted class names
|
||||
|
||||
2015-12-30 rocky <rb@dustyfeet.com>
|
||||
|
||||
* README.rst: Note Python 3.5
|
||||
|
||||
2015-12-30 rocky <rb@dustyfeet.com>
|
||||
|
||||
* Makefile, test/Makefile, uncompyle6/__init__.py,
|
||||
uncompyle6/disas.py, uncompyle6/load.py, uncompyle6/magics.py,
|
||||
uncompyle6/scanner.py, uncompyle6/scanners/scanner3.py: Allow Python
|
||||
3.5 to decomplyle other versions. No Python 3.5 bytecode support
|
||||
just yet though.
|
||||
|
||||
2015-12-30 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/parser.py, uncompyle6/semantics/fragments.py,
|
||||
uncompyle6/semantics/pysource.py: Show details on parsing assert
|
||||
failures.
|
||||
|
||||
2015-12-30 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/parsers/parse3.py, uncompyle6/semantics/pysource.py:
|
||||
Remove accidental schmutz. Try using pattr on 3.4 to get fn names
|
||||
|
||||
2015-12-30 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/parsers/parse3.py: Parses another variation of Python3
|
||||
try/except. Reinstate some tests
|
||||
|
||||
2015-12-30 rocky <rb@dustyfeet.com>
|
||||
|
||||
* : Reinstate list comprehension test. I think we've found/fixed the
|
||||
initialization bug.
|
||||
|
||||
2015-12-30 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/code.py, uncompyle6/disas.py, uncompyle6/main.py,
|
||||
uncompyle6/marsh.py, uncompyle6/scanners/scanner27.py,
|
||||
uncompyle6/scanners/scanner3.py, uncompyle6/scanners/scanner34.py,
|
||||
uncompyle6/semantics/fragments.py,
|
||||
uncompyle6/semantics/pysource.py, uncompyle6/verify.py: Start using
|
||||
our replacement for inspect.iscode
|
||||
|
||||
2015-12-30 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/parsers/spark.py, uncompyle6/semantics/fragments.py,
|
||||
uncompyle6/semantics/pysource.py: Doc changes.
|
||||
|
||||
2015-12-30 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/parsers/spark.py: document GenericASTTraversal.preorder
|
||||
and default.
|
||||
|
||||
2015-12-30 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/main.py, uncompyle6/semantics/fragments.py,
|
||||
uncompyle6/semantics/pysource.py: Walker->SourceWalker
|
||||
Traverser->FragmentsWalker
|
||||
|
||||
2015-12-30 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/parsers/parse3.py: Tidy parse3 grammer a little
|
||||
|
||||
2015-12-30 rocky <rb@dustyfeet.com>
|
||||
|
||||
* test/simple_source/exception/25_try_except.py,
|
||||
test/test_pythonlib.py, uncompyle6/parsers/parse3.py,
|
||||
uncompyle6/scanners/scanner27.py, uncompyle6/scanners/scanner3.py,
|
||||
uncompyle6/scanners/scanner34.py, uncompyle6/semantics/pysource.py:
|
||||
Towards Python3 getting try/except working more often.
|
||||
|
||||
2015-12-29 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/scanners/scanner3.py: Fix another cross-version bug:
|
||||
eliminate version-specific library 'dis' and use corresponding
|
||||
version-indepent routine instead.
|
||||
|
||||
2015-12-29 rocky <rb@dustyfeet.com>
|
||||
|
||||
* test/Makefile, uncompyle6/marsh.py: Fix Python 2 cross deparsing
|
||||
pythond bytecode tuples co_consts, co_names, co_varnames. Reinstate
|
||||
cross Python 2-3 uncompiling
|
||||
|
||||
2015-12-29 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/scanners/scanner34.py: Syntax error typo
|
||||
|
||||
2015-12-29 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/marsh.py: Make sure internObjects is (re)initialized
|
||||
|
||||
2015-12-29 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/parser.py, uncompyle6/scanners/scanner34.py,
|
||||
uncompyle6/verify.py: inspect.iscode -> hasattr for now until we
|
||||
write a cross-version iscode
|
||||
|
||||
2015-12-29 rocky <rb@dustyfeet.com>
|
||||
|
||||
* README.rst, test/Makefile, uncompyle6/opcodes/opcode_32.py,
|
||||
uncompyle6/opcodes/opcode_33.py, uncompyle6/opcodes/opcode_34.py,
|
||||
uncompyle6/scanners/scanner3.py, uncompyle6/scanners/scanner32.py:
|
||||
scanner3: Python 2.6 compatibility: change set initializations. Get
|
||||
rid of * import opcode_*: only a little of the much-needed larger
|
||||
cleanup Makefile: remove 3.x bytecode checking from Python 2.x for
|
||||
now. DRY Makefile a little bit (but more is needed)
|
||||
|
||||
2015-12-28 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/scanners/scanner3.py: Python 2.6.9 compatibility
|
||||
|
||||
2015-12-28 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/main.py, uncompyle6/marsh.py: Marshal loading of =
|
||||
>python 3.4 from Python < 3.4
|
||||
|
||||
2015-12-28 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/disas.py, uncompyle6/load.py, uncompyle6/main.py,
|
||||
uncompyle6/marsh.py, uncompyle6/scanners/scanner3.py,
|
||||
uncompyle6/semantics/fragments.py, uncompyle6/semantics/pysource.py:
|
||||
Add Python3 marshal codes and start to handle cross-version Python
|
||||
code object types, introducing scan.Code3
|
||||
|
||||
2015-12-27 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/load.py, uncompyle6/marsh.py: Possibly closer to
|
||||
getting 2.7 to read 3.4 bytecode
|
||||
|
||||
2015-12-27 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/load.py, uncompyle6/main.py, uncompyle6/marsh.py,
|
||||
uncompyle6/scanner.py, uncompyle6/scanners/scanner25.py,
|
||||
uncompyle6/scanners/scanner26.py, uncompyle6/scanners/scanner27.py,
|
||||
uncompyle6/scanners/scanner3.py, uncompyle6/scanners/scanner32.py,
|
||||
uncompyle6/scanners/scanner33.py, uncompyle6/scanners/scanner34.py,
|
||||
uncompyle6/semantics/pysource.py: Fix up Python 2.x's ability to get
|
||||
code from Python 3.x's bytecode
|
||||
|
||||
2015-12-27 rocky <rb@dustyfeet.com>
|
||||
|
||||
* test/test_pythonlib.py: defer some tests
|
||||
|
||||
2015-12-27 rocky <rb@dustyfeet.com>
|
||||
|
||||
* : commit 7c5b8d803c5b76b185ebc8f6e7587fa64ef531e9 Author: rocky
|
||||
<rb@dustyfeet.com> Date: Sun Dec 27 16:49:37 2015 -0500
|
||||
|
||||
2015-12-27 rocky <rb@dustyfeet.com>
|
||||
|
||||
* : 3.2 bytecode
|
||||
|
||||
2015-12-27 rocky <rb@dustyfeet.com>
|
||||
|
||||
* ChangeLog, NEWS, README.rst, __pkginfo__.py: Get ready for release
|
||||
2.1.1
|
||||
|
||||
2015-12-27 rocky <rb@dustyfeet.com>
|
||||
|
||||
* ChangeLog, NEWS, README.rst, __pkginfo__.py,
|
||||
test/bytecompile-tests, uncompyle6/opcodes/Makefile,
|
||||
uncompyle6/opcodes/opcode_23.py, uncompyle6/opcodes/opcode_24.py,
|
||||
uncompyle6/opcodes/opcode_25.py, uncompyle6/opcodes/opcode_26.py,
|
||||
uncompyle6/opcodes/opcode_27.py, uncompyle6/opcodes/opcode_32.py,
|
||||
uncompyle6/opcodes/opcode_33.py, uncompyle6/opcodes/opcode_34.py,
|
||||
uncompyle6/parser.py, uncompyle6/parsers/parse3.py,
|
||||
uncompyle6/scanner.py, uncompyle6/scanners/scanner25.py,
|
||||
uncompyle6/scanners/scanner26.py, uncompyle6/scanners/scanner27.py,
|
||||
uncompyle6/scanners/scanner3.py, uncompyle6/scanners/scanner32.py,
|
||||
uncompyle6/scanners/scanner33.py, uncompyle6/scanners/scanner34.py,
|
||||
uncompyle6/semantics/fragments.py, uncompyle6/semantics/pysource.py:
|
||||
DRY Python3 scanner code. Some cross version handling fixed. Some
|
||||
Python 3.2 and 3.3 deparse fixes.
|
||||
|
||||
2015-12-27 rocky <rb@dustyfeet.com>
|
||||
|
||||
* README.rst, test/bytecompile-tests, uncompyle6/opcodes/Makefile,
|
||||
uncompyle6/opcodes/opcode_23.py, uncompyle6/opcodes/opcode_24.py,
|
||||
uncompyle6/opcodes/opcode_25.py, uncompyle6/opcodes/opcode_26.py,
|
||||
uncompyle6/opcodes/opcode_27.py, uncompyle6/opcodes/opcode_32.py,
|
||||
uncompyle6/opcodes/opcode_33.py, uncompyle6/opcodes/opcode_34.py,
|
||||
uncompyle6/parser.py, uncompyle6/parsers/parse3.py,
|
||||
uncompyle6/scanner.py, uncompyle6/scanners/scanner25.py,
|
||||
uncompyle6/scanners/scanner26.py, uncompyle6/scanners/scanner27.py,
|
||||
uncompyle6/scanners/scanner3.py, uncompyle6/scanners/scanner32.py,
|
||||
uncompyle6/scanners/scanner33.py, uncompyle6/scanners/scanner34.py,
|
||||
uncompyle6/semantics/fragments.py, uncompyle6/semantics/pysource.py:
|
||||
DRY Python3 scanner code. Some cross version handling fixed. Some
|
||||
Python 3.2 and 3.3 deparse fixes.
|
||||
|
||||
2015-12-26 rocky <rb@dustyfeet.com>
|
||||
|
||||
* .travis.yml, test/Makefile, uncompyle6/verify.py: Running native
|
||||
on Python 3.3 needs more work
|
||||
|
||||
2015-12-26 rocky <rb@dustyfeet.com>
|
||||
|
||||
* test/Makefile, test/test_pythonlib.py: Add ok-2.7 tests for 3.4
|
||||
full testing
|
||||
|
||||
2015-12-26 rocky <rb@dustyfeet.com>
|
||||
|
||||
* test/Makefile, test/bytecompile-tests, test/test_pythonlib.py: Add
|
||||
verify tests. Add Python 2.6 bytecode and use.
|
||||
|
||||
2015-12-26 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/semantics/fragments.py,
|
||||
uncompyle6/semantics/pysource.py: Add node and template code to
|
||||
cleanup "for" handling
|
||||
|
||||
2015-12-26 rocky <rb@dustyfeet.com>
|
||||
|
||||
* .travis.yml: Try Python 2.6 testing on travis
|
||||
|
||||
2015-12-26 rocky <rb@dustyfeet.com>
|
||||
|
||||
* test/Makefile: For testing we can't 3.3 bytecodes on 2.7 yet, so
|
||||
use 3.2
|
||||
|
||||
2015-12-26 rocky <rb@dustyfeet.com>
|
||||
|
||||
* .travis.yml, Makefile, requirements-dev.txt, test/Makefile,
|
||||
test/bytecompile-tests, test/test_pythonlib.py,
|
||||
uncompyle6/__init__.py, uncompyle6/opcodes/opcode_32.py,
|
||||
uncompyle6/opcodes/opcode_33.py, uncompyle6/opcodes/opcode_34.py,
|
||||
uncompyle6/scanner.py, uncompyle6/scanners/scanner32.py,
|
||||
uncompyle6/scanners/scanner33.py, uncompyle6/scanners/scanner34.py,
|
||||
uncompyle6/semantics/pysource.py: Fix up Python 3.2, 3.3, and 3.4
|
||||
cross-version scanners Try travis 2.6 and 3.3
|
||||
|
||||
2015-12-26 rocky <rb@dustyfeet.com>
|
||||
|
||||
* .travis.yml: Travis: try checking 3.4
|
||||
|
||||
2015-12-26 rocky <rb@dustyfeet.com>
|
||||
|
||||
* test/simple_source/exception/05_try_except.py,
|
||||
test/simple_source/looping/10_while.py,
|
||||
test/simple_source/looping/while.py,
|
||||
test/simple_source/simple_stmts/00_assign.py,
|
||||
test/simple_source/simple_stmts/00_import.py,
|
||||
test/simple_source/simple_stmts/00_pass.py,
|
||||
test/simple_source/simple_stmts/15_assert.py,
|
||||
test/simple_source/stmts/00_assign.py,
|
||||
test/simple_source/stmts/00_import.py,
|
||||
test/simple_source/stmts/00_pass.py,
|
||||
test/simple_source/stmts/15_assert.py,
|
||||
test/simple_source/stmts/15_for_if.py,
|
||||
uncompyle6/parsers/parse2.py, uncompyle6/parsers/parse3.py,
|
||||
uncompyle6/scanners/scanner32.py, uncompyle6/scanners/scanner34.py:
|
||||
Fix up looping by reinstating JUMP_ABSOLUTE -> JUMP_BACK or CONTINUE
|
||||
get jump offsets into jump attributes. Fix up 3.2 scanner paritally
|
||||
and use that in 3.4 for in cross version disassembly.
|
||||
|
||||
2015-12-26 rocky <rb@dustyfeet.com>
|
||||
|
||||
* test/simple_source/exception/01_try_except.py,
|
||||
test/simple_source/exception/05_try_except.py, uncompyle6/main.py,
|
||||
uncompyle6/opcodes/opcode_34.py, uncompyle6/parsers/parse3.py,
|
||||
uncompyle6/semantics/pysource.py: Python3 try/except handling
|
||||
improvements. Add Walker exception and use that: fixes erroneous
|
||||
uncompyle success message on parse error.
|
||||
|
||||
2015-12-25 rocky <rb@dustyfeet.com>
|
||||
|
||||
* test/simple_source/exception/01_try_except.py,
|
||||
uncompyle6/parsers/parse2.py, uncompyle6/parsers/parse3.py: WIP redo
|
||||
try/except for Python3
|
||||
|
||||
2015-12-25 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/semantics/fragments.py,
|
||||
uncompyle6/semantics/pysource.py: Fix bugs in using pysource from
|
||||
fragments.
|
||||
|
||||
2015-12-25 rocky <rb@dustyfeet.com>
|
||||
|
||||
* uncompyle6/semantics/Makefile, uncompyle6/semantics/fragments.py,
|
||||
uncompyle6/semantics/pysource.py: Two modes of disassembly, one
|
||||
where we show hidden code and one where we don't.
|
||||
|
||||
2015-12-25 rocky <rb@dustyfeet.com>
|
||||
|
||||
* README.rst: README.rst typos
|
||||
|
||||
2015-12-25 rocky <rb@dustyfeet.com>
|
||||
|
||||
* .gitignore, ChangeLog, MANIFEST.in, NEWS, __pkginfo__.py,
|
||||
test/Makefile: Get ready for releaes 2.0.0
|
||||
|
||||
2015-12-25 rocky <rb@dustyfeet.com>
|
||||
|
||||
* pytest/test_deparse.py: Port deparse test from python-deparse to
|
||||
|
22
Makefile
22
Makefile
@@ -18,8 +18,21 @@ TEST_TYPES=check-long check-short check-2.7 check-3.4
|
||||
#: Default target - same as "check"
|
||||
all: check
|
||||
|
||||
#: Run working tests
|
||||
check check-3.4 check-2.7: pytest
|
||||
# Run all tests
|
||||
check:
|
||||
@PYTHON_VERSION=`$(PYTHON) -V 2>&1 | cut -d ' ' -f 2 | cut -d'.' -f1,2`; \
|
||||
$(MAKE) check-$$PYTHON_VERSION
|
||||
|
||||
#: Tests for Python 2.7, 3.3 and 3.4
|
||||
check-2.7 check-3.3 check-3.4: pytest
|
||||
$(MAKE) -C test $@
|
||||
|
||||
#: Tests for Python 3.5 - pytest doesn't work here
|
||||
check-3.5:
|
||||
$(MAKE) -C test $@
|
||||
|
||||
#:Tests for Python 2.6 (doesn't have pytest)
|
||||
check-2.6:
|
||||
$(MAKE) -C test $@
|
||||
|
||||
#: Run py.test tests
|
||||
@@ -47,6 +60,11 @@ sdist:
|
||||
#: Style check. Set env var LINT to pyflakes, flake, or flake8
|
||||
lint: flake8
|
||||
|
||||
# Check StructuredText long description formatting
|
||||
check-rst:
|
||||
$(PYTHON) setup.py --long-description | rst2html.py > python3-trepan.html
|
||||
|
||||
#: Lint program
|
||||
flake8:
|
||||
$(LINT) uncompyle6
|
||||
|
||||
|
31
NEWS
31
NEWS
@@ -1,4 +1,33 @@
|
||||
uncompyle6 1.0.0 2015-12-11
|
||||
uncompyle6 2.1.3 2016-01-02
|
||||
|
||||
- Limited support for decompiling Python 3.5
|
||||
- Improve Python 3 class deparsing
|
||||
- Handle MAKE_CLOSURE opcode
|
||||
- Start to DRY opcode code.
|
||||
- increase test coverage
|
||||
- fix misc small bugs and some improvements
|
||||
|
||||
uncompyle6 2.1.2 2015-12-31
|
||||
|
||||
- Fix cross-version Marshal loading
|
||||
- Handle Python 3.3 . dotted class names
|
||||
- Limited 3.5 support: allows deparsing other versions
|
||||
- Refactor code more, misc bug fixes
|
||||
|
||||
uncompyle6 2.1.1 2015-12-27
|
||||
|
||||
- packaging issues
|
||||
|
||||
uncompyle6 2.1.0 2015-12-27
|
||||
|
||||
- Python 3.x deparsing much more solid
|
||||
- Better cross-version deparsing
|
||||
|
||||
Some bugs squashed while other run rampant. Some code cleanup while
|
||||
much more is yet needed. More tests added, but many more are needed.
|
||||
|
||||
|
||||
uncompyle6 2.0.0 2015-12-11
|
||||
|
||||
Changes from uncompyle2
|
||||
|
||||
|
26
README.rst
26
README.rst
@@ -1,28 +1,30 @@
|
||||
|buildstatus|
|
||||
|downloads| |buildstatus|
|
||||
|
||||
uncompyle6
|
||||
==========
|
||||
|
||||
A native Python Byte-code Disassembler, Decompiler, and byte-code library
|
||||
A native Python bytecode Disassembler, Decompiler, Fragment Decompiler
|
||||
and bytecode library
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
*uncompyle6* translates Python byte-code back into equivalent Python
|
||||
source code. It accepts byte-codes from Python version 2.5 to 3.4 or
|
||||
so and has been tested on Python 2.6, 2.7 and Python 3.4.
|
||||
*uncompyle6* translates Python bytecode back into equivalent Python
|
||||
source code. It accepts bytecodes from Python version 2.5 to 3.4 or
|
||||
so and has been tested on Python running versions 2.6, 2.7, 3.3,
|
||||
3.4 and 3.5.
|
||||
|
||||
Why this?
|
||||
---------
|
||||
|
||||
What makes this different other CPython byte-code decompilers? Its
|
||||
What makes this different other CPython bytecode decompilers? Its
|
||||
ability to deparse just fragments and give source-code information
|
||||
around a given bytecode offset.
|
||||
|
||||
I using this to deparse fragments of code inside my trepan_
|
||||
debuggers_. For that, I need to record text fragements for all
|
||||
byte-code offsets (of interest). This purpose although largely
|
||||
debuggers_. For that, I need to record text fragments for all
|
||||
bytecode offsets (of interest). This purpose although largely
|
||||
compatible with the original intention is yet a little bit different.
|
||||
See this_ for more information.
|
||||
|
||||
@@ -35,7 +37,7 @@ information.
|
||||
Other parts of the library can be used inside Python for various
|
||||
bytecode-related tasks. For example you can read in bytecode,
|
||||
i.e. perform a version-independent `marshal.loads()`, and disassemble
|
||||
the bytecode using version of Python different from the one used to
|
||||
the bytecode using a version of Python different from the one used to
|
||||
compile the bytecode.
|
||||
|
||||
|
||||
@@ -83,9 +85,8 @@ for usage help
|
||||
Known Bugs/Restrictions
|
||||
-----------------------
|
||||
|
||||
Python 3 deparsing is getting there, but not solid. Using Python 2 to
|
||||
deparse Python 3 is problematic, especilly for versions 3.4 and
|
||||
greater.
|
||||
Python 2 deparsing is probably as solid as the various versions of
|
||||
uncompyle2. Python 3 deparsing is okay but not as solid.
|
||||
|
||||
See Also
|
||||
--------
|
||||
@@ -97,6 +98,7 @@ See Also
|
||||
|
||||
The HISTORY file.
|
||||
|
||||
.. |downloads| image:: https://img.shields.io/pypi/dd/uncompyle6.svg
|
||||
.. _trepan: https://pypi.python.org/pypi/trepan
|
||||
.. _debuggers: https://pypi.python.org/pypi/trepan3k
|
||||
.. _remake: https://bashdb.sf.net/remake
|
||||
|
@@ -27,7 +27,7 @@ ftp_url = None
|
||||
# license = 'BSDish'
|
||||
mailing_list = 'python-debugger@googlegroups.com'
|
||||
modname = 'uncompyle6'
|
||||
packages = ['uncompyle6', 'uncompyle6.opcodes']
|
||||
packages = ['uncompyle6', 'uncompyle6.opcodes', 'uncompyle6.semantics', 'uncompyle6.scanners', 'uncompyle6.parsers']
|
||||
py_modules = None
|
||||
short_desc = 'Python byte-code disassembler and source-code converter'
|
||||
scripts = ['bin/uncompyle6', 'bin/pydisassemble']
|
||||
@@ -40,7 +40,7 @@ def get_srcdir():
|
||||
return os.path.realpath(filename)
|
||||
|
||||
ns = {}
|
||||
version = '2.0.0'
|
||||
version = '2.1.3'
|
||||
web = 'https://github.com/rocky/python-uncompyle6/'
|
||||
|
||||
# tracebacks in zip files are funky and not debuggable
|
||||
|
2
requirements-dev.txt
Normal file
2
requirements-dev.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
pytest
|
||||
flake8
|
@@ -19,28 +19,41 @@ check:
|
||||
@$(PYTHON) -V && PYTHON_VERSION=`$(PYTHON) -V 2>&1 | cut -d ' ' -f 2 | cut -d'.' -f1,2`; \
|
||||
$(MAKE) check-$$PYTHON_VERSION
|
||||
|
||||
#: Run working tests from Python 2.6
|
||||
check-2.6: check-bytecode-2.5 check-bytecode-2.7
|
||||
#: Run working tests from Python 2.6 or 2.7
|
||||
check-2.6 check-2.7: check-bytecode check-2.7-ok
|
||||
|
||||
#: Run working tests from Python 2.7
|
||||
check-2.7: check-bytecode check-2.7-ok
|
||||
#: Run working tests from Python 3.3
|
||||
check-3.3: check-bytecode
|
||||
$(PYTHON) test_pythonlib.py --bytecode-3.3 --verify $(COMPILE)
|
||||
|
||||
#: Run working tests from Python 3.5
|
||||
check-3.5: check-bytecode
|
||||
|
||||
#: Run working tests from Python 3.4
|
||||
check-3.4: check-bytecode check-bytecode-3.4
|
||||
$(PYTHON) test_pythonlib.py --bytecode-3.4
|
||||
check-3.4: check-bytecode check-3.4-ok check-2.7-ok
|
||||
$(PYTHON) test_pythonlib.py --bytecode-3.4 --verify $(COMPILE)
|
||||
|
||||
#: Check deparsing only, but from a different Python version
|
||||
check-disasm:
|
||||
$(PYTHON) dis-compare.py
|
||||
|
||||
#: Check deparsing bytecode only
|
||||
check-bytecode-2:
|
||||
$(PYTHON) test_pythonlib.py --bytecode-2.5 --bytecode-2.6 --bytecode-2.7
|
||||
|
||||
#: Check deparsing bytecode only
|
||||
check-bytecode:
|
||||
$(PYTHON) test_pythonlib.py --bytecode-2.5 --bytecode-2.7 --bytecode-3.2
|
||||
$(PYTHON) test_pythonlib.py --bytecode-2.5 --bytecode-2.6 --bytecode-2.7 \
|
||||
--bytecode-3.2 --bytecode-3.3 --bytecode-3.4
|
||||
|
||||
#: Check deparsing Python 2.5
|
||||
check-bytecode-2.5:
|
||||
$(PYTHON) test_pythonlib.py --bytecode-2.5
|
||||
|
||||
#: Check deparsing Python 2.6
|
||||
check-bytecode-2.6:
|
||||
$(PYTHON) test_pythonlib.py --bytecode-2.6
|
||||
|
||||
#: Check deparsing Python 2.7
|
||||
check-bytecode-2.7:
|
||||
$(PYTHON) test_pythonlib.py --bytecode-2.7
|
||||
@@ -49,6 +62,10 @@ check-bytecode-2.7:
|
||||
check-bytecode-3.2:
|
||||
$(PYTHON) test_pythonlib.py --bytecode-3.2
|
||||
|
||||
#: Check deparsing Python 3.3
|
||||
check-bytecode-3.3:
|
||||
$(PYTHON) test_pythonlib.py --bytecode-3.3
|
||||
|
||||
#: Check deparsing Python 3.4
|
||||
check-bytecode-3.4:
|
||||
$(PYTHON) test_pythonlib.py --bytecode-3.4
|
||||
@@ -61,6 +78,10 @@ check-native-short:
|
||||
check-2.7-ok:
|
||||
$(PYTHON) test_pythonlib.py --ok-2.7 --verify $(COMPILE)
|
||||
|
||||
#: Run longer Python 2.7's lib files known to be okay
|
||||
check-3.4-ok:
|
||||
$(PYTHON) test_pythonlib.py --ok-3.4 --verify $(COMPILE)
|
||||
|
||||
clean: clean-py-dis clean-dis clean-unverified
|
||||
|
||||
clean-dis:
|
||||
|
@@ -1,77 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
from __future__ import print_function
|
||||
|
||||
"""
|
||||
compile_tests -- compile test patterns for the decompyle test suite
|
||||
"""
|
||||
|
||||
import py_compile, os, sys, getopt
|
||||
|
||||
work_dir = os.path.dirname(sys.argv[0])
|
||||
src_dir = work_dir
|
||||
|
||||
opts, args = getopt.getopt(sys.argv[1:], 's:w:')
|
||||
|
||||
for opt, val in opts:
|
||||
if opt == '-s':
|
||||
src_dir = val
|
||||
if opt == '-w':
|
||||
work_dir = val
|
||||
else:
|
||||
raise "Unknown Option '%s'" % opt
|
||||
if args:
|
||||
raise 'This tool does not want any arguments'
|
||||
|
||||
print("Using files in dir %s" % src_dir)
|
||||
print("Compiling into dir %s" % work_dir)
|
||||
|
||||
tests = {}
|
||||
|
||||
tests['1.5'] = ["class", "del", "docstring", 'empty', "exec",
|
||||
"exceptions", "expressions", "functions", "global",
|
||||
"globals", "import", "integers", "lambda", "loops",
|
||||
"misc", "nested_elif", "prettyprint", "print",
|
||||
'single_stmt', "slices", "tuple_params", 'tuples']
|
||||
|
||||
tests['1.6'] = ["applyEquiv", ] + tests['1.5']
|
||||
|
||||
tests['2.0'] = ["augmentedAssign", "extendedImport", "extendedPrint",
|
||||
"import_as", "listComprehensions", 'print_to'] + \
|
||||
tests['1.6'] # [ "--extendedarg", ]
|
||||
|
||||
tests['2.1'] = ['loops2', 'nested_scopes'] + tests['2.0']
|
||||
|
||||
tests['2.2'] = ['divide_future', 'divide_no_future', 'iterators',
|
||||
'yield'] + tests['2.1']
|
||||
|
||||
tests['2.3'] = tests['2.2']
|
||||
tests['2.5'] = tests['2.3']
|
||||
tests['2.6'] = tests['2.5']
|
||||
tests['2.7'] = ['mine'] + tests['2.6']
|
||||
tests['3.4'] = ['mine']
|
||||
total_tests = len(tests['2.7'])
|
||||
#tests['2.2'].sort(); print tests['2.2']
|
||||
|
||||
extension = '.py' + (__debug__ and 'c' or 'o')
|
||||
|
||||
def compile(file, target_dir):
|
||||
sfile = os.path.join(src_dir, 'test_%s.py' % file)
|
||||
cfile = os.path.join(target_dir, 'test_%s%s' % (file, extension) )
|
||||
py_compile.compile(sfile, cfile=cfile)
|
||||
|
||||
def compile_for_version(version):
|
||||
target_dir = os.path.join(work_dir, 'bytecode_' + version)
|
||||
if not os.path.exists(target_dir):
|
||||
os.mkdir(target_dir)
|
||||
for file in tests[version]:
|
||||
compile(file, target_dir)
|
||||
|
||||
try:
|
||||
version = '%i.%i' % sys.version_info[:2]
|
||||
except AttributeError:
|
||||
version = sys.version[:3]
|
||||
|
||||
print('Compiling test files for Python', version)
|
||||
print('(%i/%i files)' % (len(tests[version]), total_tests))
|
||||
compile_for_version(version)
|
||||
print('Done.')
|
@@ -1,23 +0,0 @@
|
||||
|
||||
def kwfunc(**kwargs):
|
||||
print kwargs.items()
|
||||
|
||||
def argsfunc(*args):
|
||||
print args
|
||||
|
||||
def no_apply(*args, **kwargs):
|
||||
print args
|
||||
print kwargs.items()
|
||||
argsfunc(34)
|
||||
foo = argsfunc(*args)
|
||||
argsfunc(*args)
|
||||
argsfunc(34, *args)
|
||||
kwfunc(**kwargs)
|
||||
kwfunc(x=11, **kwargs)
|
||||
no_apply(*args, **kwargs)
|
||||
no_apply(34, *args, **kwargs)
|
||||
no_apply(x=11, *args, **kwargs)
|
||||
no_apply(34, x=11, *args, **kwargs)
|
||||
no_apply(42, 34, x=11, *args, **kwargs)
|
||||
|
||||
no_apply(1,2,4,8,a=2,b=3,c=5)
|
@@ -1,45 +0,0 @@
|
||||
raise "This program can't be run"
|
||||
|
||||
a = 1
|
||||
b = 2
|
||||
a += b; print a # a = a+b = 3
|
||||
a -= b; print a # a = a-b = 1
|
||||
a *= b; print a # a = a*b = 2
|
||||
a -= a; print a # a = a-a = 0
|
||||
a += 7*3; print a # == 21
|
||||
|
||||
l= [1,2,3]
|
||||
l[1] *= 3; print l[1]; # 6
|
||||
l[1][2][3] = 7
|
||||
l[1][2][3] *= 3;
|
||||
l[:] += [9]; print l
|
||||
l[:2] += [9]; print l
|
||||
l[1:] += [9]; print l
|
||||
l[1:4] += [9]; print l
|
||||
l += [42,43]; print l
|
||||
|
||||
a.value = 1
|
||||
a.value += 1;
|
||||
a.b.val = 1
|
||||
a.b.val += 1;
|
||||
|
||||
l = []
|
||||
for i in range(3):
|
||||
lj = []
|
||||
for j in range(3):
|
||||
lk = []
|
||||
for k in range(3):
|
||||
lk.append(0)
|
||||
lj.append(lk)
|
||||
l.append(lj)
|
||||
|
||||
i = j = k = 1
|
||||
def f():
|
||||
global i
|
||||
i += 1
|
||||
return i
|
||||
|
||||
l[i][j][k] = 1
|
||||
i = 1
|
||||
l[f()][j][k] += 1
|
||||
print i, l
|
@@ -1,34 +0,0 @@
|
||||
|
||||
class A:
|
||||
|
||||
class A1:
|
||||
def __init__(self):
|
||||
print 'A1.__init__'
|
||||
|
||||
def foo(self):
|
||||
print 'A1.foo'
|
||||
|
||||
def __init__(self):
|
||||
print 'A.__init__'
|
||||
|
||||
def foo(self):
|
||||
print 'A.foo'
|
||||
|
||||
|
||||
class B:
|
||||
def __init__(self):
|
||||
print 'B.__init__'
|
||||
|
||||
def bar(self):
|
||||
print 'B.bar'
|
||||
|
||||
|
||||
class C(A,B):
|
||||
def foobar(self):
|
||||
print 'C.foobar'
|
||||
|
||||
|
||||
c = C()
|
||||
c.foo()
|
||||
c.bar()
|
||||
c.foobar()
|
@@ -1,24 +0,0 @@
|
||||
raise "This program can't be run"
|
||||
|
||||
print 0
|
||||
a = b[5]
|
||||
print 1
|
||||
del a
|
||||
print 2
|
||||
del b[5]
|
||||
print 3
|
||||
|
||||
del testme[1]
|
||||
print 4
|
||||
del testme[:]
|
||||
print '4a'
|
||||
del testme[:42]
|
||||
print '4b'
|
||||
del testme[40:42]
|
||||
print 5
|
||||
del testme[2:1024:10]
|
||||
print '5a'
|
||||
del testme[40,41,42]
|
||||
print 6
|
||||
del testme[:42, ..., :24:, 24, 100]
|
||||
print 7
|
@@ -1,6 +0,0 @@
|
||||
from __future__ import division
|
||||
|
||||
print ' 1 // 2 =', 1 // 2
|
||||
print '1.0 // 2.0 =', 1.0 // 2.0
|
||||
print ' 1 / 2 =', 1 / 2
|
||||
print '1.0 / 2.0 =', 1.0 / 2.0
|
@@ -1,6 +0,0 @@
|
||||
#from __future__ import division
|
||||
|
||||
print ' 1 // 2 =', 1 // 2
|
||||
print '1.0 // 2.0 =', 1.0 // 2.0
|
||||
print ' 1 / 2 =', 1 / 2
|
||||
print '1.0 / 2.0 =', 1.0 / 2.0
|
@@ -1,34 +0,0 @@
|
||||
|
||||
'''
|
||||
This is a doc string
|
||||
'''
|
||||
|
||||
def Doc_Test():
|
||||
"""This has to be present"""
|
||||
|
||||
class XXX:
|
||||
def __init__(self):
|
||||
"""__init__: This has to be present"""
|
||||
self.a = 1
|
||||
|
||||
def XXX22():
|
||||
"""XXX22: This has to be present"""
|
||||
pass
|
||||
|
||||
def XXX11():
|
||||
"""XXX22: This has to be present"""
|
||||
pass
|
||||
|
||||
def XXX12():
|
||||
foo = """XXX22: This has to be present"""
|
||||
pass
|
||||
|
||||
def XXX13():
|
||||
pass
|
||||
|
||||
def Y11():
|
||||
def Y22():
|
||||
def Y33():
|
||||
pass
|
||||
|
||||
print __doc__
|
@@ -1,107 +0,0 @@
|
||||
import dis
|
||||
|
||||
def x11():
|
||||
try:
|
||||
a = 'try except'
|
||||
except:
|
||||
a = 2
|
||||
b = '--------'
|
||||
|
||||
|
||||
def x12():
|
||||
try:
|
||||
a = 'try except else(pass)'
|
||||
except:
|
||||
a = 2
|
||||
b = '--------'
|
||||
|
||||
|
||||
def x13():
|
||||
try:
|
||||
a = 'try except else(a=3)'
|
||||
except:
|
||||
a = 2
|
||||
else:
|
||||
a = 3
|
||||
b = '--------'
|
||||
|
||||
|
||||
def x21():
|
||||
try:
|
||||
a = 'try KeyError'
|
||||
except KeyError:
|
||||
a = 8
|
||||
b = '--------'
|
||||
|
||||
|
||||
def x22():
|
||||
try:
|
||||
a = 'try (IdxErr, KeyError) else(pass)'
|
||||
except (IndexError, KeyError):
|
||||
a = 8
|
||||
b = '--------'
|
||||
|
||||
|
||||
def x23():
|
||||
try:
|
||||
a = 'try KeyError else(a=9)'
|
||||
except KeyError:
|
||||
a = 8
|
||||
else:
|
||||
a = 9
|
||||
b = '--------'
|
||||
|
||||
|
||||
def x31():
|
||||
try:
|
||||
a = 'try KeyError IndexError'
|
||||
except KeyError:
|
||||
a = 8
|
||||
except IndexError:
|
||||
a = 9
|
||||
b = '--------'
|
||||
|
||||
|
||||
def x32():
|
||||
try:
|
||||
a = 'try KeyError IndexError else(pass)'
|
||||
except KeyError:
|
||||
a = 8
|
||||
except IndexError:
|
||||
a = 9
|
||||
b = '--------'
|
||||
|
||||
|
||||
def x33():
|
||||
try:
|
||||
a = 'try KeyError IndexError else(a=9)'
|
||||
except KeyError:
|
||||
a = 8
|
||||
except IndexError:
|
||||
a = 9
|
||||
else:
|
||||
a = 9
|
||||
b = '#################'
|
||||
|
||||
|
||||
def x41():
|
||||
if (a == 1):
|
||||
a = 1
|
||||
elif (b == 1):
|
||||
b = 1
|
||||
else:
|
||||
c = 1
|
||||
b = '#################'
|
||||
|
||||
|
||||
def x42():
|
||||
if (a == 1):
|
||||
a = 1
|
||||
elif (b == 1):
|
||||
b = 1
|
||||
else:
|
||||
c = 1
|
||||
xxx = 'mmm'
|
||||
|
||||
if (__name__ == '__main__'):
|
||||
dis.dis(xx)
|
@@ -1,5 +0,0 @@
|
||||
testcode = 'a = 12'
|
||||
|
||||
exec testcode
|
||||
exec testcode in globals()
|
||||
exec testcode in globals(), locals()
|
@@ -1,10 +0,0 @@
|
||||
def _lsbStrToInt(str):
|
||||
return ord(str[0]) + \
|
||||
(ord(str[1]) << 8) + \
|
||||
(ord(str[2]) << 16) + \
|
||||
(ord(str[3]) << 24)
|
||||
|
||||
def test(x):
|
||||
return x
|
||||
|
||||
test(a == b == c == 1)
|
@@ -1,10 +0,0 @@
|
||||
import os, sys as System, time
|
||||
import sys
|
||||
|
||||
from rfc822 import Message as Msg822
|
||||
from mimetools import Message as MimeMsg, decode, choose_boundary as MimeBoundary
|
||||
|
||||
import test.test_StringIO as StringTest
|
||||
|
||||
for k, v in globals().items():
|
||||
print `k`, v
|
@@ -1,6 +0,0 @@
|
||||
import sys
|
||||
|
||||
print >> sys.stdout, "Hello World"
|
||||
print >> sys.stdout, 1,2,3
|
||||
print >> sys.stdout, 1,2,3,
|
||||
print >> sys.stdout
|
File diff suppressed because it is too large
Load Diff
@@ -1,58 +0,0 @@
|
||||
def x0():
|
||||
pass
|
||||
|
||||
def x1(arg1):
|
||||
pass
|
||||
|
||||
def x2(arg1,arg2):
|
||||
pass
|
||||
|
||||
def x3a(*args):
|
||||
pass
|
||||
|
||||
def x3b(**kwargs):
|
||||
pass
|
||||
|
||||
def x3c(*args, **kwargs):
|
||||
pass
|
||||
|
||||
def x4a(foo, bar=1, bla=2, *args):
|
||||
pass
|
||||
|
||||
def x4b(foo, bar=1, bla=2, **kwargs):
|
||||
pass
|
||||
|
||||
def x4c(foo, bar=1, bla=2, *args, **kwargs):
|
||||
pass
|
||||
|
||||
def func_with_tuple_args((a,b)):
|
||||
print a
|
||||
print b
|
||||
|
||||
def func_with_tuple_args2((a,b), (c,d)):
|
||||
print a
|
||||
print c
|
||||
|
||||
def func_with_tuple_args3((a,b), (c,d), *args):
|
||||
print a
|
||||
print c
|
||||
|
||||
def func_with_tuple_args4((a,b), (c,d), **kwargs):
|
||||
print a
|
||||
print c
|
||||
|
||||
def func_with_tuple_args5((a,b), (c,d), *args, **kwargs):
|
||||
print a
|
||||
print c
|
||||
|
||||
def func_with_tuple_args6((a,b), (c,d)=(2,3), *args, **kwargs):
|
||||
print a
|
||||
print c
|
||||
|
||||
def func_ret1():
|
||||
return 1 < 2 < 3
|
||||
|
||||
def read(size=0):
|
||||
if size > 0 and size <= x - cur:
|
||||
return 0
|
||||
return 0
|
@@ -1,16 +0,0 @@
|
||||
i = 1; j = 7
|
||||
def a():
|
||||
def b():
|
||||
def c():
|
||||
k = 34
|
||||
global i
|
||||
i = i+k
|
||||
l = 42
|
||||
c()
|
||||
global j
|
||||
j = j+l
|
||||
b()
|
||||
print i, j # should print 35, 49
|
||||
|
||||
a()
|
||||
print i, j
|
@@ -1,10 +0,0 @@
|
||||
def f():
|
||||
print x # would result in a 'NameError' or 'UnboundLocalError'
|
||||
x = x+1
|
||||
print x
|
||||
|
||||
raise "This program can't be run"
|
||||
|
||||
x = 1
|
||||
f()
|
||||
print x
|
@@ -1,11 +0,0 @@
|
||||
import sys
|
||||
import os, sys, BaseHTTPServer
|
||||
|
||||
import test.test_MimeWriter
|
||||
|
||||
from rfc822 import Message
|
||||
from mimetools import Message, decode, choose_boundary
|
||||
from os import *
|
||||
|
||||
for k, v in globals().items():
|
||||
print `k`, v
|
@@ -1,13 +0,0 @@
|
||||
import sys as SYS
|
||||
import os as OS, sys as SYSTEM, BaseHTTPServer as HTTPServ
|
||||
|
||||
import test.test_MimeWriter as Mime_Writer
|
||||
|
||||
from rfc822 import Message as MSG
|
||||
from mimetools import Message as mimeMsg, decode, \
|
||||
choose_boundary as mimeBoundry
|
||||
|
||||
print '---' * 20
|
||||
|
||||
for k, v in globals().items():
|
||||
print k, repr(v)
|
@@ -1,22 +0,0 @@
|
||||
import sys
|
||||
#raise "This program can't be run"
|
||||
|
||||
i = 1
|
||||
i = 42
|
||||
i = -1
|
||||
i = -42
|
||||
i = sys.maxint
|
||||
minint = -sys.maxint-1
|
||||
print sys.maxint
|
||||
print minint
|
||||
print long(minint)-1
|
||||
|
||||
print
|
||||
i = -2147483647 # == -maxint
|
||||
print i, repr(i)
|
||||
i = i-1
|
||||
print i, repr(i)
|
||||
i = -2147483648L # == minint == -maxint-1
|
||||
print i, repr(i)
|
||||
i = -2147483649L # == minint-1 == -maxint-2
|
||||
print i, repr(i)
|
@@ -1,11 +0,0 @@
|
||||
|
||||
for i in range(20):
|
||||
print i,
|
||||
|
||||
print
|
||||
|
||||
for i in range(10):
|
||||
print i,
|
||||
#if i == 10: break
|
||||
else:
|
||||
print 'The End'
|
@@ -1,8 +0,0 @@
|
||||
palette = map(lambda a: (a,a,a), range(256))
|
||||
palette = map(lambda (r,g,b): chr(r)+chr(g)+chr(b), palette)
|
||||
palette = map(lambda r: r, palette)
|
||||
|
||||
palette = lambda (r,g,b,): r
|
||||
palette = lambda (r): r
|
||||
palette = lambda r: r
|
||||
palette = lambda (r): r, palette
|
@@ -1,30 +0,0 @@
|
||||
XXX = range(4)
|
||||
|
||||
print [i for i in XXX]
|
||||
print
|
||||
print [i for i in (1,2,3,4,)]
|
||||
print
|
||||
print [i for i in [1,2,3,4,]]
|
||||
print
|
||||
print [(i,1) for i in XXX]
|
||||
print
|
||||
print [i*2 for i in range(4)]
|
||||
print
|
||||
print [i*j for i in range(4)
|
||||
for j in range(7)]
|
||||
print [i*2 for i in range(4) if i == 0 ]
|
||||
print [(i,i**2) for i in range(4) if (i % 2) == 0 ]
|
||||
print [i*j for i in range(4)
|
||||
if i == 2
|
||||
for j in range(7)
|
||||
if (i+i % 2) == 0 ]
|
||||
|
||||
seq1 = 'abc'
|
||||
seq2 = (1,2,3)
|
||||
|
||||
[ (x,y) for x in seq1 for y in seq2 ]
|
||||
|
||||
def flatten1(seq):
|
||||
return [x for subseq in seq for x in subseq]
|
||||
|
||||
print flatten1([[0], [1,2,3], [4,5], [6,7,8,9], []])
|
@@ -1,58 +0,0 @@
|
||||
for i in range(10):
|
||||
if i == 3:
|
||||
continue
|
||||
if i == 5:
|
||||
break
|
||||
print i,
|
||||
else:
|
||||
print 'Else'
|
||||
print
|
||||
|
||||
for i in range(10):
|
||||
if i == 3:
|
||||
continue
|
||||
print i,
|
||||
else:
|
||||
print 'Else'
|
||||
|
||||
i = 0
|
||||
while i < 10:
|
||||
i = i+1
|
||||
if i == 3:
|
||||
continue
|
||||
if i == 5:
|
||||
break
|
||||
print i,
|
||||
else:
|
||||
print 'Else'
|
||||
print
|
||||
|
||||
i = 0
|
||||
while i < 10:
|
||||
i = i+1
|
||||
if i == 3:
|
||||
continue
|
||||
print i,
|
||||
else:
|
||||
print 'Else'
|
||||
|
||||
for x, y in [(1,2),(3,4)]:
|
||||
if x in ['==', '>=', '>']:
|
||||
if '0' in y:
|
||||
print
|
||||
|
||||
for x in (1, 2, 3):
|
||||
if x == 1:
|
||||
print x
|
||||
|
||||
i = 0
|
||||
while i < 10:
|
||||
i+=1
|
||||
for x in (1,2,3):
|
||||
for y in (1,2,3):
|
||||
if x == y and x == 1:
|
||||
while i < 10:
|
||||
print x
|
||||
break
|
||||
|
||||
|
@@ -1,10 +0,0 @@
|
||||
# This is a seperate test pattern, since 'continue' within 'try'
|
||||
# was not allowed till Python 2.1
|
||||
|
||||
for term in args:
|
||||
try:
|
||||
print
|
||||
continue
|
||||
print
|
||||
except:
|
||||
pass
|
@@ -1,5 +0,0 @@
|
||||
sum(i*i for i in range(10))
|
||||
|
||||
sum(x*y for x,y in zip(xvec, yvec))
|
||||
|
||||
|
@@ -1,23 +0,0 @@
|
||||
raise "This program can't be run"
|
||||
|
||||
class A:
|
||||
def __init__(self, num):
|
||||
self.num = num
|
||||
def __repr__(self):
|
||||
return str(self.num)
|
||||
|
||||
b = []
|
||||
for i in range(10):
|
||||
b.append(A(i))
|
||||
|
||||
for i in ('CALL_FUNCTION', 'CALL_FUNCTION_VAR',
|
||||
'CALL_FUNCTION_VAR_KW', 'CALL_FUNCTION_KW'):
|
||||
print i, '\t', len(i), len(i)-len('CALL_FUNCTION'),
|
||||
print (len(i)-len('CALL_FUNCTION')) / 3,
|
||||
print i[len('CALL_FUNCTION'):]
|
||||
|
||||
p2 = (0, 0, None)
|
||||
if p2[2]:
|
||||
print 'has value'
|
||||
else:
|
||||
print ' no value'
|
@@ -1,81 +0,0 @@
|
||||
a = None
|
||||
|
||||
if a == 1:
|
||||
print '1'
|
||||
elif a == 2:
|
||||
print '2'
|
||||
|
||||
if a == 1:
|
||||
print '1'
|
||||
elif a == 2:
|
||||
print '2'
|
||||
else:
|
||||
print 'other'
|
||||
|
||||
if a == 1:
|
||||
print '1'
|
||||
elif a == 2:
|
||||
print '2'
|
||||
elif a == 3:
|
||||
print '3'
|
||||
else:
|
||||
print 'other'
|
||||
|
||||
if a == 1:
|
||||
print '1'
|
||||
elif a == 2:
|
||||
print '2'
|
||||
elif a == 3:
|
||||
print '3'
|
||||
|
||||
if a == 1:
|
||||
print '1'
|
||||
else:
|
||||
if a == 2:
|
||||
print '2'
|
||||
else:
|
||||
if a == 3:
|
||||
print '3'
|
||||
else:
|
||||
print 'other'
|
||||
|
||||
if a == 1:
|
||||
print '1'
|
||||
else:
|
||||
if a == 2:
|
||||
print '2'
|
||||
else:
|
||||
print 'more'
|
||||
if a == 3:
|
||||
print '3'
|
||||
else:
|
||||
print 'other'
|
||||
|
||||
if a == 1:
|
||||
print '1'
|
||||
else:
|
||||
print 'more'
|
||||
if a == 2:
|
||||
print '2'
|
||||
else:
|
||||
if a == 3:
|
||||
print '3'
|
||||
else:
|
||||
print 'other'
|
||||
|
||||
if a == 1:
|
||||
print '1'
|
||||
else:
|
||||
print 'more'
|
||||
if a == 2:
|
||||
print '2'
|
||||
else:
|
||||
print 'more'
|
||||
if a == 3:
|
||||
print '3'
|
||||
elif a == 4:
|
||||
print '4'
|
||||
elif a == 4:
|
||||
print '4'
|
||||
else:
|
||||
print 'other'
|
@@ -1,87 +0,0 @@
|
||||
from __future__ import nested_scopes
|
||||
|
||||
blurb = 1
|
||||
|
||||
def k0():
|
||||
def l0(m=1):
|
||||
print
|
||||
l0()
|
||||
|
||||
def x0():
|
||||
def y0():
|
||||
print
|
||||
y0()
|
||||
|
||||
def x1():
|
||||
def y1():
|
||||
print 'y-blurb =', blurb
|
||||
y1()
|
||||
|
||||
def x2():
|
||||
def y2():
|
||||
print
|
||||
blurb = 2
|
||||
y2()
|
||||
|
||||
def x3a():
|
||||
def y3a(x):
|
||||
print 'y-blurb =', blurb, flurb
|
||||
print
|
||||
blurb = 3
|
||||
flurb = 7
|
||||
y3a(1)
|
||||
print 'x3a-blurb =', blurb
|
||||
|
||||
def x3():
|
||||
def y3(x):
|
||||
def z():
|
||||
blurb = 25
|
||||
print 'z-blurb =', blurb,
|
||||
z()
|
||||
print 'y-blurb =', blurb,
|
||||
print
|
||||
blurb = 3
|
||||
y3(1)
|
||||
print 'x3-blurb =', blurb
|
||||
|
||||
def x3b():
|
||||
def y3b(x):
|
||||
def z():
|
||||
print 'z-blurb =', blurb,
|
||||
blurb = 25
|
||||
z()
|
||||
print 'y-blurb =', blurb,
|
||||
print
|
||||
blurb = 3
|
||||
y3b(1)
|
||||
print 'x3-blurb =', blurb
|
||||
|
||||
def x4():
|
||||
def y4(x):
|
||||
def z():
|
||||
print 'z-blurb =', blurb
|
||||
z()
|
||||
global blurb
|
||||
blurb = 3
|
||||
y4(1)
|
||||
|
||||
def x():
|
||||
def y(x):
|
||||
print 'y-blurb =', blurb
|
||||
blurb = 2
|
||||
y(1)
|
||||
|
||||
|
||||
def func_with_tuple_args6((a,b), (c,d)=(2,3), *args, **kwargs):
|
||||
def y(x):
|
||||
print 'y-a =', a
|
||||
print c
|
||||
|
||||
def find(self, name):
|
||||
# This is taken from 'What's new in Python 2.1' by amk
|
||||
L = filter(lambda x, name: x == name, self.list_attribute)
|
||||
|
||||
x0(); x1(); x2();
|
||||
x3(); x3a(); x3b();
|
||||
x4(); x()
|
||||
print 'blurb =', blurb
|
@@ -1,128 +0,0 @@
|
||||
import pprint
|
||||
|
||||
aa = 'aa'
|
||||
|
||||
dict0 = {
|
||||
'a': 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
'b': 1234,
|
||||
'd': aa,
|
||||
aa: aa
|
||||
}
|
||||
|
||||
|
||||
dict = {
|
||||
'a': 'aaa',
|
||||
'b': 1234,
|
||||
'c': { 'ca': 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
'cb': 1234,
|
||||
'cc': None
|
||||
},
|
||||
'd': aa,
|
||||
aa: aa,
|
||||
'eee': { 'ca': 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
'cb': 1234,
|
||||
'cc': None
|
||||
},
|
||||
'ff': aa,
|
||||
}
|
||||
list1 = [ '1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
aa,
|
||||
'1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
'1ccccccccccccccccccccccccccccccccccccccccccc' ]
|
||||
list2 = [ '2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
[ '22aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
aa,
|
||||
'22bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
'22ccccccccccccccccccccccccccccccccccccccccccc' ],
|
||||
'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
'ccccccccccccccccccccccccccccccccccccccccccc' ]
|
||||
tuple1 = ( '1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
aa,
|
||||
'1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
'1ccccccccccccccccccccccccccccccccccccccccccc' )
|
||||
tuple2 = ( '2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
( '22aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
aa,
|
||||
'22bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
'22ccccccccccccccccccccccccccccccccccccccccccc' ),
|
||||
'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
'ccccccccccccccccccccccccccccccccccccccccccc' )
|
||||
|
||||
def funcA():
|
||||
dict = {
|
||||
'a': 'aaa',
|
||||
'b': 1234,
|
||||
'c': { 'ca': 'aaa',
|
||||
'cb': 1234,
|
||||
'cc': None
|
||||
},
|
||||
'd': aa,
|
||||
aa: aa
|
||||
}
|
||||
list1 = [ '1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
'1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
aa,
|
||||
'1ccccccccccccccccccccccccccccccccccccccccccc' ]
|
||||
list2 = [ '2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
[ '22aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
aa,
|
||||
'22bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
'22ccccccccccccccccccccccccccccccccccccccccccc' ],
|
||||
'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
'ccccccccccccccccccccccccccccccccccccccccccc' ]
|
||||
tuple1 = ( '1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
'1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
aa,
|
||||
'1ccccccccccccccccccccccccccccccccccccccccccc' )
|
||||
tuple2 = ( '2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
( '22aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
aa,
|
||||
'22bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
'22ccccccccccccccccccccccccccccccccccccccccccc' ),
|
||||
'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
'ccccccccccccccccccccccccccccccccccccccccccc' )
|
||||
|
||||
def funcAB():
|
||||
dict = {
|
||||
'a': 'aaa',
|
||||
'b': 1234,
|
||||
'c': { 'ca': 'aaa',
|
||||
'cb': 1234,
|
||||
'cc': None
|
||||
},
|
||||
'd': aa,
|
||||
aa: aa
|
||||
}
|
||||
list1 = [ '1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
'1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
'1ccccccccccccccccccccccccccccccccccccccccccc' ]
|
||||
list2 = [ '2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
[ '22aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
'22bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
'22ccccccccccccccccccccccccccccccccccccccccccc' ],
|
||||
'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
'ccccccccccccccccccccccccccccccccccccccccccc' ]
|
||||
tuple1 = ( '1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
'1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
'1ccccccccccccccccccccccccccccccccccccccccccc' )
|
||||
tuple2 = ( '2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
( '22aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
'22bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
'22ccccccccccccccccccccccccccccccccccccccccccc' ),
|
||||
'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
||||
'ccccccccccccccccccccccccccccccccccccccccccc' )
|
||||
|
||||
pprint.pprint(dict0)
|
||||
print
|
||||
pprint.pprint(dict)
|
||||
print
|
||||
|
||||
pprint = pprint.PrettyPrinter(indent=2)
|
||||
pprint.pprint(dict0)
|
||||
print
|
||||
pprint.pprint(dict)
|
||||
print
|
||||
|
||||
pprint.pprint(list1)
|
||||
print
|
||||
pprint.pprint(list2)
|
@@ -1,9 +0,0 @@
|
||||
|
||||
print 1,2,3,4,5
|
||||
a = b + 5
|
||||
print 1,2,3,4,5
|
||||
print 1,2,3,4,5
|
||||
print
|
||||
print
|
||||
print 1,2,3,4,5
|
||||
print
|
@@ -1,13 +0,0 @@
|
||||
|
||||
import sys
|
||||
|
||||
print >>sys.stdout, 1,2,3,4,5
|
||||
|
||||
print >>sys.stdout, 1,2,3,4,5,
|
||||
print >>sys.stdout
|
||||
|
||||
print >>sys.stdout, 1,2,3,4,5,
|
||||
print >>sys.stdout, 1,2,3,4,5,
|
||||
print >>sys.stdout
|
||||
|
||||
print >>sys.stdout
|
@@ -1 +0,0 @@
|
||||
print 5
|
@@ -1,32 +0,0 @@
|
||||
raise "This program can't be run"
|
||||
|
||||
testme[1]
|
||||
testme[1] = 1
|
||||
del testme[1]
|
||||
|
||||
testme[:42]
|
||||
testme[:42] = "The Answer"
|
||||
del testme[:42]
|
||||
|
||||
testme[2:1024:]
|
||||
testme[:1024:10]
|
||||
testme[::]
|
||||
testme[2:1024:10]
|
||||
testme[2:1024:10] = "A lot"
|
||||
del testme[2:1024:10]
|
||||
|
||||
testme[:42, ..., :24:, 24, 100]
|
||||
testme[:42, ..., :24:, 24, 100] = "Strange"
|
||||
del testme[:42, ..., :24:, 24, 100]
|
||||
|
||||
testme[:]
|
||||
testme[:] = 'Take all'
|
||||
del testme[:]
|
||||
|
||||
testme[40:42]
|
||||
testme[40:42] = 'Three'
|
||||
del testme[40:42]
|
||||
|
||||
testme[40,41,42]
|
||||
testme[40,41,42] = 'Another Three'
|
||||
del testme[40,41,42]
|
@@ -1,14 +0,0 @@
|
||||
def A(a,b,(x,y,z),c):
|
||||
pass
|
||||
|
||||
def B(a,b=42,(x,y,z)=(1,2,3),c=17):
|
||||
pass
|
||||
|
||||
def C((x,y,z)):
|
||||
pass
|
||||
|
||||
def D((x,)):
|
||||
pass
|
||||
|
||||
def E((x)):
|
||||
pass
|
@@ -1,20 +0,0 @@
|
||||
a = (1,)
|
||||
b = (2,3)
|
||||
a,b = (1,2)
|
||||
a,b = ( (1,2), (3,4,5) )
|
||||
|
||||
x = {}
|
||||
try:
|
||||
x[1,2,3]
|
||||
except:
|
||||
pass
|
||||
|
||||
x[1,2,3] = 42
|
||||
print x[1,2,3]
|
||||
print x[(1,2,3)]
|
||||
assert x[(1,2,3)] == x[1,2,3]
|
||||
del x[1,2,3]
|
||||
|
||||
x=[1,2,3]
|
||||
b=(1 for i in x if i)
|
||||
b=(e for i in range(4) if i == 2)
|
@@ -1,22 +0,0 @@
|
||||
from __future__ import generators
|
||||
|
||||
def inorder(t):
|
||||
if t:
|
||||
for x in inorder(t.left):
|
||||
yield x
|
||||
yield t.label
|
||||
for x in inorder(t.right):
|
||||
yield x
|
||||
|
||||
def generate_ints(n):
|
||||
for i in range(n):
|
||||
yield i*2
|
||||
|
||||
for i in generate_ints(5):
|
||||
print i,
|
||||
print
|
||||
gen = generate_ints(3)
|
||||
print gen.next(),
|
||||
print gen.next(),
|
||||
print gen.next(),
|
||||
print gen.next()
|
BIN
test/bytecode_2.6/00_assign.pyc
Normal file
BIN
test/bytecode_2.6/00_assign.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/00_import.pyc
Normal file
BIN
test/bytecode_2.6/00_import.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/00_pass.pyc
Normal file
BIN
test/bytecode_2.6/00_pass.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/01_class.pyc
Normal file
BIN
test/bytecode_2.6/01_class.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/01_list_comprehension.pyc
Normal file
BIN
test/bytecode_2.6/01_list_comprehension.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/01_positional.pyc
Normal file
BIN
test/bytecode_2.6/01_positional.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/01_try_except.pyc
Normal file
BIN
test/bytecode_2.6/01_try_except.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/02_def.pyc
Normal file
BIN
test/bytecode_2.6/02_def.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/02_slice.pyc
Normal file
BIN
test/bytecode_2.6/02_slice.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/05_if.pyc
Normal file
BIN
test/bytecode_2.6/05_if.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/05_ifelse.pyc
Normal file
BIN
test/bytecode_2.6/05_ifelse.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/05_try_except.pyc
Normal file
BIN
test/bytecode_2.6/05_try_except.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/10_class.pyc
Normal file
BIN
test/bytecode_2.6/10_class.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/10_for.pyc
Normal file
BIN
test/bytecode_2.6/10_for.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/10_keyword.pyc
Normal file
BIN
test/bytecode_2.6/10_keyword.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/10_mixed_boolean.pyc
Normal file
BIN
test/bytecode_2.6/10_mixed_boolean.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/10_while.pyc
Normal file
BIN
test/bytecode_2.6/10_while.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/15_assert.pyc
Normal file
BIN
test/bytecode_2.6/15_assert.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/15_for_if.pyc
Normal file
BIN
test/bytecode_2.6/15_for_if.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/20_try_except.pyc
Normal file
BIN
test/bytecode_2.6/20_try_except.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_2.6/25_try_except.pyc
Normal file
BIN
test/bytecode_2.6/25_try_except.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
test/bytecode_3.2/00_assign.pyc
Normal file
BIN
test/bytecode_3.2/00_assign.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.2/00_import.pyc
Normal file
BIN
test/bytecode_3.2/00_import.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.2/00_pass.pyc
Normal file
BIN
test/bytecode_3.2/00_pass.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.2/01_boolean.pyc
Normal file
BIN
test/bytecode_3.2/01_boolean.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.2/01_list_comprehension.pyc
Normal file
BIN
test/bytecode_3.2/01_list_comprehension.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.2/01_positional.pyc
Normal file
BIN
test/bytecode_3.2/01_positional.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.2/01_try_except.pyc
Normal file
BIN
test/bytecode_3.2/01_try_except.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.2/02_def.pyc
Normal file
BIN
test/bytecode_3.2/02_def.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.2/02_slice.pyc
Normal file
BIN
test/bytecode_3.2/02_slice.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.2/05_if.pyc
Normal file
BIN
test/bytecode_3.2/05_if.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.2/05_ifelse.pyc
Normal file
BIN
test/bytecode_3.2/05_ifelse.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.2/05_list_comprehension.pyc
Normal file
BIN
test/bytecode_3.2/05_list_comprehension.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.2/10_for.pyc
Normal file
BIN
test/bytecode_3.2/10_for.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.2/10_keyword.pyc
Normal file
BIN
test/bytecode_3.2/10_keyword.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.2/10_while.pyc
Normal file
BIN
test/bytecode_3.2/10_while.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.2/15_assert.pyc
Normal file
BIN
test/bytecode_3.2/15_assert.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.2/15_for_if.pyc
Normal file
BIN
test/bytecode_3.2/15_for_if.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user