Skip to main content

just-buildit

CI Docs

The missing PEP 517 build backend for C extensions.

You know how to build your project. just-buildit knows how to package it. That's the whole deal.


The problem

Every existing Python build backend either wants to own your build system, assumes you're using setuptools extensions, or drags in a dependency tree bigger than your project. There's no option that just says:

"Here are your C files. Build them however you want. I'll ship the result."

just-buildit is that option.


Installation

pip install just-buildit

Quickstart

Flat layouts, nested packages, multiple extensions across subdirectories, mixed pure Python and C — whatever your build produces.

Zero config — a single C extension in src/mylib/:

[build-system]
requires = ["just-buildit"]
build-backend = "just_buildit"

[project]
name = "mylib"
version = "0.1.0"

Run pip install . and just-buildit finds src/mylib/, compiles every .c file it contains, and ships the result.

Custom build command — Make, CMake, Meson, Bazel, or anything else:

[tool.just-buildit]
command = "make"

just-buildit sets environment variables, calls your command, and packages everything written to $JUST_BUILDIT_OUTPUT_DIR.

Need a project scaffold? just-makeit generates a CMake-based C extension project pre-wired for just-buildit — see the examples.

CLI

uvx just-buildit inspect   # dry-run: show config and what would be built
uvx just-buildit build     # build wheel into dist/
uvx just-buildit sdist     # build source distribution into dist/

# The version numbers CI cannot read out of a file once the version is
# derived, because there is no longer a file carrying one:
uvx just-buildit --current-version # -> 1.1.4.dev5  (what this tree builds as)
uvx just-buildit --next-version    # -> 1.1.4       (what a release would tag)

Documentation

Environment variables What just-buildit sets before calling your command
Examples Make, CMake, Meson, Bazel, mixed Python + C, nested packages
Configuration Full config reference, wheel repair, editable installs
Contributing Running tests, platform support, bootstrapping

Requirements

  • Python 3.8+
  • A compiler (you already have one)
  • uv for wheel repair (uvx auditwheel / uvx delocate-wheel / uvx delvewheel)

Authors

Matthew T. Hunter, Ph.D. and Claude Code


License

MIT

Metadata

Release files for just-buildit 0.7.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 just-buildit 0.7.0
File Size Uploaded
just_buildit-0.7.0.tar.gz 217.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for just-buildit 0.7.0
File Interpreter ABI Platform
just_buildit-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 256.5 kB

Release files / just_buildit-0.7.0.tar.gz

Download URL just_buildit-0.7.0.tar.gz
Size 217.0 kB
Tags Source
SHA-256 checksum
How to use checksums
24524248e273d7be59881e49c2a2f3011ba54a1cb5166c4afd8f3784e106278e
BLAKE2b-256 checksum
How to use checksums
ccf0a414ded31a943957aed61862198c7080491ada84fc3e933db186b13e7bd5
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 4, 2026.

Transparency log

Release files / just_buildit-0.7.0-py3-none-any.whl

Download URL just_buildit-0.7.0-py3-none-any.whl
Size 39.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1d839f264c8a4f8ee88d66b271ece66c8d7e48cb541731f32954b0d18732c2b5
BLAKE2b-256 checksum
How to use checksums
4dedd9915a4d461a0f6b44a3b4cb11c4605eccaab3fc8dae35314a1d0107fe57
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 4, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.10

1 release file

0.3.9

1 release file

0.3.8

1 release file

0.3.7

1 release file

0.3.6

1 release file

0.3.5

1 release file

0.3.4

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.5

1 release file

0.2.4

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

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