-
Clone the repository
git clone https://github.com/lbl-srg/funnel.git cd funnel -
Install development dependencies
pip install -e ".[dev,publish]" -
Install system dependencies (for building from source)
# Ubuntu/Debian sudo apt-get install cmake build-essential # macOS brew install cmake # Windows # Install Visual Studio Build Tools and CMake
We use Commitizen for consistent commit messages and automated versioning and changelog.
Important commits that should be considered for semantic versioning and that should appear in the changelog must include a proper commit type, such as:
feat: New featuresfix: Bug fixesrefactor: Code refactoring
A major version bump is triggered by the detection of BREAKING CHANGE in the commit body.
Multiple breaking changes are allowed in a single commit but they must be separate, as opposed to bullet points under a unique BREAKING CHANGE.
refactor: Modernize packaging and refactor entry point
BREAKING CHANGE: Python 2 is no longer supported.
BREAKING CHANGE: The standalone CLI script has been renamed from pyfunnel/pyfunnel.py to pyfunnel/cli.py.
-
Open an issue
-
Create a feature branch
git checkout -b issueXX_description
-
Make your changes and commit using the above guidelines
-
Build the project and test your changes
mkdir -p build && cd build cmake .. # Add `-A x64` on Windows to compile in 64 bits cmake --build . --target install --config Release ctest -C Release --verbose
-
Submit a pull request to the
masterbranch
Releases are automated using our CI/CD pipeline:
- Staging: Changes are tested on the
stagingbranch — which can be checked out and updated with new commits if needed. - Master: Production-ready releases are tagged and published to PyPI.
Contributors don't need to manage versions manually - Commitizen handles this automatically based on commit messages.