aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/mason-core/managers/pip3/init.lua12
-rw-r--r--lua/mason/settings.lua5
2 files changed, 16 insertions, 1 deletions
diff --git a/lua/mason-core/managers/pip3/init.lua b/lua/mason-core/managers/pip3/init.lua
index 67f70a89..aeca0ce0 100644
--- a/lua/mason-core/managers/pip3/init.lua
+++ b/lua/mason-core/managers/pip3/init.lua
@@ -64,6 +64,18 @@ function M.install(packages)
Optional.of_nilable(executable)
:if_present(function()
+ if settings.current.pip.upgrade_pip then
+ ctx.spawn.python {
+ "-m",
+ "pip",
+ "--disable-pip-version-check",
+ "install",
+ "-U",
+ settings.current.pip.install_args,
+ "pip",
+ with_paths = { M.venv_path(ctx.cwd:get()) },
+ }
+ end
ctx.spawn.python {
"-m",
"pip",
diff --git a/lua/mason/settings.lua b/lua/mason/settings.lua
index 4322988f..9bdc0f9c 100644
--- a/lua/mason/settings.lua
+++ b/lua/mason/settings.lua
@@ -15,6 +15,9 @@ local DEFAULT_SETTINGS = {
PATH = "prepend",
pip = {
+ -- Whether to upgrade pip to the latest version in the virtual environment before installing packages.
+ upgrade_pip = false,
+
-- These args will be added to `pip install` calls. Note that setting extra args might impact intended behavior
-- and is not recommended.
--
@@ -92,7 +95,7 @@ M.current = M._DEFAULT_SETTINGS
---@param opts MasonSettings
function M.set(opts)
- M.current = vim.tbl_deep_extend("force", M.current, opts)
+ M.current = vim.tbl_deep_extend("force", vim.deepcopy(M.current), opts)
end
return M