Files
pytheory/CLAUDE.md
kennethreitz e8e7cdca80 chore: move test suite into tests/
Relocate test_pytheory.py to tests/test_pytheory.py and point the
Makefile, CI workflow, and CLAUDE.md at tests/. Add pytest testpaths so
a bare 'pytest' targets the folder — and so future split-out test files
are picked up automatically.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 14:21:29 -04:00

44 lines
1.2 KiB
Markdown

# Claude Code Instructions
## Release Process
When releasing to PyPI, always do all three:
1. **Tag the commit**: `git tag v0.X.Y`
2. **Push the tag**: `git push origin --tags`
3. **Create a GitHub release**: `gh release create v0.X.Y --title "v0.X.Y: Short description" --notes "Release notes" --latest`
Don't forget to update `CHANGELOG.md` *before* the release commit.
## Version Bumping
- `pyproject.toml` and `pytheory/__init__.py` must match
- Run `uv lock` after changing the version
- Patch releases (0.X.Y) for bug fixes and small additions
- Minor releases (0.X.0) for new features
## Testing
```
uv run python -m pytest tests/ -x -q --tb=short -m "not slow"
```
## Publishing
Preferred — uses the existing `~/.pypirc` credentials, no token in the chat:
```
uv build && uvx twine upload dist/pytheory-0.X.Y*
```
(`uv publish` does NOT read `~/.pypirc`; only use `uv publish --token <token>`
as a fallback if `.pypirc` isn't available.)
## Music Preferences
- Detune: keep at 8-15, don't go above 25
- Humanize: 0.2 is the sweet spot for melodic parts
- Drum humanize: 0.15 default is good
- No swing unless specifically asked
- Sine and triangle are underrated — use them more