Skip to content

Maintaining

cdowin edited this page Oct 4, 2026 · 1 revision

Maintaining

Develop

make help lists every target; never hand-roll an incantation. make check is the static gate, make pyunit the inner loop (the suite minus the spawns, seconds), make test the whole suite on the floor interpreter, make verify the full gate and what CI runs (check + matrix, every claimed interpreter). Verify against source — PYTHONPATH=src python3 -m godot_devkit.cli … — never through uvx --from <path>, which caches a wheel by version.

Nothing here reads a path outside its own checkout or names a project that consumes it. Realistic data is vendored: tests/fixtures/ holds purpose-built repos, a committed clean Godot project the gates run over, and a scrubbed real-world scene corpus every write verb round-trips byte for byte.

Regenerate the ClassDB snapshot

check props compares against a snapshot of Godot's ClassDB in src/godot_devkit/data/classdb.json; reading it boots nothing. The same file carries the engine's method and signal names, which refs --rename refuses. Regenerate when the engine minor moves:

godot --headless --dump-extension-api      # writes ./extension_api.json
python3 tools/gen_classdb.py extension_api.json
python3 tools/gen_classdb.py --names-only extension_api.json   # refresh only the names

Release

  1. Bump version in pyproject.toml and __version__ in src/godot_devkit/__init__.py together on main. uv.lock agrees. tests/test_version_sites.py checks the 3 sites.
  2. auto-tag.yml tags it. release.yml builds the wheel and sdist once, attaches them to the GitHub Release and publishes the index. Never tag by hand.
  3. Release notes come from the version-bump PR. Put a ## Release notes section in its body: one sentence, the semver class (patch, minor or major), and an Upgrade: line that says what a consumer must edit. release.yml finds the PR for the tagged commit, uses that section as the Release body and puts an Install: line first. With no such section, or no PR, it falls back to the generated list of merged PR titles.
  4. There is no CHANGELOG.md. Releases are the record.

A published wheel is never replaced: see Troubleshooting.

Clone this wiki locally