This release is a pre-release and may not be stable for production use.
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.
A special <distribution name and version>.pth file is also added to the distribution. When the wheel is installed
this .pth file triggers the post-install logic via
wheel-axle-runtime.
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.
Metadata
Release files for wheel-axle 0.0.13.dev20260320032900
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| wheel_axle-0.0.13.dev20260320032900.tar.gz | 14.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wheel_axle-0.0.13.dev20260320032900-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.9 kB
Release files / wheel_axle-0.0.13.dev20260320032900.tar.gz
| Download URL | wheel_axle-0.0.13.dev20260320032900.tar.gz |
|---|---|
| Size | 14.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b111276b6ace791f4f04ead19132096b9faad6778c1f6bdb0e413785fd3f70e9
|
|
BLAKE2b-256 checksum How to use checksums |
1efcc1985b983d8208cd4e1a736be04d9234948bbbdfc5ef194ee8f6c308229a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / wheel_axle-0.0.13.dev20260320032900-py3-none-any.whl
| Download URL | wheel_axle-0.0.13.dev20260320032900-py3-none-any.whl |
|---|---|
| Size | 9.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0973c0db7a0bb9f99ad24c1716ce687eddd95f6e0453c46595bf4a92f4bdd94f
|
|
BLAKE2b-256 checksum How to use checksums |
45b39de8447be73808cb5f6a18d0d9af30352d07976e0db5bdff2f62f9f557f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Security for wheel-axle 0.0.13.dev20260320032900
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.