First off, thank you for considering contributing to PyramidPy Tools! It's people like you that make PyramidPy Tools such a great toolkit.
By participating in this project, you are expected to uphold our Code of Conduct. Please report unacceptable behavior to [project maintainers].
Before creating bug reports, please check the issue list as you might find out that you don't need to create one. When you are creating a bug report, please include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps which reproduce the problem
- Provide specific examples to demonstrate the steps
- Describe the behavior you observed after following the steps
- Explain which behavior you expected to see instead and why
- Include any error messages or stack traces
If you have a suggestion for a new feature or enhancement:
- Use a clear and descriptive title
- Provide a step-by-step description of the suggested enhancement
- Provide specific examples to demonstrate the steps
- Describe the current behavior and explain which behavior you expected to see instead
- Explain why this enhancement would be useful
- Fork the repo and create your branch from
main
- If you've added code that should be tested, add tests
- If you've changed APIs, update the documentation
- Ensure the test suite passes
- Make sure your code follows the existing style (we use
black
for formatting)
-
Set up your development environment:
# Clone your fork git clone https://github.com/<your-username>/pyramidpy-tools.git cd pyramidpy-tools # Install dependencies uv sync --all-extras
-
Create a new branch:
git checkout -b feature/your-feature-name
-
Make your changes and commit:
git add . git commit -m "feat: add your feature"
-
Push to your fork:
git push origin feature/your-feature-name
-
Open a Pull Request
We follow the Conventional Commits specification. Each commit message should be structured as follows:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Types:
feat
: A new featurefix
: A bug fixdocs
: Documentation only changesstyle
: Changes that do not affect the meaning of the coderefactor
: A code change that neither fixes a bug nor adds a featureperf
: A code change that improves performancetest
: Adding missing tests or correcting existing testschore
: Changes to the build process or auxiliary tools
- Write test cases for any new functionality
- Run the test suite before submitting:
pytest tests/
- Ensure test coverage is maintained or improved
- Update the README.md if you change functionality
- Add docstrings to new functions/classes following Google style
- Update type hints for all function parameters and return values
- We use
black
for code formatting - Follow PEP 8 guidelines
- Use type hints for all function parameters and return values
- Write descriptive variable names
- Add comments for complex logic
- Keep functions focused and concise
Feel free to open an issue with your question or reach out to the maintainers directly.
Thank you for contributing! 🎉