Contributing to Stickler
Welcome to the Stickler contributor documentation. This section provides everything you need to contribute code, tests, and documentation to the project.
Getting Started
Before contributing, set up your development environment:
- Development Setup - Configure your local environment
- Review the Testing Guide to understand testing conventions
- Read the Code Style Guide for coding standards
Guides
| Guide | Description |
|---|---|
| Testing Guide | Test patterns, coverage, and best practices |
| Code Style | Naming conventions, linting, type hints |
| Pull Request Guide | Branch workflow, commit messages, PR process |
Quick Reference
Common Commands
| Task | Command |
|---|---|
| Run all tests | pytest tests/ |
| Run with coverage | coverage run -m pytest tests/ && coverage report |
| Run specific module tests | pytest tests/structured_object_evaluator/ |
| Run single test | pytest tests/path/test_file.py::test_name |
| Lint check | ruff check . |
| Lint fix | ruff check --fix . |
Development Workflow
- Fork the repository
- Create a branch from
dev(notmain) - Make your changes
- Run tests and linting
- Submit PR to
devbranch
Commit Message Format
Refer to this guide for clear conventional commit guidelines
type: brief description
Types: feat, fix, docs, style, refactor, test, chore
Examples:
feat: add NumericComparator tolerance parameter
fix: handle None values in LevenshteinComparator
docs: add testing best practices guide
test: add edge case tests for empty lists
Project Structure
stickler/
├── src/stickler/
│ ├── structured_object_evaluator/ # Core evaluation engine
│ ├── comparators/ # Comparison algorithms
│ ├── algorithms/ # Matching algorithms
│ ├── utils/ # Shared utilities
│ └── reporting/ # Result formatting
├── tests/
│ ├── structured_object_evaluator/ # Core evaluation tests
│ ├── common/ # Comparator and algorithm tests
│ └── reporting/ # Report generation tests
├── docs/ # Documentation (MkDocs)
└── examples/ # Usage examples
Getting Help
- Issues: Report bugs or suggest features via GitHub Issues
Code of Conduct
This project follows the Amazon Open Source Code of Conduct.