Skip to main content

A thin wrapper to distribute https://github.com/cli/cli 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.

gh_bin-2.63.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (11.9 MB view details)

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

gh_bin-2.63.0-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl (12.9 MB view details)

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

gh_bin-2.63.0-py3-none-macosx_11_0_arm64.whl (12.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

gh_bin-2.63.0-py3-none-macosx_10_9_x86_64.whl (13.4 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

Details for the file gh_bin-2.63.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for gh_bin-2.63.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 6bb3fd7041742bfca3876b310f9c79479b7d1ee49b7e3d780c808ad3116fba4d
MD5 d0b23cb451fd8bca5a61f19b85c85d44
BLAKE2b-256 ee32c1dffcc9dd23fb2f1d3a38e58a0ab7593c05a64d3e3299d04e331c83c2f4

See more details on using hashes here.

File details

Details for the file gh_bin-2.63.0-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for gh_bin-2.63.0-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 12ecce6608545296dc8b5e5f3e0110a08a9f326ffa485846623456a80e81a2c9
MD5 a84fd52dfb9981b86d3b089318f4dfd0
BLAKE2b-256 16fab2f555a6eb41829d1ed132af6842beee4fc2e38b80b0afbbf549f9b7d3a5

See more details on using hashes here.

File details

Details for the file gh_bin-2.63.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gh_bin-2.63.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8bde29f431a073e91a02d1c838c0d7ee4850027b5d6a922d6087b4b681e57490
MD5 6b3746f0c09e52a2edf90bfedd41a59c
BLAKE2b-256 ec856b3cfc0d129029ac582f5382d3cf7171ee27939c7fc7fc2e66b4dac34324

See more details on using hashes here.

File details

Details for the file gh_bin-2.63.0-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for gh_bin-2.63.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d39233601a2123b230a03904b5474a1982b6357b9bc2a0079e33f384abd10568
MD5 3cea68e233bd06afb654c6603987d421
BLAKE2b-256 7d724d4a1d930b14e1f79f6f2104f1a318446faf3b85dbf45172338bfd88af3f

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