Skip to content

Running modes

Each distribution of Pyright comes with two executables: pyright (also referred to as "executable") and pyright-langserver ("language server executable").

Aside from the main functionality discussed here, the first also provides a few more features and options, some of which are supported or used by this plugin.

Different running modes use different executables.

To make the most of this plugin, you are recommended to specify both executables.

Comparison tables#

pyright pyright-langserver
Process type Stops when finishes checking the file(s) Long-running process
Result Only type checking diagnostics Diagnostics and other LSP features
Performance Good Better in many cases
File reading method From disk File contents are sent via stdio
Potentially infinite processes Long processes are forcibly destroyed Processes must be terminated manually
Command line mode LSP4IJ mode
Executable used pyright pyright-langserver
Executable invoked After each change On project/supported file open
Side effect Will save all files to ensure synchronization No side effects
Error reporting Notifications and IDE log LSP4IJ console, notifications and IDE log

Command line mode#

If this mode is selected, everytime a Python file is edited, this plugin will save it along with other (unsaved) files, then invoke the executable in a subprocess. The result of this process is rerouted back to the IDE in the form of visual annotations.

This mode requires two things to work correctly:

  • That the executable you provide accepts said arguments, and
  • that it outputs diagnostics in the formats defined here.

If any of these requirements are not met, a notification will be displayed.

Due to backward compatibility, this is the default mode. However, for better performance, LSP4IJ mode is recommended.

LSP4IJ mode#

If this mode is selected, the language server will be invoked on project open. All LSP messages are then handled by the various features of the LSP4IJ plugin, a third-party LSP client for JetBrains IDEs.

It is possible to use Pyright with LSP4IJ directly, but doing so is not recommended.