Thanks for your interest! BluePy is an honest alpha: we would rather ship a small set of trustworthy checks than a large set of unreliable ones. Please keep that bar in mind when contributing.
BluePy uses uv and is pinned to Python 3.12.
uv python install 3.12
uv sync --extra dev # minimal scan path + test/lint tooling
# add extras as needed for the area you touch:
uv sync --extra report --extra db --extra devAlways run from the repository root (uv run …); the scanner imports src.*
and reads relative config/rules.
uv run pytest tests/unit tests/integration # Docker-free
uv run pytest tests/acceptance/test_acceptance_logic.py
uv run python tests/acceptance/run_acceptance.py # live, needs Docker/colima- GUI tests (
tests/unit/test_gui_components.py) auto-skip unless theguiextra (PySide6) is installed. - Windows remediation tests need
--extra windows(pywinrm).
- Format with
blackand lint withruff(line length 100):uv run black .anduv run ruff check .. - Type hints are expected on new functions.
The default scan exposes only verified checks. To graduate a check from
experimental to verified:
- The rule YAML lives under
config/rules/<platform>/and maps to a validator. - The validator uses anchored matchers (e.g. exact tokens / structured parsing), not loose substring guesses.
- There are branch-covered causal tests asserting all three outcomes
(PASS, FAIL, MANUAL) against realistic command output — see
tests/acceptance/test_acceptance_logic.pyfor the pattern. Where feasible, include a one-time real command capture as a fixture. - Set
experimental: falsein the rule YAML. - For Linux, prefer adding live coverage to
run_acceptance.py.
Checks that cannot meet this bar should stay experimental: true (the default)
so they are excluded from the trusted scan.
- Open an issue to discuss non-trivial changes first.
- Keep PRs focused; update or add tests for behavior you change.
- Do not weaken the honesty invariants: no false-PASS validators, no exposing
unverified checks by default, and keep the
--jsonpayload at its frozen 7-key shape. - Ensure
uv run pytest tests/unit tests/integrationis green.
By contributing you agree your contributions are licensed under the project's MIT License.