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

Uploaded Python 3macOS 11.0+ ARM64

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

File metadata

File hashes

Hashes for gh_bin-2.63.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 397845111a7e5a54d3ab1529295a671cd86cb2fafe753af6914a78328781fa05
MD5 bfa47ed49bfaa9019a0191d375b14877
BLAKE2b-256 bf5fefd5e3b5897cef9668878be4029c7b3af624a83b7b19ae2176154a75b7df

See more details on using hashes here.

File details

Details for the file gh_bin-2.63.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.63.2-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 1876ac1d5d72395e45003a08de4dffda477bc0472fe646e1a0d49790a7d28832
MD5 bceba3178174ca2df13ceea450ca7b92
BLAKE2b-256 9247b4a8d3ed278ee5c9600679e623bc3bcd89972eea1a4879bbc0ad6c8c1141

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gh_bin-2.63.2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c634c7d648d78b9f0f1c5266659e4ca306f5b21eb97f67991dd49fa50fc6d1ce
MD5 e1d904a9b8824b3fe8e8f0debe2b7e76
BLAKE2b-256 cc66fd1049dbcaec87ec534daf6cf7255cbf1f065975b68fd835f4b0069000bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gh_bin-2.63.2-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b9071ccdb39583a731331a06a2dd55cd1fedc8d317f64acc4f48c42057c7b246
MD5 e3b5c252b5bbe42266fb71058ecf1df3
BLAKE2b-256 b8624414f131b087bb4b2a5aabc24d4d361860658ceb483f0dff775c776e926e

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