Skip to main content

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

Show the collections touched by changed files and any downstream collections that reference them:

godot-content-graph path\to\godot-project --preset recipes --changed-file data/items.json --format markdown

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.json with common value, price, and weight summaries.
  • recipes: data/items.json plus data/recipes.json input/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 under mods/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.

Changed-file impact reports are included in text, json, and markdown output when --changed-file or --changed-files is provided.

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

godot_content_graph_doctor-0.1.2.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

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

godot_content_graph_doctor-0.1.2-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for godot_content_graph_doctor-0.1.2.tar.gz
Algorithm Hash digest
SHA256 25dc7dc75a8f22b2320c3e85e94f324bbf6aeb55fee3719ccfaa3d9a860d5cb4
MD5 629407f3c582d9edf15b8e46c7ddf842
BLAKE2b-256 6d08f0149e9205800b23b4190564d42b175c0270cc168ebe750a82d119928dff

See more details on using hashes here.

Provenance

The following attestation bundles were made for godot_content_graph_doctor-0.1.2.tar.gz:

Publisher: publish-content-graph-doctor.yml on NonniGB/godot-production-toolkit

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

File details

Details for the file godot_content_graph_doctor-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for godot_content_graph_doctor-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5494b9d15e726d97acf3978d67327a2a7a687035bd8b9d6542e085abcb7db9ad
MD5 33749a6fa0665b7a9be6c544f7b24870
BLAKE2b-256 3d327a79dda870068e86a1bf91da2e47c84a4a6c26ef8b2a04e60de8afe6ca43

See more details on using hashes here.

Provenance

The following attestation bundles were made for godot_content_graph_doctor-0.1.2-py3-none-any.whl:

Publisher: publish-content-graph-doctor.yml on NonniGB/godot-production-toolkit

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