Skip to content

Release v0.6.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 14:29
· 1007 commits to main since this release

TopMark v0.6.0 — Release Notes

🚀 A feature-packed release introducing a new configuration architecture, public API docs, snapshot tooling, and stricter quality gates.

✨ Added

  • Public API docs

    • Document configuration via mappings.
    • Clarify that runtime uses an immutable Config.
  • API snapshot tooling

    • tools/api_snapshot.py to generate a curated public API snapshot.
    • Make targets:
      • public-api-update, .public-api-update
      • public-api-check, public-api-ensure-clean
    • Tox envs: py{310,311,312,313}-api to run the snapshot test only.
  • Docs quality

    • Standardized Google-style docstrings.
    • Integrated pydoclint.
    • Improved MkDocs + mkdocstrings rendering.

🔧 Changed

  • Configuration architecture

    • Introduced MutableConfig (internal builder) and immutable Config (runtime snapshot).
    • Public API continues to accept Mapping[str, Any] | None.
    • Inputs normalized internally and frozen before execution.
    • Renderer constructs an effective snapshot without mutating inputs.
  • Config resolution (CLI)

    • Resolution order now explicit:
      1. Packaged defaults
      2. Project config in CWD (pyproject.toml [tool.topmark], else topmark.toml) unless skipped
      3. Explicit --config files (in order)
      4. CLI overrides
  • Header field ordering

    • topmark check now enforces the configured field order consistently.
  • Typing/import hygiene

    • Postponed annotations.
    • Type-only imports under TYPE_CHECKING.
    • Narrower typing imports.
    • Faster imports and fewer cycles.

🐛 Fixed

  • CLI & pipeline
    • Header order now deterministic — no more “up-to-date” false negatives.
  • Type-checking & lint
    • Casts, variable redefinitions, analyzer false positives fixed in CLI helpers and resolver paths.

📚 Docs

  • Added “Configuration via mappings (immutable at runtime)” section to public API docs.
  • Concise note mirrored in topmark.api module docstring.
  • Normalized docstrings across the codebase.
  • Removed Sphinx roles in favor of Markdown-friendly mkdocstrings.

🧪 Tooling

  • Added pydoclint to dev toolchain.
  • Wired into Makefile and pre-commit.
  • Reordered pre-commit hooks for faster feedback.
  • Snapshot workflow integrated into Makefile and CI-friendly checks.

🧹 Chore

  • Repository-wide header reformat to new field order (no functional changes).

📝 Notes

  • No public API surface changes: topmark.api.check() and topmark.api.strip() signatures unchanged.
  • MutableConfig remains internal and is not part of the stable API.
    Public callers should pass a mapping or a frozen Config.

📦 Installing / Upgrading

pip install -U topmark

🙌 Thanks

Thanks to everyone who tested configuration changes and verified doc rendering across environments.


Links