Contributing#
We welcome contributions to Synora! This guide covers how to get started.
Development Setup#
Clone the repository
git clone https://github.com/ParamThakkar123/synora.git cd synora
Install in development mode
uv sync --dev
If you are not using
uv, use the equivalent editable install:python -m pip install -e ".[dev]"
Install pre-commit hooks
uv run pre-commit install
Code Style#
We use:
Black for code formatting
Ruff for linting
MyPy for type checking
Pre-commit for automated checks
Run checks:
# Format code
uv run black .
# Lint
uv run ruff check .
# Type check
uv run mypy .
# All checks
uv run pre-commit run --all-files
Testing#
Run the test suite:
# All tests
pytest
# Fast subset (skip slow, GPU, and integration tests)
pytest -m "not slow and not gpu and not integration"
# Specific package-mirrored test area
pytest tests/masks/test_masks.py
# With coverage
pytest --cov=synora --cov-report=html
Documentation#
Build docs locally:
cd docs
sphinx-build -b html source build/html
Open docs/build/html/index.html in your browser.
Adding New Features#
1. New Models#
Create model class in
synora/models/Add config class in
synora/configs/Export both from
synora/__init__.pyUpdate training scripts
Add documentation and tests
2. New Environments#
Implement environment wrapper in
synora/envs/Add to environment registry
Update documentation
Pull Request Process#
Fork the repository
Create a feature branch
git checkout -b feature/my-feature
Make your changes
Run tests and checks
uv run pre-commit run --all-files uv run pytest
Update documentation if needed
Commit your changes
git commit -m "Add feature: my feature"
Push to your fork
git push origin feature/my-feature
Create a Pull Request
Commit Messages#
Use conventional commit format:
feat:New featuresfix:Bug fixesdocs:Documentationtest:Testingrefactor:Code refactoringchore:Maintenance
Examples:
feat: add I-JEPA linear evaluationfix: resolve memory leak in dreamer trainingdocs: update inference guide
Issue Reporting#
Bug reports: Use the bug report template
Feature requests: Use the feature request template
Questions: Use discussions
Code of Conduct#
Please follow our code of conduct in all interactions.
License#
By contributing, you agree that your contributions will be licensed under the MIT License.