Thank you for your interest in contributing! This project uses a few tools to ensure code quality and consistency.
- Clone the repository
- Create a virtual environment:
python -m venv .venv source .venv/bin/activate # or .venv\Scripts\activate on Windows
- Install the package in editable mode with development dependencies:
pip install -e ".[dev]" - Install pre-commit hooks:
pre-commit install
We use the following tools to maintain code quality:
- Ruff: For linting and formatting.
- Mypy: For static type checking.
- Pytest: For unit testing.
You can run these locally:
# Run linter
ruff check .
# Run formatter
ruff format .
# Run type checker
mypy tasksmd_sync/
# Run tests
pytest- Create a new branch for your feature or bugfix.
- Ensure all tests pass and there are no linting or type errors.
- Submit a Pull Request.
- CI will run all checks automatically on your PR.
This project follows Semantic Versioning.
Releases are automated using GitHub Actions. To make a new release:
-
Prepare Release (Automated):
- Go to the Actions tab in GitHub.
- Select the Prepare Release workflow.
- Click Run workflow, enter the new version (e.g.,
1.2.3), and run it. - This will update
pyproject.toml, commit the change, and push a new tagv1.2.3.
-
Release (Automated):
- The push of the
v*tag triggers the Release workflow. - This workflow builds the package and creates a GitHub Release with the built assets.
- It also updates the corresponding major version tag (e.g.,
v1).
- The push of the
Alternatively, you can manually tag a commit on main and push it:
git tag v1.2.3
git push origin v1.2.3