Skip to content

Releases: microsoft/pyright

Published 1.0.15

20 Apr 06:44
Compare
Choose a tag to compare

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

17 Apr 02:57
Compare
Choose a tag to compare

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

15 Apr 00:54
Compare
Choose a tag to compare

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

13 Apr 08:40
Compare
Choose a tag to compare

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

12 Apr 02:06
Compare
Choose a tag to compare

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

10 Apr 08:07
Compare
Choose a tag to compare

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

06 Apr 21:50
Compare
Choose a tag to compare

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

02 Apr 02:35
Compare
Choose a tag to compare

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

01 Apr 01:37
Compare
Choose a tag to compare

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.

Published 1.0.6

31 Mar 03:05
Compare
Choose a tag to compare

New feature: Progress reporting in VS Code status bar.
New feature: Return type validation is now disabled for methods with @abstractmethod decorator.
New feature: Added JSON schema for pyrightconfig.json file so VS Code provides IntelliSense.
New feature: Added validation of type arguments for specialization of generic types. These are now validated against TypeVar constraints and bounds.
New feature: Added "ignore" settings which silences any errors or warnings generated for specified files or directories.
New feature: Added more validation of venvPath, pythonPath, typingsPath, typeshedPath and other settings to help diagnose configuration problems.
Fixed bug that caused venvPath and pythonPath not to be honored in config file.
Fixed regression that caused unknown symbols used in type annotations not to be flagged as errors.
Fixed bug in expression evaluator that resulted in false positive type errors.
Fixed bug in type constraint logic to invalidate previous constraints when a value is modified through an assignment.
Fixed handling of __new__ magic method when it's called explicitly by name.
Fixed bug in type checking of functions that are passed as parameters.
Fixed logic that specializes generic types when no type parameters are specified (e.g. List or Callable).
Fixed bug that caused the analyzer to crash if a class derived from itself. This is now reported as an error case.
Made analyzer more resilient to internal errors. Rather than getting into an infinite loop of retries, it now flags a source file as complete and moves on.
Started to add tests for type analyzer.
Fixed crash that occurred if an input file or directory was invalid.
Further improved responsiveness of error reporting for files open within the editor.