Releases: pyta-uoft/pyta
Releases · pyta-uoft/pyta
[2.5.0] - 2023-04-27
Bug fixes
- Fixed bug in possibly-undefined checker where a comprehension variable is falsely flagged as possibly undefined.
- Fixed bug where
check_errors
andcheck_all
opens a webpage when a nonexistent or unreadable path is passed as an argument. - Fixed the CFG implementation to resolve a bug in the possibly-undefined checker where variables were falsely flagged as possibly undefined when the code conditionally raises an exception and the variable was referenced afterwards.
- Fixed bug where the generated CFGs will highlight the except block as unreachable if the same exception it is handling was raised in the body of the tryexcept.
New checkers
Custom checkers:
forbidden-python-syntax
: Flag code that is not permitted to be used on an assessment.
Other
- Pin dependency versions
[2.4.2] - 2023-01-31
Bug fixes
- Fixed custom message formats based on Pylint 2.15 updates.
- Fixed bug in shadowing-in-comprehension checker when target is a subscript node.
- Ensured
check_contracts
andcheck_all_contracts
do nothing whenENABLE_CONTRACT_CHECKING
isFalse
.
[2.4.1] - 2023-01-13
Bug fixes
- Fixed PyTA contract checking for method calls when running modules in PyCharm using the "Run File in Python Console" action.
[2.4.0] - 2022-12-21
Enhancements
unnecessary_indexing_checker
has now been extended to check comprehensions in addition to for loops.invalid_for_target_checker
has now been extended to check comprehensions in addition to for loops.forbidden_io_function_checker
is now able to check for calls to IO functions written at the top-level of a module, but outside the main block.python_ta.debug.AccumulationTable
is extended to support printing loop iterations for while loops.- Violated representation invariant error message now includes the class name and current values of the instance attributes.
- Added constant
python_ta.contracts.ENABLE_CONTRACT_CHECKING
to only check contracts when its value is set toTrue
. python_ta.debug.AccumulationTable
has extended loop detection to allow the loop to appear anywhere inside the with statement.
Bug Fixes
- Fixed Issue #831: Contract Checker Bug. Now raises
AssertionError
when the expected type isfloat
but gotint
instead. - PyTA contracts' type checking now raises
AssertionError
when the expected type isint
but gotbool
instead. - Fixed PyTA contract checking when running modules in PyCharm using the "Run File in Python Console" action.
New checkers
Custom checkers:
forbidden-top-level-code
: Flag code written at the top level when it is not one of the four acceptable types.
[2.3.3] - 2022-09-05
Bug fixes
- Restored 'line_end', 'column_end', and 'snippet' fields in JSON reporter output.
[2.3.2] - 2022-08-30
Bug fixes
- Updated jsonreporter to get data from the new pylint Message class (#840)
Experimental
- Added preliminary support for translation of constraints into Z3 solver. (This is currently not enabled by default in PythonTA.)
[2.3.1] 2022-08-08
Bug fixes
- Add missing
toml
package to library dependencies. Users who installed 2.3.0 should upgrade to 2.3.1 or will need to installtoml
manually. - Improve formatting of
None
andfloat
s inAccumulationTable
display. Also make minor improvements to the documentation.
[2.3.0] - 2022-08-08
Enhancements
- Added new command line argument
-v/--version
. User can print out current PythonTA version usingpython -m python_ta -v
. - Preconditions, postconditions, and representation invariants are now parsed only once and compiled.
- Can configure custom error messages for pylint in a toml file.
missing_space_in_doctest_checker
is now able to check doctests in python modules and classes.- Updated to Pylint v2.14. See "New checks" below for the new checkers enabled by default.
- Added new
python_ta.debug
module with anAccumulationTable
context manager for loop print debugging. - Improve message for R1710 (inconsistent-return-statements)
Bug fixes
- Function
check_all_contracts
skips contract checks for functions and classes which are not defined in a module whose name is passed as an argument. Ifdecorate_main
argument isTrue
, functions and classes defined in__main__
module will be checked without needing to pass in additional arguments.
New checkers
Custom checkers:
type-is-assigned
: Flag when a type is not annotated but rather assigned in a function or class definition.
Pylint checkers v2.13:
modified-iterating-list
modified-iterating-dict
modified-iterating-set
unnecessary-ellipsis
bad-file-encoding
Pylint checkers v2.14:
comparison-of-constants
potential-index-error
unnecessary-list-index-lookup
duplicate-value
super-without-brackets
For more information on these checkers, please see the Pylint release notes. Note that the above list only contains the Pylint checkers enabled by default in PythonTA.
[2.2.0] - 2021-12-09
Enhancements
- Added support for postconditions in function docstring.
- Improve error message of
unncessary-indexing
checker. - Added CLI for
python_ta.contracts
module for executing a file with contract checking
($ python -m python_ta.contracts FILE
) - Added two new command line interfaces. User can print out the default PythonTA configuration file in the command line using
python -m python_ta -g
and can specify the output format of the reporter usingpython -m python_ta --output-format FILE
. - Updated to Pylint v2.12. See "New checks" below for the new checkers enabled by default.
- Register ending location setter as pylint plugin.
Bug fixes
- Fix bugs in
unnecessary-indexing
checker:- False positive when the same loop variable is used in two loops in sequence.
- False negative when the loop variable can be simplified, but is also shadowed in the
the loop body.
- Fix HTML report to link correctly to specific errors on the PythonTA documentation website.
- Fix bug when setting ending locations for
ClassDef
s that have no decorators.
New checkers
Pylint checkers v2.12:
use-implicit-booleaness-not-len
(renamed fromlen-as-condition
)
Pylint checkers v2.11:
consider-using-f-string
For more information on these checkers, please see the Pylint release notes. Note that the above list only contains the Pylint checkers enabled by default in PythonTA.
[2.1.1] - 2021-09-23
Bug fixes
- Fix HTML report to display file even when no errors are found.
- Fix pylint cache directory creation (backport of change from pylint 2.11)