mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-18 13:40:27 +02:00
- Remove implementation details that will rot (code templates, tutorials) - Keep only stable contracts: ownership, lifecycle, protocols, error semantics - 270 lines → reference that only changes when architecture changes
56 lines
1.4 KiB
Markdown
56 lines
1.4 KiB
Markdown
# Contributing to Abogen
|
|
|
|
We welcome contributions to Abogen!
|
|
|
|
## How to Contribute
|
|
|
|
1. Fork the repository
|
|
2. Create a branch for your feature
|
|
3. Make your changes
|
|
4. Write tests
|
|
5. Submit a pull request
|
|
|
|
## Code Standards
|
|
|
|
- Follow PEP 8 for Python
|
|
- Use TypeScript for JavaScript
|
|
- Type hints required for new Python code
|
|
- Document complex logic with comments
|
|
|
|
## Plugin Architecture
|
|
|
|
When contributing TTS engines, implement the **Plugin Architecture** contract.
|
|
|
|
See [Developer Guide](developer-guide.md#5-adding-a-new-plugin) for:
|
|
- Required exports (`PLUGIN_MANIFEST`, `MODEL_REQUIREMENTS`, `create_engine`)
|
|
- Engine / EngineSession contracts
|
|
- Capability interfaces (`VoiceLister`, `PreviewGenerator`, etc.)
|
|
- Step-by-step plugin creation guide
|
|
|
|
## Testing
|
|
|
|
```bash
|
|
# All tests
|
|
pytest
|
|
|
|
# Contract tests (architectural compliance)
|
|
pytest tests/contracts/
|
|
|
|
# Behavioral regression tests
|
|
pytest tests/test_behavioral_regression.py
|
|
```
|
|
|
|
## Documentation
|
|
|
|
- Update relevant docs in `docs/` when changing architecture or APIs
|
|
- Add docstrings to all public functions/classes
|
|
- Follow existing documentation style
|
|
|
|
## Pull Request Checklist
|
|
|
|
- [ ] Tests pass (`pytest`)
|
|
- [ ] Code follows style guide (`ruff check`, `ruff format`)
|
|
- [ ] Documentation updated
|
|
- [ ] No legacy architecture references (`TTSBackend`, `register_backend`, `TTSBackendRegistry`)
|
|
- [ ] Uses new Plugin Architecture patterns
|