First off, thank you for considering contributing to Build Influence! We welcome any help, from reporting bugs and suggesting features to submitting code changes.
- Ensure the bug was not already reported by searching on GitHub under Issues. (Replace
drorivry/build-influencewith your actual repository path if different). - If you're unable to find an open issue addressing the problem, open a new one. Be sure to include a title and clear description, as much relevant information as possible, and a code sample or an executable test case demonstrating the expected behavior that is not occurring.
- Open a new issue using the Feature Request template.
- Clearly describe the enhancement and the motivation for it.
- Explain why this enhancement would be useful.
- Provide code examples if applicable.
We actively welcome your pull requests:
- 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 (
pytest tests/). - Make sure your code lints (
flake8 src/ tests/) and is formatted (black src/ tests/). - Ensure type checks pass (
mypy src/ tests/). - Issue that pull request!
- Fork the repository on GitHub.
- Clone your fork locally:
git clone git@github.com:YOUR_USERNAME/build-influence.git cd build-influence - Create a virtual environment (recommended):
python3.12 -m venv venv source venv/bin/activate # On Windows use `venv\Scripts\activate`
- Install dependencies:
pip install -r requirements.txt # Install development/testing tools and type stubs if they are not in requirements.txt pip install black flake8 mypy pytest pytest-cov build twine types-tqdm types-PyYAML
- Please follow the PEP 8 style guide.
- Use
flake8for linting andblackfor formatting. Our CI pipeline checks this, so please runflake8 src/ tests/andblack src/ tests/before committing. - Use type hints (
mypy) for static analysis. Our CI pipeline checks this. - Write tests using
pytestfor new functionality.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. (Consider adding a CODE_OF_CONDUCT.md file).
Feel free to open an issue if you have questions about contributing.
Thank you for your contribution!