Ruff v0.4.5: Ruff's language server is now in beta!
python - Configure Visual Studio Code using settings.json to use Ruff instead of Pylint, Pylance, etc - Stack Overflow
What are the best linters and language servers for python?
Python language servers revisited
Videos
Ruff Server is now in beta! In case you didn't know, ruff server is an lsp for python that is also a rewrite of ruff-lsp in rust which was originally written in python I believe. What excites me the most about their blog post regarding the new release is the last bullet point...
Supporting more general language server features: We plan to expand the server's capabilities beyond linting, formatting, and diagnostics.
I hope this means that we might see a highly performant, high quality alternative to the other python lsps.
Update:
Forgot links somehow -_- blogpost: https://astral.sh/blog/ruff-v0.4.5 github: https://github.com/astral-sh/ruff/tree/main/crates/ruff_server#setup
» pip install ruff-lsp
» pip install python-lsp-server
All of the different language servers, linters, and formatters available for Python can be very confusing. There is significant overlap between tools and it's hard to know what is what- this is my attempt to sort through it all.
Below is what I have been able to figure out, corrections and additions added as I see them from the comments.
Ruff is a fast linter / code formatter. It has overtaken Black and Flake8 as the best / most popular linter although not as thourough as Pylint. Rust.
JEDI is a static analysis tool that supports autocompletion, goto, and refactoring. It works with several langauge servers. Similar functionality to Pyright. Python.
Pyright is a language server maintained by Microsoft. It supports type checking (primary function), goto, autocomplete, similar to JEDI. It is written in TypeScript. Pylance is a Microsoft product that builds on Pyright and adds additional feataures to VS Code. TypeScript.
Basedpyright is a fork of Pyright to add Pylance functionality to Pyright for non-Microsoft editors. Mostly TypeScript with Python additions.
MyPy is one of the original static type checkers (2012, but still actively maintained). Python.
PyLSP/Python LSP Server is a language server implementation that interfaces with other libraries like JEDI to provide various LSP functionality. Python.
Pylint is a static code analyser and very thorough (and slow) linter. It can be used alongside other analysis tools like Ruff or Black, and mypy or pyright. Python.
In addition to the above, some commercial IDEs like PyCharm use their own proprietary linters and type checkers.
I use the Helix editor and by default it will use Ruff, JEDI, and pylsp together. I was confused why it used more than one language server/library, which was the motivation for looking into all of this.