Skip to main content

factorio-recipe-graph

A Python library that answers the question:

"If I want to produce N items per second of X, exactly how many machines, furnaces, and raw resources do I need — all the way down?"

Given a target item and desired production rate, it resolves the full ingredient tree to primitive (raw) inputs, annotating each step with machine counts, throughput rates, and transport requirements.

from factorio_recipe_graph.graph import GraphBuilder

builder = GraphBuilder.from_base_recipes()
graph = builder.build("electronic-circuit", rate=10.0)

root = graph.nodes[graph.root_node_id]
print(f"{root.label}: {root.machine_count} × {root.machine.name}")
# electronic-circuit: 7 × assembling-machine-2

Installation

git clone https://github.com/lorencarvalho/factorio-recipe-graph
cd factorio-recipe-graph
uv sync --dev

Requires Python 3.11+ and uv.

What you get

  • Recursive dependency resolution down to raw resources (iron-ore, copper-ore, crude-oil, etc.) — no hand-rolled chains needed.
  • Exact rate math for machine counts, ingredient demand, and belt / inserter throughput, with both ceiling (machines to build) and exact (fractional, for downstream demand) outputs.
  • Memoized subgraphs so shared dependencies (e.g. copper cable feeding multiple recipes) are computed once per build.
  • Lossless JSON serialization for downstream visualization tooling.
  • Curated dataset covering 45+ vanilla Factorio recipes shipped under src/factorio_recipe_graph/data/.

See the docs for the full API, worked examples, and the data-pipeline regeneration workflow.

Data pipeline

The bundled base_recipes.json is generated from raw recipes.json and entities.json exports. To regenerate it:

uv run python scripts/build_base_recipes.py

The script is idempotent — running it multiple times produces byte-identical output. See docs/data_pipeline.md for details.

Development

uv run ruff check          # lint
uv run ruff format --check # formatting
uv run ty check            # types
uv run pytest              # tests

CI runs all four on every push and pull request.

Limitations

  • Vanilla base game only — no mods, no Space Age expansion mechanics.
  • No modules, beacons, or productivity bonuses. Rate math assumes raw machine speed.
  • No bot or train logistics. Transport calculations cover belts, inserters, pipes, and pumps only.
  • No quality tiers.

Contributing

ruff check, ruff format --check, ty check, and pytest must all pass before merge.

License

MIT — see LICENSE.

Metadata

Release files for factorio-recipe-graph 0.1.3

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

Source distribution (sdist)

Source distribution for factorio-recipe-graph 0.1.3
File Size Uploaded
factorio_recipe_graph-0.1.3.tar.gz 76.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for factorio-recipe-graph 0.1.3
File Interpreter ABI Platform
factorio_recipe_graph-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 104.5 kB

Release files / factorio_recipe_graph-0.1.3.tar.gz

Download URL factorio_recipe_graph-0.1.3.tar.gz
Size 76.8 kB
Tags Source
SHA-256 checksum
How to use checksums
63481d598bb56420d5ccc070abc8fd5a99d6fc435379962fad1a867f2530f374
BLAKE2b-256 checksum
How to use checksums
c6abb5fa381886884de902b70f301d294a220a06bdf4183b2dedd8bd433c1f9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 4, 2026.

Transparency log

Release files / factorio_recipe_graph-0.1.3-py3-none-any.whl

Download URL factorio_recipe_graph-0.1.3-py3-none-any.whl
Size 27.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
17107d8cd0c41a5c242c4abdc4d0fd813c92b73a08b32ef4ad83637b744b1fd7
BLAKE2b-256 checksum
How to use checksums
4198bac2b93553d5db5f6453fb90ff8d9025b0cf5d50005baa7d80c191cab543
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 4, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.0

2 release files

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