dependabot-conda 0.391.0 → 0.392.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 +4 -4
- data/lib/dependabot/conda/file_parser.rb +31 -28
- data/lib/dependabot/conda/file_updater.rb +1 -3
- data/lib/dependabot/conda/metadata_finder.rb +1 -1
- data/lib/dependabot/conda/update_checker/latest_version_finder.rb +9 -11
- data/lib/dependabot/conda/update_checker/requirements_updater.rb +14 -11
- data/lib/dependabot/conda/update_checker.rb +2 -2
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ee822579eaf5c3ed3b029528a4a9204ee40b7a5c26d17807f5261fca44c1323d
|
|
4
|
+
data.tar.gz: c2f2173d3829508e9a7a63f1ec80c840034c20356857af4507f112d743bc99d7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: aac051bca37bee0e86824f3cab6dbb388d509bb2f86e4fc4c53e851ce36b754e64a40e007edf2a1641e5770fa1754072ff409ba7d4e23fdda050476d6006fb70
|
|
7
|
+
data.tar.gz: 5c63b5fcdedb799ae284aa15a1eb151138c84b1d7ea37c435811ac0f9f04b8b1a340827e299deb100a6a3d39f40bb1a372934f44babe699a7309d5452ec48ad9
|
|
@@ -15,6 +15,14 @@ module Dependabot
|
|
|
15
15
|
class FileParser < Dependabot::FileParsers::Base
|
|
16
16
|
extend T::Sig
|
|
17
17
|
|
|
18
|
+
ParsedDependency = T.type_alias do
|
|
19
|
+
{
|
|
20
|
+
name: String,
|
|
21
|
+
version: T.nilable(String),
|
|
22
|
+
requirements: T::Array[Dependabot::DependencyRequirement]
|
|
23
|
+
}
|
|
24
|
+
end
|
|
25
|
+
|
|
18
26
|
sig { override.returns(T::Array[Dependabot::Dependency]) }
|
|
19
27
|
def parse
|
|
20
28
|
dependencies = T.let([], T::Array[Dependabot::Dependency])
|
|
@@ -99,13 +107,13 @@ module Dependabot
|
|
|
99
107
|
parsed_dep = parse_conda_dependency_string(dep, file)
|
|
100
108
|
next unless parsed_dep
|
|
101
109
|
|
|
102
|
-
name =
|
|
110
|
+
name = parsed_dep[:name]
|
|
103
111
|
next if name == "pip"
|
|
104
112
|
|
|
105
113
|
parsed_dependencies << create_dependency(
|
|
106
114
|
name: name,
|
|
107
|
-
version:
|
|
108
|
-
requirements:
|
|
115
|
+
version: parsed_dep[:version],
|
|
116
|
+
requirements: parsed_dep[:requirements],
|
|
109
117
|
package_manager: "conda"
|
|
110
118
|
)
|
|
111
119
|
end
|
|
@@ -137,9 +145,9 @@ module Dependabot
|
|
|
137
145
|
next unless parsed_dep
|
|
138
146
|
|
|
139
147
|
parsed_dependencies << create_dependency(
|
|
140
|
-
name:
|
|
141
|
-
version:
|
|
142
|
-
requirements:
|
|
148
|
+
name: parsed_dep[:name],
|
|
149
|
+
version: parsed_dep[:version],
|
|
150
|
+
requirements: parsed_dep[:requirements],
|
|
143
151
|
package_manager: "pip"
|
|
144
152
|
)
|
|
145
153
|
end
|
|
@@ -147,9 +155,7 @@ module Dependabot
|
|
|
147
155
|
parsed_dependencies
|
|
148
156
|
end
|
|
149
157
|
|
|
150
|
-
sig
|
|
151
|
-
params(dep_string: String, file: Dependabot::DependencyFile).returns(T.nilable(T::Hash[Symbol, T.anything]))
|
|
152
|
-
end
|
|
158
|
+
sig { params(dep_string: String, file: Dependabot::DependencyFile).returns(T.nilable(ParsedDependency)) }
|
|
153
159
|
def parse_conda_dependency_string(dep_string, file)
|
|
154
160
|
return nil if dep_string.nil?
|
|
155
161
|
|
|
@@ -168,7 +174,7 @@ module Dependabot
|
|
|
168
174
|
match = normalized_dep_string.match(/^([a-zA-Z0-9_.-]+)(?:\s*(.+))?$/)
|
|
169
175
|
return nil unless match
|
|
170
176
|
|
|
171
|
-
name = match[1]
|
|
177
|
+
name = T.must(match[1])
|
|
172
178
|
constraint = match[2]&.strip
|
|
173
179
|
|
|
174
180
|
version = extract_conda_version(constraint)
|
|
@@ -221,27 +227,25 @@ module Dependabot
|
|
|
221
227
|
constraint: T.nilable(String),
|
|
222
228
|
file: Dependabot::DependencyFile,
|
|
223
229
|
channel: T.nilable(String)
|
|
224
|
-
).returns(T::Array[
|
|
230
|
+
).returns(T::Array[Dependabot::DependencyRequirement])
|
|
225
231
|
end
|
|
226
232
|
def build_conda_requirements(constraint, file, channel = nil)
|
|
227
233
|
source = channel ? { channel: channel } : nil
|
|
228
234
|
|
|
229
|
-
[
|
|
235
|
+
[Dependabot::DependencyRequirement.create(
|
|
230
236
|
requirement: constraint && !constraint.empty? ? constraint : nil,
|
|
231
237
|
file: file.name,
|
|
232
238
|
source: source,
|
|
233
239
|
groups: ["dependencies"]
|
|
234
|
-
|
|
240
|
+
)]
|
|
235
241
|
end
|
|
236
242
|
|
|
237
|
-
sig
|
|
238
|
-
params(dep_string: String, file: Dependabot::DependencyFile).returns(T.nilable(T::Hash[Symbol, T.anything]))
|
|
239
|
-
end
|
|
243
|
+
sig { params(dep_string: String, file: Dependabot::DependencyFile).returns(T.nilable(ParsedDependency)) }
|
|
240
244
|
def parse_pip_dependency_string(dep_string, file)
|
|
241
245
|
match = dep_string.match(/^([a-zA-Z0-9_.-]+)(?:\s*(==|>=|>|<=|<|!=|~=)\s*([0-9][a-zA-Z0-9._+-]*))?$/)
|
|
242
246
|
return nil unless match
|
|
243
247
|
|
|
244
|
-
name = match[1]
|
|
248
|
+
name = T.must(match[1])
|
|
245
249
|
operator = match[2]
|
|
246
250
|
version = match[3]
|
|
247
251
|
|
|
@@ -259,16 +263,15 @@ module Dependabot
|
|
|
259
263
|
end
|
|
260
264
|
end
|
|
261
265
|
|
|
262
|
-
requirements =
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
end
|
|
266
|
+
requirements = T.let([], T::Array[Dependabot::DependencyRequirement])
|
|
267
|
+
if operator && version
|
|
268
|
+
requirements << Dependabot::DependencyRequirement.create(
|
|
269
|
+
requirement: "#{operator}#{version}",
|
|
270
|
+
file: file.name,
|
|
271
|
+
source: nil,
|
|
272
|
+
groups: ["pip"]
|
|
273
|
+
)
|
|
274
|
+
end
|
|
272
275
|
|
|
273
276
|
{
|
|
274
277
|
name: name,
|
|
@@ -281,7 +284,7 @@ module Dependabot
|
|
|
281
284
|
params(
|
|
282
285
|
name: String,
|
|
283
286
|
version: T.nilable(String),
|
|
284
|
-
requirements: T::Array[
|
|
287
|
+
requirements: T::Array[Dependabot::DependencyRequirement],
|
|
285
288
|
package_manager: String
|
|
286
289
|
).returns(Dependabot::Dependency)
|
|
287
290
|
end
|
|
@@ -231,9 +231,7 @@ module Dependabot
|
|
|
231
231
|
def get_requirement_for_dependency(dependency, context)
|
|
232
232
|
# Look for a requirement in the dependency's requirements array
|
|
233
233
|
requirements = dependency.requirements
|
|
234
|
-
requirement =
|
|
235
|
-
|
|
236
|
-
requirement = requirements.first&.dig(:requirement) unless requirements.empty?
|
|
234
|
+
requirement = requirements.first&.requirement_string unless requirements.empty?
|
|
237
235
|
|
|
238
236
|
return requirement if requirement && !requirement.empty?
|
|
239
237
|
|
|
@@ -29,7 +29,7 @@ module Dependabot
|
|
|
29
29
|
|
|
30
30
|
sig { returns(T::Boolean) }
|
|
31
31
|
def pip_dependency?
|
|
32
|
-
dependency.requirements.any? { |req| req
|
|
32
|
+
dependency.requirements.any? { |req| req.groups&.include?("pip") }
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
sig { returns(Dependabot::Python::MetadataFinder) }
|
|
@@ -61,7 +61,7 @@ module Dependabot
|
|
|
61
61
|
|
|
62
62
|
sig { returns(T::Boolean) }
|
|
63
63
|
def pip_dependency?
|
|
64
|
-
dependency.requirements.any? { |req| req
|
|
64
|
+
dependency.requirements.any? { |req| req.groups&.include?("pip") }
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
sig { returns(T.nilable(Dependabot::Package::PackageDetails)) }
|
|
@@ -115,13 +115,11 @@ module Dependabot
|
|
|
115
115
|
|
|
116
116
|
sig { returns(T.nilable(String)) }
|
|
117
117
|
def extract_channel_from_source
|
|
118
|
-
|
|
118
|
+
requirement = dependency.requirements.first
|
|
119
|
+
return nil unless requirement
|
|
119
120
|
|
|
120
|
-
|
|
121
|
-
return nil unless
|
|
122
|
-
|
|
123
|
-
channel = source[:channel]
|
|
124
|
-
return nil unless channel.is_a?(String)
|
|
121
|
+
channel = requirement.source_string("channel")
|
|
122
|
+
return nil unless channel
|
|
125
123
|
return nil unless CondaRegistryClient::SUPPORTED_CHANNELS.include?(channel)
|
|
126
124
|
|
|
127
125
|
channel
|
|
@@ -130,7 +128,7 @@ module Dependabot
|
|
|
130
128
|
sig { returns(T.nilable(String)) }
|
|
131
129
|
def extract_channel_from_requirement
|
|
132
130
|
dependency.requirements.each do |req|
|
|
133
|
-
requirement_string = req
|
|
131
|
+
requirement_string = req.requirement_string
|
|
134
132
|
next unless requirement_string&.include?("::")
|
|
135
133
|
|
|
136
134
|
channel = requirement_string.split("::").first
|
|
@@ -185,11 +183,11 @@ module Dependabot
|
|
|
185
183
|
)
|
|
186
184
|
end
|
|
187
185
|
|
|
188
|
-
sig { returns(T::Array[
|
|
186
|
+
sig { returns(T::Array[Dependabot::DependencyRequirement]) }
|
|
189
187
|
def python_compatible_requirements
|
|
190
188
|
dependency.requirements.map do |req|
|
|
191
|
-
|
|
192
|
-
requirement: convert_conda_requirement_to_pip(req
|
|
189
|
+
Dependabot::DependencyRequirement.create(
|
|
190
|
+
req.merge(requirement: convert_conda_requirement_to_pip(req.requirement_string))
|
|
193
191
|
)
|
|
194
192
|
end
|
|
195
193
|
end
|
|
@@ -72,10 +72,11 @@ module Dependabot
|
|
|
72
72
|
|
|
73
73
|
sig { params(req: Dependabot::DependencyRequirement).returns(Dependabot::DependencyRequirement) }
|
|
74
74
|
def update_requirement(req)
|
|
75
|
-
|
|
76
|
-
return req
|
|
75
|
+
requirement = req.requirement_string
|
|
76
|
+
return req unless requirement
|
|
77
|
+
return req if ["", "*"].include?(requirement)
|
|
77
78
|
|
|
78
|
-
requirement_strings =
|
|
79
|
+
requirement_strings = requirement.split(",").map(&:strip)
|
|
79
80
|
new_req = calculate_updated_requirement(req, requirement_strings)
|
|
80
81
|
|
|
81
82
|
Dependabot::DependencyRequirement.create(
|
|
@@ -121,7 +122,7 @@ module Dependabot
|
|
|
121
122
|
# For BumpVersions strategy, always update to the new version
|
|
122
123
|
if update_strategy == RequirementsUpdateStrategy::BumpVersionsIfNecessary &&
|
|
123
124
|
new_version_satisfies?(req)
|
|
124
|
-
return req
|
|
125
|
+
return T.must(req.requirement)
|
|
125
126
|
end
|
|
126
127
|
|
|
127
128
|
update_requirements_range(requirement_strings)
|
|
@@ -133,10 +134,10 @@ module Dependabot
|
|
|
133
134
|
# For BumpVersions strategy, always update to the new version
|
|
134
135
|
if update_strategy == RequirementsUpdateStrategy::BumpVersionsIfNecessary &&
|
|
135
136
|
new_version_satisfies?(req)
|
|
136
|
-
return req
|
|
137
|
+
return T.must(req.requirement)
|
|
137
138
|
end
|
|
138
139
|
|
|
139
|
-
bump_version_string(req
|
|
140
|
+
bump_version_string(T.must(req.requirement_string), T.must(latest_resolvable_version).to_s)
|
|
140
141
|
end
|
|
141
142
|
|
|
142
143
|
sig do
|
|
@@ -174,21 +175,23 @@ module Dependabot
|
|
|
174
175
|
|
|
175
176
|
sig { params(req: Dependabot::DependencyRequirement).returns(Dependabot::DependencyRequirement) }
|
|
176
177
|
def widen_requirement(req)
|
|
177
|
-
|
|
178
|
-
return req
|
|
178
|
+
requirement = req.requirement_string
|
|
179
|
+
return req unless requirement
|
|
180
|
+
return req if ["", "*"].include?(requirement)
|
|
179
181
|
|
|
180
182
|
# For WidenRanges, always widen to ensure proper upper bounds
|
|
181
183
|
# Don't return early even if version satisfies - we want to add/update bounds
|
|
182
|
-
new_requirement = widen_requirement_string(
|
|
184
|
+
new_requirement = widen_requirement_string(requirement)
|
|
183
185
|
Dependabot::DependencyRequirement.create(req.merge(requirement: new_requirement))
|
|
184
186
|
end
|
|
185
187
|
|
|
186
188
|
sig { params(req: Dependabot::DependencyRequirement).returns(T::Boolean) }
|
|
187
189
|
def new_version_satisfies?(req)
|
|
188
|
-
|
|
190
|
+
requirement = req.requirement_string
|
|
191
|
+
return false unless requirement
|
|
189
192
|
|
|
190
193
|
Conda::Requirement
|
|
191
|
-
.requirements_array(
|
|
194
|
+
.requirements_array(requirement)
|
|
192
195
|
.all? { |r| r.satisfied_by?(T.must(latest_resolvable_version)) }
|
|
193
196
|
end
|
|
194
197
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# typed:
|
|
1
|
+
# typed: strong
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require "sorbet-runtime"
|
|
@@ -50,7 +50,7 @@ module Dependabot
|
|
|
50
50
|
|
|
51
51
|
sig { override.returns(T.nilable(T.any(String, Dependabot::Version))) }
|
|
52
52
|
def latest_version
|
|
53
|
-
return nil if dependency.requirements.all? { |req| req
|
|
53
|
+
return nil if dependency.requirements.all? { |req| req.requirement.nil? || req.requirement == "*" }
|
|
54
54
|
|
|
55
55
|
@latest_version ||= fetch_latest_version
|
|
56
56
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dependabot-conda
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.392.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.392.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.392.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.392.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.392.0
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
41
|
name: debug
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -274,7 +274,7 @@ licenses:
|
|
|
274
274
|
- MIT
|
|
275
275
|
metadata:
|
|
276
276
|
bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
|
|
277
|
-
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.
|
|
277
|
+
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.392.0
|
|
278
278
|
rdoc_options: []
|
|
279
279
|
require_paths:
|
|
280
280
|
- lib
|