Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
375 commits
Select commit Hold shift + click to select a range
982abe0
Merge pull request #430 from rocky/sync-with-decompyle3
rocky Jan 19, 2023
18b5934
Allow xdis 6.1.0
rocky Feb 27, 2023
a20972d
xdis PYTHON_VERSION removal
rocky Feb 27, 2023
82963cd
Preserve docstring in closures..
rocky Mar 25, 2023
f76c35c
Slightly nicer docstring detection for closure
rocky Mar 25, 2023
7f3c1fa
Tentative fix for issue #437. I added a new set of rules in ifelsestm…
andrem-eberle Apr 8, 2023
cd00499
Merge pull request #440 from andrem-eberle/master
rocky Apr 9, 2023
551e428
Go over stdlib test for 2.{6,7}
rocky Apr 9, 2023
ad00b9a
Use xdis pattr extraction for LOAD_NAME
rocky Apr 15, 2023
b6aa587
Merge pull request #446 from rocky/do-not-quote-non-str-args
rocky Apr 16, 2023
7ad0c37
Correct a couple of bugs...
rocky Apr 17, 2023
3d5e220
Merge pull request #449 from rocky/correct-aboslute-import-and-docstring
rocky Apr 17, 2023
3314c0d
Fix to the ADD_VALUE_x opcodes
andrem-eberle Apr 17, 2023
d1ef91d
Added tests for issue #439, global/const issues
andrem-eberle Apr 17, 2023
4d420e2
Typo in comments
andrem-eberle Apr 17, 2023
2f650a6
Merge pull request #451 from andrem-eberle/master
rocky Apr 17, 2023
9746b21
Update 2.7 literal test
rocky Apr 18, 2023
22373b4
Update 2.5 stdlib excludes
rocky Apr 18, 2023
5477627
Modified n_actions.py to issue __repr__ on py2 and __str__ py3, shoul…
andrem-eberle Apr 18, 2023
6f3fe06
Merge pull request #452 from andrem-eberle/master
rocky Apr 19, 2023
c01ab5e
Tweaks to long-literal handling...
rocky Apr 19, 2023
286bb59
Go over bug-report template
rocky May 1, 2023
ebcc12e
Misc lint things
rocky May 29, 2023
41d26bd
Lint some files
rocky May 29, 2023
b008646
Exit when version is not supported
rocky Jun 16, 2023
36f00d3
Revert last change.
rocky Jun 16, 2023
568b64b
Allow decompilation of older bytecode from 3.9+
rocky Jun 16, 2023
828b1c9
Fix fragment bugs
rocky Jun 29, 2023
4b296e1
Correct generator function parsing for 3.3..3.5
rocky Jun 30, 2023
3f21b2a
Update build to large resource class in config.yml
rocky Jun 30, 2023
1c28bc1
Update Python version and exdis version
rocky Jun 30, 2023
120b66b
Try Python 3.8 as base image
rocky Jun 30, 2023
dc286b9
pip woes
rocky Jun 30, 2023
d660871
correct fn name on older 3.x cross decompile...
rocky Jul 1, 2023
99f054e
Forgot to include 3.3 in recent generator fix
rocky Jul 2, 2023
227f494
Double -a option show asm before tokenization
rocky Jul 4, 2023
3a8f3e5
Include xdis version in bug report
rocky Jul 5, 2023
ea76de0
Tweak bug-report
rocky Jul 7, 2023
843e358
chained-compare1 -> chained-compare-middle
rocky Jul 29, 2023
ddeb5af
compare_chained2 _> compare_chained_right
rocky Jul 29, 2023
2ff80c0
Merge pull request #465 from rocky/chained-compare-rename
rocky Jul 29, 2023
3a17883
Fix a small default-value bug
rocky Jul 29, 2023
8865599
Fixes #467
rocky Aug 9, 2023
48a0a41
Merge pull request #468 from rocky/ifstmt-reduce-check-bug
rocky Aug 9, 2023
20af515
Handle comprehensions inside a lambda
rocky Aug 11, 2023
9a14d2d
Merge pull request #470 from rocky/comprehension-in-lambda-parsing-bug
rocky Aug 12, 2023
b3ddf95
comprehension in lambda for 3.0 & 3.1
rocky Aug 12, 2023
c0957d9
Simpilfy grammar via ending_return
rocky Aug 13, 2023
c58e6ef
Merge pull request #471 from rocky/add-ending_return
rocky Aug 13, 2023
9829e04
Bug in collection printing ...
rocky Aug 17, 2023
20c58e2
Small semantic action acceptance change
rocky Aug 26, 2023
803678e
Track recent xdis changes
rocky Aug 26, 2023
34ef913
Revise to not zip attachment expected
rocky Sep 3, 2023
0c18d35
Bump python master version default
rocky Sep 30, 2023
0ea75ca
Small bit of linting
rocky Oct 6, 2023
77d7275
Note -F -extended in pydisasm
rocky Oct 10, 2023
e9120ea
Update HOW-TO-REPORT-A-BUG.md
rocky Oct 14, 2023
dcc9d1a
Fix spelling via "codespell"
rocky Dec 17, 2023
7a2348e
Fix typos
jwilk Jan 19, 2024
6752069
Merge pull request #480 from jwilk-forks/spelling
rocky Jan 19, 2024
d249c52
Fix up linemap option
rocky Feb 3, 2024
9839cfe
Add pre-commit hook
rocky Feb 3, 2024
db6c715
lint
rocky Feb 3, 2024
5f29d14
Fix --linemap option, yet again.
rocky Feb 3, 2024
f7caf9b
Remove strayh blank line
rocky Feb 3, 2024
9772454
Sync fragments with decompyle3
rocky Feb 3, 2024
9f9074c
Add a type annotation
rocky Feb 3, 2024
e65a2db
Small tweak
rocky Feb 3, 2024
42ed183
Fix imports
rocky Feb 4, 2024
f7436a4
More lint
rocky Feb 5, 2024
86e22bb
One more
rocky Feb 5, 2024
33bc80b
f-string convert a file
rocky Feb 5, 2024
f605f85
Partial sync with decompyle3
rocky Feb 5, 2024
6110584
Sync with decompyle3
rocky Feb 5, 2024
d7a1d5b
Merge pull request #482 from rocky/sync-with-decompile3
rocky Feb 5, 2024
dd8ee14
Redo uncompyel6 options ...
rocky Feb 10, 2024
5d8c403
showtree workaround until we have better sync..
rocky Feb 10, 2024
c8b92e2
Add needed newline separating abstract tree
rocky Feb 11, 2024
f1bf860
Sync with decompyle3
rocky Feb 11, 2024
147155e
Administrivia:
rocky Feb 11, 2024
454fac4
Handle 3.3 MAKE_FUNCTION annotation args properly
rocky Feb 11, 2024
8348d86
Better annotation parsing for < 3.6
rocky Feb 12, 2024
2886d2b
Track important changes to xdis
rocky Feb 12, 2024
ca04ae9
Merge pull request #483 from rocky/xdis-fix-woes
rocky Feb 12, 2024
02ed25e
Bugs found in 3.0 decomplation...
rocky Feb 12, 2024
e73cd74
More administrivia -
rocky Feb 12, 2024
05ebaf9
More administrivia
rocky Feb 12, 2024
60ca6f4
More administrivia
rocky Feb 12, 2024
3ef4ab4
Prefer using double quote for strings
rocky Feb 17, 2024
f94100d
sync with decompile3
rocky Feb 17, 2024
9f9f6de
Administrivia
rocky Feb 17, 2024
0a08b8d
Simplify double quote preference in string
rocky Feb 18, 2024
8c3143c
Sync with decompyle3
rocky Feb 18, 2024
40c4764
prefer string double quote, yet again.
rocky Feb 18, 2024
3e00880
remove double-quote preference here....
rocky Feb 18, 2024
1ef631d
Track change in xdis Instruction ...
rocky Feb 19, 2024
5a36771
Merge hell
rocky Feb 24, 2024
6d4d3df
Administrivia
rocky Feb 24, 2024
27dfb95
Administrivia
rocky Feb 24, 2024
76039a2
Go over 2.6 excludes
rocky Feb 24, 2024
d2a1716
Remove messed-up show_tree call
rocky Feb 24, 2024
8a1fd7e
Keep optype info in token...
rocky Feb 24, 2024
9fd139a
changes from other branches
rocky Feb 24, 2024
4a50de3
sync with other versions
rocky Feb 24, 2024
2b8406e
mark "psuedo ops"
rocky Feb 25, 2024
d9ff583
Admnistrivia
rocky Feb 25, 2024
d3ed646
Make a pass over 3.2 stdlib exclusions
rocky Feb 25, 2024
08009f9
improve list comprehensions
rocky Feb 25, 2024
e3be411
Add pop return check from decompyle3
rocky Feb 25, 2024
830a2eb
Sync with decompyle3
rocky Mar 2, 2024
69c5d46
Add liberapay name
rocky Mar 2, 2024
c591f4e
Administrivia
rocky Mar 2, 2024
d2d4367
Add 3.3 bytecode testing..
rocky Mar 2, 2024
c499d0a
Fix in 3.3 subclass detection in class closures
rocky Mar 2, 2024
33f4984
Add some 3.3 and 3.4 stdlib tests back in
rocky Mar 2, 2024
f1169af
simplify withas (for now)
rocky Mar 6, 2024
b5c4e4b
Merge pull request #487 from rocky/withasstmt-no-parens
rocky Mar 6, 2024
8542df4
Add context manager test...
rocky Mar 7, 2024
3724e02
Merge pull request #488 from rocky/with-as-with-pass
rocky Mar 7, 2024
156188f
withasstmt -> with_as
rocky Mar 8, 2024
e6ff603
Merge pull request #489 from rocky/withasstmt-to-with_as
rocky Mar 8, 2024
628b18f
rename assembly phases and tweak a err msg...
rocky Mar 14, 2024
bf59e3c
Small variable name fix
rocky Mar 14, 2024
daf54d2
2.6 scanner show -A headers now
rocky Mar 14, 2024
b88af23
Mis spelling corrections
rocky Mar 14, 2024
bec88e4
Name phases "disassembly" and "tokenization"
rocky Mar 14, 2024
29edaae
Get ready for release 3.9.1
rocky Mar 16, 2024
b6b76d9
Keep pre-toml setup around for a little while
rocky Mar 16, 2024
3b1d5bd
Correct name in docstring
rocky Mar 18, 2024
458d472
Properly escape strings.
rocky Mar 25, 2024
39b4b83
Small set literal change
rocky May 7, 2024
6f2a837
Better sorting of TABLE_DIRECT keys
rocky May 30, 2024
0b9a3c6
Remove workflows 3.7 CI testing
rocky May 30, 2024
404c46c
Better const key sorting
rocky Jun 3, 2024
acdf777
Sync with decompile3
rocky Jun 3, 2024
51141ad
Use set literals
rocky Jun 3, 2024
3c6e378
Spelling corrections
rocky Jul 10, 2024
b0b67e9
Fix some 2.6 bytecode bugs
rocky Jul 11, 2024
6fe8a1d
Address long-standing Python 2.6 try/except bug
rocky Jul 11, 2024
b10dd0e
2.6 bug appears in 2.4 and 2.5
rocky Jul 11, 2024
4394d46
Remove redundant list_comp() fn
rocky Jul 12, 2024
be82523
2.6 custom tryelse code is no longer needed?
rocky Jul 12, 2024
9450165
Add if/then rule to assist 2.5 parsing
rocky Jul 12, 2024
f030b33
Fix some 2.5 parsing bugs
rocky Jul 12, 2024
9d150e0
Update copyright
rocky Jul 12, 2024
a42bef1
Remove a false negative test for try/except in 25
rocky Jul 12, 2024
efbd657
Update readmes
rocky Jul 12, 2024
cb2b90a
Python 2.5 try/except reduce fix
rocky Jul 12, 2024
ad621ef
Merge
rocky Jul 12, 2024
14993d0
Add one more docstring
rocky Jul 12, 2024
703716c
Pick up recewnt try/except change from 2.5
rocky Jul 12, 2024
b28f305
Expand grammar check for ifelse continue for 2.7
rocky Jul 13, 2024
d0dc879
Note that we can now use xdis a little more
rocky Jul 13, 2024
0627215
BUILD_MAP is different pre 3.5
rocky Jul 13, 2024
e357946
Loosen what is allowed in whilestmt38...
rocky Jul 13, 2024
7787166
Add grammar rule involving RETURN_END_IF
rocky Jul 13, 2024
389fc23
3.6 bug related to large whilestmt
rocky Jul 14, 2024
04da2fb
Improve 3.4 ifelse inside a lambda
rocky Jul 14, 2024
d731d32
Simplify BREAK_LOOP detection...
rocky Jul 14, 2024
81922bd
Handle long dict litereals in 3.4- better...
rocky Jul 15, 2024
915ff5e
Remove pre 3.5 BUILD_MAP customiztion...
rocky Jul 15, 2024
25675f2
Sync fragments with pysource (a little bit)
rocky Jul 18, 2024
ce690f3
Lint initialization
rocky Jul 18, 2024
aced47a
Sync with 2.4 branch
rocky Jul 20, 2024
5580b2b
Bump min xdis version
rocky Jul 21, 2024
1a3f2b8
Misc lint
rocky Jul 21, 2024
b0dd7f5
Lint
rocky Jul 21, 2024
f9b20f6
Get ready for release 3.9.2
rocky Jul 21, 2024
e6ddaab
Adminstiriva: bump to dev0 version
rocky Jul 22, 2024
7dacd50
Administrivia
rocky Jul 22, 2024
f82caba
Administrivia
rocky Jul 22, 2024
a878a74
Fixes #501
rocky Aug 27, 2024
e6c63e4
Administrivia
rocky Aug 18, 2024
c309730
Note version of setuptools working on Python 3.6
rocky Sep 20, 2024
ff192ea
Administrivia
rocky Sep 21, 2024
710167b
Adminsitrivia
rocky Sep 21, 2024
80d58f8
Track branch changes in python-spark
rocky Oct 4, 2024
f603a44
Allow newer spark-parser
rocky Oct 7, 2024
4cd10b7
Convert docstring from bytes to str
gdesmar Oct 8, 2024
eb088a8
Accept newer python-spark
rocky Oct 8, 2024
f0e1a7b
Try unpinning setuptools
rocky Oct 8, 2024
193c262
Administrivia
rocky Oct 9, 2024
20d0a60
Remove duplicate code of print_docstring
gdesmar Oct 10, 2024
7db6a27
Adding tests for bytestring docstring
gdesmar Oct 16, 2024
27c869b
Merge pull request #502 from gdesmar/docstring_bytes
rocky Oct 17, 2024
9b38760
Administrivia
rocky Nov 9, 2024
ab79803
Allow for newer spark-parser
rocky Nov 9, 2024
37f38e4
Don't update global tables...
rocky Nov 9, 2024
cf34014
Use a single TABLE copy
gdesmar Nov 12, 2024
f4becb4
Merge pull request #505 from gdesmar/use_single_table_copy
rocky Nov 12, 2024
5c391f9
Update CircleCI
rocky Nov 12, 2024
2786cbc
Merge pull request #504 from rocky/TABLE_DIRECT-pollution
rocky Nov 12, 2024
9f91538
Bump spark_parser version allowed
rocky Nov 16, 2024
f4d21d3
Add BlackHat Asia 2024 and update CircleCI link
rocky Nov 19, 2024
addddf8
Correct getting code node on mkfunc
rocky Nov 26, 2024
4ac5564
Don't remove LOAD_CONST RETURN_VALUE when...
rocky Nov 28, 2024
74b39e2
Administriva
rocky Nov 28, 2024
e4e3743
Tweak when we delete LOAD_CONST RETURN_VALUE
rocky Nov 28, 2024
f72b2c1
Fix when parsing NOP
c10udlnk Nov 29, 2024
efd2871
Add NOP test cases
c10udlnk Dec 1, 2024
5e6fad2
Merge pull request #507 from c10udlnk/master
rocky Dec 1, 2024
b2cf041
Remove unused import
rocky Dec 3, 2024
7ca4363
Administrivia
rocky Dec 12, 2024
521c983
Administrivia
rocky Dec 21, 2024
2ba8bf1
Change copyright year to 2018
willschlitzer Jun 8, 2025
3b982d4
Fix typo for function docstring
willschlitzer Jun 8, 2025
9067d50
Merge pull request #515 from willschlitzer/typo-fix-codefns
rocky Jun 8, 2025
5e819f5
Merge pull request #514 from willschlitzer/copyright-date-fix
rocky Jun 8, 2025
ccc12ea
Add BlackHat Asia 2024 link
rocky Jul 9, 2025
1fb05c2
Update README.rst
rocky Jul 9, 2025
e85eabc
Remove setuptools pin
rocky Jul 29, 2025
3ce8b99
Python 3.13 packaging
rocky Sep 9, 2025
8755233
Use modern importlib to get modules
rocky Sep 10, 2025
1ce96f2
Modernize
rocky Sep 10, 2025
d855d66
Merge pull request #518 from rocky/python-3.12-woes
rocky Sep 10, 2025
b1c27ee
Misc lint
rocky Sep 10, 2025
784c2ec
Trap one more exception
rocky Sep 10, 2025
e847eb1
Track unsupported python better
rocky Sep 11, 2025
b24a0f3
Remove duplicate --version option
rocky Sep 11, 2025
ed2c26a
Administrivia
rocky Sep 16, 2025
5878e30
Administrivia and Go over README.
rocky Sep 28, 2025
e0f1cf4
Update README.rst
rocky Sep 28, 2025
8a81771
Update NEW_FEATURES.rst
rocky Sep 28, 2025
7b4e724
Python packaging is the pits
rocky Sep 28, 2025
894e97a
Get ready for release 3.9.3
rocky Sep 28, 2025
ec8e45b
Update HOW-TO-REPORT-A-BUG.md
rocky Sep 29, 2025
78eeca4
Update bug-report.md, NEWS and dist files
rocky Sep 29, 2025
8ab7dae
Administrivia - use 3.13 in master
rocky Oct 1, 2025
4afd32c
Packaging administrivia
rocky Oct 1, 2025
8da5a16
Bump version
rocky Oct 1, 2025
497ab20
More administrivia
rocky Oct 1, 2025
3154dd5
Revise README.rst to mention Git branches for install.
rocky Oct 6, 2025
c538fd3
Update README.rst
rocky Oct 6, 2025
54a568c
More README.rst tweaks.
rocky Oct 6, 2025
29ca159
Update README.rst
rocky Oct 6, 2025
985b4cd
Update README.rst
rocky Oct 6, 2025
64e0148
Update README.rst
rocky Oct 6, 2025
b4ce14c
Add setup file just to check Python used to install.
rocky Oct 7, 2025
9210044
More README.rst changes
rocky Oct 7, 2025
4489c22
Go over workflows and Circle CI
rocky Oct 7, 2025
94ca614
Address Workflows CI on master branch
rocky Oct 7, 2025
6237282
Track chaning xdis api
rocky Nov 9, 2025
46a7a30
CI: need to use xdis from github
rocky Nov 15, 2025
2302298
Revise for newer xdis API
rocky Nov 17, 2025
9a20d02
Allow -help and -h options on uncompyle6
rocky Nov 18, 2025
0534c56
Use optype more.
rocky Nov 25, 2025
b621b01
Merge pull request #523 from rocky/fill-in-optypes
rocky Nov 28, 2025
3d53b64
Administrivia: update pre-commit
rocky Jan 10, 2026
6ec063c
Revise for newer xdis API
rocky Jan 10, 2026
903316e
Sync pre-commit hooks
rocky Feb 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 59 additions & 53 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,60 +16,66 @@ jobs:
# To see the list of pre-built images that CircleCI provides for most common languages see
# https://circleci.com/docs/2.0/circleci-images/
docker:
- image: circleci/python:3.6.9
- image: cimg/python:3.13
steps:
# Machine Setup
# If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each
# The following `checkout` command checks out your code to your working directory. In 1.0 we did this implicitly. In 2.0 you can choose where in the course of a job your code should be checked out.
- checkout
# Prepare for artifact and test results collection equivalent to how it was done on 1.0.
# In many cases you can simplify this from what is generated here.
# 'See docs on artifact collection here https://circleci.com/docs/2.0/artifacts/'
- run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS
# This is based on your 1.0 configuration file or project settings
- run:
working_directory: ~/rocky/python-uncompyle6
command: pip install --user virtualenv && pip install --user nose && pip install --user pep8
# Dependencies
# This would typically go in either a build or a build-and-test job when using workflows
# Restore the dependency cache
- restore_cache:
keys:
- v2-dependencies-{{ .Branch }}-
# fallback to using the latest cache if no exact match is found
- v2-dependencies-
# Machine Setup
# If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each
# The following `checkout` command checks out your code to your working directory. In 1.0 we did this implicitly. In 2.0 you can choose where in the course of a job your code should be checked out.
- checkout
# Prepare for artifact and test results collection equivalent to how it was done on 1.0.
# In many cases you can simplify this from what is generated here.
# 'See docs on artifact collection here https://circleci.com/docs/2.0/artifacts/'
- run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS
# This is based on your 1.0 configuration file or project settings
- run:
working_directory: ~/rocky/python-uncompyle6
command: pip install --user virtualenv && pip install --user nose && pip install
--user pep8
# Dependencies
# This would typically go in either a build or a build-and-test job when using workflows
# Restore the dependency cache
- restore_cache:
keys:
- v2-dependencies-{{ .Branch }}-
# fallback to using the latest cache if no exact match is found
- v2-dependencies-

