First off, thank you for considering contributing to Polypore! It's people like you that make Polypore such a great tool.
- Code of Conduct
- Development Setup
- Development Process
- Pull Request Process
- Project Structure
- Style Guidelines
- Testing
- Documentation
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [maintainers@mycelium.ai].
-
Fork and Clone
git clone https://github.com/yourusername/polypore.git cd polypore -
Environment Setup
make setup # Creates .env file from template -
Launch
make up
-
Create a Branch
git checkout -b feat/your-feature-name # or git checkout -b fix/your-fix-name -
Make Your Changes
- Write clean, maintainable code
- Follow the style guidelines
- Add tests for new features
- Update documentation as needed
-
Verify Your Changes
make test # Run all tests make lint # Check code style make format # Format code
-
Before Submitting
- Update documentation
- Add/update tests
- Run full test suite
- Format code
- Update changelog if needed
-
Submitting
- Fill in the pull request template
- Link any relevant issues
- Request review from maintainers
-
After Submitting
- Respond to review comments
- Make requested changes
- Rebase if needed
- Use type hints
- Follow PEP 8
- Use docstrings for functions and classes
- Format with Ruff
Example:
def clean(self, client_name: str, delete_all: bool) -> dict[str, Any]:
"""
Deletes duplicate resources for a given client.
:param str client_name: The name of the target client.
:param bool delete_all: Determines the extent of deletion.
:return dict[str, Any]: The status response
"""