We welcome contributions that align with Ember's philosophy of simplicity and power.
# Clone the repository
git clone https://github.com/pyember/ember.git
cd ember
# Install dependencies with uv
uv sync --all-extras
# Run tests
uv run pytest
# Type checking
uv run mypy src/
# Linting and formatting
uv run ruff check . --fix
uv run ruff format .- Style: Google Python Style Guide with 100-character line limit
- Types: Strict typing; aim for mypy
--strictcleanliness - Tests: Maintain test coverage; add tests for new functionality
- Docs: Google docstring format with Args/Returns/Raises sections
- Fork the repository and create a feature branch
- Write tests for new functionality
- Ensure all tests pass:
uv run pytest - Ensure type checking passes:
uv run mypy src/ - Ensure linting passes:
uv run ruff check . - Submit a pull request with a clear description
Use conventional commits:
feat(models): add support for new providerfix(xcs): resolve parallelization issuedocs(readme): update installation instructionstest(operators): add edge case coverage
When contributing, keep these principles in mind:
- Simple by Default - Basic usage requires no configuration
- Progressive Disclosure - Complexity available when needed
- Composition Over Configuration - Build complex from simple
- Explicit Over Magic - No hidden behaviors or
__getattr__tricks
- New Providers: Add support for additional LLM providers
- Operators: Create new composable operators for common patterns
- Data Sources: Add loaders for popular datasets
- Documentation: Improve examples and guides
- Performance: Optimize critical paths with profiling data
Open an issue for questions about contributing or to discuss larger changes before implementing.
By contributing, you agree that your contributions will be licensed under the MIT License.