python: Respect user settings for toolchain discovery over the toolchain set in Zed (#48262)

Closes #46754

Release Notes:

- python: User settings now take precedence over toolchain set in Zed
for pyright/basedpyright
This commit is contained in:
Piotr Osiewicz 2026-04-27 10:40:41 +02:00 committed by GitHub
parent d64372cdec
commit d7d1b54044
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -658,8 +658,22 @@ impl LspAdapter for PyrightLspAdapter {
.and_then(|s| s.settings.clone())
.unwrap_or_default();
// If we have a detected toolchain, configure Pyright to use it
// If we have a detected toolchain, configure Pyright to use it - unless the user sets it themselves.
let should_insert_toolchain = || {
user_settings.as_object().is_none_or(|object| {
[
"venvPath",
"venv",
"python",
"pythonPath",
"defaultInterpreterPath",
]
.into_iter()
.any(|known_key| object.contains_key(known_key))
})
};
if let Some(toolchain) = toolchain
&& should_insert_toolchain()
&& let Ok(env) =
serde_json::from_value::<PythonToolchainData>(toolchain.as_json.clone())
{
@ -2075,7 +2089,21 @@ impl LspAdapter for BasedPyrightLspAdapter {
.unwrap_or_default();
// If we have a detected toolchain, configure Pyright to use it
let should_insert_toolchain = || {
user_settings.as_object().is_none_or(|object| {
[
"venvPath",
"venv",
"python",
"pythonPath",
"defaultInterpreterPath",
]
.into_iter()
.any(|known_key| object.contains_key(known_key))
})
};
if let Some(toolchain) = toolchain
&& should_insert_toolchain()
&& let Ok(env) = serde_json::from_value::<
pet_core::python_environment::PythonEnvironment,
>(toolchain.as_json.clone())