- run:
command: | # Use pip to install dependengcies
pip install --user --upgrade setuptools
pip install --user -e .
pip install --user -r requirements-dev.txt
- run:
command: | # Use pip to install dependengcies
# pip install --user --upgrade setuptools
pip install --user -e git+https://github.com/rocky/python-xdis.git#egg=xdis
pip install --user -e .
# Not sure why "pip install -e" doesn't work above
# pip install click spark-parser xdis
pip install --user -r requirements-dev.txt

# Save dependency cache
- save_cache:
key: v2-dependencies-{{ .Branch }}-{{ epoch }}
paths:
# This is a broad list of cache paths to include many possible development environments
# You can probably delete some of these entries
- vendor/bundle
- ~/virtualenvs
- ~/.m2
- ~/.ivy2
- ~/.bundle
- ~/.cache/bower
# Save dependency cache
- save_cache:
key: v2-dependencies-{{ .Branch }}-{{ epoch }}
paths:
# This is a broad list of cache paths to include many possible development environments
# You can probably delete some of these entries
- vendor/bundle
- ~/virtualenvs
- ~/.m2
- ~/.ivy2
- ~/.bundle
- ~/.cache/bower

# Test
# This would typically be a build job when using workflows, possibly combined with build
# This is based on your 1.0 configuration file or project settings
- run: sudo python ./setup.py develop && make check-3.6
- run: cd ./test/stdlib && bash ./runtests.sh 'test_[p-z]*.py'
# Teardown
# If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each
# Save test results
- store_test_results:
path: /tmp/circleci-test-results
# Save artifacts
- store_artifacts:
path: /tmp/circleci-artifacts
- store_artifacts:
path: /tmp/circleci-test-results
# Test
# This would typically be a build job when using workflows, possibly combined with build
# This is based on your 1.0 configuration file or project settings
- run: pip install -e . && make check-3.6
- run: cd ./test/stdlib && bash ./runtests.sh 'test_[p-z]*.py'
# Teardown
# If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each
# Save test results
- store_test_results:
path: /tmp/circleci-test-results
# Save artifacts
- store_artifacts:
path: /tmp/circleci-artifacts
- store_artifacts:
path: /tmp/circleci-test-results
# The resource_class feature allows configuring CPU and RAM resources for each job. Different resource classes are available for different executors. https://circleci.com/docs/2.0/configuration-reference/#resourceclass
resource_class: large
2 changes: 1 addition & 1 deletion .github/FUNDING.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
liberapay: rocky
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
61 changes: 36 additions & 25 deletions .github/ISSUE_TEMPLATE/bug-report.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,32 @@ about: Tell us about uncompyle6 bugs
---

