Skip to main content

A thin wrapper to distribute https://github.com/wagoodman/dive via pip.

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

dive_bin-0.13.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (3.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64musllinux: musl 1.1+ ARM64

dive_bin-0.13.0-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl (4.0 MB view details)

Uploaded Python 3manylinux: glibc 2.12+ x86-64musllinux: musl 1.1+ x86-64

dive_bin-0.13.0-py3-none-macosx_11_0_arm64.whl (3.8 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

dive_bin-0.13.0-py3-none-macosx_10_9_x86_64.whl (4.0 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

Details for the file dive_bin-0.13.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for dive_bin-0.13.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 07607993d73fa2bd60c576bc376cb2d7ce064978c0ad98e6890bb10adf62edaa
MD5 5d791bb5bbe2f25c8234802bd65598af
BLAKE2b-256 72eb6179ca24c19166f0828b8b585abb3d8a345b1a12f14090cfc502cbb2f5c6

See more details on using hashes here.

File details

Details for the file dive_bin-0.13.0-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for dive_bin-0.13.0-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d994a50b643974b12fbb202197392544aa0bb2597daa1d096c5f083afc0a2131
MD5 350a9d61df7a47fa561c1c5f68df8c80
BLAKE2b-256 adad8164f90aea9fdfa0a6a0f8777fb9a5addef0c8f27c8caacef402e23723da

See more details on using hashes here.

File details

Details for the file dive_bin-0.13.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dive_bin-0.13.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0ec3cf4439c8b7969d70437cd8dca38c3ca8f7026b31296fded1f65be59cbbb6
MD5 f95c00a882c803b612948b72f8695e23
BLAKE2b-256 9d3e767878ae0081d997462faa6dcd5c60a3b686fd2e1676ea901c3e73f2abcd

See more details on using hashes here.

File details

Details for the file dive_bin-0.13.0-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for dive_bin-0.13.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 74735de92d00a99a1d406c48fd76f4d0e851eeca5d7489783a9fa03a4b7ca3e6
MD5 5961f5127001348bff48e5fc374765af
BLAKE2b-256 d35af63750b7dd0369b39d39947cf2acf51d08cafe5075c1cf2ad5fabf117ed2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page