146 lines
3.2 KiB
Markdown
146 lines
3.2 KiB
Markdown
# Contributing to Compose
|
|
|
|
Thank you for your interest in contributing to the Compose project! This document provides guidelines and information for contributors.
|
|
|
|
## Development Setup
|
|
|
|
1. **Clone the repository:**
|
|
```bash
|
|
git clone <repository-url>
|
|
cd compose
|
|
```
|
|
|
|
2. **Install development dependencies:**
|
|
```bash
|
|
uv pip install -e ".[dev]"
|
|
```
|
|
|
|
3. **Install pre-commit hooks:**
|
|
```bash
|
|
make pre-commit-install
|
|
```
|
|
|
|
## Development Workflow
|
|
|
|
### Code Quality
|
|
|
|
We use several tools to maintain code quality:
|
|
|
|
- **Ruff**: For linting and formatting
|
|
- **MyPy**: For type checking
|
|
- **Pre-commit**: For automated checks on commit
|
|
|
|
### Running Checks
|
|
|
|
```bash
|
|
# Run all checks
|
|
make check-all
|
|
|
|
# Run individual checks
|
|
make lint # Linting
|
|
make format # Code formatting
|
|
make type-check # Type checking
|
|
make test # Tests
|
|
make test-cov # Tests with coverage
|
|
```
|
|
|
|
### Pre-commit Hooks
|
|
|
|
Pre-commit hooks will automatically run on each commit. To run them manually:
|
|
|
|
```bash
|
|
make pre-commit-run
|
|
```
|
|
|
|
## Testing
|
|
|
|
### Running Tests
|
|
|
|
```bash
|
|
# Run all tests
|
|
make test
|
|
|
|
# Run tests with coverage
|
|
make test-cov
|
|
|
|
# Run specific test file
|
|
uv run pytest tests/test_specific.py
|
|
|
|
# Run tests with verbose output
|
|
uv run pytest -v
|
|
```
|
|
|
|
### Writing Tests
|
|
|
|
- Place all tests in the `tests/` directory
|
|
- Use descriptive test names
|
|
- Follow the existing test patterns
|
|
- Include both positive and negative test cases
|
|
- Test edge cases and error conditions
|
|
|
|
## Code Style
|
|
|
|
### Python Code
|
|
|
|
- Follow PEP 8 style guidelines
|
|
- Use type hints for all function parameters and return values
|
|
- Write docstrings for all public functions and classes
|
|
- Use Google-style docstrings
|
|
|
|
### Commit Messages
|
|
|
|
- Use clear, descriptive commit messages
|
|
- Start with a verb in present tense (e.g., "Add", "Fix", "Update")
|
|
- Keep the first line under 50 characters
|
|
- Add more details in the body if needed
|
|
|
|
Example:
|
|
```
|
|
Add support for Docker Compose volumes
|
|
|
|
- Implement VolumeConfig class
|
|
- Add add_volume and remove_volume methods
|
|
- Include comprehensive tests
|
|
```
|
|
|
|
## Pull Request Process
|
|
|
|
1. **Create a feature branch** from the main branch
|
|
2. **Make your changes** following the coding guidelines
|
|
3. **Write tests** for new functionality
|
|
4. **Run all checks** to ensure code quality
|
|
5. **Update documentation** if needed
|
|
6. **Submit a pull request** with a clear description
|
|
|
|
### Pull Request Checklist
|
|
|
|
- [ ] Code follows the project's style guidelines
|
|
- [ ] Tests pass and coverage is maintained
|
|
- [ ] Documentation is updated
|
|
- [ ] Pre-commit hooks pass
|
|
- [ ] Type checking passes
|
|
- [ ] Linting passes
|
|
|
|
## Reporting Issues
|
|
|
|
When reporting issues, please include:
|
|
|
|
- A clear description of the problem
|
|
- Steps to reproduce the issue
|
|
- Expected behavior
|
|
- Actual behavior
|
|
- Environment details (Python version, OS, etc.)
|
|
- Any relevant error messages or logs
|
|
|
|
## Getting Help
|
|
|
|
If you need help or have questions:
|
|
|
|
- Check the existing documentation
|
|
- Look at existing issues and pull requests
|
|
- Create a new issue for bugs or feature requests
|
|
- Ask questions in discussions
|
|
|
|
## License
|
|
|
|
By contributing to this project, you agree that your contributions will be licensed under the same license as the project. |