Contributing to Yagra¶
Thank you for your interest in contributing to Yagra! This guide will help you get started.
For detailed development setup and guidelines, see CONTRIBUTING.md in the repository root.
Quick Start¶
Prerequisites¶
Python 3.12+
uv (recommended package manager)
Setup¶
git clone https://github.com/shogo-hs/Yagra.git
cd Yagra
uv sync --dev
Run Quality Checks¶
uv run pre-commit run --all-files
Project Structure¶
Yagra/
├── src/yagra/ # Source code
│ ├── adapters/ # Inbound/Outbound adapters
│ ├── application/ # Use cases and services
│ ├── domain/ # Domain entities and services
│ ├── ports/ # Port interfaces
│ └── templates/ # Workflow templates
├── tests/ # Test suite
├── examples/ # Example workflows
└── docs/ # Documentation
Development Workflow¶
Fork and Clone: Fork the repository and clone your fork
Create Branch:
git checkout -b feature/my-featureMake Changes: Implement your feature or fix
Run Tests:
uv run pytestRun Quality Checks:
uv run pre-commit run --all-filesCommit: Follow conventional commit format
Push:
git push origin feature/my-featureCreate PR: Submit a pull request with clear description
Coding Standards¶
Type Hints: Required for all function signatures
Docstrings: Use Google style with Japanese descriptions
Formatting:
ruff format .Linting:
ruff check .Type Checking:
mypy .
Testing¶
# Run all tests
uv run pytest
# Run with coverage
uv run pytest --cov=yagra --cov-report=html
# Run specific test file
uv run pytest tests/test_yagra.py
Documentation¶
Building Sphinx Documentation¶
uv run sphinx-build -b html docs/sphinx/source docs/sphinx/_build/html
Open docs/sphinx/_build/html/index.html in your browser.
Documentation Guidelines¶
Write in English (primary language)
Use Markdown (
.md) with MyST parserInclude code examples for all features
Update docstrings for Python API changes
Questions?¶
GitHub Issues: https://github.com/shogo-hs/Yagra/issues
Discussions: https://github.com/shogo-hs/Yagra/discussions
License¶
By contributing, you agree that your contributions will be licensed under the MIT License.