You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added new python_ta.debug module with an SnapshotTracer context manager for generating memory models
Added z3 option to inconsistent-or-missing-returns, redundant-assignment, and possibly-undefined checkers to only check for feasible code blocks based on edge z3 constraints
Included the name of redundant variable in E9959 redundant-assignment message
Update to pylint v3.3 and and astroid v3.3. This added support for Python 3.13 and dropped support for Python 3.8. (No new checkers are enabled by default.)
Added a STRICT_NUMERIC_TYPES configuration to python_ta.contracts allowing to enable/disable stricter type checking of numeric types
Added integration with MemoryViz Webstepper
Added z3 option to one-iteration-checker to only check for feasible code blocks based on edge z3 constraints
Added reporting for errors raised by custom transforms (Z3Visitor, CFGVisitor)
Ensured SnapshotTracer does not include the _trace_func stack frame
Enabled SnapshotTracer to create its output_directory argument if it doesn't already exist
Changed SnapshotTracer's Webstepper code line number to align with the source code line number
💫 New checkers
unmentioned-parameter: Provide error message when a function parameter is not mentioned by name in the function's docstring. By default, this checker is disabled.
🐛 Bug fixes
Fixed issue where snapshot errors on unserializable values
Fixed issue within Snapshot.py where the memory_viz_version parameter was not respected
Fixed issue where parallel assignment statements and assignment to multiple targets were not checked by redundant_assignment_checker
Fixed issue where annotated assignment statements were not checked by redundant_assignment_checker
Fixed issue where empty preconditions were preventing CFGs from being generated
Added strict numeric type checking to enforce type distinctions across the entire numeric hierarchy, including complex numbers.
Added strict type checking support for nested and union types (e.g., list[int], dict[float, int], Union[int, float])
Fixed issue where CFG edges from loop body to loop condition block was ignored during augmenting edge z3 constraints
Fixed issue in one-iteration-checker where the message was not correctly reported for while loops when z3 option is on
Fixed crash when z3-solver is not installed
Fixed crash when an inline comment had no spaces after the #
🔧 Internal changes
Renamed ExprWrapper class to Z3Parser
Renamed ExprWrapper module to z3_parser and moved it to new directory python_ta.z3
Removed node attribute for Z3Parser
Renamed reduce method of Z3Parser to parse
Renamed test_expr_wrapper to test_z3_parser
Added is_feasible attribute for CFGEdge and implemented update to edge feasibility based on lists of Z3 constraints
Refactored codebase to use modern type annotations. Replaced List with list, Dict with dict, Set with set, and Tuple with tuple
Checked for variable reassignment in AugAssign and AnnAssign node in parsing edge Z3 constraints
Rendered logically infeasible control flow graph edges in light grey
Modified test_snapshot_to_json_sets_primitive for Python 3.8 compatibility
Added unit tests for one_iteration_checker
Added mock webbrowser.open in tests to prevent browser tabs and HTTP requests during python_ta.check_all() executions.
Added pytest-mock as a development dependency
Make test_snapshot.py::test_snapshot_serializes_unserializable_value able to run on Windows.
Added GitHub Action workflow for automatically publishing releases to PyPI
Update SnapshotTracer tests to use [email protected] and prevent browser from opening
Updated bundled webstepper version and removed source map, and excluded the bundle from prettier pre-commit check