<!-- __Note:__ If you are using this program to do something illegal - don't.
The issue may flagged to make it easier for those looking for illegal activity.
The issue may be flagged to make it easier for those seeking to report illegal activity.

Bugs are not for asking questions about a problem you
are trying to solve that involve the use of uncompyle6 along the way,
although I may be more tolerent of this if you sponsor the project.
If you are reporting a bug in decompilation, it will probably not be acted upon
unless it is narrowed to a small example. You may have to do some work to remove
extraneous code from the source example. Most bugs can be expressed in 30 lines of
code.

Also, the unless you are a sponsor of the project, it may take a
Issues are not for asking questions about a problem you are trying to solve that involves the use of uncompyle6 along the way, although I may be more tolerant of this if you sponsor the project.

Bugs are also not for general or novice help on how to install
this Python program and its dependencies in your environment, or in
the way you would like to have it set up, or how to interpret a Python
traceback, e.g., that winds up saying Python X.Y.Z is not supported.

For these kinds of things, you will save yourself time by asking instead on forums like StackOverflow or ChatGPT that are geared to helping people with such general or novice kinds of questions and tasks. And unless you are a sponsor of the project, if your question seems to be of this category, the issue may just be closed.

Also, unless you are a sponsor of the project, it may take a
while, maybe a week or so, before the bug report is noticed, let alone
acted upon.

