Pyright is a full-featured, standards-based static type checker for Python. It is designed for high performance and can be used with large Python source bases.
Pyright includes both a command-line tool and an extension for Visual Studio Code.
Try Pyright in your browser using the Pyright Playground.
Refer to the documentation for installation, configuration, and usage details.
pyright-extended
, which lives in this repository, is a new Python meta-LSP that includes tools such as pyright
, ruff
, and yapf
.
pyright-extended
provides the following capabilities:
- Static analysis (through
pyright-langserver
) - Completions (though
pyright-langserver
) - Definitions (through
pyright-langserver
) - Hover (through
pyright-langserver
) - References (through
pyright-langserver
) - Formatting (through
yapf
) - Renaming (through
pyright-langserver
) - Import reorganization (through
ruff
) - Linting (through
ruff
,pyright-langserver
) - Types (through
pyright-langserver
)
- Install dependencies
node
andnpm
ruff
yapf
npm run install:all
- Build the LSP:
cd ./packages/pyright && npm run build
- Mark file as executable:
chmod +x ./packages/pyright/langserver.index.js
- Start LSP in your client of choice:
./packages/pyright/langserver.index.js --stdio
npm i -g @replit/pyright-extended
An example setup for the Neovim editor looks something like the following:
local lspconfig = require 'lspconfig'
local configs = require 'lspconfig.configs'
local util = require 'lspconfig.util'
if not configs["pyright-extended"] then
configs["pyright-extended"] = {
default_config = {
cmd = {'pyright-langserver', '--stdio'},
filetypes = { "python" },
autostart = true,
root_dir = util.root_pattern('pyproject.toml'),
single_file_support = true,
settings = {
python = {
analysis = {
autoSearchPaths = true,
useLibraryCodeForTypes = true
}
}
}
}
}
end
lspconfig["pyright-extended"].setup{}
vim.lsp.set_log_level("INFO")
To use pyright-extended
in VS Code, you must build the extension from source.
- Install deps:
npm run install:all
- Build the
.vsix
file:cd packages/vscode-pyright; npm run package
, this generates a.vsix
file - In VS Code, go to extensions
- If you have Pylance, remove it, and reload
- If Pyright already exists, remove it, and reload
- In extensions, select "Install from VSIX..." and pick the .vsix file from step 2
- Make a
main.py
, start typing in code, and you should get context help
git pull upstream main
npm run build:lsp
npm run publish:lsp
(ensure you have proper NPM permissions)