Repository Development¶
Local install¶
python -m pip install -e .[dev,docs]
Tests¶
python -m pytest -q
CLI smoke¶
PYTHONPATH=src python -m chatenv.cli --help
PYTHONPATH=src python -m chatenv.cli --tree
PYTHONPATH=src python -m chatenv.cli --tree-brief
PYTHONPATH=src python -m chatenv.cli --home ./playground/chatenv-smoke list || true
A standalone ChatEnv install only includes the built-in shared schemas. Leaf packages should define and register their own BaseEnvConfig subclasses before exercising typed profile writes.
Build gate¶
python -m build
python -m twine check dist/*
Docs¶
python -m pip install -e .[docs]
python -m mkdocs build --strict
Production docs publish to https://arch.gh.wzhecnu.cn/ChatEnv/.
Release¶
- Update
src/chatenv/__init__.py. - Merge to
mainthrough a PR. - Push a matching annotated tag, for example:
git tag -a v0.2.8 -m "ChatEnv 0.2.8"
git push origin v0.2.8
publish.yml verifies that the tag matches the package version, that the tag commit is on origin/main, and that the version is not already present on PyPI before publishing through Trusted Publishing / GitHub OIDC.