Skip to main content
Yanked

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

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-python wheel listing — the Basilisk CLI packaged for pip/uv. The distribution is named basilisk-python because basilisk was taken on PyPI; the installed command is still basilisk.

Website  •  Install  •  Quick Start  •  Rules  •  Refactoring  •  Compare  •  GitHub

100.0% PEP conformance — 141 of 141 tests in the official python/typing conformance suite (commit 6ef9f77), 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.

Basilisk in action — type checking, diagnostics, and refactoring in the editor

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.mdFor 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:

  • AstralRuff, 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/typing conformance 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

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

basilisk_python-0.37.2-py3-none-win_arm64.whl (7.2 MB view details)

Uploaded Python 3Windows ARM64

basilisk_python-0.37.2-py3-none-win_amd64.whl (7.7 MB view details)

Uploaded Python 3Windows x86-64

basilisk_python-0.37.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

basilisk_python-0.37.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (7.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

basilisk_python-0.37.2-py3-none-macosx_11_0_arm64.whl (7.2 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

Details for the file basilisk_python-0.37.2-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for basilisk_python-0.37.2-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 4f9708358085dc198d355e12807b650a33a89de8bfe5d9a5a64672652a8d8c91
MD5 751dce339030122fc3a6bc4da1c29e32
BLAKE2b-256 f16f5d782c1b4e9b55822ea4bc9127db5a83a89def891fb8181b4d2274b4feac

See more details on using hashes here.

Provenance

The following attestation bundles were made for basilisk_python-0.37.2-py3-none-win_arm64.whl:

Publisher: release.yml on Nimblesite/Basilisk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file basilisk_python-0.37.2-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for basilisk_python-0.37.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 64e19b11e2ecd081d8558c8ec2db8f68bcd07ca7322b05eb0d22901fb2d13105
MD5 e4b84ed1cb440c6313c746260001a447
BLAKE2b-256 0dda6d618d761626cc1086e8534bd988d3c7c2da93fb5922fd7b854fe79613f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for basilisk_python-0.37.2-py3-none-win_amd64.whl:

Publisher: release.yml on Nimblesite/Basilisk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file basilisk_python-0.37.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for basilisk_python-0.37.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 06d3252ea24d4feec4a29814ede73182c31c7677ec9ba17860cb8b951232c1fc
MD5 9472a8355c74791a86432329de859e76
BLAKE2b-256 d9d877d2a7c488c1f5551e10be2ff3d15079551b66f8053b845a0e885478a762

See more details on using hashes here.

Provenance

The following attestation bundles were made for basilisk_python-0.37.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on Nimblesite/Basilisk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file basilisk_python-0.37.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for basilisk_python-0.37.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2c6d9b78d18388d8aa21688a77137dbd07108830c3ffd229d9f1b9b94498de1b
MD5 a2708cc48895f11b751ff748775c0492
BLAKE2b-256 09eb1031f9a3f6c997ff089950146c3385ba34e5ae57bf52ffcda6e89de1cdcf

See more details on using hashes here.

Provenance

The following attestation bundles were made for basilisk_python-0.37.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on Nimblesite/Basilisk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file basilisk_python-0.37.2-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for basilisk_python-0.37.2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f61dca4de6b3f46ad6168d8c22869430bcd67e8702a9a0c7b40ec9a56bfb8192
MD5 7a37f8f4b2d2031cba81d35d8e850baf
BLAKE2b-256 4d414959c07eade27a23cf229cc23d296326007e351898ecaf42b17d5d650544

See more details on using hashes here.

Provenance

The following attestation bundles were made for basilisk_python-0.37.2-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on Nimblesite/Basilisk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.41.2

5 files

0.41.1

5 files

0.41.0

5 files

0.39.0

5 files

0.38.0

5 files

0.37.4

5 files

0.37.3

5 files

This release

0.37.2 This release

5 files

0.35.0

5 files

0.34.0

5 files

0.33.0

5 files

0.32.0

5 files

0.31.0

5 files

0.30.0

5 files

0.29.0

5 files

0.28.0

5 files

0.27.0

5 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page