blob: 4cc08b61c5ddab0cfbe688f237ed3fc0826f8772 [file] [view]
# Development
This guide covers development setup and contributing to otava-test-data.
## Development Setup
Clone the repository and install development dependencies:
```bash
git clone https://github.com/your-username/otava-test-data.git
cd otava-test-data
pip install -e ".[all]"
```
## Running Tests
Run the test suite with pytest:
```bash
pytest
```
With coverage:
```bash
pytest --cov=otava_test_data --cov-report=html
```
## Code Style
This project uses [ruff](https://github.com/astral-sh/ruff) for linting and formatting:
```bash
ruff check .
ruff format .
```
## Building Documentation
Build the Sphinx documentation:
```bash
cd docs
make html
```
Or using invoke:
```bash
invoke docs
```
## Releasing
Releases are automated via GitHub Actions. The workflow publishes to PyPI when a release is created.
### Release Process
1. Update the version in `pyproject.toml`
2. Commit the version change
3. Create and push a git tag:
```bash
git tag v0.1.0
git push origin v0.1.0
```
4. Create a GitHub Release from the tag
5. The GitHub Action will automatically build and publish to PyPI
### PyPI Trusted Publishing Setup
The publish workflow uses PyPI trusted publishing (OIDC). To enable this:
1. Go to your PyPI project settings
2. Add a new trusted publisher with:
- Owner: your GitHub username or organization
- Repository: otava-test-data
- Workflow name: publish.yml
- Environment: pypi
For TestPyPI, create a similar trusted publisher with environment: testpypi
### Manual Testing with TestPyPI
You can manually trigger the workflow to publish to TestPyPI for testing:
1. Go to Actions > Publish to PyPI
2. Click "Run workflow"
3. This will build and publish to TestPyPI only
Install from TestPyPI to verify:
```bash
pip install --index-url https://test.pypi.org/simple/ otava-test-data
```