python-lsp/python-lsp-ruff

pylsp+ruff sometimes very slow to update an inline error

dstromberg opened this issue · 6 comments

This is an example - this sort of problem doesn't happen every time, not even most of the time, but it does happen enough to shake my confidence in the errors I'm getting:

│ return (
 │ │ LockingPassthrough(NewProduct, lock)     ■ Undefined name `Status`
│ │ .filter(NewProduct.deleted_on.is_(None))
│ │ .join(subquery, Pipeline.product_id == NewProduct.id)
│ )

As you can see, there's nothing about "Status" on that line. It's been like this for about 10 or 20 minutes. I had Status in there, but I corrected the problem; sadly, the red error never went away.

My question is twofold:

  1. For the short term, is there command/keystroke to make pylsp forget what it thinks it knows and reexamine the code? That would probably make this easier to deal with.
  2. For the long term, is there a way to make pylsp+ruff stop giving spurious (outdated) errors?

Thanks!

I'm using:
ruff 0.0.261

...but I just realized my venv didn't have much in it, so I'll give this some time to see if it resurfaces with that fix.

It's still happening.

Here are the pypi packages in my mason virtualenv:

attrs                  23.1.0     /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
black                  23.3.0     /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
cattrs                 22.2.0     /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
click                  8.1.3      /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
docstring-to-markdown  0.12       /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
exceptiongroup         1.1.1      /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
jedi                   0.17.2     /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
lsprotocol             2023.0.0a1 /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
mypy-extensions        1.0.0      /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
packaging              23.1       /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
parso                  0.7.1      /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
pathspec               0.11.1     /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
pip                    23.0.1     /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
platformdirs           3.5.1      /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
pluggy                 1.0.0      /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
pydocstyle             6.3.0      /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
python-jsonrpc-server  0.4.0      /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
python-language-server 0.36.2     /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
python-lsp-jsonrpc     1.0.0      /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
python-lsp-ruff        1.4.0      /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
python-lsp-server      1.7.2      /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
ruff                   0.0.267    /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
setuptools             67.6.1     /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
snowballstemmer        2.2.0      /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
tomli                  2.0.1      /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
ujson                  5.7.0      /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip
wheel                  0.40.0     /data/home/dstromberg/.local/share/nvim/mason/packages/python-lsp-server/venv/lib/python3.10/site-packages pip

BTW, if I run:
:!ruff %
...then things look as expected.

IMO this sounds more like an editor problem than a problem of the LSP. Do you use the latest version of neovim?
Also can you try to play with debounce_text_changes to see if this helps avoiding this problem?

I was on neovim 0.8.2, from Ubuntu's repo.

Now I'm on:
NVIM v0.9.0
Build type: RelWithDebInfo
LuaJIT 2.1.0-beta3
...from an appimage.

I'll have to give it some time to see if that helps.

Were you able to update and test?