Basedpyright Type Checking
Basedpyright is a fork of Pyright with additional features and stricter defaults, designed for maximum type safety and performance.
When to Use This Skill
Use this skill when... Use another tool instead when...
Setting up type checking for Python Formatting code (use ruff format)
Configuring strict type validation Linting for style issues (use ruff check)
Comparing type checkers (basedpyright vs mypy) Detecting unused code (use vulture/deadcode)
Setting up LSP for type-aware editor support Running tests (use pytest)
Installation
Via uv (Recommended)
Install globally
uv tool install basedpyright
Install as dev dependency
uv add --dev basedpyright
Run with uv
uv run basedpyright
Via pipx
pipx install basedpyright
Basic Usage
Check entire project
basedpyright
Check specific files/directories
basedpyright src/ tests/
Watch mode for development
basedpyright --watch
Output JSON for tooling integration
basedpyright --outputjson
Verbose diagnostics
basedpyright --verbose
Configuration
Minimal Strict Configuration (pyproject.toml)
[tool.basedpyright] typeCheckingMode = "strict" pythonVersion = "3.12" include = ["src"] exclude = ["/pycache", "/.venv"]
Basedpyright-specific strict rules
reportUnusedCallResult = "error" reportImplicitStringConcatenation = "error" reportMissingSuperCall = "error" reportUninitializedInstanceVariable = "error"
Type Checking Modes
Mode Description Use Case
off
No type checking Legacy code, migration start
basic
Basic type checking Gradual typing adoption
standard
Standard strictness Most projects (default Pyright)
strict
Strict type checking Type-safe codebases
all
Maximum strictness High-assurance systems
Progressive Type Checking
Start with basic mode
[tool.basedpyright] typeCheckingMode = "basic" include = ["src/new_module"] # Type check new code only
Gradually expand
include = ["src/new_module", "src/api"]
Eventually enable strict mode
typeCheckingMode = "strict" include = ["src"]
Choosing a Type Checker
Factor Basedpyright Pyright mypy
Speed Fastest Fastest Slower
Strictness Strictest defaults Configurable Configurable
LSP Support Built-in Built-in Via dmypy
Plugin System Limited Limited Extensive
Choose Basedpyright for maximum type safety with stricter defaults and fastest speed. Choose Pyright for Microsoft's official support and VS Code Pylance compatibility. Choose mypy for extensive plugin ecosystem (django-stubs, pydantic-mypy).
Inline Error Suppression
Inline type ignore
result = unsafe_operation() # type: ignore[reportUnknownVariableType]
Function-level ignore
def legacy_function(): # basedpyright: ignore pass
Agentic Optimizations
Context Command
Quick check basedpyright
JSON output basedpyright --outputjson
Watch mode basedpyright --watch
CI check uv run basedpyright
Verbose basedpyright --verbose
Quick Reference
Flag Description
--watch
Watch mode for development
--outputjson
JSON output for tooling
--verbose
Verbose diagnostics
--pythonversion X.Y
Override Python version
--level <mode>
Override type checking mode
For detailed configuration options, LSP integration, migration guides, CI setup, and best practices, see REFERENCE.md.