Static type checker and language server for Python
** Speed **
Pyright is a fast type checker meant for large Python source bases. It
can run in a “watch” mode and performs fast incremental updates when
files are modified.
** Configurability **
Pyright supports configuration files that provide granular control over
settings. Different “execution environments” can be associated with
subdirectories within a source base. Each environment can specify
different module search paths, python language versions, and platform
targets.
** Type Checking Features **
- PEP 484 type hints including generics
- PEP 487 simpler customization of class creation
- PEP 526 syntax for variable annotations
- PEP 544 structural subtyping
- PEP 561 distributing and packaging type information
- PEP 563 postponed evaluation of annotations
- PEP 570 position-only parameters
- PEP 585 type hinting generics in standard collections
- PEP 586 literal types
- PEP 589 typed dictionaries
- PEP 591 final qualifier
- PEP 593 flexible variable annotations
- PEP 604 complementary syntax for unions
- PEP 612 parameter specification variables
- PEP 613 explicit type aliases
- PEP 635 structural pattern matching
- PEP 646 variadic generics
- PEP 647 user-defined type guards
- PEP 655 required typed dictionary items
- PEP 673 Self type
- PEP 675 arbitrary literal strings
- PEP 681 dataclass transform
- Type inference for function return values, instance variables, class
variables, and globals
- Type guards that understand conditional code flow constructs like
if/else statements
** Language Server Integration **
Pyright ships as both a command-line tool and a Language Server protocol
server that provides many powerful features that help improve programming
efficiency.
** Language Server Features **
- Intelligent type completion of keywords, symbols, and import names
appears when editing
- Import statements are automatically inserted when necessary for type
completions
- Signature completion tips help when filling in arguments for a call
- Hover over symbols to provide type information and doc strings
- Find Definitions to quickly go to the location of a symbol’s definition
- Find References to find all references to a symbol within a code base
- Rename Symbol to rename all references to a symbol within a code base
- Find Symbols within the current document or within the entire workspace
- View call hierarchy information — calls made within a function and
places where a function is called
- Organize Imports command for automatically ordering imports according
to PEP8 rules
- Type stub generation for third-party libraries