To set expectations, some legitimate bugs can take years to fix, but
they eventually do get fixed.
To set expectations, some legitimate bugs can take years to fix, but most eventually do get fixed.

Funding the project was added to partially address the problem that there are
lots of people seeking help and reporting bugs, but few people who are
Funding the project was added to partially address the problem that there are lots of people seeking help and reporting bugs, but few people who are
willing or capable of providing help or fixing bugs.

Tasks or the kinds of things others can do but you can't do or don't
want to do yourself are typically the kind of thing that you pay
someone to do, especially when you are the primary beneficiary of the
Tasks or the kinds of things others can do, but you can't do or don't want to do yourself, are typically the kind of thing that you pay someone to do, especially when you are the primary beneficiary of the
work, or the task is complex, long, or tedious. If your code is over
30 lines long, it fits into this category.

Expand All @@ -39,37 +45,37 @@ Prerequisites/Caveats

* Make sure the bytecode you have can be disassembled with a
disassembler and produces valid results.
* Try to make the bytecode that exhibits a bug as small as possible.
* Don't put bytecode and corresponding source code on any service that
requires registration to download.
* When you open a bug report there is no privacy. If you need privacy, then
requires registration to download. Instead, attach it as a zip file.
* When you open a bug report, there is no privacy. If you need privacy, then
contact me by email and explain who you are and the need for privacy.
But be mindful that you may be asked to sponsor the project for the
personal and private help that you are requesting.
* If the legitimacy of the activity is deemed suspicous, I may flag it as suspicious,
making the issue even more easy to detect.
* If the legitimacy of the activity is deemed suspicious, I may flag it as suspicious,
making the issue even easier to detect.

