Update README.md

This commit is contained in:
Shunsuke Shibayama 2024-08-21 11:59:17 +09:00
parent 42c11642fd
commit 18af09b5e4

101
README.md
View file

@ -16,7 +16,7 @@
pip install pylyzer pip install pylyzer
``` ```
### cargo (rust package manager) ### cargo (Rust package manager)
```bash ```bash
cargo install pylyzer --locked cargo install pylyzer --locked
@ -29,7 +29,7 @@ git clone https://github.com/mtshiba/pylyzer.git
cargo install --path . --locked cargo install --path . --locked
``` ```
Make sure that `cargo/rustc` is up-to-date, as pylyzer may be written with the latest language features. Make sure that `cargo`/`rustc` is up-to-date, as pylyzer may be written with the latest (stable) language features.
### [GitHub Releases](https://github.com/mtshiba/pylyzer/releases/latest) ### [GitHub Releases](https://github.com/mtshiba/pylyzer/releases/latest)
@ -69,10 +69,10 @@ You can install the VSCode extension from the [Marketplace](https://marketplace.
code --install-extension pylyzer.pylyzer code --install-extension pylyzer.pylyzer
``` ```
## What is the difference from [Ruff](https://github.com/charliermarsh/ruff)? ## What is the difference from [Ruff](https://github.com/astral-sh/ruff)?
[Ruff](https://github.com/charliermarsh/ruff), like pylyzer, is a static code analysis tool for Python written in Rust, but Ruff is a linter and pylyzer is a type checker & language server. [Ruff](https://github.com/astral-sh/ruff), like pylyzer, is a static code analysis tool for Python written in Rust, but Ruff is a linter and pylyzer is a type checker & language server.
pylyzer does not perform linting, and Ruff does not perform type checking. pylyzer does not perform linting & formatting, and Ruff does not perform type checking.
## How it works ## How it works
@ -92,59 +92,68 @@ pylyzer converts Python ASTs to Erg ASTs and passes them to Erg's type checker.
## TODOs ## TODOs
* [x] type checking * [x] type checking
* [x] variable * [x] variable
* [x] operator * [x] operator
* [x] function/method * [x] function/method
* [x] class * [x] class
* [x] type inference * [x] type inference
* [x] variable * [x] variable
* [x] operator * [x] operator
* [x] function/method * [x] function/method
* [x] class * [x] class
* [x] builtin modules analysis * [x] builtin modules analysis
* [x] local scripts analysis * [x] local scripts analysis
* [x] local packages analysis * [x] local packages analysis
* [x] LSP features * [x] LSP features
* [x] diagnostics * [x] diagnostics
* [x] completion * [x] completion
* [x] rename * [x] rename
* [x] hover * [x] hover
* [x] goto definition * [x] goto definition
* [x] signature help * [x] signature help
* [x] find references * [x] find references
* [x] document symbol * [x] document symbol
* [x] call hierarchy * [x] call hierarchy
* [x] collection types * [x] collection types
* [x] `list` * [x] `list`
* [x] `dict` * [x] `dict`
* [x] `tuple` * [x] `tuple`
* [x] `set`
* [ ] `typing` * [ ] `typing`
* [x] `Union` * [x] `Union`
* [x] `Optional` * [x] `Optional`
* [x] `Literal` * [x] `Literal`
* [x] `Callable` * [x] `Callable`
* [ ] `TypedDict` * [ ] `TypedDict`
* [x] `TypeVar` * [x] `TypeVar`
* [ ] `Generic` * [ ] `Generic`
* [ ] `Protocol` * [ ] `Protocol`
* [ ] `Final` * [ ] `Final`
* [ ] `Annotated` * [ ] `Annotated`
* [ ] `TypeAlias` * [ ] `TypeAlias`
* [ ] `TypeGuard` * [ ] `TypeGuard`
* [x] type parameter syntax * [x] type parameter syntax
* [x] type narrowing * [x] type narrowing
* [ ] others * [ ] others
* `collections.abc` * [ ] `collections.abc`
* [x] `Iterable` * [x] `Iterable`
* [x] `Iterator` * [x] `Iterator`
* [x] `Mapping` * [x] `Mapping`
* [x] `Sequence` * [x] `Sequence`
* [ ] others * [ ] others
* [x] type assertion (`typing.cast`) * [x] type assertion (`typing.cast`)
* [x] type narrowing (`is`, `isinstance`) * [x] type narrowing (`is`, `isinstance`)
* [ ] `pyi` (stub) files support * [ ] `pyi` (stub) files support
* [ ] glob pattern file check * [ ] glob pattern file check
## Join us!
We are looking for contributors to help us improve pylyzer. If you are interested in contributing and have any questions, please feel free to contact us.
* [Discord (Erg language)](https://discord.gg/kQBuaSUS46)
* [#pylyzer](https://discord.com/channels/1006946336433774742/1056815981168697354)
* [GitHub discussions](https://github.com/mtshiba/pylyzer/discussions)
--- ---
<span id="1" style="font-size:x-small"><sup>1</sup> The performance test was conducted on MacBook (Early 2016) with 1.1 GHz Intel Core m3 processor and 8 GB 1867 MHz LPDDR3 memory.[](#f1)</span> <span id="1" style="font-size:x-small"><sup>1</sup> The performance test was conducted on MacBook (Early 2016) with 1.1 GHz Intel Core m3 processor and 8 GB 1867 MHz LPDDR3 memory.[](#f1)</span>