@@ -18,7 +18,7 @@ Prerequisites
1818To contribute to this project, you should have:
1919
2020- **Python 3.12 or newer ** (matches ``requires-python `` in ``pyproject.toml ``;
21- CI tests on 3.12, 3.13 , and 3.14 ).
21+ CI uses 3.12 on Ubuntu, Windows , and macOS ).
2222- **uv ** (https://github.com/astral-sh/uv) for dependency management and
2323 running tools.
2424- **Git ** installed and configured.
@@ -167,6 +167,33 @@ Optional: regenerate UI screenshot artifacts for docs (uploaded as CI artifact):
167167 QT_QPA_PLATFORM=offscreen DOCS_SCREENSHOT_DIR=docs/_build/screenshots \
168168 uv run pytest tests/docs/test_docs_screenshots.py -m docs_screenshot
169169
170+ Sphinx-related paths under ``docs/ ``:
171+
172+ - **``docs/_static/`` ** — **Keep in version control. ** These are source assets (images,
173+ optional extra CSS/JS). Sphinx only *copies * them into ``docs/_build/html/_static/ ``
174+ when you build; the underscore is a Sphinx convention for “static inputs”, not
175+ garbage output.
176+
177+ - **``docs/_templates/`` ** (including ``_templates/autosummary/ `` if present) —
178+ **Keep in version control ** when the ``.html ``/``.rst `` files there are **hand-written **
179+ Jinja templates that customize the HTML builder or autosummary. They are part of
180+ your documentation *source *, not generated API stubs.
181+
182+ - **``docs/_autosummary/`` ** at the **project root ** (next to your ``.rst `` sources) —
183+ **Do not commit. ** Those files are **generated stubs ** produced by
184+ ``sphinx.ext.autosummary ``; they belong in ``.gitignore `` and are recreated by
185+ ``sphinx-build `` (or your docs CI job).
186+
187+ - **``docs/_generated/`` ** — **Depends on your workflow. ** If that directory holds
188+ output from a **script ** (for example includes generated from Python constants),
189+ you can either (a) **commit ** the files so a plain ``sphinx-build `` works everywhere,
190+ with CI checking they are up to date, or (b) **gitignore ** them and always run the
191+ generator before Sphinx in CI and locally. Do **not ** delete the folder if you still
192+ ``.. include:: `` it from an ``.rst `` file unless you switch fully to (b) and teach
193+ CI to regenerate it.
194+
195+ **Never commit ** the HTML tree ``docs/_build/ `` (already ignored).
196+
170197Code Standards
171198---------------
172199
@@ -324,8 +351,9 @@ Our review process:
324351 - ``uv audit `` for dependency vulnerabilities.
325352 - ``ruff `` (lint + format) and ``ty `` (type check).
326353 - ``pytest `` on Ubuntu, Windows, and macOS with a coverage floor.
327- - Briefcase ZIP packaging smoke test on Windows.
328- - Documentation build (Sphinx ``-W ``) and link check.
354+ - Prose checks (codespell, doc8, interrogate) via pre-commit.
355+ - Briefcase smoke test on Linux (``create `` + ``build `` without packaging).
356+ - Documentation build (Sphinx ``-W ``), TSV schema doc drift check, and link check.
329357
3303582. **Peer review ** by maintainers.
3313593. **Discussion ** of any required changes.
@@ -387,22 +415,29 @@ We use a simple trunk-based strategy:
387415Release Process
388416~~~~~~~~~~~~~~~
389417
390- 1. Update ``dbs_annotator.__version__ `` in
391- ``src/dbs_annotator/__init__.py `` (Hatch reads this as the distribution
392- version) and, if it changed, ``[tool.briefcase].version `` in
418+ Maintainers follow a **PR-based ** flow: bump versions and assemble the changelog on a
419+ branch, merge to ``main ``, then **tag ** ``vX.Y.Z `` and push the tag to publish builds.
420+
421+ Concrete steps:
422+
423+ 1. Update ``dbs_annotator.__version__ `` in ``src/dbs_annotator/__init__.py `` (Hatch
424+ reads this as the distribution version) and ``[tool.briefcase].version `` in
393425 ``pyproject.toml ``. These two values must match.
394- 2. Build ``CHANGELOG.md `` from Towncrier fragments:
426+ 2. Build ``CHANGELOG.md `` from Towncrier fragments (or use ``scripts/release_prepare.py `` /
427+ the **CD - Prepare release PR ** workflow), for example:
395428
396429 .. code-block :: bash
397430
398431 uv run towncrier build --yes --version X.Y.Z --date YYYY-MM-DD
399- 3. Open a release PR, land it on `` main ``, then push the matching
400- ``vX.Y.Z `` tag.
401- 4. The `` CD - Create GitHub Release `` workflow builds Python wheels/sdist and
402- Briefcase installers (Windows MSI, macOS DMG, Linux system package), then
403- creates the GitHub Release with artifacts attached.
432+
433+ 3. Open a release PR, land it on `` main ``, then push the matching ``vX.Y.Z `` tag.
434+ 4. The ** CD - Create GitHub Release ** workflow builds Python wheels/sdist and Briefcase
435+ installers (Windows MSI, macOS DMG, Linux system package), then creates the GitHub
436+ Release with artifacts attached.
4044375. Read the Docs publishes the matching versioned documentation from the tag.
405438
439+ See :doc: `releasing ` for more detail (local script, workflow inputs, and tagging).
440+
406441Continuous Integration
407442~~~~~~~~~~~~~~~~~~~~~~
408443
0 commit comments