Skip to main content

Build hierarchical recipe dependency graphs for Factorio: machines, throughput, and raw-resource totals from a target item and rate.

Project description

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.

Project details


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.2.tar.gz (75.6 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.2-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: factorio_recipe_graph-0.1.2.tar.gz
  • Upload date:
  • Size: 75.6 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.2.tar.gz
Algorithm Hash digest
SHA256 3b284ad88c3a7dacfc18a6758ff478208988cc3928fb4e8629594427df0e3905
MD5 f6b5bdf8cd60ca128c11fadb8517c842
BLAKE2b-256 935d9b6bdf7ec37e297e4cdb06f044c141c674620adecae5b1fb6f4fde8828b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for factorio_recipe_graph-0.1.2.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.2-py3-none-any.whl.

File metadata

File hashes

Hashes for factorio_recipe_graph-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8f2b219a3146b2eaf8b7ca10e7b4f010fe8699dcf285673e9b6858911e1d4e49
MD5 a4ff360f5da4c541a625cf61e43de6f2
BLAKE2b-256 a0d5badd8463f3215e22ef577265d079319d6b52da043267da2c773829c8c3fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for factorio_recipe_graph-0.1.2-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.

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