Skip to main content

Wheel maker

Project description

fromager

Fromager is a tool for rebuilding complete dependency trees of Python wheels from source.

Goals

Fromager is designed to guarantee that:

  • Every binary package you install was built from source in a reproducible environment compatible with your own.

  • All dependencies are also built from source, no prebuilt binaries.

  • The build tools themselves are built from source, ensuring a fully transparent toolchain.

  • Builds can be customized for your needs: applying patches, adjusting compiler options, or producing build variants.

Design Principles

Fromager automates the build process with sensible defaults that work for most PEP-517–compatible packages. At the same time, every step can be overridden for special cases, without baking those exceptions into Fromager itself.

Build Collections of Wheels

Fromager can also build wheels in collections, rather than individually. Managing dependencies as a unified group ensures that:

  • Packages built against one another remain ABI-compatible.

  • All versions are resolved consistently, so the resulting wheels can be installed together without conflicts.

This approach makes Fromager especially useful in Python-heavy domains like AI, where reproducibility and compatibility across complex dependency trees are essential.

Using private registries

Fromager uses the requests library and pip at different points for talking to package registries. Both support authenticating to remote servers in various ways. The simplest way to integrate the authentication with fromager is to have a netrc file with a valid entry for the host. The file will be read from ~/.netrc by default. Another location can be specified by setting the NETRC environment variable.

For example, to use a gitlab package registry, use a personal access token as documented in this issue:

machine gitlab.com login oauth2 password $token

Determining versions via GitHub tags

In some cases, the builder might have to use tags on GitHub to determine the version of a project instead of looking at pypi.org. To avoid rate limit or to access private GitHub repository, a personal access token can be passed to fromager by setting the following environment variable:

GITHUB_TOKEN=<access_token>

Additional docs

What's with the name?

Python's name comes from Monty Python, the group of comedians. One of their skits is about a cheese shop that has no cheese in stock. The original Python Package Index (pypi.org) was called The Cheeseshop, in part because it hosted metadata about packages but no actual packages. The wheel file format was selected because cheese is packaged in wheels. And "fromager" is the French word for someone who makes or sells cheese.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fromager-0.79.0.tar.gz (461.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fromager-0.79.0-py3-none-any.whl (158.2 kB view details)

Uploaded Python 3

File details

Details for the file fromager-0.79.0.tar.gz.

File metadata

  • Download URL: fromager-0.79.0.tar.gz
  • Upload date:
  • Size: 461.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for fromager-0.79.0.tar.gz
Algorithm Hash digest
SHA256 d090363d21c011d2065bcd408f407bbb2be9d63d97ebe0ee19d13bf13a19516b
MD5 29d3b93ecc22d43debc21071679e01ee
BLAKE2b-256 490c6c0952356d594b860b68883ba23e7d7a885820ee202ec2f69cf5e5d8425c

See more details on using hashes here.

Provenance

The following attestation bundles were made for fromager-0.79.0.tar.gz:

Publisher: python-publish.yaml on python-wheel-build/fromager

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fromager-0.79.0-py3-none-any.whl.

File metadata

  • Download URL: fromager-0.79.0-py3-none-any.whl
  • Upload date:
  • Size: 158.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for fromager-0.79.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1d3188185fccd65fdbed8318cf18e0483f798cbe9af7d8b0819b63a4026c3324
MD5 c86aca0838a1869e2ed72f72d14c5444
BLAKE2b-256 059f0fc843478afac4e0c5da7d44ae1d07a19147cae41d4c0dfbb8dcb13d70d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for fromager-0.79.0-py3-none-any.whl:

Publisher: python-publish.yaml on python-wheel-build/fromager

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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