Bug reports that violate the above may be discarded.

-->

## Description

<!-- Please add a clear and concise description of the bug. -->
<!-- Please add a clear and concise description of the bug. Try to narrow the problem down to the smallest that exhibits the bug.-->

## How to Reproduce

<!-- Please show both the *input* you gave and the
output you got in describing how to reproduce the bug:
<!-- Please show both the *input* you gave and the output you got in describing how to reproduce the bug.

or give a complete console log with input and output
Or give a complete console log with input and output

```console
$ uncompyle6 <command-line-options>
...
$
```

Provide links to the Python bytecode. For example you can create a
Attach a zip file to the Python bytecode or a
gist with the information. If you have the correct source code, you
can add that too.

Expand All @@ -78,8 +84,8 @@ can add that too.
## Output Given

<!--
Please include not just the error message but all output leading to the message which includes echoing input and messages up to the error.
For a command-line environment include command invocation and all the output produced.
Please include not just the error message, but all output leading to the message, which includes echoing input and messages up to the error.
For a command-line environment, include command invocation and all the output produced.

If this is too long, then try narrowing the problem to something short.
-->
Expand All @@ -96,8 +102,9 @@ If this is too long, then try narrowing the problem to something short.
Please modify for your setup

- Uncompyle6 version: output from `uncompyle6 --version` or `pip show uncompyle6`
- xdis version: output from `pydisasm --version` or or `pip show xdis`
- Python version for the version of Python the byte-compiled the file: `python -c "import sys; print(sys.version)"` where `python` is the correct CPython or PyPy binary.
- OS and Version: [e.g. Ubuntu bionic]
- OS and Version: [e.g., Ubuntu bionic]

