dependabot-python 0.111.27 → 0.111.28

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: e240917970cfdb0ebd6d48acaa79c18d613baf1f138ca6207d101910c9810069
4
- data.tar.gz: 13be53930a68a1dad68ef8bad2e6485e2ce5acd2a60871b2a8d76a12db39d33e
3
+ metadata.gz: 9d8b6adc1f2d136a92dbf6980f1fb0e2402ee04d8671e067c017fdef952b727d
4
+ data.tar.gz: c05e90c49c095f40c32950ce894cf8131fea9e11708b228c455a5b6eed8fd859
5
5
  SHA512:
6
- metadata.gz: 15399689e9e8baca73f44699537e5944eb111b2b78761fe0bd122216e2a31cb882c67380371f6e703c91eae962b9bfc8cd37aa320b155df37eab8847ecf47524
7
- data.tar.gz: 8208b476b422d9a0f6be76c2c5b48fde1f6b61455cfa91f3c5930aff3fe8eb3ea88056a2e11cbf01368ce9ac594847ccb57ca0f4265759ec326518e172f34f49
6
+ metadata.gz: de00b1055f33feda4ff3f6bba2a4111f0eb1d2003dc3c058a242ac66a9cc945706ca3f4bcdbb2b6e7c180086aed3602758cef322fae5a7023551399411eb749f
7
+ data.tar.gz: c83b4e3756d6817cb03dfa01cd8e1aeaa3933eed558136e206725101f9aa5682776b91fe244a99879963cd568f3aee2cf52760234b61cde71d19b0a27de83ae6
@@ -1,5 +1,5 @@
1
- pip==19.1.1
2
- pip-tools==3.9.0
1
+ pip==19.2.1
2
+ pip-tools==4.0.0
3
3
  hashin==0.14.5
4
4
  pipenv==2018.11.26
5
5
  pipfile==0.0.2
@@ -9,6 +9,7 @@ require "dependabot/python/file_updater"
9
9
  require "dependabot/python/metadata_finder"
10
10
  require "dependabot/python/requirement"
11
11
  require "dependabot/python/version"
12
+ require "dependabot/python/name_normaliser"
12
13
 
13
14
  require "dependabot/pull_request_creator/labeler"
14
15
  Dependabot::PullRequestCreator::Labeler.
