Releases: microsoft/pyright
Published 1.0.16
New Feature: Unused code blocks are now displayed as "grayed out" in VS Code.
New Feature: Use of "yield from" generates error for Python <3.3.
New Feature: Scanning of string literals now fully complies with Python spec, including support for all defined escape sequences.
New Feature: Added "reportInvalidStringEscapeSequence" config switch to control whether the analyzer reports errors or warnings for invalid escape sequences.
New Feature: Use of Protocol in a code file is now flagged as illegal for Python <3.7.
New Feature: An attempt to instantiate certain special classes defined in typing (Callable, Generic, etc.) now emits an error.
Fixed bug in import cycle detection logic that could result in slow analysis time and even an infinite loop.
Published 1.0.15
New Feature: implemented proper type checking for assignments to variables with explicitly declared types.
New Feature: reportUntypedBaseClass enables reporting of base classes that are Unknown type and therefore defeat all type checking for derived types.
New Feature: reportOptionalContextManager enables reporting of Optional types used with "with" statements.
New Feature: reportOptionalOperand enables reporting of Optional types used within unary and binary statements where None is not otherwise permitted.
New Feature: more complete type checking for operand types for unary and binary statements.
New Feature: relaxed type checking of parameters to constructor of NamedTuple factory class if <NTFactory>.__new__.__defaults__
is assigned a value at some point.
Bug Fix: Type[X] wasn't properly specialized in some cases.
Bug Fix: Literal byte strings (e.g. b'hello') are now properly typed as bytes rather than Unknown type.
Published 1.0.14
New Feature: Added "reportOptionalIterable" config switch to allow reporting of Optional types used as iterables (e.g. in for statements).
New Feature: Added "reportImportCycles" config switch to report cycles in import graph.
New Feature: Added "reportPrivateUsage" config switch to report use of private variables and functions.
New Feature: Type checker now infers the types of list literals.
New Feature: Type checker now understands the unpack operator used within dictionaries, lists, and parameter lists.
New Feature: Type checker now validates types for slice operands.
New Feature: Type checker now understands __getitem__
, __setitem__
, and __delitem__
magic operators and enforces their presence for subscripting.
Improved performance by restricting implicit imports when using "from X import Y" form of import statement.
Fixed some false positives in reporting of operator overrides for unary and binary operators.
Removed the assumption that "self" and "cls" are the first parameter names for instance and class methods.
Published 1.0.13
New Feature: Added type checking for generator functions (i.e. functions that contain a 'yield' or 'yield from' statement).
New Feature: Added type checking for coroutine functions (i.e. async functions).
New Feature: Added type checking enforcement for iterators used in 'for' statements (iter or aiter overrides).
New Feature: Added type checking enforcement for 'with' statement (enter or aenter overrides).
New Feature: Added support for NoReturn return type.
New Feature: Replaced "--timing" command-line with "--stats", which now provides more stats than just timing.
Fixed bug where the use of a module as a type argument was not flagged as an error.
Improved type specialization logic for member accesses.
Published 1.0.12
New Feature: Type checker now supports generators functions. If yield type isn't specified, the checker infers the type from yield clauses.
New Feature: Added support for type hints that use a combination of string and non-string tokens (e.g. Optional['Foo']).
New Feature: Added support for comment-based type hints for assignment statements, since these are used in some typeshed stub files.
New Feature: Added support for class decorators and added a configuration switch "reportUntypedClassDecorator" to allow these to be flagged by the type checker.
New Feature: Type checker now distinguishes between access, set, and delete operations when accessing members of an object and flags errors when that usage is not supported (e.g. writing to a property that has no defined setter).
Enhancement: Improved type checker's ability to track types within while and for loops.
Fixed bug with structural (protocol) type checking that generated false positives.
Deleted Python 2 typeshed fallback stub files since they are never used by Pyright. This reduced the package size by about 100K.
Published 1.0.11
New Feature: Type checking support for @DataClass, which was introduced in Python 3.7.
New Feature: Type checker now reports incorrect usage of ellipses in various cases.
Fixed #67: Modules are now treated as though they derive from object by the type checker.
Improved responsiveness of VS Code extension.
Improved error reporting for abstract class instantiation; abstract methods are now reported with their containing class.
Fixed #68: Silenced incorrect error for star expression usage (list expansion).
Fixed some edge cases relating to new and init validation.
Fixed #66: Bug caused an infinite loop in type checker.
Fixed automatic detection of python import paths for Python 3.x environments (contribution from @zhangkaizhao)
Published 1.0.10
New Feature: Partial support for Python 3.7 data classes. Classes must subclass from NamedTuple
. Doesn't yet handle @dataclass
class decorator. (Contribution from mhzed)
New Feature: Detect and flag attempt to instantiate abstract class or any class that derives from an abstract class that doesn't override all abstract methods.
New Feature: Pyright now retrieves the search paths from the default python interpreter or from the interpreter specified by the python.pythonPath
setting in VS Code.
Fixed bug in file URI formatting that caused error messages on Windows.
Fixed exit code reporting in command-line tool.
Provided hover support in VS Code extension for symbols that have unknown types.
Published 1.0.9
New Feature: Type analyzer now analyzes function decorators rather than ignoring type analysis for all calls to functions that have decorators. Proper analysis requires decorators to be annotated appropriately. A new config switch "reportUntypedFunctionDecorator" to identify decorators that lack the appropriate type annotations and therefore defeat type checking.
New Feature: Type analyzer is now smarter about analyzing while/else statements.
New Feature: Type analyzer handles while True
and knows that it will not exit through the bottom of the loop.
New Feature: Pyright VS Code extension is now activated automatically if a pyrightconfig.json file is present in the workspace.
New Feature: Type analyzer now specializes the parameter and return types when analyzing a method on a specialized class.
New Feature: Type analyzer now takes into account parameters to the constructor (including the init method) to infer the specialized type of an object.
New Feature: Variable ${workspaceFolder} is now expanded for paths that come from VS Code settings (like "python.venvPath").
New Feature: "Naked" raise is now flagged as an error if used outside of except clause.
New Feature: Added "--timing" switch to command-line tool to output detailed timing stats. By default, only the total time is reported.
New Feature: Command-line version can now be run with no parameters. It looks in the current working directory for a configuration file called "pyrightconfig.json".
Fixed exit code reporting in command-line version. It now properly exits with a code of zero if no errors or warnings are found.
Fixed bugs related to relative imports, especially with relative imports that consist of only "." or "..".
Fixed several bugs in type analysis engine related to tuples.
Removed "-P" switch from command-line tool. It was deprecated in the previous release.
Published 1.0.8
New Feature: Added new configuration switches reportOptionalSubscript, reportOptionalMemberAccess and reportOptionalCall to control whether the type checker should report errors for these conditions.
New Feature: Added type analysis for lambdas.
New Feature: Added more comprehensive error reporting for type mismatch errors. These multi-line errors now include hierarchical information and detail about the detected type mismatch, allowing for easier diagnosis.
New Feature: The type checker now reports cases where a non-quoted type forward reference is used within a regular ".py" file. Such forward references are allowed in stub files.
Fixed several bugs in type matching logic related to function (Callable) types.
Fixed bug in handling of special-case types like Dict and FrozenSet when they are used in type annotations with no type arguments.
Added missing support for matrix multiply operator (@
).
Published 1.0.7
New Feature: Added support for PYTHONPATH environment variable for resolving imports.
New Feature: Added type checking for expressions that involve arithmetic, logical, and comparison operators.
Removed support for pythonPath config file entry and VS Code setting because it was confusing everyone.
Fixed type analyzer to not flag imported symbols as missing if they come from an external source file, even though pyright doesn't parse and analyze such files.