Python: Update change note for 1.23.

This commit is contained in:
Taus Brock-Nannestad 2019-11-26 13:58:22 +01:00
Родитель 3d5d178b19
Коммит 35e3e3d2a1
1 изменённых файлов: 26 добавлений и 1 удалений

Просмотреть файл

@ -3,7 +3,19 @@
## General improvements
### Python 3.8 support
Python 3.8 syntax is now supported. In particular, the following constructs are parsed correctly:
- Assignment expressions using the "walrus" operator, such as `while chunk := file.read(1024): ...`.
- The positional argument separator `/`, such as in `def foo(a, /, b, *, c): ...`.
- Self-documenting expressions in f-strings, such as `f"{var=}"`.
### General query improvements
In an effort to deprecate the `Object` API (e.g. `ClassObject`) in favour of the
`Value` API (e.g. `ClassValue`), many of the standard queries have been updated
to use the `Value` API. This should result in more precise results.
## New queries
@ -20,8 +32,21 @@
|----------------------------|------------------------|------------|
| Unreachable code | Fewer false positives | Analysis now accounts for uses of `contextlib.suppress` to suppress exceptions. |
| `__iter__` method returns a non-iterator | Better alert message | Alert now highlights which class is expected to be an iterator. |
| Explicit return in __init__ method | Fewer false positives | Instances where the `__init__` method returns the value of a call to a procedure are no longer flagged. |
| Non-iterable used in for loop | Fewer false positives | `__aiter__` is now recognized as an iterator method. |
| Unused import | Fewer false positives | Instances where a module is used in a forward-referenced type annotation, or only during type checking are no longer flagged. |
| Module-level cyclic import | Fewer false positives | Instances where one of the links in an import cycle is never actually executed are no longer flagged. |
| Undefined export | Fewer false positives | Instances where an exported value may be defined in a module that lacks points-to information are no longer flagged. |
| Unreachable code | Fewer false positives | Unreachable `else` branches that do nothing but `assert` their non-reachability are no longer flagged. |
## Changes to QL libraries
* Django library now recognizes positional arguments from a `django.conf.urls.url` regex (Django version 1.x)
* Instances of the `Value` class now support the `isAbsent` method, indicating
whether the `Value` in question is missing points-to information, but has been
inferred to likely exist anyway. For instance, if a file contains `import
django`, but `django` was not extracted properly, there will be a
`ModuleValue` corresponding to this "unknown" module, and the `isAbsent`
method will hold for this `ModuleValue`.
* The `Expr` class now has a nullary method `pointsTo` that returns the possible
instances of `Value` that this expression may have.