@@ -29,5 +30,5 @@ Dependabot::Dependency.register_production_check(
29
30
  # See https://www.python.org/dev/peps/pep-0503/#normalized-names
30
31
  Dependabot::Dependency.register_name_normaliser(
31
32
  "pip",
32
- ->(name) { name.downcase.gsub(/[-_.]+/, "-") }
33
+ ->(name) { NameNormaliser.normalise(name) }
33
34
  )
@@ -9,6 +9,7 @@ require "dependabot/shared_helpers"
9
9
  require "dependabot/python/requirement"
10
10
  require "dependabot/errors"
11
11
  require "dependabot/python/native_helpers"
12
+ require "dependabot/python/name_normaliser"
12
13
 
13
14
  module Dependabot
14
15
  module Python
@@ -137,6 +138,9 @@ module Dependabot
137
138
  return false unless pip_compile_files.any?
138
139
  return false unless filename.end_with?(".txt")
139
140
 
141
+ file = dependency_files.find { |f| f.name == filename }
142
+ return true if file&.content&.match?(output_file_regex(filename))
143
+
140
144
  basename = filename.gsub(/\.txt$/, "")
141
145
  pip_compile_files.any? { |f| f.name == basename + ".in" }
142
146
  end
@@ -181,9 +185,8 @@ module Dependabot
181
185
  end
182
186
  end
183
187
 
184
- # See https://www.python.org/dev/peps/pep-0503/#normalized-names
185
188
  def normalised_name(name)
186
- Dependency.name_normaliser_for_package_manager("pip").call(name)
189
+ NameNormaliser.normalise(name)
187
190
  end
188
191
 
189
192
  def check_required_files
@@ -213,6 +216,10 @@ module Dependabot
213
216
  raise Dependabot::DependencyFileNotParseable, pyproject.path
214
217
  end
215
218
 
219
+ def output_file_regex(filename)
220
+ "--output-file[=\s]+#{Regexp.escape(filename)}(?:\s|$)"
221
+ end
222
+
216
223
  def pyproject
217
224
  @pyproject ||= get_original_file("pyproject.toml")
218
225
  end
@@ -237,5 +244,4 @@ module Dependabot
237
244
  end
238
245
  end
239
246
 
240
- Dependabot::FileParsers.
241
- register("pip", Dependabot::Python::FileParser)
247
+ Dependabot::FileParsers.register("pip", Dependabot::Python::FileParser)
@@ -6,6 +6,7 @@ require "dependabot/dependency"
6
6
  require "dependabot/file_parsers/base/dependency_set"
7
7
  require "dependabot/python/file_parser"
8
8
  require "dependabot/errors"
9
+ require "dependabot/python/name_normaliser"
9
10
 
10
11
  module Dependabot
11
12
  module Python
@@ -134,7 +135,7 @@ module Dependabot
134
135
  end
135
136
 
136
137
  def normalised_name(name)
137
- Dependency.name_normaliser_for_package_manager("pip").call(name)
138
+ NameNormaliser.normalise(name)
138
139
  end
139
140
 
140
141
  def parsed_pipfile
@@ -7,6 +7,7 @@ require "dependabot/file_parsers/base/dependency_set"
7
7
  require "dependabot/python/file_parser"
8
8
  require "dependabot/python/requirement"
9
9
  require "dependabot/errors"
10
+ require "dependabot/python/name_normaliser"
10
11
 
11
12
  module Dependabot
12
13
  module Python
@@ -98,7 +99,7 @@ module Dependabot
98
99
  end
99
100
 
100
101
  def normalise(name)
101
- Dependency.name_normaliser_for_package_manager("pip").call(name)
102
+ NameNormaliser.normalise(name)
102
103
  end
103
104
 
104
105
  def parsed_pyproject
@@ -6,6 +6,7 @@ require "dependabot/file_parsers/base/dependency_set"
6
6
  require "dependabot/shared_helpers"
7
7
  require "dependabot/python/file_parser"
8
8
  require "dependabot/python/native_helpers"
9
+ require "dependabot/python/name_normaliser"
9
10
 
10
11
  module Dependabot
11
12
  module Python
@@ -164,7 +165,7 @@ module Dependabot
164
165
  end
165
166
 
166
167
  def normalised_name(name)
167
- Dependency.name_normaliser_for_package_manager("pip").call(name)
168
+ NameNormaliser.normalise(name)
168
169
  end
169
170
 
170
171
  def setup_file
@@ -143,5 +143,4 @@ module Dependabot
143
143
  end
144
144
  end
145
145
 
146
- Dependabot::FileUpdaters.
147
- register("pip", Dependabot::Python::FileUpdater)
146
+ Dependabot::FileUpdaters.register("pip", Dependabot::Python::FileUpdater)
@@ -9,6 +9,7 @@ require "dependabot/python/file_updater"
9
9
  require "dependabot/shared_helpers"
10
10
  require "dependabot/python/native_helpers"
11
11
  require "dependabot/python/python_versions"
12
+ require "dependabot/python/name_normaliser"
12
13
 
13
14
  module Dependabot
14
15
  module Python
@@ -203,7 +204,8 @@ module Dependabot
203
204
  def error_suggests_bad_python_version?(message)
204
205
  return true if message.include?("not find a version that satisfies")
205
206
 
206
- message.include?('Command "python setup.py egg_info" failed')
207
+ message.include?('Command "python setup.py egg_info" failed') ||
208
+ message.include?("exit status 1: python setup.py egg_info")
207
209
  end
208
210
 
209
211
  def write_updated_dependency_files
@@ -422,15 +424,13 @@ module Dependabot
422
424
  end
423
425
 
424
426
  def pip_compile_options(filename)
425
- current_requirements_file_name = filename.sub(/\.in$/, ".txt")
427
+ requirements_file = compiled_file_for_filename(filename)
428
+ return "--build-isolation" unless requirements_file
426
429
 
427
- requirements_file =
428
- dependency_files.
429
- find { |f| f.name == current_requirements_file_name }
430
-
431
- return unless requirements_file
432
-
433
- options = ["--build-isolation"]
430
+ options = [
431
+ "--build-isolation",
432
+ "--output-file=#{requirements_file.name}"
433
+ ]
434
434
 
435
435
  if requirements_file.content.include?("--hash=sha")
436
436
  options << "--generate-hashes"
@@ -464,8 +464,7 @@ module Dependabot
464
464
 
465
465
  files_from_compiled_files =
466
466
  pip_compile_files.map(&:name).select do |fn|
467
- compiled_file = dependency_files.
468
- find { |f| f.name == fn.gsub(/\.in$/, ".txt") }
467
+ compiled_file = compiled_file_for_filename(fn)
469
468
  compiled_file_includes_dependency?(compiled_file)
470
469
  end
471
470
 
@@ -474,6 +473,22 @@ module Dependabot
474
473
  order_filenames_for_compilation(filenames)
475
474
  end
476
475
 
476
+ def compiled_file_for_filename(filename)
477
+ compiled_file =
478
+ compiled_files.
479
+ find { |f| f.content.match?(output_file_regex(filename)) }
480
+
481
+ compiled_file ||=
482
+ compiled_files.
483
+ find { |f| f.name == filename.gsub(/\.in$/, ".txt") }
484
+
485
+ compiled_file
486
+ end
487
+
488
+ def output_file_regex(filename)
489
+ "--output-file[=\s]+.*\s#{Regexp.escape(filename)}\s*$"
490
+ end
491
+
477
492
  def compiled_file_includes_dependency?(compiled_file)
478
493
  return false unless compiled_file
479
494
 
@@ -485,7 +500,7 @@ module Dependabot
485
500
  end
486
501
 
487
502
  def normalise(name)
488
- Dependency.name_normaliser_for_package_manager("pip").call(name)
503
+ NameNormaliser.normalise(name)
489
504
  end
490
505
 
491
506
  # If the files we need to update require one another then we need to
@@ -8,6 +8,7 @@ require "dependabot/python/file_parser/python_requirement_parser"
8
8
  require "dependabot/python/file_updater"
9
9
  require "dependabot/shared_helpers"
10
10
  require "dependabot/python/native_helpers"
11
+ require "dependabot/python/name_normaliser"
11
12
 
12
13
  module Dependabot
13
14
  module Python
@@ -290,7 +291,8 @@ module Dependabot
290
291
  def error_suggests_bad_python_version?(message)
291
292
  return true if message.include?("UnsupportedPythonVersion")
292
293
 
293
- message.include?('Command "python setup.py egg_info" failed')
294
+ message.include?('Command "python setup.py egg_info" failed') ||
295
+ message.include?("exit status 1: python setup.py egg_info")
294
296
  end
295
297
 
296
298
  def write_temporary_dependency_files(pipfile_content)
@@ -421,7 +423,7 @@ module Dependabot
421
423
  end
422
424
 
423
425
  def normalise(name)
424
- Dependency.name_normaliser_for_package_manager("pip").call(name)
426
+ NameNormaliser.normalise(name)
425
427
  end
426
428
 
427
429
  def parsed_lockfile
@@ -6,6 +6,7 @@ require "dependabot/dependency"
6
6
  require "dependabot/python/file_parser"
7
7
  require "dependabot/python/file_updater"
8
8
  require "dependabot/python/authed_url_builder"
9
+ require "dependabot/python/name_normaliser"
9
10
 
10
11
  module Dependabot
11
12
  module Python
@@ -104,7 +105,7 @@ module Dependabot
104
105
  end
105
106
 
106
107
  def normalise(name)
107
- Dependency.name_normaliser_for_package_manager("pip").call(name)
108
+ NameNormaliser.normalise(name)
108
109
  end
109
110
 
110
111
  def pipfile_sources
@@ -10,6 +10,7 @@ require "dependabot/python/python_versions"
10
10
  require "dependabot/python/file_parser/python_requirement_parser"
11
11
  require "dependabot/python/file_updater"
12
12
  require "dependabot/python/native_helpers"
13
+ require "dependabot/python/name_normaliser"
13
14
 
14
15
  module Dependabot
15
16
  module Python
@@ -291,7 +292,7 @@ module Dependabot
291
292
  end
292
293
 
293
294
  def normalise(name)
294
- Dependency.name_normaliser_for_package_manager("pip").call(name)
295
+ NameNormaliser.normalise(name)
295
296
  end
296
297
 
297
298
  def pyproject
@@ -6,6 +6,7 @@ require "dependabot/dependency"
6
6
  require "dependabot/python/file_parser"
7
7
  require "dependabot/python/file_updater"
8
8
  require "dependabot/python/authed_url_builder"
9
+ require "dependabot/python/name_normaliser"
9
10
  require "securerandom"
10
11
 
11
12
  module Dependabot
@@ -79,7 +80,7 @@ module Dependabot
79
80
  end
80
81
 
81
82
  def normalise(name)
82
- Dependency.name_normaliser_for_package_manager("pip").call(name)
83
+ NameNormaliser.normalise(name)
83
84
  end
84
85
 
85
86
  def pyproject_sources
@@ -5,6 +5,7 @@ require "dependabot/python/requirement_parser"
5
5
  require "dependabot/python/file_updater"
6
6
  require "dependabot/shared_helpers"
7
7
  require "dependabot/python/native_helpers"
8
+ require "dependabot/python/name_normaliser"
8
9
 
9
10
  module Dependabot
10
11
  module Python
@@ -167,7 +168,7 @@ module Dependabot
167
168
  end
168
169
 
169
170
  def normalise(name)
170
- Dependency.name_normaliser_for_package_manager("pip").call(name)
171
+ NameNormaliser.normalise(name)
171
172
  end
172
173
 
173
174
  def requirements_match(req1, req2)
@@ -173,5 +173,4 @@ module Dependabot
173
173
  end
174
174
  end
175
175
 
176
- Dependabot::MetadataFinders.
177
- register("pip", Dependabot::Python::MetadataFinder)
176
+ Dependabot::MetadataFinders.register("pip", Dependabot::Python::MetadataFinder)
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dependabot
4
+ module Python
5
+ module NameNormaliser
6
+ def self.normalise(name)
7
+ name.downcase.gsub(/[-_.]+/, "-")
8
+ end
9
+ end
10
+ end
11
+ end
@@ -10,6 +10,7 @@ require "dependabot/shared_helpers"
10
10
  require "dependabot/errors"
11
11
  require "dependabot/python/requirement"
12
12
  require "dependabot/python/requirement_parser"
13
+ require "dependabot/python/name_normaliser"
13
14
 
14
15
  module Dependabot
15
16
  module Python
@@ -288,7 +289,7 @@ module Dependabot
288
289
  end
289
290
 
290
291
  def normalised_name(name)
291
- Dependency.name_normaliser_for_package_manager("pip").call(name)
292
+ NameNormaliser.normalise(name)
292
293
  end
293
294
 
294
295
  def pipfile
@@ -318,5 +319,4 @@ module Dependabot
318
319
  end
319
320
  end
320
321
 
321
- Dependabot::UpdateCheckers.
322
- register("pip", Dependabot::Python::UpdateChecker)
322
+ Dependabot::UpdateCheckers.register("pip", Dependabot::Python::UpdateChecker)
@@ -8,6 +8,7 @@ require "dependabot/dependency"
8
8
  require "dependabot/python/update_checker"
9
9
  require "dependabot/shared_helpers"
10
10
  require "dependabot/python/authed_url_builder"
11
+ require "dependabot/python/name_normaliser"
11
12
 
12
13
  module Dependabot
13
14
  module Python
@@ -222,9 +223,7 @@ module Dependabot
222
223
  end
223
224
 
224
225
  def normalised_name
225
- Dependency.
226
- name_normaliser_for_package_manager("pip").
227
- call(dependency.name)
226
+ NameNormaliser.normalise(dependency.name)
228
227
  end
229
228
 
230
229
  def name_regex
@@ -13,6 +13,7 @@ require "dependabot/python/version"
13
13
  require "dependabot/shared_helpers"
14
14
  require "dependabot/python/native_helpers"
15
15
  require "dependabot/python/python_versions"
16
+ require "dependabot/python/name_normaliser"
16
17
 
17
18
  module Dependabot
18
19
  module Python
@@ -74,14 +75,15 @@ module Dependabot
74
75
  # This is slow, as pip-compile needs to do installs.
75
76
  run_pip_compile_command(
76
77
  "pyenv exec pip-compile --allow-unsafe "\
77
- "--build-isolation -P #{dependency.name} #{filename}"
78
+ "#{pip_compile_options(filename)} -P #{dependency.name} "\
79
+ "#{filename}"
78
80
  )
79
81
  # Run pip-compile a second time, without an update argument,
80
82
  # to ensure it handles markers correctly
81
83
  write_original_manifest_files unless dependency.top_level?
82
84
  run_pip_compile_command(
83
85
  "pyenv exec pip-compile --allow-unsafe "\
84
- "--build-isolation #{filename}"
86
+ "#{pip_compile_options(filename)} #{filename}"
85
87
  )
86
88
  end
87
89
 
@@ -196,6 +198,16 @@ module Dependabot
196
198
  )
