This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 0.0.14 instead.
Reason given by maintainers: Produces Axle wheels that break on 3.9 and below.
Wheel Axle - Python Wheel enhancement library
Problem
- Python wheel does not support symlinks.
- Python wheel does not support overwriting in a convenient way:
- whether the distribution is pure-Python
- distribution ABI tag
- extend Python tag override capability
Solution
WARNING: THIS IS EXPERIMENTAL BETA SOFTWARE. THERE ARE NO WARRANTIES OF ANY KIND. USE AT YOUR OWN RISK. ADDITIONAL INCLUDED DISCLAIMERS ALSO APPLY.
Wheel-Axle (axle, bdist_axle) is a drop-in replacement/augmentation utility for wheel (bdist_wheel)
that extends and builds spec-compliant wheels.
During the build, axle is able to capture and record in the Python wheel the symlinks in the following
schema paths (locations):
- purelib
- platlib
- scripts
- headers
- data
Additionally, Axle is able to customize the Python wheel tags via additional command line options.
While the generated Python wheel is fully spec-compliant, additional symlink functionality is not possible without its
companion library Wheel Axle Runtime. Thus, every Python wheel
generated by the bdist_axle automatically becomes dependent on wheel-axle-runtime that provides
post-install logic required.
Implementation
The body of the library is as ugly and messy as distutils/setuptools are, and consists of, mainly, in
hacking/overwriting various setuptools commands to detect, handle and record symlinks and their targets. Once that
problem is solved, the list of symlinks is recorded in the .dist-info/symlinks.txt
in the following CSV format:
- symlink name
- symlink target
- a boolean (0 or 1) flag indicating whether the target is a directory
NOTE: Symlinks may be relative, absolute and/or broken. Symlink targets are recorded verbatim (even when broken) and are NOT otherwise interpreted. THIS IS INTENTIONAL. Please see Wheel Axle Runtime Security Notice for additional information.
Two special startup files are also added to the distribution, and whichever one the running interpreter honors triggers the post-install logic via wheel-axle-runtime:
<distribution name and version>.pth, whoseimportlinesiteexecutes up to Python 3.17<distribution name and version>.start, a PEP 829 startup entry point file honored from Python 3.15 on, whose mere presence also suppresses theimportline of the matching.pth
NOTE: wheels built by bdist_axle before 0.0.13 only carry the .pth file, and its import line relies on a
site implementation detail that Python 3.15 removed. Those wheels fail to install their symlinks on Python 3.15 and
have to be rebuilt with bdist_axle 0.0.13 or later. Please see the
Wheel Axle Runtime compatibility notes for details.
Usage
python setup.py bdist_wheel <arguments> can be replaced with python setup.py bdist_axle <arguments>. The replacement
is drop-in.
Additional functionality is available via the following options:
--python-tag Python implementation compatibility tag (default: 'py3')
--root-is-pure set to manually override whether the wheel is
pure (default: None)
--abi-tag set to override ABI tag (default: None)
--require-libpython set to indicate the package requires libpython in the
exec_prefix/platlib
Using --python-tag, --root-is-pure and --abi-tag allows you to create wheels that carry platform-dependent data
while otherwise containing pure-Python libraries.
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 wheel_axle-0.0.13.tar.gz.
File metadata
- Download URL: wheel_axle-0.0.13.tar.gz
- Upload date:
- Size: 15.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0cda7e27a87cdb124f9ac54d2790288aa9e90c30374ad82e300681dc8ec71984
|
|
| MD5 |
a42a1ce7862f06f938e4d68ac11fa312
|
|
| BLAKE2b-256 |
f6b2919285ede64ae0af8443e28fc06a883794ded98314b335aed493b10b2e10
|
File details
Details for the file wheel_axle-0.0.13-py3-none-any.whl.
File metadata
- Download URL: wheel_axle-0.0.13-py3-none-any.whl
- Upload date:
- Size: 10.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7260c97978579fd08d4da8789403f6e16a87fc842ad2c8bc0a659186b04d5bdd
|
|
| MD5 |
c7f233fbfe4b05a4b93ec371a20b6466
|
|
| BLAKE2b-256 |
cff1d10f281704b46afaab2d6b4983e49c9810ad4c9836fcb0fca13eeea01b42
|