Skip to content

Latest commit

 

History

History
43 lines (31 loc) · 1.81 KB

File metadata and controls

43 lines (31 loc) · 1.81 KB

Contributing to toolpass

Thanks for taking the time. Bug reports, integration requests and pull requests are all welcome.

Before you start

  • For anything larger than a small fix, open an issue first so we can agree on the approach.
  • Security problems go through SECURITY.md, not public issues.
  • Writing your change with an AI assistant is fine; it is how much of the project was written. The tests in the PR are what gets reviewed, so include them, and say in the PR what you ran.

Development

toolpass is a Python package in toolpass-py/ (Python 3.10 or later). From there:

pip install -e ".[crypto]" pytest pytest-timeout hypothesis ruff mypy types-PyYAML
ruff format --check src tests examples   # must report nothing to reformat
ruff check src tests examples
mypy --strict src/toolpass
python -m pytest -q             # unit tests against fake upstreams

The Node client is in toolpass-ts/ (npm ci && npm test). CI also validates every integration's requests against the vendors' API descriptions, runs a Kubernetes end-to-end test on kind and an Argo CD differential test. See docs/development/testing.md to run them locally.

Adding an integration

Read docs/development/integration-authoring.md. A new integration needs:

  • a read-only credential and the minimum permissions it requires, documented in docs/integrations/<name>.md;
  • tests against a fake upstream, including a test_action_<name>_allow and _deny for each action;
  • unknown, never deny, whenever the upstream answer cannot be evaluated.

Pull requests

  • Keep each PR focused on one change.
  • Add or update tests for the behaviour you change.
  • By contributing you agree that your contribution is licensed under the Apache License 2.0.