Description
Background
At work we have a large Python monorepo with multiple libraries and services. Each python project has its own pyproject.toml with its own dependencies. We use Poetry with poetry config virtualenvs.in-project true
to create a virtual environment in each project folder, and a vscode workspace which sets these venvs as the python interpreter for each project. This has worked wonderfully and each opened python file correctly loads the appropriate venv for linting and import resolution.
Recently the Ruff extension has stopped working, and with one of the latest extension updates or updates to vscode it now produces a crash log. Ruff works fine if you open one of the projects alone in vscode, but does not work with the workspace.
Here is a minimal repo that reproduces the crash: https://github.com/leddy231/ruff_vscode_multiroot
Ruff = 0.0.272
Python = 3.10.4 and 3.11.3
VSCode = 1.79.2
Ruff-extension = 6/20/2023
Here is the full crash output from the extension
2023-06-20 15:11:35.229 [info] Name: Ruff
2023-06-20 15:11:35.229 [info] Module: ruff
2023-06-20 15:11:35.229 [info] Python extension loading
2023-06-20 15:11:35.229 [info] Waiting for interpreter from python extension.
2023-06-20 15:11:36.036 [info] Python extension loaded
2023-06-20 15:11:38.216 [info] Server run command: /home/martin/.vscode/extensions/charliermarsh.ruff-2023.26.0-linux-x64/bundled/tool/server.py
2023-06-20 15:11:38.216 [info] Server: Start requested.
2023-06-20 15:11:38.219 [info] [Error - 3:11:38 PM] Ruff client: couldn't create connection to server.
2023-06-20 15:11:38.219 [info] Error: Unsupported server configuration {
"args": [
"/home/martin/.vscode/extensions/charliermarsh.ruff-2023.26.0-linux-x64/bundled/tool/server.py"
],
"options": {
"cwd": "/home/martin/ruff_multiroot_test",
"env": {
"ASDF_DIR": "/home/martin/.asdf",
"CHROME_DESKTOP": "code-url-handler.desktop",
"COLORTERM": "truecolor",
"COMPIZ_CONFIG_PROFILE": "gnome-flashback",
"DBUS_SESSION_BUS_ADDRESS": "unix:path=/run/user/1000/bus",
"DEBUGINFOD_URLS": "https://debuginfod.ubuntu.com ",
"DESKTOP_AUTOSTART_ID": "103e5e9bed3e08c4bf168726171799393000000053800016",
"DESKTOP_SESSION": "regolith",
"DISPLAY": ":0",
"ELECTRON_NO_ATTACH_CONSOLE": "1",
"GDK_BACKEND": "x11",
"GDMSESSION": "regolith",
"GIO_LAUNCHED_DESKTOP_FILE": "/usr/share/applications/code.desktop",
"GIO_LAUNCHED_DESKTOP_FILE_PID": "72752",
"GNOME_DESKTOP_SESSION_ID": "this-is-deprecated",
"GNOME_TERMINAL_SCREEN": "/org/gnome/Terminal/screen/2aa16ef4_874a_44d9_a16f_b8ba7bd97c44",
"GNOME_TERMINAL_SERVICE": ":1.240",
"GPG_AGENT_INFO": "/run/user/1000/gnupg/S.gpg-agent:0:1",
"GTK_MODULES": "gail:atk-bridge",
"HOME": "/home/martin",
"I3SOCK": "/run/user/1000/i3/ipc-socket.5745",
"LANG": "en_US.UTF-8",
"LC_ADDRESS": "sv_SE.UTF-8",
"LC_IDENTIFICATION": "sv_SE.UTF-8",
"LC_MEASUREMENT": "sv_SE.UTF-8",
"LC_MONETARY": "sv_SE.UTF-8",
"LC_NAME": "sv_SE.UTF-8",
"LC_NUMERIC": "sv_SE.UTF-8",
"LC_PAPER": "sv_SE.UTF-8",
"LC_TELEPHONE": "sv_SE.UTF-8",
"LC_TIME": "sv_SE.UTF-8",
"LESS": "-R",
"LOGNAME": "martin",
"LSCOLORS": "Gxfxcxdxbxegedabagacad",
"LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:",
"NO_AT_BRIDGE": "1",
"OLDPWD": "/home/martin",
"ORIGINAL_XDG_CURRENT_DESKTOP": "sway",
"PAGER": "less",
"PATH": "/home/martin/.local/bin:/home/martin/.asdf/shims:/home/martin/.asdf/bin:/home/martin/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin",
"PWD": "/home/martin/ruff_multiroot_test",
"QT_ACCESSIBILITY": "1",
"QT_IM_MODULE": "ibus",
"SESSION_MANAGER": "local/martin-eliteboook:@/tmp/.ICE-unix/5380,unix/martin-eliteboook:/tmp/.ICE-unix/5380",
"SHELL": "/usr/bin/zsh",
"SHLVL": "1",
"SSH_AGENT_PID": "125481",
"SSH_AUTH_SOCK": "/tmp/ssh-XXXXXX9wDaF4/agent.125480",
"SYSTEMD_EXEC_PID": "5124",
"TERM": "xterm-256color",
"USER": "martin",
"USERNAME": "martin",
"VSCODE_AMD_ENTRYPOINT": "vs/workbench/api/node/extensionHostProcess",
"VSCODE_CLI": "1",
"VSCODE_CODE_CACHE_PATH": "/home/martin/.config/Code/CachedData/695af097c7bd098fbf017ce3ac85e09bbc5dda06",
"VSCODE_CRASH_REPORTER_PROCESS_TYPE": "extensionHost",
"VSCODE_CWD": "/home/martin/ruff_multiroot_test",
"VSCODE_HANDLES_UNCAUGHT_ERRORS": "true",
"VSCODE_IPC_HOOK": "/run/user/1000/vscode-6379ee7e-1.79-main.sock",
"VSCODE_NLS_CONFIG": "{\"locale\":\"en-us\",\"osLocale\":\"en-us\",\"availableLanguages\":{},\"_languagePackSupport\":true}",
"VSCODE_PID": "72752",
"VTE_VERSION": "7000",
"WINDOWPATH": "2",
"XAUTHORITY": "/run/user/1000/gdm/Xauthority",
"XDG_CONFIG_DIRS": "/etc/xdg/xdg-regolith:/etc/xdg",
"XDG_CURRENT_DESKTOP": "sway",
"XDG_DATA_DIRS": "/usr/share/regolith:/usr/share/gnome:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop",
"XDG_MENU_PREFIX": "gnome-flashback-",
"XDG_RUNTIME_DIR": "/run/user/1000",
"XDG_SESSION_CLASS": "user",
"XDG_SESSION_DESKTOP": "regolith",
"XDG_SESSION_TYPE": "x11",
"XMODIFIERS": "@im=ibus",
"ZSH": "/home/martin/.oh-my-zsh",
"_": "/usr/bin/code",
"ELECTRON_RUN_AS_NODE": "1",
"APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL": "1",
"USE_DEBUGPY": "False",
"LS_SHOW_NOTIFICATION": "off"
}
}
}
at stdioEncoding (/home/martin/.vscode/extensions/charliermarsh.ruff-2023.26.0-linux-x64/dist/webpack:/ruff/node_modules/vscode-languageclient/lib/node/main.js:466:98)
at b.LogMessageNotification [as createConnection] (/home/martin/.vscode/extensions/charliermarsh.ruff-2023.26.0-linux-x64/dist/webpack:/ruff/node_modules/vscode-languageclient/lib/common/client.js:1094:83)
at b.start (/home/martin/.vscode/extensions/charliermarsh.ruff-2023.26.0-linux-x64/dist/webpack:/ruff/node_modules/vscode-languageclient/lib/common/client.js:635:72)
at runServer (/home/martin/.vscode/extensions/charliermarsh.ruff-2023.26.0-linux-x64/dist/webpack:/ruff/src/common/server.ts:118:16)
at checkIfConfigurationChanged (/home/martin/.vscode/extensions/charliermarsh.ruff-2023.26.0-linux-x64/dist/webpack:/ruff/src/extension.ts:158:15)
at /home/martin/.vscode/extensions/charliermarsh.ruff-2023.26.0-linux-x64/dist/webpack:/ruff/src/extension.ts:179:11
2023-06-20 15:11:38.219 [error] Server: Start failed: Error: Unsupported server configuration {
"args": [
"/home/martin/.vscode/extensions/charliermarsh.ruff-2023.26.0-linux-x64/bundled/tool/server.py"
],
"options": {
"cwd": "/home/martin/ruff_multiroot_test",
"env": {
"ASDF_DIR": "/home/martin/.asdf",
"CHROME_DESKTOP": "code-url-handler.desktop",
"COLORTERM": "truecolor",
"COMPIZ_CONFIG_PROFILE": "gnome-flashback",
"DBUS_SESSION_BUS_ADDRESS": "unix:path=/run/user/1000/bus",
"DEBUGINFOD_URLS": "https://debuginfod.ubuntu.com ",
"DESKTOP_AUTOSTART_ID": "103e5e9bed3e08c4bf168726171799393000000053800016",
"DESKTOP_SESSION": "regolith",
"DISPLAY": ":0",
"ELECTRON_NO_ATTACH_CONSOLE": "1",
"GDK_BACKEND": "x11",
"GDMSESSION": "regolith",
"GIO_LAUNCHED_DESKTOP_FILE": "/usr/share/applications/code.desktop",
"GIO_LAUNCHED_DESKTOP_FILE_PID": "72752",
"GNOME_DESKTOP_SESSION_ID": "this-is-deprecated",
"GNOME_TERMINAL_SCREEN": "/org/gnome/Terminal/screen/2aa16ef4_874a_44d9_a16f_b8ba7bd97c44",
"GNOME_TERMINAL_SERVICE": ":1.240",
"GPG_AGENT_INFO": "/run/user/1000/gnupg/S.gpg-agent:0:1",
"GTK_MODULES": "gail:atk-bridge",
"HOME": "/home/martin",
"I3SOCK": "/run/user/1000/i3/ipc-socket.5745",
"LANG": "en_US.UTF-8",
"LC_ADDRESS": "sv_SE.UTF-8",
"LC_IDENTIFICATION": "sv_SE.UTF-8",
"LC_MEASUREMENT": "sv_SE.UTF-8",
"LC_MONETARY": "sv_SE.UTF-8",
"LC_NAME": "sv_SE.UTF-8",
"LC_NUMERIC": "sv_SE.UTF-8",
"LC_PAPER": "sv_SE.UTF-8",
"LC_TELEPHONE": "sv_SE.UTF-8",
"LC_TIME": "sv_SE.UTF-8",
"LESS": "-R",
"LOGNAME": "martin",
"LSCOLORS": "Gxfxcxdxbxegedabagacad",
"LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:",
"NO_AT_BRIDGE": "1",
"OLDPWD": "/home/martin",
"ORIGINAL_XDG_CURRENT_DESKTOP": "sway",
"PAGER": "less",
"PATH": "/home/martin/.local/bin:/home/martin/.asdf/shims:/home/martin/.asdf/bin:/home/martin/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin",
"PWD": "/home/martin/ruff_multiroot_test",
"QT_ACCESSIBILITY": "1",
"QT_IM_MODULE": "ibus",
"SESSION_MANAGER": "local/martin-eliteboook:@/tmp/.ICE-unix/5380,unix/martin-eliteboook:/tmp/.ICE-unix/5380",
"SHELL": "/usr/bin/zsh",
"SHLVL": "1",
"SSH_AGENT_PID": "125481",
"SSH_AUTH_SOCK": "/tmp/ssh-XXXXXX9wDaF4/agent.125480",
"SYSTEMD_EXEC_PID": "5124",
"TERM": "xterm-256color",
"USER": "martin",
"USERNAME": "martin",
"VSCODE_AMD_ENTRYPOINT": "vs/workbench/api/node/extensionHostProcess",
"VSCODE_CLI": "1",
"VSCODE_CODE_CACHE_PATH": "/home/martin/.config/Code/CachedData/695af097c7bd098fbf017ce3ac85e09bbc5dda06",
"VSCODE_CRASH_REPORTER_PROCESS_TYPE": "extensionHost",
"VSCODE_CWD": "/home/martin/ruff_multiroot_test",
"VSCODE_HANDLES_UNCAUGHT_ERRORS": "true",
"VSCODE_IPC_HOOK": "/run/user/1000/vscode-6379ee7e-1.79-main.sock",
"VSCODE_NLS_CONFIG": "{\"locale\":\"en-us\",\"osLocale\":\"en-us\",\"availableLanguages\":{},\"_languagePackSupport\":true}",
"VSCODE_PID": "72752",
"VTE_VERSION": "7000",
"WINDOWPATH": "2",
"XAUTHORITY": "/run/user/1000/gdm/Xauthority",
"XDG_CONFIG_DIRS": "/etc/xdg/xdg-regolith:/etc/xdg",
"XDG_CURRENT_DESKTOP": "sway",
"XDG_DATA_DIRS": "/usr/share/regolith:/usr/share/gnome:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop",
"XDG_MENU_PREFIX": "gnome-flashback-",
"XDG_RUNTIME_DIR": "/run/user/1000",
"XDG_SESSION_CLASS": "user",
"XDG_SESSION_DESKTOP": "regolith",
"XDG_SESSION_TYPE": "x11",
"XMODIFIERS": "@im=ibus",
"ZSH": "/home/martin/.oh-my-zsh",
"_": "/usr/bin/code",
"ELECTRON_RUN_AS_NODE": "1",
"APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL": "1",
"USE_DEBUGPY": "False",
"LS_SHOW_NOTIFICATION": "off"
}
}
}