This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 0.41.2 instead.
Reason given by maintainers: Incorrect results
Basilisk
English · 简体中文
The only Python type checker scoring 100% on the official python/typing conformance suite — and the fastest we’ve measured.
Complete open-source Python dev environment in Rust: type checker, language server, debugger, profiler, plus VS Code, Cursor, Zed & Neovim extensions. Strict by default.
Weighing up the best Python type checker for your codebase? Start with the scoreboard.
You are reading the
basilisk-pythonwheel listing — the Basilisk CLI packaged forpip/uv. The distribution is namedbasilisk-pythonbecausebasiliskwas taken on PyPI; the installed command is stillbasilisk.
Website • Install • Quick Start • Rules • Refactoring • Compare • GitHub
100.0% PEP conformance — 141 of 141 tests in the official
python/typing
conformance suite (commit 39164cd), scored on the wheel-installed CLI in its default config by the real upstream harness.
We target python/typing@main and ratchet the score up only.
The only 100% checker — and the fastest according to our benchmarks
Basilisk is the only Python type checker with a perfect score on the official
python/typing conformance suite:
100.0% (141/141 files, 970 required errors caught, 0 false positives),
measured by the real upstream harness on the wheel-installed CLI in its default config.
And it is the fastest checker we’ve measured — median cold full-file check, from scratch:
| Type checker | Median cold check |
|---|---|
| ⚡ Basilisk | 10 ms |
| zuban | 28 ms |
| ty | 40 ms |
| Pyrefly | 110 ms |
| Pyright | 573 ms |
| mypy | 574 ms |
Median cold full-file check across 26 single-construct typing-spec stress fixtures on an Apple M4 Max — lower is better. Basilisk’s warm re-check drops to ~4 ms. Every figure is produced by hyperfine and committed per machine, so nothing here is hand-typed. Clone the repo, run make bench on your own hardware, and send us the CSV — independent audits are welcome. Full benchmarks & methodology →
Everything in one extension
One extension replaces Pylance and gives you the whole workflow — no Node.js, no Python runtime, no pip, no npm. A single bundled Rust binary drives it all:
- Strict-by-default diagnostics — inline as you type, incremental analysis powered by Salsa (the rust-analyzer engine)
- Autocomplete, hover, go-to-definition, find references, rename
- Refactoring code actions — extract, inline, move symbol, organize imports
- Integrated debugging — F5 to debug via bundled debugpy; no separate extension
- Integrated profiling — CPU heat map, flame graph, and a memory dashboard with leak detection
- Activity panel — module tree with per-module type-health coverage, plus feature toggles
- Inlay hints and Ruff formatting/import-organization, built in
- Standard-library types from typeshed — a complete
stdlib/snapshot is compiled into the binary, so hover and diagnostics work offline with no configuration
Every diagnostic teaches: rustc-style output with a help, a note, and a link to a per-rule explainer, so a red squiggle always tells you why. Basilisk starts strict and stays strict — the unconfigured default enables the complete typing-spec rule set, and strictness is dialled per rule, never by a mode.
Install
Editor extension — install Basilisk from the VS Code Marketplace or Open VSX (Cursor, Windsurf, and other forks read Open VSX). The Basilisk binary is bundled for macOS (Apple Silicon), Linux (x86_64, aarch64), and Windows (x86_64, aarch64) — nothing else to install. Zed and Neovim 0.10+ extensions are available too.
CLI — on PyPI as basilisk-python; the installed command is basilisk:
uv tool install basilisk-python # or: pipx install basilisk-python, pip install basilisk-python
Also via Homebrew (brew install Nimblesite/tap/basilisk), Scoop (scoop bucket add nimblesite https://github.com/Nimblesite/scoop-bucket && scoop install basilisk), and GitHub Releases. Every channel ships the same single Rust CLI, built from this repository at the same version, with no runtime dependencies. Point basilisk.executablePath at your own build to have the extension use it. Full options: install guide.
Try it
The examples/ folder has ready-to-go Python files:
basilisk check examples/bad.py # 8 typing-spec errors — always on, no config needed
basilisk analyze examples/bad.py # the opt-in strictness warnings on the same file
basilisk analyze examples/good.py # clean, even at full strictness
basilisk check examples/mixed.py # one real type error
basilisk check examples/ # the whole folder at once
Machine-readable output for CI and tooling:
basilisk check path/to/your_code.py --output json --color never
The two commands read one rule universe split by provenance (CHKARCH-COMMANDS): check reports
the pep-tagged typing-spec rules and nothing else — that set is always on, and
while a config table may grade one of them down to warning/info, none may
switch it off. analyze reports the non-pep house rules, which stay silent
until a table selects them. Only analyze emits BSK- diagnostics.
Standard-library types, always offline
Basilisk resolves the standard library from typeshed,
and checking never downloads anything. Out of the box it uses the complete
typeshed stdlib/ snapshot compiled into the binary, reporting the source as
unpinned — so stdlib types work on a plane, behind a firewall, or in an
air-gapped CI runner, with no configuration.
Pin an exact commit with typeshed-commit = "<40-char sha>" under
[tool.basilisk]. A pin does exactly one thing: it verifies, offline, that the
typeshed tree in the local store hashes to that commit. If the commit is not on
this machine the run fails hard with NO SOURCE rather than substituting
another source — bring it down first with basilisk typeshed download (with no
--commit it downloads the latest and writes the pin for you), or use the
editor's Download latest button. Alternatively, point typeshed-path at
your own typeshed tree. Full options:
configuration guide.
Development
cargo build # build all crates
cargo test # run all tests
cargo clippy # lint (zero warnings policy)
cargo fmt # format
Rust 1.87+ required.
Contributing
Basilisk is built by a human + AI partnership, with the work split on purpose. See CONTRIBUTING.md — For Humans (testing, code-quality review, conformance/security audits, IDE feature parity, sharpening the AI instructions) and For AI (the technical execution, under the standing rules in CLAUDE.md).
Acknowledgments
Basilisk builds on the open-source community — with thanks to:
- Astral — Ruff, whose parser, AST, and formatter crates Basilisk embeds (MIT). The foundation we rely on most.
- typeshed — standard-library type stubs (Apache-2.0, with MIT-licensed parts).
- Salsa — incremental query engine.
- Rayon — data parallelism.
- tower-lsp — LSP scaffolding.
- debugpy — debug adapter (bundled in the VS Code extension).
- The
python/typingconformance suite.
Full component list, selected licenses, and required notices: NOTICES
and RUST-DEPENDENCY-LICENSES. Each published
artifact carries its own copies: the VSIX ships Rust notices in
RUST-DEPENDENCY-LICENSES, npm notices in VSCODE-DEPENDENCY-LICENSES, and
debugpy's license and ThirdPartyNotices.txt inside bundled/debugpy; the
wheel carries the complete locked notices in its .dist-info/licenses/
directory.
License
Basilisk source code is MIT licensed. Binary distributions also contain third-party components under the licenses shipped beside each artifact.
Built by NIMBLESITE PTY LTD.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file basilisk_python-0.38.0-py3-none-win_arm64.whl.
File metadata
- Download URL: basilisk_python-0.38.0-py3-none-win_arm64.whl
- Upload date:
- Size: 7.3 MB
- Tags: Python 3, Windows ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cecfa86711ddb11bbd301007ab346b9ff8cad7e468018eb2d09dde829339aaaf
|
|
| MD5 |
501c834bd8996f5267cdc89229f76a57
|
|
| BLAKE2b-256 |
2ed83af6fdb44f3e89f94cef4c387771aa381490f6a6a1bda12ae1b16c1c8b58
|
Provenance
The following attestation bundles were made for basilisk_python-0.38.0-py3-none-win_arm64.whl:
Publisher:
release.yml on Nimblesite/Basilisk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
basilisk_python-0.38.0-py3-none-win_arm64.whl -
Subject digest:
cecfa86711ddb11bbd301007ab346b9ff8cad7e468018eb2d09dde829339aaaf - Sigstore transparency entry: 2280458961
- Sigstore integration time:
-
Permalink:
Nimblesite/Basilisk@47b71ee46ced11c36e6a04dbf24cdeb5b5d2f3e0 -
Branch / Tag:
refs/tags/v0.38.0 - Owner: https://github.com/Nimblesite
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@47b71ee46ced11c36e6a04dbf24cdeb5b5d2f3e0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file basilisk_python-0.38.0-py3-none-win_amd64.whl.
File metadata
- Download URL: basilisk_python-0.38.0-py3-none-win_amd64.whl
- Upload date:
- Size: 7.7 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57900945603fe78d065ec3cced7853cca2778c30b552003a89c364c5c75d94e0
|
|
| MD5 |
360f3427d01b8c97f74857c91d2bfbd0
|
|
| BLAKE2b-256 |
f8b93c322f5245d15b6656e7d1b15b09a298f1488e9399f009e6572f2ce47f8e
|
Provenance
The following attestation bundles were made for basilisk_python-0.38.0-py3-none-win_amd64.whl:
Publisher:
release.yml on Nimblesite/Basilisk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
basilisk_python-0.38.0-py3-none-win_amd64.whl -
Subject digest:
57900945603fe78d065ec3cced7853cca2778c30b552003a89c364c5c75d94e0 - Sigstore transparency entry: 2280459244
- Sigstore integration time:
-
Permalink:
Nimblesite/Basilisk@47b71ee46ced11c36e6a04dbf24cdeb5b5d2f3e0 -
Branch / Tag:
refs/tags/v0.38.0 - Owner: https://github.com/Nimblesite
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@47b71ee46ced11c36e6a04dbf24cdeb5b5d2f3e0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file basilisk_python-0.38.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: basilisk_python-0.38.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 8.1 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff5b3c25a7f019a2eb74918ee60acf7ba99388719941ab29d8081ae7b54082d3
|
|
| MD5 |
e6c6c50ac698be8b91588a794a04e716
|
|
| BLAKE2b-256 |
20b18daf4900c30ed97fb649a57d88e0822f03c793e34252e86f15d861cdb066
|
Provenance
The following attestation bundles were made for basilisk_python-0.38.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on Nimblesite/Basilisk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
basilisk_python-0.38.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
ff5b3c25a7f019a2eb74918ee60acf7ba99388719941ab29d8081ae7b54082d3 - Sigstore transparency entry: 2280459072
- Sigstore integration time:
-
Permalink:
Nimblesite/Basilisk@47b71ee46ced11c36e6a04dbf24cdeb5b5d2f3e0 -
Branch / Tag:
refs/tags/v0.38.0 - Owner: https://github.com/Nimblesite
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@47b71ee46ced11c36e6a04dbf24cdeb5b5d2f3e0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file basilisk_python-0.38.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: basilisk_python-0.38.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 7.6 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6979b7ed92616a996cadc8a7106e5fd6d52724fa3f2cc027a5872a5893e35146
|
|
| MD5 |
27c09301948473391d83e04aadfdf014
|
|
| BLAKE2b-256 |
0b92b3e9e1f15ffde35cc66c7e4f61125f4624109c212212d8230f026ed84111
|
Provenance
The following attestation bundles were made for basilisk_python-0.38.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on Nimblesite/Basilisk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
basilisk_python-0.38.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
6979b7ed92616a996cadc8a7106e5fd6d52724fa3f2cc027a5872a5893e35146 - Sigstore transparency entry: 2280459317
- Sigstore integration time:
-
Permalink:
Nimblesite/Basilisk@47b71ee46ced11c36e6a04dbf24cdeb5b5d2f3e0 -
Branch / Tag:
refs/tags/v0.38.0 - Owner: https://github.com/Nimblesite
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@47b71ee46ced11c36e6a04dbf24cdeb5b5d2f3e0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file basilisk_python-0.38.0-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: basilisk_python-0.38.0-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 7.2 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77d9043315ec1ec4934bfddeddacfa5720a7f96bc214c47dc38135bf4c06e1c6
|
|
| MD5 |
e221165ee689bd8ab6230361dadd3a7b
|
|
| BLAKE2b-256 |
b6d832a15d7fbd4ad41af113d621b5f40ac589f281278a231be312d66d2c0710
|
Provenance
The following attestation bundles were made for basilisk_python-0.38.0-py3-none-macosx_11_0_arm64.whl:
Publisher:
release.yml on Nimblesite/Basilisk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
basilisk_python-0.38.0-py3-none-macosx_11_0_arm64.whl -
Subject digest:
77d9043315ec1ec4934bfddeddacfa5720a7f96bc214c47dc38135bf4c06e1c6 - Sigstore transparency entry: 2280459149
- Sigstore integration time:
-
Permalink:
Nimblesite/Basilisk@47b71ee46ced11c36e6a04dbf24cdeb5b5d2f3e0 -
Branch / Tag:
refs/tags/v0.38.0 - Owner: https://github.com/Nimblesite
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@47b71ee46ced11c36e6a04dbf24cdeb5b5d2f3e0 -
Trigger Event:
push
-
Statement type: