All notable changes to pytm are documented in this file.
The format is based on Keep a Changelog 1.1.0. This project follows Semantic Versioning 2.0.0 in spirit, with one deliberate exception in 1.4.0 (see the BREAKING heading below).
1.4.0 - 2026-05-21
- Removed
tm.sqlDump()and the--sqldumpCLI flag (#295, #301). Calls totm.sqlDump(...)will raiseAttributeErrorat runtime. There is no drop-in replacement; use--jsonfor machine-readable output. This breakage is shipped in a minor release on the assumption of no real-world users; if this is wrong, please open an issue and we will publish a stub release.
- New
LLMelement class with eight associated threat definitions covering common LLM-specific attack patterns (#316). - New LLM threat for untrusted tool launch configuration (#329).
likelihoodfield onFinding, propagated from the originatingThreatand overridable per-finding (#318).flowsmodule providing helpers for declarativeDataflowconstruction (#259).Dataobject decoding in the JSON decoder, enabling round-trip serialization ofDatainstances (#330).- Devcontainer configuration for VS Code / GitHub Codespaces (#307).
- Devbox setup with Poetry integration (#274, #282, #283, #289).
- Ruff linter configuration alongside Black (#325).
- Google-style docstrings on the
Actormodel entity (#311). - ROADMAP entries for 2025 and beyond.
- Internal element model refactored to Pydantic v2 (#320). The user-facing
construction API in
tm.py-style scripts is preserved:Element(name), attribute assignment, andcontrols.*access continue to work as before. Pydantic v2 (>=2.10) is now a hard runtime dependency. Users with environments pinned to Pydantic v1 must upgrade. - Minimum supported Python is now 3.11. Tested against 3.11, 3.12, 3.13, and 3.14. Python 3.10 and earlier are no longer supported. Python 3.9 reached end-of-life in October 2025; 3.10 reaches end-of-life in October 2026.
- Migrated the test suite from
unittesttopytest(#276). Existing invocations viapython -m unittestare replaced bypytest; CI scripts updated accordingly. - Upgraded the Docker base image to
python:3.14.4-alpine3.23(#309). - Updated Makefile and Dockerfile build pipeline (#321).
- Cleaned up legacy and unused files in the repository (#326).
- CODEOWNERS now defaults a maintainer set on all paths.
getInScopeFindings()regression introduced by the Pydantic refactor (#323).likelihoodregression on resolved findings, with regression tests added (#324).- Findings on assets with
inScope=Falseare now correctly suppressed (#312). - CVSS and response overrides on
Findingare no longer overwritten during threat resolution (#248). - Various type annotation fixes and minor cleanups (#322).
- Escaped HTML metacharacters in DOT (Graphviz) output to prevent injection in rendered diagrams (#278, #280).
1.3.1 - prior
See git history for releases prior to 1.4.0. Earlier versions did not maintain a CHANGELOG; only 1.4.0 and later are documented here.