Contributing¶
We'd love your help making Notionary even better! ๐
Quick Setup¶
Prerequisites¶
- Python 3.9+
- uv (install from docs.astral.sh/uv)
Development Setup¶
- Fork and clone the repository
- Install dependencies with uv
- Install pre-commit hooks
- Run tests to verify setup
Making Changes¶
- Create a new branch
- Make your changes and test
# Run tests
uv run pytest
# Run linting and formatting (or let pre-commit handle it)
uv run ruff check .
uv run ruff format .
# Type checking
uv run mypy notionary
- Commit and push
git add .
git commit -m "Add your feature description"
# Pre-commit hooks will automatically run and fix formatting
git push origin feature/your-feature-name
- Open a Pull Request
Development Tools¶
- Ruff handles linting and code formatting
- MyPy for type checking
- Pre-commit automatically runs checks before each commit
- Pytest for testing
What We're Looking For¶
- ๐ Bug fixes - Found something broken? Fix it!
- โจ New features - Ideas for improvements or new functionality
- ๐ Documentation - Help make our docs clearer and more complete
- ๐งช Tests - More test coverage is always welcome
- ๐จ Examples - Real-world usage examples and tutorials
Guidelines¶
- Keep changes focused and atomic
- Add tests for new functionality
- Update documentation as needed
- Follow existing code style (enforced by Ruff and pre-commit)
- Be descriptive in commit messages
- Let pre-commit handle formatting - don't worry about manual formatting
Code Quality¶
The project uses:
- Ruff for fast linting and formatting
- MyPy for type checking
- Pre-commit hooks that automatically run before commits
- Pytest for comprehensive testing
When you commit, pre-commit will automatically:
- Format your code with Ruff
- Fix common linting issues
- Run type checking
- Perform security checks
All contributions are very welcome! No contribution is too small - from fixing typos to adding major features, we appreciate it all.
Thanks for helping make Notionary awesome! ๐