Skip to content

Commit 0186f3c

Browse files
authored
Merge pull request #13690 from dependabot/fix-uv-ignore-conditions-version
fix(uv): pass target version to uv lock command to respect ignore conditions
2 parents f746ee0 + fc9eb42 commit 0186f3c

File tree

2 files changed

+47
-2
lines changed

2 files changed

+47
-2
lines changed

uv/lib/dependabot/uv/file_updater/lock_file_updater.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,13 @@ def run_update_command
285285
options_fingerprint = lock_options_fingerprint(options)
286286

287287
# Use pyenv exec to ensure we're using the correct Python environment
288-
command = "pyenv exec uv lock --upgrade-package #{T.must(dependency).name} #{options}"
288+
# Include the target version to respect ignore conditions and avoid upgrading
289+
# to the absolute latest version (which may be blocked by ignore rules)
290+
dep_name = T.must(dependency).name
291+
dep_version = T.must(dependency).version
292+
package_spec = dep_version ? "#{dep_name}==#{dep_version}" : dep_name
293+
294+
command = "pyenv exec uv lock --upgrade-package #{package_spec} #{options}"
289295
fingerprint = "pyenv exec uv lock --upgrade-package <dependency_name> #{options_fingerprint}"
290296

291297
run_command(command, fingerprint:)

uv/spec/dependabot/uv/file_updater/lock_file_updater_spec.rb

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@
382382
end
383383

384384
it "includes the expected options in the command and fingerprint" do
385-
expected_command = "pyenv exec uv lock --upgrade-package requests " \
385+
expected_command = "pyenv exec uv lock --upgrade-package requests==2.23.0 " \
386386
"--index https://[email protected]/simple " \
387387
"--default-index https://[email protected]/simple"
388388
expected_fingerprint = "pyenv exec uv lock --upgrade-package <dependency_name> " \
@@ -396,6 +396,45 @@
396396
fingerprint: expected_fingerprint
397397
)
398398
end
399+
400+
context "when dependency version is nil" do
401+
let(:dependency) do
402+
Dependabot::Dependency.new(
403+
name: "requests",
404+
version: nil,
405+
requirements: [{
406+
file: "pyproject.toml",
407+
requirement: ">=2.31.0",
408+
groups: [],
409+
source: nil
410+
}],
411+
previous_requirements: [{
412+
file: "pyproject.toml",
413+
requirement: ">=2.31.0",
414+
groups: [],
415+
source: nil
416+
}],
417+
previous_version: nil,
418+
package_manager: "uv"
419+
)
420+
end
421+
422+
it "uses only the package name without version constraint" do
423+
expected_command = "pyenv exec uv lock --upgrade-package requests " \
424+
"--index https://[email protected]/simple " \
425+
"--default-index https://[email protected]/simple"
426+
expected_fingerprint = "pyenv exec uv lock --upgrade-package <dependency_name> " \
427+
"--index <index> " \
428+
"--default-index <default_index>"
429+
430+
run_update_command
431+
432+
expect(updater).to have_received(:run_command).with(
433+
expected_command,
434+
fingerprint: expected_fingerprint
435+
)
436+
end
437+
end
399438
end
400439

401440
describe "#replace_dep" do

0 commit comments

Comments
 (0)