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

Release files for just-buildit 0.6.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.6.0
File Size Uploaded
just_buildit-0.6.0.tar.gz 197.5 kB Details

Built distribution (wheel)

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

Total release size: 235.7 kB

Release files / just_buildit-0.6.0.tar.gz

Download URL just_buildit-0.6.0.tar.gz
Size 197.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ca422ee6fcd9c25674bda6b9c17910ca1e7101cd5107bd9c546c418a0cc65e45
BLAKE2b-256 checksum
How to use checksums
a59890c8acbc94d61637b969f1937426f782aaf5c52f25325c57a04319097f9d
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 Sep 9, 2026.

Transparency log

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

Download URL just_buildit-0.6.0-py3-none-any.whl
Size 38.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5258a0356ea15238d0fc4e6b678646a976de442b772c4bb8a9674ee2f374ab66
BLAKE2b-256 checksum
How to use checksums
52f34eb8d27cda717b2ca658f12288992ee764928568ecc06055e9ef54897c70
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 Sep 9, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.1

2 release files

This release

0.6.0 This release

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