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

Uploaded Python 3macOS 11.0+ ARM64

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

File metadata

File hashes

Hashes for gh_bin-2.65.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 81cb5357ed85912bb30b36e8a5f3b7c8a66f2e726820256ccea4951d819db5dc
MD5 dfdc04c31cd93decacdff3f0b3491d88
BLAKE2b-256 01348be379b2a7a5f6fa391ab660fcc6edb70e7680ec165c08a66552f9fa4a26

See more details on using hashes here.

File details

Details for the file gh_bin-2.65.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.65.0-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 463c1cc9d8807c2ad85fe1c27f0db7303800914ef6af60a7b919243c8f68e667
MD5 06dfb0c434575c9740613118d7a6ed81
BLAKE2b-256 b341e3e039fd11c9107d5e734458735049458a189e4b06d57e38a3778e9ea0a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gh_bin-2.65.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2d94915f9e07d3c39794677f6b6139a0d8c705f20ec6e6535e12693a21f3cb8f
MD5 8a8330edaf4dc2e76ec891f6bc9227e4
BLAKE2b-256 3b15f601678115e3ac50a3c731677dc62b3dd02ac98d4e1d5dcdf478e91a174d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gh_bin-2.65.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 284312c8ffd0d607155b075bd06ec055a41307ad68758e17d45bdc897ac17038
MD5 7a708ad202e4a35ffae4d151deeb2da3
BLAKE2b-256 85e1f2c054f7a0d2f09fa3ba317dc538c61e0f463592f98dd2a8cd874194e85c

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