197
199
  end
198
200
 
201
+ def pip_compile_options(filename)
202
+ requirements_file = compiled_file_for_filename(filename)
203
+ return "--build-isolation" unless requirements_file
204
+
205
+ [
206
+ "--build-isolation",
207
+ "--output-file=#{requirements_file.name}"
208
+ ].join(" ")
209
+ end
210
+
199
211
  def run_pip_compile_command(command)
200
212
  run_command("pyenv local #{python_version}")
201
213
  run_command(command)
@@ -250,7 +262,8 @@ module Dependabot
250
262
  end
251
263
 
252
264
  def error_certainly_bad_python_version?(message)
253
- unless message.include?('Command "python setup.py egg_info" failed')
265
+ unless message.include?('"python setup.py egg_info" failed') ||
266
+ message.include?("exit status 1: python setup.py egg_info")
254
267
  return false
255
268
  end
256
269
 
@@ -261,7 +274,8 @@ module Dependabot
261
274
  return true if message.include?("not find a version that satisfies")
262
275
  return true if message.include?("No matching distribution found")
263
276
 
264
- message.include?('Command "python setup.py egg_info" failed')
277
+ message.include?('Command "python setup.py egg_info" failed') ||
278
+ message.include?("exit status 1: python setup.py egg_info")
265
279
  end
