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
1.4 KiB
1.4 KiB
Contributing to Abogen
We welcome contributions to Abogen!
How to Contribute
- Fork the repository
- Create a branch for your feature
- Make your changes
- Write tests
- 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 for:
- Required exports (
PLUGIN_MANIFEST,MODEL_REQUIREMENTS,create_engine) - Engine / EngineSession contracts
- Capability interfaces (
VoiceLister,PreviewGenerator, etc.) - Step-by-step plugin creation guide
Testing
# 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