Thank you for your interest in contributing! By submitting a pull request, you agree that your contributions will be licensed under the MIT License that covers this project.
Please use the issue tracker to report bugs or request features.
- Open an issue first to discuss significant changes.
- Fork the repository and create a feature branch.
- Make your changes, keeping pull requests focused on a single topic.
- Follow the existing code style and conventions.
- Add or update tests for any new or changed functionality.
- If updating the README, update the corresponding mustache template in
templates-python/and runmake generateto regenerate. - Ensure all tests and checks pass before submitting:
# Run the test suite
pytest
# Run specific tests
pytest tests/path/to/test_file.py
pytest tests/path/to/test_file.py::test_method_name
# Type checking
mypy bamboohr_sdk/
# Linting
ruff check bamboohr_sdk/ tests/- Open a pull request with a clear description of the change.
Publishing is automated via GitHub Actions using PyPI Trusted Publishing (OIDC). No API tokens are stored in the repo.
Every merge to main triggers publish-testpypi.yml, which builds the package and publishes to TestPyPI. Re-merges without a version bump are skipped (not failed) via skip-existing.
Verify a TestPyPI release locally:
pip install --index-url https://test.pypi.org/simple/ \
--extra-index-url https://pypi.org/simple/ \
bamboohr-sdk- Bump
versioninpyproject.tomlvia PR and merge tomain. Theclassify-semvermake target can determine the appropriate bump:make classify-semver OLD=specs/public.yaml NEW=/tmp/new.yaml APPLY=true
- After the TestPyPI publish completes, validate the package against a real consumer.
- Tag the release commit and push:
git tag v1.2.3 git push origin v1.2.3
publish-pypi.ymlruns. It verifies the tag matchespyproject.toml, then waits for approval on thepypiGitHub environment before publishing.- Approve the deployment in the GitHub Actions UI. The package will appear at https://pypi.org/project/bamboohr-sdk/.
Day-to-day publishing does not need credentials — OIDC handles auth. Credentials are only needed to manage the project in the PyPI web UI (e.g., updating the trusted publisher config or managing maintainers). The shared BambooHR PyPI and TestPyPI account credentials are stored in Vault.
Use of the BambooHR API is subject to the BambooHR Developer Terms of Service.