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.64.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.64.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.64.0-py3-none-macosx_11_0_arm64.whl (12.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

gh_bin-2.64.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.64.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for gh_bin-2.64.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 5aaaf9717fbb4fec2f82e0614d65cd3020f3e08b05279f94298594d1fda14d95
MD5 e25558c2d2bd684d6e193fec3262ff42
BLAKE2b-256 88a78893a5f3b7772a2e65c147e43ed17f2b40681b17aefbf7cdff988d0406e2

See more details on using hashes here.

File details

Details for the file gh_bin-2.64.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.64.0-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b4f75538be62b97f56f1835f18fe8dcda1810f0e24295afaa6e718de686be52c
MD5 abf022186e955ee795d8222c41df14d1
BLAKE2b-256 de10d5195e516973ef1c57a0d16d4ef48b5b00b38c1b297cb7afc489ceae8773

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gh_bin-2.64.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eb2f384c3af0452847338280b29f05b10ebc3b135117fdb771ee98d66d3d7a86
MD5 25d2e541700431485dc9217ffbefc817
BLAKE2b-256 43fbf17d1d3113caba7d943e9e3119cf96dd843a7f2cf6c72baec873641764c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gh_bin-2.64.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d472f8cbae26dfbf490e314da5e17982d5d5c2316da01d606eddced1d6159ddc
MD5 7a9def0bf1cd0459e3622f10f3a171c3
BLAKE2b-256 cf4aa8cb52afec22020909ebd8bc288d2f676199c5621ce66491e05eb020753d

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