Thank you for your interest in contributing to Taurus Executor! This document provides guidelines and instructions for contributing.
By participating in this project, you agree to abide by our Code of Conduct. Please be respectful and constructive in all interactions.
- Fork and clone the repository
- Install dependencies:
poetry install --with dev
- Generate gRPC code:
make build-all
- Run tests to ensure everything works:
make test
-
Create a feature branch from
main:git checkout -b feature/your-feature-name
-
Make your changes
-
Format your code:
make format
-
Run linters:
make lint
-
Run tests:
make test -
Commit your changes with clear, descriptive commit messages
-
Push to your fork and submit a Pull Request
- Code follows the project's style guidelines
- Self-review completed
- Code is commented where necessary
- Tests added for new functionality
- All tests pass (
make test) - Linters pass (
make lint) - Documentation updated if necessary
Please include:
- What changes you made
- Why you made these changes
- How to test the changes
- Any breaking changes or migration notes
Follow Conventional Commits format:
type(scope): description
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Examples:
feat(executor): add support for interactive sessions
fix(sdk): resolve connection timeout issue
docs(readme): update installation instructions
test(handlers): add unit tests for command execution
We use:
- Black for code formatting
- isort for import sorting
- flake8 for linting
- mypy for type checking
Run make format and make lint to ensure compliance.
# All tests
make test
# Unit tests only
pytest tests/unit/
# Integration tests only
pytest tests/integration/
# Specific test file
pytest tests/unit/test_executor.py
# With verbose output
pytest -v
# With coverage
pytest --cov=executor_core- Write tests for all new functionality
- Unit tests should be fast and isolated
- Integration tests should test real gRPC communication
- Use fixtures from
conftest.pyfor common setup
Taurus Executor consists of several key components:
- executor_core: Main server implementation
executors/: Command execution enginesservices/: gRPC services and handlersinfra/: Infrastructure (config, TLS, logging, state)
- manage: Client SDK and CLI tools
sdk/: Python client librarycli.py: Command-line interface
- proto: Protocol buffer definitions
When reporting bugs, please include:
- Taurus Executor version
- Python version
- Operating system
- Steps to reproduce
- Expected behavior
- Actual behavior
- Logs (if applicable)
We welcome feature requests! Please:
- Check existing issues to avoid duplicates
- Describe the use case clearly
- Explain why this feature would be valuable
- Suggest implementation approach (optional)
Good documentation is crucial. When contributing:
- Update relevant docs in
docs/ - Add docstrings to new functions/classes
- Update README if user-facing changes
- Include examples for new features
Releases are managed by maintainers. The process:
- Version bump in
pyproject.toml - Update
CHANGELOG.md - Create release tag
- Build and publish to PyPI
- Create GitHub release with binaries
- General questions: Open a Discussion
- Bug reports: Open an Issue
- Code review: Submit a Pull Request
Thank you for contributing! 🎉