pybin
This project was inspired by how Maturin packages rust binaries. The key observation is that in the wheel format, the distribution-1.0.data/scripts/ directory is copied to bin, which means we can leverage this to seamlessly copy binaries into a user's PATH.
Combined with Python's platform-specific wheels, this allows us to use pip as a "cross-platform package manager" for distributing single-binary CLI applications.
This is the list of tools bundled this way, which can be installed with pip install $TOOLNAME-bin.
Wheel Building Process
The core of the logic lies in the buildlib.py module.
- A mapping from download URL (often github releases) to pypi platform tag is required.
- For each platform:
- Download the release & extract the binary.
- Set file permissions and place into scripts directory within wheel archive.
- Create the METADATA and WHEEL files within wheel archive.
- Place wheel into
dist/folder.
- Once all wheels are constructed, the distribution is uploaded to PyPI.
CICD is configured to automatically recognize new PyPI releases by looking for a diff on the PYPI_VERSION. When this happens, a build-and-release cycle is performed for that release version.
Metadata
Release files for dive-bin 0.13.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| dive_bin-0.13.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64, Linux musl 1.1+ ARM64 | Details |
| dive_bin-0.13.1-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl | Python 3 | none | Linux glibc 2.12+ x86-64, Linux musl 1.1+ x86-64 | Details |
| dive_bin-0.13.1-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| dive_bin-0.13.1-py3-none-macosx_10_9_x86_64.whl | Python 3 | none | macOS 10.9+ x86-64 | Details |
Total release size: 15.4 MB
Release files / dive_bin-0.13.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
| Download URL | dive_bin-0.13.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | Linux glibc 2.17+ ARM64 Linux musl 1.1+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
d0233f89b5cdb9a6fe00f2ea5feff585424b8be445f7abaf0994e762fc428b9b
|
|
BLAKE2b-256 checksum How to use checksums |
cd3123b5bf2c1789fa01c0a56bdd9c379239446205c17eb58ffbac17b7634f36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.4
|
Release files / dive_bin-0.13.1-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl
| Download URL | dive_bin-0.13.1-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | Linux glibc 2.12+ x86-64 Linux musl 1.1+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
a107b3f217388e6235f0931c2b7fef52cabb9a2acea331952309106b61d3539e
|
|
BLAKE2b-256 checksum How to use checksums |
68d0e1ef4c6e4eb88cbdd3e76e8aeb05bc482bf3eedde6d2bbcecca6d4a079ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.4
|
Release files / dive_bin-0.13.1-py3-none-macosx_11_0_arm64.whl
| Download URL | dive_bin-0.13.1-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3e732dedc3d69020674f5dc57c4e063ec6ad5dabb7fdb316e911c15429aa959f
|
|
BLAKE2b-256 checksum How to use checksums |
99306192285b99709fc70a7daaa02c7dbe5549980ca361ff58520193aabd5fda
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.4
|
Release files / dive_bin-0.13.1-py3-none-macosx_10_9_x86_64.whl
| Download URL | dive_bin-0.13.1-py3-none-macosx_10_9_x86_64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | Python 3 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
38e936a7752d3218d230e9f8cdc33667adcc5102ed138d5f25aaa4d639309e32
|
|
BLAKE2b-256 checksum How to use checksums |
4701fe0daf569b96d09b2a9bd9c72508a510e4c50074f2c802633336241f90a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.4
|