Thanks for considering contributing to FlashQ! Here's how to get started.
git clone https://github.com/bysiber/flashq.git
cd flashq
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"# All tests
pytest tests/ -v
# With coverage
pytest tests/ --cov=flashq --cov-report=term-missing
# Specific test file
pytest tests/test_core.py -v# Lint
ruff check flashq/
# Format
ruff format flashq/
# Type check
mypy flashq/ --ignore-missing-imports- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Write tests for your changes
- Ensure all tests pass and linting is clean
- Submit a PR with a clear description
flashq/
├── app.py # FlashQ class, task registry
├── task.py # Task decorator, TaskHandle
├── models.py # TaskMessage, TaskResult dataclasses
├── worker.py # Worker process, task execution
├── middleware.py # Middleware system
├── scheduler.py # Periodic/cron task scheduler
├── backends/
│ ├── __init__.py # BaseBackend ABC
│ ├── sqlite.py # SQLite backend (default)
│ ├── postgres.py # PostgreSQL backend
│ └── redis.py # Redis backend
├── serializers.py # JSON/Pickle serialization
├── cli.py # Command-line interface
├── enums.py # TaskState, TaskPriority
└── exceptions.py # Exception hierarchy
- Subclass
BaseBackendfromflashq.backends - Implement all abstract methods
- Add tests in
tests/test_backend_yourname.py - Add optional dependency in
pyproject.toml
- Python 3.10+ features are welcome
- Type hints everywhere
- Docstrings for public APIs
- Keep imports sorted (ruff handles this)