PyEPlan follows semantic versioning (MAJOR.MINOR.PATCH):
- MAJOR: Breaking changes, incompatible API changes
- MINOR: New features, backward compatible
- PATCH: Bug fixes, backward compatible
# Install bump2version
pip install bump2version
# Bump versions
bump2version patch # 1.1.1 → 1.1.2 (bug fixes)
bump2version minor # 1.1.1 → 1.2.0 (new features)
bump2version major # 1.1.1 → 2.0.0 (breaking changes)# Bump to specific version
python scripts/bump_version.py 1.1.2- Update
pyeplan/__init__.pyline 67:__version__ = '1.1.2'
- Update
.bumpversion.cfg:current_version = 1.1.2
- Bump version using one of the methods above
- Update CHANGELOG.md with release notes
- Create git tag:
git tag v1.1.2 - Push changes and tag:
git push origin main --tags - Create GitHub release with release notes
For development builds, use suffixes:
1.1.1.dev0- Development version1.1.1a1- Alpha release1.1.1b1- Beta release1.1.1rc1- Release candidate
- Python 3.7+
- Git
# Clone repository
git clone https://github.com/SPS-L/pyeplan.git
cd pyeplan
# Install in development mode
pip install -e .
# Install development dependencies
pip install -r requirements.txt# Run tests
python -m pytest tests/
# Run specific test file
python -m pytest tests/test_dataproc.py# Format code
black pyeplan/ tests/
# Lint code
flake8 pyeplan/ tests/
# Type checking (if using mypy)
mypy pyeplan/- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Add tests for new functionality
- Ensure all tests pass
- Update documentation if needed
- Commit your changes:
git commit -m 'Add amazing feature' - Push to your fork:
git push origin feature/amazing-feature - Create a Pull Request
- Use present tense: "Add feature" not "Added feature"
- Use imperative mood: "Move cursor to..." not "Moves cursor to..."
- Limit first line to 72 characters
- Reference issues and pull requests after first line
Example:
Add solar irradiance data fetching from PVGIS API
- Implement PVGIS API client
- Add data validation and error handling
- Include unit tests for API integration
Fixes #123
- Follow PEP 8 style guide
- Use type hints where appropriate
- Write docstrings for all public functions and classes
- Keep functions focused and under 50 lines when possible
- Update docstrings for any changed functions
- Add examples in docstrings
- Update README.md for new features
- Update user guide for significant changes
When reporting bugs, please include:
- Python version
- Operating system
- PyEPlan version
- Minimal example to reproduce the issue
- Expected vs actual behavior
- Error messages and stack traces
By contributing to PyEPlan, you agree that your contributions will be licensed under the Apache Software License.