Skip to content

Development

Setup and checks

conda env create -f environment.yml
conda activate agentlogsafe-dev
make check

The aggregate target runs Ruff linting and format validation, strict mypy, actionlint, pytest (including property-based tests), and a strict documentation build. Individual targets are make lint, make format-check, make typecheck, make workflow-lint, make test, and make docs.

Preview documentation with make docs-serve.

Continuous integration

The CI workflow runs quality checks on Python 3.13, tests supported Python versions across Linux, macOS, and Windows, and installs built wheels into clean Python 3.10–3.13 environments for smoke testing. Documentation pull requests must build strictly; pushes to main deploy the generated site through GitHub Pages.

Releases

Package-affecting pushes to main run the full validation suite and compare the declared version with PyPI. A version not already present is built and published through PyPI Trusted Publishing and the protected pypi GitHub environment. An existing version passes validation but skips the immutable PyPI upload.

Configure the PyPI Trusted Publisher with owner ryan-wolbeck, repository agentlogsafe, workflow filename publish.yml, and environment pypi. No API token or repository secret is required.

Before tagging:

  1. Update the version in pyproject.toml and agentlogsafe/__init__.py.
  2. Update CHANGELOG.md and the documentation.
  3. Run make check from a clean checkout.
  4. Merge the version change to main; the publishing workflow handles the release.

The workflow verifies that pyproject.toml and agentlogsafe.__version__ agree. A manual workflow dispatch publishes only when it is run from main and the version is new.

GitHub Pages setup

In repository settings, set Pages → Build and deployment → Source to GitHub Actions. Update site_url, repo_url, and repo_name in mkdocs.yml after the final GitHub organization or account is known.

Contribution expectations

Keep runtime code standard-library-only, add tests for behavior changes, avoid logging new sensitive fields by default, and document user-visible changes.