blob: 247c69dfbe5c37ecc1b8263eb4021d39e3bc323a [file] [view]
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# 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
```