Changelog#

All notable changes to this project are documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased#

0.4.0rc4 - 2026-10-13#

Fixed#

0.4.0rc3 - 2026-10-13#

Added#

Changed#

Fixed#

0.4.0rc2 - 2026-10-12#

Added#

Changed#

Fixed#

0.4.0rc1 - 2026-10-12#

Release candidate: install it with pip install --pre pytest-queryguard.

This release adds baselines, SARIF output and a GitHub Action, per-finding ignores, new finding kinds (column loads, write loops, unused eager loads), query timing and max_db_time, an index advisor, and a missing-index check for SQLite. It also adds a documentation site and runnable examples. Three things can change the result or the output of an existing test run without any new option: the column-load kind is on by default, the index advisor is on by default with the index check, and the index check now also runs on SQLite. They are listed first under "Changed" as behavior changes, with how to turn them off, as the pre-1.0 clause of the stability policy requires.

Added#

Missing indexes

New findings and rules

Adopting it on an existing project

Ignoring and gating

Timing and budgets

Documentation and examples

Changed#

Behavior changes

Everything else is off by default and changes nothing until you turn it on: queryguard_small_repeat_threshold, queryguard_write_loop_threshold, queryguard_unused_eager_load, queryguard_baseline, queryguard_fail_on (empty: every kind fails, as before) and --queryguard-sarif.

Internals

Fixed#

0.3.0 - 2026-10-11#

Added#

Changed#

Fixed#

0.2.0 - 2026-10-11#

Added#

Changed#

0.1.0 - 2026-10-11#

First release.

Added#

Edit this page on GitHub