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.71.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (12.3 MB view details)

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

gh_bin-2.71.2-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl (13.5 MB view details)

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

gh_bin-2.71.2-py3-none-macosx_11_0_arm64.whl (12.8 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

gh_bin-2.71.2-py3-none-macosx_10_9_x86_64.whl (13.9 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

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

File metadata

File hashes

Hashes for gh_bin-2.71.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 54adcbd2d5758f6825e2feb62b2dc310173b8a7efcdb38d48bd11adf5c12c8bc
MD5 85b5fa766080aa0202205ae486efc4bb
BLAKE2b-256 68f498c59803f92d38924401df82a59124705656f55256ff6441362dca960c23

See more details on using hashes here.

File details

Details for the file gh_bin-2.71.2-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.71.2-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 cb3007e85ae7ad45e471ba7f4058e4fcf837f7e13cdff1c51ca04dd23fed4f1b
MD5 79462c36e38f8519a1d85bb11e327d59
BLAKE2b-256 050976f421e969a4b7847bc643a3c45d6df289b105b4a870cc2d5a5783c3d9d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gh_bin-2.71.2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a0e69471a42a6baffd2e05ca6684a60b0d25bc6eb99dc99fcb1412a31a6d1f52
MD5 61b7427a9a20222aef7f346764a80321
BLAKE2b-256 e45754d375d92446442acd19ca40c6c3ef7b64922aee5c1fe464796a2b0f8540

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gh_bin-2.71.2-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b4afd919b5e62c5cac50b4602f6e259df882cd64b7e30b5393f691e2135c57b2
MD5 aa8e1e2c91d61f6724d491bff951fe7e
BLAKE2b-256 ec0ce6c491420bd300e4b336c799902a16ec81795ca075f3861ca89ddb1c0bc3

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