@@ -89,7 +89,7 @@ def lowest_resolvable_security_fix_version
89
89
90
90
def updated_requirements
91
91
RequirementsUpdater . new (
92
- requirements : dependency . requirements ,
92
+ requirements : requirements ,
93
93
latest_resolvable_version : preferred_resolvable_version &.to_s ,
94
94
update_strategy : requirements_update_strategy ,
95
95
has_lockfile : !( pipfile_lock || poetry_lock || pyproject_lock ) . nil?
@@ -133,8 +133,7 @@ def fetch_lowest_resolvable_security_fix_version
133
133
end
134
134
135
135
def resolver_type
136
- reqs = dependency . requirements
137
- req_files = reqs . map { |r | r . fetch ( :file ) }
136
+ reqs = requirements
138
137
139
138
# If there are no requirements then this is a sub-dependency. It
140
139
# must come from one of Pipenv, Poetry or pip-tools, and can't come
@@ -143,9 +142,9 @@ def resolver_type
143
142
144
143
# Otherwise, this is a top-level dependency, and we can figure out
145
144
# which resolver to use based on the filename of its requirements
146
- return :pipenv if req_files . any? ( "Pipfile" )
147
- return :poetry if req_files . any? ( "pyproject.toml" )
148
- return :pip_compile if req_files . any? { | f | f . end_with? ( ".in" ) }
145
+ return :pipenv if updating_pipfile?
146
+ return :poetry if updating_pyproject?
147
+ return :pip_compile if updating_in_file?
149
148
150
149
if dependency . version && !exact_requirement? ( reqs )
151
150
subdependency_resolver
@@ -202,16 +201,14 @@ def resolver_args
202
201
end
203
202
204
203
def current_requirement_string
205
- reqs = dependency . requirements
204
+ reqs = requirements
206
205
return if reqs . none?
207
206
208
- requirement =
209
- case resolver_type
210
- when :pipenv then reqs . find { |r | r [ :file ] == "Pipfile" }
211
- when :poetry then reqs . find { |r | r [ :file ] == "pyproject.toml" }
212
- when :pip_compile then reqs . find { |r | r [ :file ] . end_with? ( ".in" ) }
213
- when :requirements then reqs . find { |r | r [ :file ] . end_with? ( ".txt" ) }
214
- end
207
+ requirement = reqs . find do |r |
208
+ file = r [ :file ]
209
+
210
+ file == "Pipfile" || file == "pyproject.toml" || file . end_with? ( ".in" ) || file . end_with? ( ".txt" )
211
+ end
215
212
216
213
requirement &.fetch ( :requirement )
217
214
end
@@ -236,7 +233,7 @@ def updated_version_req_lower_bound
236
233
return ">= #{ dependency . version } " if dependency . version
237
234
238
235
version_for_requirement =
239
- dependency . requirements . filter_map { |r | r [ :requirement ] } .
236
+ requirements . filter_map { |r | r [ :requirement ] } .
240
237
reject { |req_string | req_string . start_with? ( "<" ) } .
241
238
select { |req_string | req_string . match? ( VERSION_REGEX ) } .
242
239
map { |req_string | req_string . match ( VERSION_REGEX ) } .
@@ -262,7 +259,7 @@ def latest_version_finder
262
259
end
263
260
264
261
def poetry_library?
265
- return false unless pyproject
262
+ return false unless updating_pyproject?
266
263
267
264
# Hit PyPi and check whether there are details for a library with a
268
265
# matching name and description
@@ -283,6 +280,26 @@ def poetry_library?
283
280
false
284
281
end
285
282
283
+ def updating_pipfile?
284
+ requirement_files . any? ( "Pipfile" )
285
+ end
286
+
287
+ def updating_pyproject?
288
+ requirement_files . any? ( "pyproject.toml" )
289
+ end
290
+
291
+ def updating_in_file?
292
+ requirement_files . any? { |f | f . end_with? ( ".in" ) }
293
+ end
294
+
295
+ def requirement_files
296
+ requirements . map { |r | r . fetch ( :file ) }
297
+ end
298
+
299
+ def requirements
300
+ dependency . requirements
301
+ end
302
+
286
303
def normalised_name ( name )
287
304
NameNormaliser . normalise ( name )
288
305
end
0 commit comments