From 02c309c151cb242846de790ce60710250e1212ea Mon Sep 17 00:00:00 2001 From: Cor Zuurmond Date: Tue, 30 Jul 2024 11:58:59 +0200 Subject: [PATCH 1/2] Add upgrade and upgrade eager flags to pip install call https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-U --- cmd/labs/project/installer.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cmd/labs/project/installer.go b/cmd/labs/project/installer.go index 39ed9a966e..041415964f 100644 --- a/cmd/labs/project/installer.go +++ b/cmd/labs/project/installer.go @@ -272,8 +272,10 @@ func (i *installer) installPythonDependencies(ctx context.Context, spec string) // - python3 -m ensurepip --default-pip // - curl -o https://bootstrap.pypa.io/get-pip.py | python3 var buf bytes.Buffer + // Ensure latest version(s) is installed with the `--upgrade` and `--upgrade-strategy eager` flags + // https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-U _, err := process.Background(ctx, - []string{i.virtualEnvPython(ctx), "-m", "pip", "install", spec}, + []string{i.virtualEnvPython(ctx), "-m", "pip", "install", "--upgrade", "--upgrade-strategy", "eager", spec}, process.WithCombinedOutput(&buf), process.WithDir(libDir)) if err != nil { From 9cc553efd10fd5d45da4edf23c0ff0a987989b0e Mon Sep 17 00:00:00 2001 From: Cor Zuurmond Date: Tue, 30 Jul 2024 16:44:29 +0200 Subject: [PATCH 2/2] Add pip flags to installer tests --- cmd/labs/project/installer_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmd/labs/project/installer_test.go b/cmd/labs/project/installer_test.go index 0e049b4c06..8754a560bf 100644 --- a/cmd/labs/project/installer_test.go +++ b/cmd/labs/project/installer_test.go @@ -199,7 +199,7 @@ func TestInstallerWorksForReleases(t *testing.T) { stub.WithStdoutFor(`python[\S]+ --version`, "Python 3.10.5") // on Unix, we call `python3`, but on Windows it is `python.exe` stub.WithStderrFor(`python[\S]+ -m venv .*/.databricks/labs/blueprint/state/venv`, "[mock venv create]") - stub.WithStderrFor(`python[\S]+ -m pip install .`, "[mock pip install]") + stub.WithStderrFor(`python[\S]+ -m pip install --upgrade --upgrade-strategy eager .`, "[mock pip install]") stub.WithStdoutFor(`python[\S]+ install.py`, "setting up important infrastructure") // simulate the case of GitHub Actions @@ -406,7 +406,7 @@ func TestUpgraderWorksForReleases(t *testing.T) { // Install stubs for the python calls we need to ensure were run in the // upgrade process. ctx, stub := process.WithStub(ctx) - stub.WithStderrFor(`python[\S]+ -m pip install .`, "[mock pip install]") + stub.WithStderrFor(`python[\S]+ -m pip install --upgrade --upgrade-strategy eager .`, "[mock pip install]") stub.WithStdoutFor(`python[\S]+ install.py`, "setting up important infrastructure") py, _ := python.DetectExecutable(ctx) @@ -430,13 +430,13 @@ func TestUpgraderWorksForReleases(t *testing.T) { // Check if the stub was called with the 'python -m pip install' command pi := false for _, call := range stub.Commands() { - if strings.HasSuffix(call, "-m pip install .") { + if strings.HasSuffix(call, "-m pip install --upgrade --upgrade-strategy eager .") { pi = true break } } if !pi { - t.Logf(`Expected stub command 'python[\S]+ -m pip install .' not found`) + t.Logf(`Expected stub command 'python[\S]+ -m pip install --upgrade --upgrade-strategy eager .' not found`) t.FailNow() } }