Skip to content

Releases: microsoft/pyright

Published 1.0.21

02 May 01:54
Compare
Choose a tag to compare

New Feature: Added "reportUntypedNamedTuple" config switch for reporting the use of "namedtuple", which is an untyped version of "NamedTuple".
New Feature: Added type inference support for list comprehension statements.
New Feature: Improved type inference when indexing into a tuple type with a constant integer index. It now uses the appropriate type for that tuple entry if it's known.
Bug Fix #101: Type inference engine now infers a return type of Generator[Y] for generator functions rather than Iterator[Y].
Bug Fix: Fixed bug that masked type checking operations for certain built-in types like List and Dict.
Bug Fix: For statements now allow iterators that provide __getitem__, as per PEP 234.
Bug Fix: Fixed an issue where classes defined with NamedTuple were not providing correct type checks.
Bug Fix: Fixed bug in completion handler that caused completion recommendations to appear when pressing period within a comment.
Bug Fix: Pyright was failing to search beyond the first search path when using fall-back paths from the python interpreter.

Published 1.0.20

30 Apr 17:53
Compare
Choose a tag to compare

This release includes a significant set of changes to the core type engine that are required to enable the next round of functionality. I've done my best to avoid introducing regressions, but they are possible in a change of this size.
One known regression is that unbound or potentially-unbound variables are no longer flagged in many cases.

New Feature: Added new config switch "reportUnknownParameterType" that reports input and return parameters with an unknown type.
New Feature: Added new config switch "reportUnknownVariableType" that reports local variables with an unknown type.
New Feature: Added new config switch "reportUnknownMemberType" that reports class members (instance variables and class variables) with an unknown type.
New Feature: Further improved logging to diagnose import failures.
New Feature: Added "strict mode" that can be enabled on a per-file basis by adding the comment "# pyright: strict". This enables all type-checking configuration flags for that file.
New Feature: Added support in type check engine for expression type constraints involving the "or" operator.
Bug Fix #91: Added code to convert file specs passed to command-line from relative to absolute.
Bug Fix: Added code path lookups for both "lib" and "Lib" within virtual environment to accommodate capitalization convention on Windows.
Bug Fix: Removed limitation that type annotation strings not use bytes, unicode or raw strings.

Published 1.0.19

28 Apr 02:19
Compare
Choose a tag to compare

New Feature: Types are now validated for assignments that target objects with a __set__ method, including properties with setters.
New Feature: Added key/value type inference for dictionary literal statements.
New Feature: Unreachable code is now detected in cases where a return or raise occurs before the end of a code block.
New Feature: Added verbose diagnostic information for import resolution failures. Added --verbose switch for command-line tool.
New Feature: Type constraint subsystem is now able to handle more complicated code flow inferences.
Bug Fix: Fixed false positive error related to arg/param matching when an unpacked arg is used.

Published 1.0.18

27 Apr 06:43
Compare
Choose a tag to compare

New Feature: Added type constraint for assert command.
Bug Fix: Fixed bug in parser that allowed an arbitrary number of comma-separated expressions to appear after an assert keyword.
Bug Fix #90: Fixed false error for common arithmetic binary operators that act upon int/float/complex when operand is union with an unknown or any type.
Bug Fix #88: Text completion options shouldn't appear for comments or strings.
Bug Fix: Fixed regression introduced in previous version where the check for max import chain length generated false positives.
Bug Fix: Command-line tool didn't allow the use of "--watch" with a list of specified files.
Bug Fix #89: Fixed regression in tokenizer that caused incorrect line attributes when CR/LF was contained within a string.

Published 1.0.17

25 Apr 05:36
Compare
Choose a tag to compare

New Feature: Improved formatting of errors and warnings for command-line tool.
New Feature: Started to implement type completion for keywords, local variables, module variables, and class/instance variables.
Bug Fix: FIx for #83: Changed the way type analyzer handles assignment statements with type annotation.
Bug Fix: Fix #85, recursion crash due to long import chains.
Bug Fix: Partial fix for #82 (hang)
Bug Fix: Don't flag invalid as errors string escape sequences in raw strings.
Bug Fix: Removed logo from VS Code README.

Published 1.0.16

21 Apr 19:19
Compare
Choose a tag to compare

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

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.