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.

Download files

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

Source Distribution

factorio_recipe_graph-0.1.3.tar.gz (76.8 kB view details)

Uploaded Source

Built Distribution

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

factorio_recipe_graph-0.1.3-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

Details for the file factorio_recipe_graph-0.1.3.tar.gz.

File metadata

  • Download URL: factorio_recipe_graph-0.1.3.tar.gz
  • Upload date:
  • Size: 76.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for factorio_recipe_graph-0.1.3.tar.gz
Algorithm Hash digest
SHA256 63481d598bb56420d5ccc070abc8fd5a99d6fc435379962fad1a867f2530f374
MD5 25d96f44bf7384c4a4889f3115e28243
BLAKE2b-256 c6abb5fa381886884de902b70f301d294a220a06bdf4183b2dedd8bd433c1f9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for factorio_recipe_graph-0.1.3.tar.gz:

Publisher: publish.yml on lorencarvalho/factorio-recipe-graph

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

File details

Details for the file factorio_recipe_graph-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for factorio_recipe_graph-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 17107d8cd0c41a5c242c4abdc4d0fd813c92b73a08b32ef4ad83637b744b1fd7
MD5 61037d8b679153ebfaf3d347745d7004
BLAKE2b-256 4198bac2b93553d5db5f6453fb90ff8d9025b0cf5d50005baa7d80c191cab543

See more details on using hashes here.

Provenance

The following attestation bundles were made for factorio_recipe_graph-0.1.3-py3-none-any.whl:

Publisher: publish.yml on lorencarvalho/factorio-recipe-graph

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

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 files

0.1.2

2 files

0.1.0

2 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