Validate data-driven Godot content ids, references, and numeric outliers.
Project description
Godot Content Graph Doctor
godot-content-graph-doctor validates data-driven content used by Godot
projects. It is useful when items, recipes, quests, dialogue, enemies, levels,
or content packs live in JSON, CSV, or TOML files.
It does not need the Godot editor. It reads content files, checks ids and references, and produces reports that work locally or in CI.
Install
python -m pip install godot-content-graph-doctor
From a source checkout:
python -m pip install -e .\godot-content-graph-doctor
Quick Start
godot-content-graph examples\tiny-content-project --config content-graph.toml
Use a built-in preset when the project follows common data folder names:
godot-content-graph path\to\godot-project --preset recipes
godot-content-graph path\to\godot-project --preset quests --preset dialogue --format markdown
See available presets:
godot-content-graph . --list-presets
Write machine-readable output:
godot-content-graph examples\tiny-content-project --config content-graph.toml --format json --output reports\content-graph.json
Create a Mermaid graph:
godot-content-graph examples\tiny-content-project --config content-graph.toml --format mermaid --fail-on none
Config Example
Presets are useful for quick starts. A config file is still best when a project uses custom paths, field names, or references. Config collections with the same name as a preset collection override the preset.
[collections.items]
path = "data/items.json"
id = "id"
roots = ["copper_ore"]
warn_unused = true
numeric_fields = ["value"]
[collections.recipes]
path = "data/recipes.json"
id = "id"
numeric_fields = ["craft_time"]
[[collections.recipes.references]]
field = "inputs[].item"
collection = "items"
[[collections.recipes.references]]
field = "outputs[].item"
collection = "items"
Each collection points to one file. JSON may be a list of objects or an object
containing items, data, rows, or a key matching the collection name. CSV
uses the header row. TOML uses items, data, rows, or the collection name.
Reference fields support simple dotted paths and list traversal with [], such
as inputs[].item.
Built-In Presets
items:data/items.jsonwith common value, price, and weight summaries.recipes:data/items.jsonplusdata/recipes.jsoninput/output item references.quests: quest prerequisites and optional item rewards.dialogue: dialogue speaker and next-node references.levels: level references to item and enemy catalogs.content-pack: overlay item packs undermods/content_pack/items.json.
Checks
- missing or duplicate ids;
- references to ids that do not exist in the target collection;
- unused ids when
warn_unused = true; - numeric field summaries and transparent outlier warnings.
Outputs
text: local terminal report.json: CI and scripts.markdown: PR comments and release notes.mermaid: graph of configured collection references.
Exit Codes
0: no findings at the selected threshold.1: findings met the selected threshold.2: CLI usage error.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file godot_content_graph_doctor-0.1.1.tar.gz.
File metadata
- Download URL: godot_content_graph_doctor-0.1.1.tar.gz
- Upload date:
- Size: 11.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c86f019f5b89504465b8c0195895f03f8ffb90f025fed9081e611b9bc80bc4d
|
|
| MD5 |
1ad2c93df9edef15424c1609a4db82e0
|
|
| BLAKE2b-256 |
581fd111b012f0968f5fb44b3552d30df24be74c0e75acede25b0306ccde90b4
|
Provenance
The following attestation bundles were made for godot_content_graph_doctor-0.1.1.tar.gz:
Publisher:
publish-content-graph-doctor.yml on NonniGB/godot-production-toolkit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
godot_content_graph_doctor-0.1.1.tar.gz -
Subject digest:
8c86f019f5b89504465b8c0195895f03f8ffb90f025fed9081e611b9bc80bc4d - Sigstore transparency entry: 1767750811
- Sigstore integration time:
-
Permalink:
NonniGB/godot-production-toolkit@ac0f1d810cb94d50150347c2a134ed0545270297 -
Branch / Tag:
refs/tags/godot-content-graph-doctor-v0.1.1 - Owner: https://github.com/NonniGB
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-content-graph-doctor.yml@ac0f1d810cb94d50150347c2a134ed0545270297 -
Trigger Event:
push
-
Statement type:
File details
Details for the file godot_content_graph_doctor-0.1.1-py3-none-any.whl.
File metadata
- Download URL: godot_content_graph_doctor-0.1.1-py3-none-any.whl
- Upload date:
- Size: 12.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e3cff4f0d7a4c81d72d6d98ae71167726a0ee5cefdfeb879836e78aa7ad841bd
|
|
| MD5 |
c671fc242798df45eab0fe8c386a79d4
|
|
| BLAKE2b-256 |
9d558d487ac18505df780d0128d2322d8f3d8f77e44b1cc43ae075934659009a
|
Provenance
The following attestation bundles were made for godot_content_graph_doctor-0.1.1-py3-none-any.whl:
Publisher:
publish-content-graph-doctor.yml on NonniGB/godot-production-toolkit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
godot_content_graph_doctor-0.1.1-py3-none-any.whl -
Subject digest:
e3cff4f0d7a4c81d72d6d98ae71167726a0ee5cefdfeb879836e78aa7ad841bd - Sigstore transparency entry: 1767751905
- Sigstore integration time:
-
Permalink:
NonniGB/godot-production-toolkit@ac0f1d810cb94d50150347c2a134ed0545270297 -
Branch / Tag:
refs/tags/godot-content-graph-doctor-v0.1.1 - Owner: https://github.com/NonniGB
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-content-graph-doctor.yml@ac0f1d810cb94d50150347c2a134ed0545270297 -
Trigger Event:
push
-
Statement type: