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.1

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.1
File Size Uploaded
just_buildit-0.6.1.tar.gz 201.5 kB Details

Built distribution (wheel)

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

Total release size: 239.9 kB

Release files / just_buildit-0.6.1.tar.gz

Download URL just_buildit-0.6.1.tar.gz
Size 201.5 kB
Tags Source
SHA-256 checksum
How to use checksums
123c3e235e93acf02443c4e3f579069d7d91745bf60c896af8ef972f8d122e4c
BLAKE2b-256 checksum
How to use checksums
e749a619ce65155123dfc1471db3926213f94d2b6f1e3579b5cf075d375f2f2b
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 22, 2026.

Transparency log

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

Download URL just_buildit-0.6.1-py3-none-any.whl
Size 38.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c8bdc00f01fb32d7f3fb3130973a91bfaca75b54ca165457aa0557b72d145bcc
BLAKE2b-256 checksum
How to use checksums
56712f5d4722e29af82bc7e32078c8a7dd5b58f707ab294ee5f95158e359dbd6
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 22, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.1 This release

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