Alright, I got some more experience with python language servers while developing
https://github.com/techee/lsp-proxy
1. I don't like `pylsp` much - seems slow and kind of buggy 2. `pyright-langserver` seems to be very good but requires type annotations, otherwise it tends to report false positive errors - but I'm sure this is possible to configure by a config file where it should be possible to specify a less strict behavior. 3. `jedi-language-server` also seems to be good - it doesn't do such an advanced type analysis as pyright but on the other hand it doesn't suffer from false positives because of this 4. `ruff` is super fast, usable just for linting and can be a good supplemental language server to one of the three servers above - using multiple servers can be achieved by the `lsp-proxy` project above
The difference between 2 and 3 can be seen in code like ```Python foo = "" bar = foo + 1 ``` where `pyright` reports an error about adding a string and a number while `jedi-language-server` doesn't report anything.