Enhanced Python `compileall` module
Project description
compileall2 Python module
Copy of compileall module from CPython source code with some new features, namely:
- compatibility with Python >= 3.6 & PyPy 3
The following features were first implemented in this project and then included into the standard libraty of CPython.
-
default recursion limit is now "unlimited" (actually limited by
sys.getrecursionlimit()) -
-sand-pcommand line options for manipulation of the path baked into a compiled*.pycfile. -
the
-ocommand line option can be specified multiple times to compile for multiple optimization levels in one run -
the
-ecommand line option for ignoring symlinks pointing outside a specific directory -
the
--hardlink-dupescommand line option which creates hardlinks between.pycfiles with the same content
Installation
-
From PyPI via
pip install compileall2 -
In Fedora Linux, compileall2.py is a part of python-srpm-macros RPM package.
Usage
compileall2 can be executed as a Python module or directly.
Example usage:
# Create some script (this one raises an exception to show tracebacks)
$ echo "1 / 0" > test.py
# Compile it
$ compileall2 test.py
Compiling 'test.py'...
# Try to execute compiled version directly
$ python __pycache__/test.cpython-37.pyc
Traceback (most recent call last):
File "test.py", line 1, in <module>
1 / 0
ZeroDivisionError: division by zero
# Recompile it with changes path which will be visible in error message
$ compileall2 -f -p /foo/bar test.py
Compiling 'test.py'...
$ python __pycache__/test.cpython-37.pyc
Traceback (most recent call last):
File "/foo/bar/test.py", line 1, in <module>
ZeroDivisionError: division by zero
# Same thing as above but executed as a Python module
$ python -m compileall2 -f -p /bar/baz test.py
Compiling 'test.py'...
$ python __pycache__/test.cpython-37.pyc
Traceback (most recent call last):
File "/bar/baz/test.py", line 1, in <module>
ZeroDivisionError: division by zero
Testing
You can test it locally with tox or unittest directly:
$ python3 -m unittest test_compileall2.py
..............sss....ss.......................sss....ss.....................ss.............................----------------------------------------------------------------------
Ran 107 tests in 3.714s
OK (skipped=12)
but running in a container might be better because the superuser has privileges to write to sys.path which lowers the number of skipped tests.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file compileall2-0.8.0.tar.gz.
File metadata
- Download URL: compileall2-0.8.0.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c976d99ea6af04482c87b434f8b10ce21fccc7e95a8e63792c0895677f6f48e3
|
|
| MD5 |
28b1334827a5ba1368e748e84753484a
|
|
| BLAKE2b-256 |
20e5fdcf30add058a32eb12a9ae351f7aae0bfadb4bd1e313413f1c25c96e8ca
|
File details
Details for the file compileall2-0.8.0-py3-none-any.whl.
File metadata
- Download URL: compileall2-0.8.0-py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
730b7b02502ed196a3fb13d5db975af27b3437444c9ad9347c02947ca8c0aeb3
|
|
| MD5 |
c7cacd5207e37aaf5651b052ea290317
|
|
| BLAKE2b-256 |
11ebecff38add2e89a09bf51afa1407c270e311b71443af5e7ed7204331f9649
|