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
nodeandnpmruffyapfnpm 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-extendedAn 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
.vsixfile:cd packages/vscode-pyright; npm run package, this generates a.vsixfile - 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 mainnpm run build:lspnpm run publish:lsp(ensure you have proper NPM permissions)
