dependabot-uv 0.398.0 → 0.400.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f0641cd3de66cb0651830673fbcb78f65ce4f6b4a0c59dc5858d0ec52c024968
|
|
4
|
+
data.tar.gz: cea56c236a2c71bcf1c0fb6fc5a342631acb720925122241a2ee3405c68b32df
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ecb3617457c815151845b615f703004722a0014507130bb3598eb4a8802ec7c7fd5883aeb7efce467e8be91b3abc0895c73aa09b401098b0c9eaff55d021dc95
|
|
7
|
+
data.tar.gz: 0a1647d7b40b5297f3320c37ff7e61922f6bbe627fdf76fd2b55ad2215545600852c833cd7f31b2067a6f8d54b961609c4a2567216457e145696ec5504f00cb6
|
|
@@ -16,8 +16,8 @@ require "dependabot/uv/name_normaliser"
|
|
|
16
16
|
require "dependabot/uv/requirements_file_matcher"
|
|
17
17
|
require "dependabot/uv/language_version_manager"
|
|
18
18
|
require "dependabot/uv/package_manager"
|
|
19
|
+
require "dependabot/uv/lockfile_document"
|
|
19
20
|
require "dependabot/python/file_parser/pep_dependency"
|
|
20
|
-
require "toml-rb"
|
|
21
21
|
|
|
22
22
|
module Dependabot
|
|
23
23
|
module Uv
|
|
@@ -199,15 +199,10 @@ module Dependabot
|
|
|
199
199
|
dependency_set = DependencySet.new
|
|
200
200
|
|
|
201
201
|
uv_lock_files.each do |file|
|
|
202
|
-
|
|
203
|
-
packages = lockfile_content.fetch("package", [])
|
|
204
|
-
|
|
205
|
-
packages.each do |package_data|
|
|
206
|
-
next unless package_data.is_a?(Hash) && package_data["name"] && package_data["version"]
|
|
207
|
-
|
|
202
|
+
LockfileDocument.from_file(file).each_dependency do |package|
|
|
208
203
|
dependency_set << Dependency.new(
|
|
209
|
-
name: normalised_name(
|
|
210
|
-
version:
|
|
204
|
+
name: normalised_name(package.name),
|
|
205
|
+
version: package.version,
|
|
211
206
|
requirements: [], # Lock files don't contain requirements
|
|
212
207
|
package_manager: "uv"
|
|
213
208
|
)
|
|
@@ -322,9 +322,19 @@ module Dependabot
|
|
|
322
322
|
content = replace_header_with_original(updated_content, T.must(file.content))
|
|
323
323
|
content = remove_new_warnings(content, T.must(file.content))
|
|
324
324
|
content = update_hashes_if_required(content, T.must(file.content))
|
|
325
|
+
content = scrub_index_url_credentials(content)
|
|
325
326
|
replace_absolute_file_paths(content, T.must(file.content))
|
|
326
327
|
end
|
|
327
328
|
|
|
329
|
+
# Index URLs are passed to `uv pip compile` with credentials embedded so
|
|
330
|
+
# the private index can be fetched, and uv emits those URLs verbatim
|
|
331
|
+
# into the compiled file when `--emit-index-url` is active. Strip any
|
|
332
|
+
# userinfo so tokens are never written into the regenerated file.
|
|
333
|
+
sig { params(content: String).returns(String) }
|
|
334
|
+
def scrub_index_url_credentials(content)
|
|
335
|
+
content.gsub(%r{^(--(?:extra-)?index-url[= ]https?://)[^/\s]+@}, "\\1")
|
|
336
|
+
end
|
|
337
|
+
|
|
328
338
|
sig { params(updated_content: String, original_content: String).returns(String) }
|
|
329
339
|
def replace_header_with_original(updated_content, original_content)
|
|
330
340
|
original_header_lines =
|
|
@@ -22,6 +22,11 @@ module Dependabot
|
|
|
22
22
|
const :dev_dependencies, T::Array[String]
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
+
class LockedPackage < T::ImmutableStruct
|
|
26
|
+
const :name, String
|
|
27
|
+
const :version, String
|
|
28
|
+
end
|
|
29
|
+
|
|
25
30
|
sig { params(file: Dependabot::DependencyFile).returns(LockfileDocument) }
|
|
26
31
|
def self.from_file(file)
|
|
27
32
|
new(data: T.cast(TomlRB.parse(T.must(file.content)), Object), context: file.path)
|
|
@@ -62,6 +67,43 @@ module Dependabot
|
|
|
62
67
|
end
|
|
63
68
|
end
|
|
64
69
|
|
|
70
|
+
sig { params(block: T.proc.params(package: LockedPackage).void).void }
|
|
71
|
+
def each_dependency(&block)
|
|
72
|
+
# The file parser historically skips the pairs yielded by an object-shaped package section.
|
|
73
|
+
return if @data["package"].is_a?(Hash)
|
|
74
|
+
|
|
75
|
+
package_entries.each_with_index do |entry, index|
|
|
76
|
+
next unless entry.is_a?(Hash)
|
|
77
|
+
|
|
78
|
+
package = object_hash(entry)
|
|
79
|
+
name = package["name"]
|
|
80
|
+
version = package["version"]
|
|
81
|
+
next unless name && version
|
|
82
|
+
|
|
83
|
+
yield(LockedPackage.new(
|
|
84
|
+
name: string(name, "package[#{index}].name"),
|
|
85
|
+
version: string(version, "package[#{index}].version")
|
|
86
|
+
))
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
sig { returns(T::Array[LockedPackage]) }
|
|
91
|
+
def resolution_packages
|
|
92
|
+
return [] if @data["package"].nil?
|
|
93
|
+
|
|
94
|
+
package_entries.each_with_index.filter_map do |entry, index|
|
|
95
|
+
# String#[] cannot produce a valid version from the "version" lookup.
|
|
96
|
+
next if entry.is_a?(String)
|
|
97
|
+
|
|
98
|
+
package = object_hash(entry)
|
|
99
|
+
name = optional_string(package["name"], "package[#{index}].name")
|
|
100
|
+
version = optional_string(package["version"], "package[#{index}].version")
|
|
101
|
+
next unless name && version
|
|
102
|
+
|
|
103
|
+
LockedPackage.new(name: name, version: version)
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
65
107
|
private
|
|
66
108
|
|
|
67
109
|
sig { returns(T::Array[Object]) }
|
|
@@ -89,6 +131,20 @@ module Dependabot
|
|
|
89
131
|
value if value.is_a?(String)
|
|
90
132
|
end
|
|
91
133
|
|
|
134
|
+
sig { params(value: Object, field: String).returns(T.nilable(String)) }
|
|
135
|
+
def optional_string(value, field)
|
|
136
|
+
return if value.nil?
|
|
137
|
+
|
|
138
|
+
string(value, field)
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
sig { params(value: Object, field: String).returns(String) }
|
|
142
|
+
def string(value, field)
|
|
143
|
+
return value if value.is_a?(String)
|
|
144
|
+
|
|
145
|
+
raise TypeError, "#{@context} #{field} must be a string"
|
|
146
|
+
end
|
|
147
|
+
|
|
92
148
|
sig { params(entries: Object).returns(T::Array[String]) }
|
|
93
149
|
def dependency_names(entries)
|
|
94
150
|
return [] unless entries.is_a?(Array)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require "sorbet-runtime"
|
|
5
|
-
require "
|
|
5
|
+
require "dependabot/uv/lockfile_document"
|
|
6
6
|
|
|
7
7
|
require "dependabot/errors"
|
|
8
8
|
require "dependabot/package/release_cooldown_options"
|
|
@@ -278,20 +278,13 @@ module Dependabot
|
|
|
278
278
|
.returns(T::Array[Dependabot::Uv::Version])
|
|
279
279
|
end
|
|
280
280
|
def locked_versions(lockfile)
|
|
281
|
-
parsed = T.cast(TomlRB.parse(T.must(lockfile.content)), T::Hash[String, Object])
|
|
282
|
-
packages = T.cast(parsed["package"], T.nilable(T::Array[T::Hash[String, Object]])) || []
|
|
283
281
|
dependency_name = NameNormaliser.normalise(dependency.name)
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
package_version = T.cast(package["version"], T.nilable(String))
|
|
288
|
-
next unless package_name && NameNormaliser.normalise(package_name) == dependency_name
|
|
289
|
-
next unless Uv::Version.correct?(package_version)
|
|
290
|
-
|
|
291
|
-
versions << Uv::Version.new(package_version)
|
|
292
|
-
end
|
|
282
|
+
LockfileDocument.from_file(lockfile).resolution_packages.filter_map do |package|
|
|
283
|
+
next unless NameNormaliser.normalise(package.name) == dependency_name
|
|
284
|
+
next unless Uv::Version.correct?(package.version)
|
|
293
285
|
|
|
294
|
-
|
|
286
|
+
Uv::Version.new(package.version)
|
|
287
|
+
end
|
|
295
288
|
end
|
|
296
289
|
|
|
297
290
|
sig { returns(T.nilable(Dependabot::DependencyFile)) }
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dependabot-uv
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.400.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dependabot
|
|
@@ -15,28 +15,28 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - '='
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: 0.
|
|
18
|
+
version: 0.400.0
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
23
|
- - '='
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: 0.
|
|
25
|
+
version: 0.400.0
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: dependabot-python
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
29
29
|
requirements:
|
|
30
30
|
- - '='
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 0.
|
|
32
|
+
version: 0.400.0
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
37
|
- - '='
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: 0.
|
|
39
|
+
version: 0.400.0
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
41
|
name: debug
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -302,7 +302,7 @@ licenses:
|
|
|
302
302
|
- MIT
|
|
303
303
|
metadata:
|
|
304
304
|
bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
|
|
305
|
-
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.
|
|
305
|
+
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.400.0
|
|
306
306
|
rdoc_options: []
|
|
307
307
|
require_paths:
|
|
308
308
|
- lib
|