Development
Setup
git clone https://github.com/eddiethedean/csvdir.git
cd csvdir
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev,docs]"
Run tests
Global pytest plugins can interfere with the suite. Disable autoload when testing locally:
Lint and type-check
Build documentation locally
Live reload (optional):
Continuous integration
GitHub Actions (see .github/workflows/ci.yml):
| Job | Steps |
|---|---|
check |
ruff, mypy, mkdocs build --strict |
test |
pytest on Python 3.10–3.13 |
Documentation hosting
Docs are built on Read the Docs from .readthedocs.yml using MkDocs Material and mkdocstrings — the same stack as StreamTree.
Release checklist
- Confirm
csvdir/__init__.py__version__matchespyproject.toml[project] version. - Update CHANGELOG for the release: one
## x.y.zsection with user-facing notes. - Push a Git tag
vX.Y.Zthat matchespyproject.toml(e.g.git tag v0.9.0 && git push origin v0.9.0). Pushing the tag runs Release (.github/workflows/release.yml): same checks as CI, tag/version check, then PyPI upload via secretPYPI_API_TOKEN(Settings → Secrets and variables → Actions). - Optionally create a GitHub Release from that tag for release notes (the Release workflow is not tied to the Release UI — only the tag push matters).
- Confirm Read the Docs builds
latest(and any versioned doc build you use).
To publish manually instead: python -m build then twine upload dist/*.
Repository README
Contributing conventions, badges, and quick usage live in the canonical README on GitHub.