266
280
 
267
281
  def write_temporary_dependency_files(updated_req: nil,
@@ -345,7 +359,7 @@ module Dependabot
345
359
  end
346
360
 
347
361
  def normalise(name)
348
- Dependency.name_normaliser_for_package_manager("pip").call(name)
362
+ NameNormaliser.normalise(name)
349
363
  end
350
364
 
351
365
  def clean_error_message(message)
@@ -367,8 +381,7 @@ module Dependabot
367
381
 
368
382
  files_from_compiled_files =
369
383
  pip_compile_files.map(&:name).select do |fn|
370
- compiled_file = dependency_files.
371
- find { |f| f.name == fn.gsub(/\.in$/, ".txt") }
384
+ compiled_file = compiled_file_for_filename(fn)
372
385
  compiled_file_includes_dependency?(compiled_file)
373
386
  end
374
387
 
@@ -377,6 +390,22 @@ module Dependabot
377
390
  order_filenames_for_compilation(filenames)
378
391
  end
379
392
 
393
+ def compiled_file_for_filename(filename)
394
+ compiled_file =
395
+ compiled_files.
396
+ find { |f| f.content.match?(output_file_regex(filename)) }
397
+
398
+ compiled_file ||=
399
+ compiled_files.
400
+ find { |f| f.name == filename.gsub(/\.in$/, ".txt") }
401
+
402
+ compiled_file
403
+ end
404
+
405
+ def output_file_regex(filename)
406
+ "--output-file[=\s]+.*\s#{Regexp.escape(filename)}\s*$"
407
+ end
408
+
380
409
  def compiled_file_includes_dependency?(compiled_file)
381
410
  return false unless compiled_file
382
411
 
@@ -13,6 +13,7 @@ require "dependabot/python/file_updater/setup_file_sanitizer"
13
13
  require "dependabot/python/update_checker"
14
14
  require "dependabot/python/python_versions"
15
15
  require "dependabot/python/native_helpers"
16
+ require "dependabot/python/name_normaliser"
16
17
  require "dependabot/python/version"
17
18
 
18
19
  # rubocop:disable Metrics/ClassLength
@@ -467,7 +468,8 @@ module Dependabot
467
468
  return true if error_message.include?("UnsupportedPythonVersion")
468
469
  return true if error_message.include?("at matches #{dependency.name}")
469
470
 
470
- error_message.include?('Command "python setup.py egg_info" failed')
471
+ error_message.include?('Command "python setup.py egg_info" failed') ||
472
+ message.include?("exit status 1: python setup.py egg_info")
471
473
  end
472
474
 
473
475
  def pipenv_env_variables
@@ -481,7 +483,7 @@ module Dependabot
481
483
  end
482
484
 
483
485
  def normalise(name)
484
- Dependency.name_normaliser_for_package_manager("pip").call(name)
486
+ NameNormaliser.normalise(name)
485
487
  end
486
488
 
487
489
  def pipfile
@@ -15,6 +15,7 @@ require "dependabot/python/requirement"
15
15
  require "dependabot/python/native_helpers"
16
16
  require "dependabot/python/python_versions"
17
17
  require "dependabot/python/authed_url_builder"
18
+ require "dependabot/python/name_normaliser"
18
19
 
19
20
  module Dependabot
20
21
  module Python
@@ -326,7 +327,7 @@ module Dependabot
326
327
  end
327
328
 
328
329
  def normalise(name)
329
- Dependency.name_normaliser_for_package_manager("pip").call(name)
330
+ NameNormaliser.normalise(name)
330
331
  end
331
332
  end
332
333
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-python
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.111.27
4
+ version: 0.111.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-24 00:00:00.000000000 Z
11
+ date: 2019-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dependabot-common
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.111.27
19
+ version: 0.111.28
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.111.27
26
+ version: 0.111.28
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: byebug
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -168,6 +168,7 @@ files:
168
168
  - lib/dependabot/python/file_updater/requirement_replacer.rb
169
169
  - lib/dependabot/python/file_updater/setup_file_sanitizer.rb
170
170
  - lib/dependabot/python/metadata_finder.rb
171
+ - lib/dependabot/python/name_normaliser.rb
171
172
  - lib/dependabot/python/native_helpers.rb
172
173
  - lib/dependabot/python/python_versions.rb
173
174
  - lib/dependabot/python/requirement.rb