Skip to main content

GixPython

Python bindings to Gitoxide's gix::Repository, written in Rust with PyO3.

The distribution is GixPython. Import it as gix. This is an alpha project; its API may change before 1.0. The first release targets macOS 11+ on Apple Silicon and Intel, with CPython 3.11+ and separate wheels for free-threaded CPython 3.14. Linux and Windows are not supported release platforms yet.

import itertools
import gix

repo = gix.discover(".")
commit = repo.find_commit("HEAD")
print(commit.id, commit.message_raw())

with repo.rev_walk(["HEAD"]).first_parent_only().all() as history:
    for entry in itertools.islice(history, 10):
        print(entry.id, entry.object().message_raw())

with repo.status().into_iter([]) as changes:
    for change in changes:
        print(change.location, change.summary())

Native object-ID arguments accept ObjectId, object wrappers, or str/bytes revision specifications. This preserves native object kinds: an annotated tag is not implicitly peeled into a commit. Use a revision such as v1.0^{commit} or explicitly peel the returned object. Lazy operations resolve revisions when first consumed. Compare-and-swap reference constraints always retain literal captured targets.

Git contents, paths inside trees, reference names, and messages remain bytes. Filesystem paths are pathlib.Path objects. Decode bytes explicitly when displaying text. Methods retain native names and meaning: Repository.commit() creates a commit, and find_commit() looks one up.

Capabilities

Bindings cover repositories, objects and tree editing, references and reflogs, configuration transactions, history, index editing, status, diffs, attributes, excludes, pathspecs, filters, directory walking, submodules, notes, blame, blob/tree/commit merges, worktrees, archives, remotes, clone, and fetch. See the native API coverage record for individual operations, feature gates, and limitations.

The bindings use native Gitoxide operations. The Git executable is used by tests, and is not an implementation fallback. Configured SSH, credential, filter, signing, and merge programs may still run through the native engine.

Parallelism and lifetimes

Repository handles are safe to share between Python threads. Normal operations use independent native handles and detach from Python while working. Gitoxide parallelism is always enabled. The extension supports GIL-disabled CPython; mutable native builders reject overlapping use rather than depending on the GIL.

Native iterators and output streams remain lazy. Use their context managers or close() to release a partially consumed operation promptly. Progress is pollable with Progress.snapshot(), and another thread can cancel through CancellationToken. Normal Python signals raise KeyboardInterrupt. Cancellation is cooperative; some native computations and blocked transport I/O must finish before cleanup can complete. See runtime semantics.

Installation

Install the latest published version with:

python -m pip install --only-binary=:all: GixPython

Wheels include the native Rust extension; installation needs no Rust or C compiler. Source builds require Rust 1.89+, a linker, and network access to Rust dependencies.

Build locally

Use CPython 3.11 or newer, Rust 1.89 or newer, and a system linker:

python3 etc/build.py
PYTHONPATH=python python3 -m unittest discover -s tests

Default max-pure builds include both SHA-1 and SHA-256 and broad repository capabilities. Hashing, compression, and HTTPS use Rust implementations; building the dependencies does not require a C or C++ compiler. HTTPS uses reqwest/rustls with Graviola, whose supported CPU targets are checked at runtime.

Select a smaller source build explicitly:

python3 etc/build.py --no-default-features --features sha256,revision,index

gix.build_features() reports the installation's capabilities, and gix.HashKind.all() reports its supported hash kinds. Feature-gated Python methods and types are absent when disabled. The included type stubs describe the full build.

Ordinary wheel builds select the abi3 Cargo feature for CPython 3.11+. Free-threaded builds require CPython 3.14+ and a wheel built for that interpreter. Development instructions describe artifacts, validation, and upstream integration. GitHub workflows test supported configurations and build macOS release artifacts. See RELEASING.md for the manual publishing procedure.

More examples

See CONTRIBUTING.md and SECURITY.md for contributions and vulnerability reporting.

License

Copyright (c) 2026 Sebastian Thiel. Licensed under either Apache License, Version 2.0 or the MIT license, at your option, matching Gitoxide.

Metadata

Release files for GixPython 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for GixPython 0.2.0
File Size Uploaded Provenance
gixpython-0.2.0.tar.gz 206.7 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for GixPython 0.2.0
File
gixpython-0.2.0-cp314-cp314t-macosx_11_0_x86_64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ x86-64 Details
gixpython-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
gixpython-0.2.0-cp311-abi3-macosx_11_0_x86_64.whl CPython 3.11 abi3 macOS 11.0+ x86-64 Details
gixpython-0.2.0-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details

Total release size: 37.3 MB

Release files / gixpython-0.2.0.tar.gz

Download URL gixpython-0.2.0.tar.gz
Size 206.7 kB
Tags Source
SHA-256 checksum
How to use checksums
348ded2c5f8a629ce7a1329d17af2ddc83fbb0f02b7aab1d7e64d82ac3fbbfab
BLAKE2b-256 checksum
How to use checksums
c58d5c2a96c9f21928603b289e42dac50a972615608b5c8093ce3b18898c2cf4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / gixpython-0.2.0-cp314-cp314t-macosx_11_0_x86_64.whl

Download URL gixpython-0.2.0-cp314-cp314t-macosx_11_0_x86_64.whl
Size 9.5 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
09ebbfbeedc7617b9791a759fa31bb96a85732b01d67066b7e63349106d17d2e
BLAKE2b-256 checksum
How to use checksums
c6f2a2a55ca0bd7dbdae34a223459926372119bb970b3947041d95a037057bda
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / gixpython-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl

Download URL gixpython-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl
Size 9.0 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
99a01eeb8751e26c75195148c00c884166a514531f4e87caab6e63bd1c47e58f
BLAKE2b-256 checksum
How to use checksums
fd058bae983fba638c6c8475315baabcfc922983b523cc51e77db423cfb9b3ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / gixpython-0.2.0-cp311-abi3-macosx_11_0_x86_64.whl

Download URL gixpython-0.2.0-cp311-abi3-macosx_11_0_x86_64.whl
Size 9.4 MB
Tags CPython 3.11 abi3 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
2e84080ba6c5eef4d2c742a0319ca3e99d9ef30c6b32500142c59c4884f359b9
BLAKE2b-256 checksum
How to use checksums
94c5dd5f95535f865c9391b1d9973ed8928a9bc3ea0ff4cf96e0c627b2956ac0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / gixpython-0.2.0-cp311-abi3-macosx_11_0_arm64.whl

Download URL gixpython-0.2.0-cp311-abi3-macosx_11_0_arm64.whl
Size 9.1 MB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
025d3f513f9baacb443db877a753fee6c2f31bfc90dac04fafcd07f63c4b52e9
BLAKE2b-256 checksum
How to use checksums
f3fee5849ef2d23b51c45884822daeb9d8b7bfcbc3eeb545739850be64afb2bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Security for GixPython 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 5 files in this release have been uploaded with provenance metadata.

Select from 5 files

Attestation for gixpython-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page