-->

Expand All @@ -107,7 +114,11 @@ Please modify for your setup

## Priority

<!-- If this is blocking some important activity let us know what activity it blocks. -->
<!-- If this is important for a particular public good state it here.
If this is blocking some important activity, let us know what activity it blocks.

Otherwise, we'll assume this has the lowest priority in addressing.
-->

## Additional Context

Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
blank_issues_enabled: False
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/feature-request.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,14 @@ include same input and output. -->
<!-- Add any additional background for the
feature, for example: user scenarios, or the value of the feature. -->

## Priority

<!-- If this is important for a particular public good state that here.
If this is blocking some important activity let us know what activity it blocks.

Otherwise, we'll assume this has the lowest priority in addressing.
-->

## Tests
<!-- _This section is optional._

Expand Down
11 changes: 6 additions & 5 deletions .github/workflows/osx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,20 @@ jobs:
strategy:
matrix:
os: [macOS]
python-version: [3.6, 3.7, 3.8]
python-version: [3.13]
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
# Until the next xdis release
# pip install git+git://github.com/rocky/python-xdis.git#egg=xdis
pip install --local -e git+https://github.com/rocky/python-xdis.git#egg=xdis
pip install -e .
# Not sure why "pip install -e" doesn't work above
# pip install click spark-parser xdis
pip install -r requirements-dev.txt
- name: Test uncompyle6
run: |
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,19 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.6, 3.7, 3.8]
python-version: [3.13]
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
# Until the next xdis release
# pip install git+git://github.com/rocky/python-xdis.git#egg=xdis
pip install --local -e git+https://github.com/rocky/python-xdis.git#egg=xdis
pip install -e .
# pip install click spark-parser xdis
pip install -r requirements-dev.txt
- name: Test uncompyle6
run: |
Expand Down
13 changes: 7 additions & 6 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,24 @@ on:

