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

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

gh_bin-2.66.1-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl (13.1 MB view details)

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

gh_bin-2.66.1-py3-none-macosx_11_0_arm64.whl (12.5 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

gh_bin-2.66.1-py3-none-macosx_10_9_x86_64.whl (13.5 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

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

File metadata

File hashes

Hashes for gh_bin-2.66.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 95197a62184548e6104215eb948a823499e202f7dd3d2951c084b81fc243d8d5
MD5 810add3468a11168b76773440afd3293
BLAKE2b-256 8a19e8e18e5d24dd1565a602f89fea0acdd5af2b78dfb8423f75e1a55b182e10

See more details on using hashes here.

File details

Details for the file gh_bin-2.66.1-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.66.1-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 504f393be34756589e45f0fc63ac593b719e9f2ba92141c8ab6bd560fd221552
MD5 a15acbf5b95d7980a831da3f5faed7a2
BLAKE2b-256 e49e09500a8c7eec2fbe523733fdc34f6fcb738baaec1a072e72add0d67bc16f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gh_bin-2.66.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e2997f4b4e0c15e43b689341747335f7198a1cff4c85d038b6d7227f0847d7d7
MD5 5ad1ae1669b6a22b2be6485da9508796
BLAKE2b-256 e0907c1600759e217c572224554e1950f554f18f32ec2c53429b45a49c9c4792

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gh_bin-2.66.1-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 974aae0b01cf459b7b7bd630aab24f37693c2eae018cecb54bf417011e13d110
MD5 3ca7f0403106b147450a32f04d32db8c
BLAKE2b-256 6e4207dd3abd5cbc64b20758d5c8f64d165cfee6bd2e95db8f072e324b051805

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