diff --git a/.circleci/config.yml b/.circleci/config.yml index f05ee99b..84edb951 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -43,9 +43,9 @@ jobs: - run: command: | # Use pip to install dependengcies sudo pip install --user --upgrade setuptools - # Until the next release - sudo pip install git+https://github.com/rocky/python-xdis#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 diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index 38eac9b0..ad8ba5da 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -22,9 +22,9 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - # Until the next xdis release - pip install git+https://github.com/rocky/python-xdis#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: | diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index bfabdfee..8415d348 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -21,9 +21,8 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - # Until the next xdis release - pip install git+https://github.com/rocky/python-xdis#egg=xdis pip install -e . + # pip install click spark-parser xdis pip install -r requirements-dev.txt - name: Test uncompyle6 run: | diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 34d1ea55..176e4ca0 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -22,9 +22,9 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - # Until the next xdis release - pip install git+https://github.com/rocky/python-xdis#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: | diff --git a/NEWS.md b/NEWS.md index 887a597c..853dd00c 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,23 @@ +3.9.1: 2024-05-15 +================= + +Lots of changes major changes. track xdis API has changes. + +Separate Phases more clearly: +* disassembly +* tokenization +* parsing +* abstracting to AST (more is done in newer projects) +* printing + +Although we do not decompile bytecode greater than 3.8, code supports running from up to 3.12. + +Many bugs fixed. + +A lot of Linting and coding style modernization. + +Work done in preparation for Blackhat Asia 2024 + 3.9.0: 2022-12-22 ================= diff --git a/__pkginfo__.py b/__pkginfo__.py index 98fa63d5..2f220105 100644 --- a/__pkginfo__.py +++ b/__pkginfo__.py @@ -62,6 +62,8 @@ classifiers = [ "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Debuggers", "Topic :: Software Development :: Libraries :: Python Modules", diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..d78c173e --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,64 @@ +[build-system] +requires = [ + "setuptools>=61.2", +] + +build-backend = "setuptools.build_meta" + +[project] +authors = [ + {name = "Rocky Bernstein", email = "rb@dustyfeet.com"}, +] + +name = "uncompyle6" +description = "Python cross-version byte-code library and disassembler" +dependencies = [ + "click", + "spark-parser >= 1.8.9, < 1.9.0", + "xdis >= 6.0.8, < 6.2.0", +] +readme = "README.rst" +license = {text = "GPL"} +keywords = ["Python bytecode", "bytecode", "disassembler"] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python", + "Topic :: Software Development :: Libraries :: Python Modules", + "Programming Language :: Python :: 2.4", + "Programming Language :: Python :: 2.5", + "Programming Language :: Python :: 2.6", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3.0", + "Programming Language :: Python :: 3.1", + "Programming Language :: Python :: 3.2", + "Programming Language :: Python :: 3.3", + "Programming Language :: Python :: 3.4", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", +] +dynamic = ["version"] + +[project.urls] +Homepage = "https://github.com/rocky/python-uncompyle6" +Downloads = "https://github.com/rocky/python-uncompyle6/releases" + +[project.optional-dependencies] +dev = [ + "pre-commit", + "pytest", +] + +[project.scripts] +uncompyle6 = "uncompyle6.bin.uncompile:main_bin" +uncompyle6-tokenize = "uncompyle6.bin.pydisassemble:main" + +[tool.setuptools.dynamic] +version = {attr = "uncompyle6.version.__version__"} diff --git a/setup.py b/setup.py index 515ee367..2ff64d0f 100755 --- a/setup.py +++ b/setup.py @@ -1,61 +1,6 @@ #!/usr/bin/env python -import setuptools -import sys +"""Setup script for the 'xdis' distribution.""" -"""Setup script for the 'uncompyle6' distribution.""" +from setuptools import setup -SYS_VERSION = sys.version_info[0:2] -if not ((2, 4) <= SYS_VERSION < (3, 13)): - mess = "Python Release 2.6 .. 3.12 are supported in this code branch." - if (2, 4) <= SYS_VERSION <= (2, 7): - mess += ( - "\nFor your Python, version %s, use the python-2.4 code/branch." - % sys.version[0:3] - ) - if (3, 3) <= SYS_VERSION < (3, 6): - mess += ( - "\nFor your Python, version %s, use the python-3.3-to-3.5 code/branch." - % sys.version[0:3] - ) - elif SYS_VERSION < (2, 4): - mess += ( - "\nThis package is not supported for Python version %s." % sys.version[0:3] - ) - print(mess) - raise Exception(mess) - -from __pkginfo__ import ( - author, - author_email, - install_requires, - license, - long_description, - classifiers, - entry_points, - modname, - py_modules, - short_desc, - __version__, - web, - zip_safe, -) - -setuptools.setup( - author=author, - author_email=author_email, - classifiers=classifiers, - description=short_desc, - entry_points=entry_points, - install_requires=install_requires, - license=license, - long_description=long_description, - long_description_content_type="text/x-rst", - name=modname, - packages=setuptools.find_packages(), - py_modules=py_modules, - test_suite="nose.collector", - url=web, - tests_require=["nose>=1.0"], - version=__version__, - zip_safe=zip_safe, -) +setup(packages=["uncompyle6"]) diff --git a/uncompyle6/version.py b/uncompyle6/version.py index 03e22cc7..669350ed 100644 --- a/uncompyle6/version.py +++ b/uncompyle6/version.py @@ -14,4 +14,4 @@ # This file is suitable for sourcing inside POSIX shell as # well as importing into Python # fmt: off -__version__="3.9.1.dev0" # noqa +__version__="3.9.1" # noqa