jobs:
build:
runs-on: macos-latest
runs-on: windows-latest
strategy:
matrix:
os: [windows]
python-version: [3.6, 3.7, 3.8]
python-version: [3.13]
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
# Until the next xdis release
# pip install git+git://github.com/rocky/python-xdis.git#egg=xdis
pip install --local -e git+https://github.com/rocky/python-xdis.git#egg=xdis
pip install -e .
# Not sure why "pip install -e" doesn't work above
# pip install click spark-parser xdis
pip install -r requirements-dev.txt
- name: Test uncompyle6
run: |
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
*.pyo
*_dis
*~
.mypy_cache
/.cache
/.eggs
/.hypothesis
Expand All @@ -10,16 +11,19 @@
/.pytest_cache
/.python-version
/.tox
.mypy_cache
/.venv*
/ChangeLog-spell-corrected
/ChangeLog.orig
/README
/__pkginfo__.pyc
/dist
/how-to-make-a-release.txt
/nose-*.egg
/pycharm-venv
/tmp
/uncompyle6.egg-info
/unpyc
/venv
ChangeLog
__pycache__
build
Expand Down
11 changes: 11 additions & 0 deletions .isort.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[settings]
multi_line_output = 3
include_trailing_comma = True
force_grid_wrap = 0
use_parentheses = True
line_length = 88
known_crunch = cr, zz9d, zz9lib, pycrunch, silhouette
sections = FUTURE,STDLIB,THIRDPARTY,FIRSTPARTY,CRUNCH,LOCALFOLDER
default_section = THIRDPARTY
combine_as_imports = 1
profile = black
Loading