Development and pull requests
October 6, 2025 · View on GitHub
We appreciate any contribution to the Geti™ SDK, whether it's in the form of a Pull Request, Feature Request or general comment/issue that you found. For feature requests and issues, please feel free to create a GitHub Issue in this repository.
Development and pull requests
To set up your development environment, please follow the steps below:
-
Clone the repository or a fork (for external contributors):
git clone https://github.com/openvinotoolkit/geti-sdk.git cd geti-sdk -
Checkout the desired branch or commit based off the
mainbranch. -
Install uv following the official uv documentation.
-
Set up the development environment with all dependencies:
uv sync --all-extras -
Make sure that
git lfsis configured for your Git account, by following the steps here. Git LFS (Large File Storage) is used in this repo to manage certain data files used in the tests. -
Run
git lfs pullto download the test data. -
Verify that the integration tests now run locally by executing
pytest tests/integration -
Set up the pre-commit hooks in the repo by running
pre-commit install. Several pre-commit hooks are used in the repo to lint and format the code. Thepre-commit installcommand sets up all of these hooks so that the checks will be performed on each commit you make.
You should now be ready to make changes, run the SDK integration tests and create a Pull Request!
Testing your code
More details about the tests can be found in the readme for the test suite. If your changes require updating the tests or the test data, please refer to that document.
Security
To ensure our codebase remains secure, we leverage GitHub Actions for continuous security scanning (on PR and periodically) with the following tools:
- CodeQL: static analysis tool to check Python code and GitHub Actions workflows
- Semgrep: static analysis tool to check Python code; ML-specific Semgrep rules developed by Trail of Bits are used
- Bandit: Static analysis tool to check Python code
- Zizmor: Static analysis tool to check GitHub Actions workflows
- Trivy: Check misconfigurations and detect security issues in dependencies
| Tool | Pre-commit | PR-checks | Periodic |
|---|---|---|---|
| CodeQL | ✅ | ✅ | |
| Semgrep | ✅ | ||
| Bandit | ✅ | ✅ | |
| Zizmor | ✅ | ✅ | |
| Trivy | ✅ |
Suppressing False Positives
If necessary, to suppress false positives, add inline comment with specific syntax. Please also add a comment explaining why you decided to disable a rule or provide a risk-acceptance reason.
Bandit
Findings can be ignored inline with # nosec BXXX comments.
import subprocess # nosec B404 # this is actually fine
Details in Bandit docs.
Zizmor
Findings can be ignored inline with # zizmor: ignore[rulename] comments.
uses: actions/checkout@v3 # zizmor: ignore[artipacked] this is actually fine
Details in Zizmor docs.
Semgrep
Findings can be ignored inline with # nosemgrep: rule-id comments.
# nosemgrep: python.lang.security.audit.dangerous-system-call.dangerous-system-call # this is actually fine
r = os.system(' '.join(command))
Details in Semgrep docs.