dependabot-conda 0.385.0 → 0.386.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/conda_registry_client.rb +4 -4
- data/lib/dependabot/conda/file_fetcher.rb +5 -5
- data/lib/dependabot/conda/file_parser.rb +15 -13
- data/lib/dependabot/conda/file_updater.rb +8 -8
- data/lib/dependabot/conda/requirement.rb +1 -1
- data/lib/dependabot/conda/update_checker/latest_version_finder.rb +2 -2
- data/lib/dependabot/conda/update_checker.rb +1 -1
- data/lib/dependabot/conda/version.rb +9 -5
- 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: 560c6d6dbe90e27642b391998040c8042c8ef4638034e8ca881e68aa9b69a8c2
|
|
4
|
+
data.tar.gz: 55c0056f8830372139e6b75284e38e7ce276f0228389cd67014fd8e666cada12
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4a9b536798cdb1fc4ccae93a47edfbb480927029cf19fd078d11c733641ae665a4849a1d4f83cbb21c7da80ca642b8ae913b96f5718ed2651279b382bc2a9a28
|
|
7
|
+
data.tar.gz: 3f4c7e4de79d8cdba506a547b13907c61668e2c6eaff7491eaf36c31a743f6711a85e705403d459c56a259c6a2916c47efb34d4b01f9f92712acd33640b32789
|
|
@@ -34,7 +34,7 @@ module Dependabot
|
|
|
34
34
|
|
|
35
35
|
sig { void }
|
|
36
36
|
def initialize
|
|
37
|
-
@cache = T.let({}, T::Hash[String, T
|
|
37
|
+
@cache = T.let({}, T::Hash[String, T::Hash[String, Object]])
|
|
38
38
|
@not_found_cache = T.let(Set.new, T::Set[String])
|
|
39
39
|
end
|
|
40
40
|
|
|
@@ -43,7 +43,7 @@ module Dependabot
|
|
|
43
43
|
params(
|
|
44
44
|
package_name: String,
|
|
45
45
|
channel: String
|
|
46
|
-
).returns(T.nilable(T::Hash[String,
|
|
46
|
+
).returns(T.nilable(T::Hash[String, Object]))
|
|
47
47
|
end
|
|
48
48
|
def fetch_package_metadata(package_name, channel = DEFAULT_CHANNEL)
|
|
49
49
|
cache_key = "#{channel}/#{package_name}"
|
|
@@ -147,7 +147,7 @@ module Dependabot
|
|
|
147
147
|
package_name: String,
|
|
148
148
|
channel: String,
|
|
149
149
|
cache_key: String
|
|
150
|
-
).returns(T.nilable(T::Hash[String,
|
|
150
|
+
).returns(T.nilable(T::Hash[String, Object]))
|
|
151
151
|
end
|
|
152
152
|
def fetch_from_api(package_name, channel, cache_key)
|
|
153
153
|
# Normalize channel name for API (e.g., 'defaults' -> 'anaconda')
|
|
@@ -187,7 +187,7 @@ module Dependabot
|
|
|
187
187
|
response: Excon::Response,
|
|
188
188
|
package_name: String,
|
|
189
189
|
cache_key: String
|
|
190
|
-
).returns(T.nilable(T::Hash[String,
|
|
190
|
+
).returns(T.nilable(T::Hash[String, Object]))
|
|
191
191
|
end
|
|
192
192
|
def handle_response(response, package_name, cache_key)
|
|
193
193
|
case response.status
|
|
@@ -44,7 +44,7 @@ module Dependabot
|
|
|
44
44
|
raise(
|
|
45
45
|
Dependabot::DependencyFileNotFound.new(
|
|
46
46
|
File.join(directory, environment_file.name),
|
|
47
|
-
unsupported_environment_message(validation[:reason])
|
|
47
|
+
unsupported_environment_message(T.cast(validation[:reason], T.nilable(Symbol)))
|
|
48
48
|
)
|
|
49
49
|
)
|
|
50
50
|
end
|
|
@@ -63,7 +63,7 @@ module Dependabot
|
|
|
63
63
|
|
|
64
64
|
# Validate that environment file is a proper conda manifest with manageable packages
|
|
65
65
|
# Returns a hash with :valid (Boolean) and :reason (Symbol or nil)
|
|
66
|
-
sig { params(file: DependencyFile).returns(T::Hash[Symbol, T.
|
|
66
|
+
sig { params(file: DependencyFile).returns(T::Hash[Symbol, T.anything]) }
|
|
67
67
|
def validate_conda_environment(file)
|
|
68
68
|
content = file.content
|
|
69
69
|
return { valid: false, reason: :no_content } unless content
|
|
@@ -81,7 +81,7 @@ module Dependabot
|
|
|
81
81
|
{ valid: true, reason: nil }
|
|
82
82
|
end
|
|
83
83
|
|
|
84
|
-
sig { params(content: String).returns(T.nilable(T::Hash[
|
|
84
|
+
sig { params(content: String).returns(T.nilable(T::Hash[String, Object])) }
|
|
85
85
|
def parse_and_validate_yaml(content)
|
|
86
86
|
parsed_yaml = parse_yaml_content(content)
|
|
87
87
|
return nil unless parsed_yaml
|
|
@@ -94,7 +94,7 @@ module Dependabot
|
|
|
94
94
|
end
|
|
95
95
|
|
|
96
96
|
# Check if there are any manageable packages (simple specs or pip)
|
|
97
|
-
sig { params(dependencies:
|
|
97
|
+
sig { params(dependencies: Object).returns(T::Boolean) }
|
|
98
98
|
def manageable_packages?(dependencies)
|
|
99
99
|
return false unless dependencies.is_a?(Array)
|
|
100
100
|
|
|
@@ -107,7 +107,7 @@ module Dependabot
|
|
|
107
107
|
has_simple_conda || has_pip
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
-
sig { params(content: String).returns(T.nilable(T::Hash[
|
|
110
|
+
sig { params(content: String).returns(T.nilable(T::Hash[String, Object])) }
|
|
111
111
|
def parse_yaml_content(content)
|
|
112
112
|
parsed = YAML.safe_load(content)
|
|
113
113
|
parsed.is_a?(Hash) ? parsed : nil
|
|
@@ -79,7 +79,7 @@ module Dependabot
|
|
|
79
79
|
|
|
80
80
|
sig do
|
|
81
81
|
params(
|
|
82
|
-
dependencies: T::Array[
|
|
82
|
+
dependencies: T::Array[Object],
|
|
83
83
|
file: Dependabot::DependencyFile
|
|
84
84
|
).returns(T::Array[Dependabot::Dependency])
|
|
85
85
|
end
|
|
@@ -98,12 +98,14 @@ module Dependabot
|
|
|
98
98
|
|
|
99
99
|
parsed_dep = parse_conda_dependency_string(dep, file)
|
|
100
100
|
next unless parsed_dep
|
|
101
|
-
|
|
101
|
+
|
|
102
|
+
name = T.cast(parsed_dep[:name], String)
|
|
103
|
+
next if name == "pip"
|
|
102
104
|
|
|
103
105
|
parsed_dependencies << create_dependency(
|
|
104
|
-
name:
|
|
105
|
-
version: parsed_dep[:version],
|
|
106
|
-
requirements: parsed_dep[:requirements],
|
|
106
|
+
name: name,
|
|
107
|
+
version: T.cast(parsed_dep[:version], T.nilable(String)),
|
|
108
|
+
requirements: T.cast(parsed_dep[:requirements], T::Array[T::Hash[Symbol, T.anything]]),
|
|
107
109
|
package_manager: "conda"
|
|
108
110
|
)
|
|
109
111
|
end
|
|
@@ -111,7 +113,7 @@ module Dependabot
|
|
|
111
113
|
parsed_dependencies
|
|
112
114
|
end
|
|
113
115
|
|
|
114
|
-
sig { params(dependencies:
|
|
116
|
+
sig { params(dependencies: Object).returns(T.nilable(T::Array[String])) }
|
|
115
117
|
def find_pip_dependencies(dependencies)
|
|
116
118
|
return nil unless dependencies.is_a?(Array)
|
|
117
119
|
|
|
@@ -135,9 +137,9 @@ module Dependabot
|
|
|
135
137
|
next unless parsed_dep
|
|
136
138
|
|
|
137
139
|
parsed_dependencies << create_dependency(
|
|
138
|
-
name: parsed_dep[:name],
|
|
139
|
-
version: parsed_dep[:version],
|
|
140
|
-
requirements: parsed_dep[:requirements],
|
|
140
|
+
name: T.cast(parsed_dep[:name], String),
|
|
141
|
+
version: T.cast(parsed_dep[:version], T.nilable(String)),
|
|
142
|
+
requirements: T.cast(parsed_dep[:requirements], T::Array[T::Hash[Symbol, T.anything]]),
|
|
141
143
|
package_manager: "pip"
|
|
142
144
|
)
|
|
143
145
|
end
|
|
@@ -146,7 +148,7 @@ module Dependabot
|
|
|
146
148
|
end
|
|
147
149
|
|
|
148
150
|
sig do
|
|
149
|
-
params(dep_string: String, file: Dependabot::DependencyFile).returns(T.nilable(T::Hash[Symbol, T.
|
|
151
|
+
params(dep_string: String, file: Dependabot::DependencyFile).returns(T.nilable(T::Hash[Symbol, T.anything]))
|
|
150
152
|
end
|
|
151
153
|
def parse_conda_dependency_string(dep_string, file)
|
|
152
154
|
return nil if dep_string.nil?
|
|
@@ -219,7 +221,7 @@ module Dependabot
|
|
|
219
221
|
constraint: T.nilable(String),
|
|
220
222
|
file: Dependabot::DependencyFile,
|
|
221
223
|
channel: T.nilable(String)
|
|
222
|
-
).returns(T::Array[T::Hash[Symbol, T.
|
|
224
|
+
).returns(T::Array[T::Hash[Symbol, T.anything]])
|
|
223
225
|
end
|
|
224
226
|
def build_conda_requirements(constraint, file, channel = nil)
|
|
225
227
|
source = channel ? { channel: channel } : nil
|
|
@@ -233,7 +235,7 @@ module Dependabot
|
|
|
233
235
|
end
|
|
234
236
|
|
|
235
237
|
sig do
|
|
236
|
-
params(dep_string: String, file: Dependabot::DependencyFile).returns(T.nilable(T::Hash[Symbol, T.
|
|
238
|
+
params(dep_string: String, file: Dependabot::DependencyFile).returns(T.nilable(T::Hash[Symbol, T.anything]))
|
|
237
239
|
end
|
|
238
240
|
def parse_pip_dependency_string(dep_string, file)
|
|
239
241
|
match = dep_string.match(/^([a-zA-Z0-9_.-]+)(?:\s*(==|>=|>|<=|<|!=|~=)\s*([0-9][a-zA-Z0-9._+-]*))?$/)
|
|
@@ -279,7 +281,7 @@ module Dependabot
|
|
|
279
281
|
params(
|
|
280
282
|
name: String,
|
|
281
283
|
version: T.nilable(String),
|
|
282
|
-
requirements: T::Array[T::Hash[Symbol, T.
|
|
284
|
+
requirements: T::Array[T::Hash[Symbol, T.anything]],
|
|
283
285
|
package_manager: String
|
|
284
286
|
).returns(Dependabot::Dependency)
|
|
285
287
|
end
|
|
@@ -20,14 +20,14 @@ module Dependabot
|
|
|
20
20
|
lambda do |name|
|
|
21
21
|
/^(\s{2,4}-\s+[a-zA-Z0-9_.-]+::)(#{Regexp.escape(name)})#{VERSION_CONSTRAINT_PATTERN}(\s*)(#.*)?$/
|
|
22
22
|
end,
|
|
23
|
-
T.proc.params(arg0:
|
|
23
|
+
T.proc.params(arg0: String).returns(Regexp)
|
|
24
24
|
)
|
|
25
25
|
|
|
26
26
|
CONDA_SIMPLE_PATTERN = T.let(
|
|
27
27
|
lambda do |name|
|
|
28
28
|
/^(\s{2,4}-\s+)(#{Regexp.escape(name)})#{VERSION_CONSTRAINT_PATTERN}(\s*)(#.*)?$/
|
|
29
29
|
end,
|
|
30
|
-
T.proc.params(arg0:
|
|
30
|
+
T.proc.params(arg0: String).returns(Regexp)
|
|
31
31
|
)
|
|
32
32
|
|
|
33
33
|
# Bracket syntax: package[version='>=1.0']
|
|
@@ -35,21 +35,21 @@ module Dependabot
|
|
|
35
35
|
lambda do |name|
|
|
36
36
|
/^(\s{2,4}-\s+)(#{Regexp.escape(name)})(\[version=['"])[^'"]+(['"]\])(\s*)(#.*)?$/
|
|
37
37
|
end,
|
|
38
|
-
T.proc.params(arg0:
|
|
38
|
+
T.proc.params(arg0: String).returns(Regexp)
|
|
39
39
|
)
|
|
40
40
|
|
|
41
41
|
CONDA_CHANNEL_BRACKET_PATTERN = T.let(
|
|
42
42
|
lambda do |name|
|
|
43
43
|
/^(\s{2,4}-\s+[a-zA-Z0-9_.-]+::)(#{Regexp.escape(name)})(\[version=['"])[^'"]+(['"]\])(\s*)(#.*)?$/
|
|
44
44
|
end,
|
|
45
|
-
T.proc.params(arg0:
|
|
45
|
+
T.proc.params(arg0: String).returns(Regexp)
|
|
46
46
|
)
|
|
47
47
|
|
|
48
48
|
PIP_PATTERN = T.let(
|
|
49
49
|
lambda do |name|
|
|
50
50
|
/^(\s{5,}-\s+)(#{Regexp.escape(name)})#{VERSION_CONSTRAINT_PATTERN}(\s*)(#.*)?$/
|
|
51
51
|
end,
|
|
52
|
-
T.proc.params(arg0:
|
|
52
|
+
T.proc.params(arg0: String).returns(Regexp)
|
|
53
53
|
)
|
|
54
54
|
|
|
55
55
|
sig { override.returns(T::Array[Dependabot::DependencyFile]) }
|
|
@@ -129,7 +129,7 @@ module Dependabot
|
|
|
129
129
|
params(
|
|
130
130
|
content: String,
|
|
131
131
|
dependency: Dependabot::Dependency
|
|
132
|
-
).returns(T::Hash[Symbol, T.
|
|
132
|
+
).returns(T::Hash[Symbol, T.anything])
|
|
133
133
|
end
|
|
134
134
|
def update_dependency_in_content(content, dependency)
|
|
135
135
|
return { updated: false, content: content, not_found: false } unless dependency.version
|
|
@@ -150,7 +150,7 @@ module Dependabot
|
|
|
150
150
|
params(
|
|
151
151
|
content: String,
|
|
152
152
|
dependency: Dependabot::Dependency
|
|
153
|
-
).returns(T::Hash[Symbol, T.
|
|
153
|
+
).returns(T::Hash[Symbol, T.anything])
|
|
154
154
|
end
|
|
155
155
|
def update_conda_dependency_in_content(content, dependency)
|
|
156
156
|
# Try standard patterns first (most common)
|
|
@@ -202,7 +202,7 @@ module Dependabot
|
|
|
202
202
|
params(
|
|
203
203
|
content: String,
|
|
204
204
|
dependency: Dependabot::Dependency
|
|
205
|
-
).returns(T::Hash[Symbol, T.
|
|
205
|
+
).returns(T::Hash[Symbol, T.anything])
|
|
206
206
|
end
|
|
207
207
|
def update_pip_dependency_in_content(content, dependency)
|
|
208
208
|
pip_pattern = PIP_PATTERN.call(dependency.name)
|
|
@@ -22,7 +22,7 @@ module Dependabot
|
|
|
22
22
|
"==" => ->(v, r) { v == r }, # pip equality
|
|
23
23
|
"~=" => ->(v, r) { v >= r && v.release < r.bump } # pip compatible release
|
|
24
24
|
),
|
|
25
|
-
T::Hash[String, T.proc.params(arg0:
|
|
25
|
+
T::Hash[String, T.proc.params(arg0: Gem::Version, arg1: Gem::Version).returns(T::Boolean)]
|
|
26
26
|
)
|
|
27
27
|
|
|
28
28
|
quoted = OPS.keys.sort_by(&:length).reverse
|
|
@@ -117,7 +117,7 @@ module Dependabot
|
|
|
117
117
|
def extract_channel_from_source
|
|
118
118
|
return nil unless dependency.requirements.first
|
|
119
119
|
|
|
120
|
-
source = T.let(T.must(dependency.requirements.first)[:source], T.nilable(T::Hash[Symbol,
|
|
120
|
+
source = T.let(T.must(dependency.requirements.first)[:source], T.nilable(T::Hash[Symbol, Object]))
|
|
121
121
|
return nil unless source
|
|
122
122
|
|
|
123
123
|
channel = source[:channel]
|
|
@@ -185,7 +185,7 @@ module Dependabot
|
|
|
185
185
|
)
|
|
186
186
|
end
|
|
187
187
|
|
|
188
|
-
sig { returns(T::Array[T::Hash[Symbol, T.
|
|
188
|
+
sig { returns(T::Array[T::Hash[Symbol, T.anything]]) }
|
|
189
189
|
def python_compatible_requirements
|
|
190
190
|
dependency.requirements.map do |req|
|
|
191
191
|
req.merge(
|
|
@@ -25,7 +25,7 @@ module Dependabot
|
|
|
25
25
|
requirements_update_strategy: T.nilable(Dependabot::RequirementsUpdateStrategy),
|
|
26
26
|
dependency_group: T.nilable(Dependabot::DependencyGroup),
|
|
27
27
|
update_cooldown: T.nilable(Dependabot::Package::ReleaseCooldownOptions),
|
|
28
|
-
options: T::Hash[Symbol, T.
|
|
28
|
+
options: T::Hash[Symbol, T.anything]
|
|
29
29
|
)
|
|
30
30
|
.void
|
|
31
31
|
end
|
|
@@ -50,7 +50,11 @@ module Dependabot
|
|
|
50
50
|
sig { returns(T.nilable(T::Array[T.any(Integer, String)])) }
|
|
51
51
|
attr_reader :local_parts
|
|
52
52
|
|
|
53
|
-
VersionParts
|
|
53
|
+
class VersionParts < T::Struct
|
|
54
|
+
const :epoch, String
|
|
55
|
+
const :main, String
|
|
56
|
+
const :local, T.nilable(String)
|
|
57
|
+
end
|
|
54
58
|
private_constant :VersionParts
|
|
55
59
|
|
|
56
60
|
sig { override.params(version: VersionParameter).void }
|
|
@@ -68,14 +72,14 @@ module Dependabot
|
|
|
68
72
|
@epoch = T.let(parts.epoch.to_i, Integer)
|
|
69
73
|
@version_parts = T.let(parse_components(parts.main), T::Array[T.any(Integer, String)])
|
|
70
74
|
@local_parts = T.let(
|
|
71
|
-
parts.local ? parse_components(parts.local) : nil,
|
|
75
|
+
parts.local ? parse_components(T.must(parts.local)) : nil,
|
|
72
76
|
T.nilable(T::Array[T.any(Integer, String)])
|
|
73
77
|
)
|
|
74
78
|
|
|
75
79
|
super
|
|
76
80
|
end
|
|
77
81
|
|
|
78
|
-
sig {
|
|
82
|
+
sig { params(other: VersionParameter).returns(T.nilable(Integer)) }
|
|
79
83
|
def <=>(other)
|
|
80
84
|
return nil unless other.is_a?(Dependabot::Conda::Version)
|
|
81
85
|
|
|
@@ -106,12 +110,12 @@ module Dependabot
|
|
|
106
110
|
|
|
107
111
|
# Parses epoch and local version from version string
|
|
108
112
|
# Returns VersionParts struct with epoch, main, and local fields
|
|
109
|
-
sig { params(version_str: String).returns(
|
|
113
|
+
sig { params(version_str: String).returns(VersionParts) }
|
|
110
114
|
def parse_epoch_and_local(version_str)
|
|
111
115
|
# Split on '!' for epoch
|
|
112
116
|
parts = version_str.split("!", 2)
|
|
113
117
|
if parts.length == 2
|
|
114
|
-
epoch_str = parts[0]
|
|
118
|
+
epoch_str = T.must(parts[0])
|
|
115
119
|
remainder = T.must(parts[1])
|
|
116
120
|
else
|
|
117
121
|
epoch_str = "0"
|
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.386.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.386.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.386.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.386.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.386.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.386.0
|
|
278
278
|
rdoc_options: []
|
|
279
279
|
require_paths:
|
|
280
280
|
- lib
|