dependabot-python 0.275.0 → 0.276.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: '0626084dc83e808fbf8f28e59811aa2c01be03d7735e36f1c60df096d40fe25a'
4
- data.tar.gz: a0d8c1d862fa9ce282e216c4a2fc7d0a68ea717cd5b13c8c19b08309254b91ff
3
+ metadata.gz: b0c0ebe17176ecc264d11ac2b7e4a4b569f89d9caef5d82855c804045c23c2f2
4
+ data.tar.gz: caa6f4908c81929629fa4df74457c3ef18d67533eec81b0863f0b5b5d366ea52
5
5
  SHA512:
6
- metadata.gz: a917f63eabb8f58bffb7884bd142eb547ae9dddd14f4195ed76907f5d336a01532094716668311d6b79c87296f49177a66cecfcfa8efec2e4087f5409a071635
7
- data.tar.gz: 925475e32323452a63d91a773c893db2e5e1fa72083e6c0be215c3ab8eb9cf6ccba2109946a3d9fdc9aecb36bc390284c345a93d5cd45cf0981655d443868dd8
6
+ metadata.gz: 0237ca31de163f73dc570289e2f103d4d1400fd6ca65adadd2ea9e8bb648d10a25500969513236cfc9c3047339ced25f5188101b15128ce584c95991f458957b
7
+ data.tar.gz: 677869a2cda25d91e93c3cf7dd6a6174e1c471c0f4234ece66e5231ac52864c283a1c740d2d5b4b2c40589a77440c2868e47ce38969cf277059431a4731e4550
@@ -175,6 +175,8 @@ module Dependabot
175
175
  def available_versions
176
176
  @available_versions ||=
177
177
  index_urls.flat_map do |index_url|
178
+ validate_index(index_url)
179
+
178
180
  sanitized_url = index_url.gsub(%r{(?<=//).*(?=@)}, "redacted")
179
181
 
180
182
  index_response = registry_response_for_dependency(index_url)
@@ -283,6 +285,15 @@ module Dependabot
283
285
  def requirement_class
284
286
  dependency.requirement_class
285
287
  end
288
+
289
+ def validate_index(index_url)
290
+ sanitized_url = index_url.gsub(%r{(?<=//).*(?=@)}, "redacted")
291
+
292
+ return if index_url&.match?(URI::DEFAULT_PARSER.regexp[:ABS_URI])
293
+
294
+ raise Dependabot::DependencyFileNotResolvable,
295
+ "Invalid URL: #{sanitized_url}"
296
+ end
286
297
  end
287
298
  end
288
299
  end
@@ -23,6 +23,9 @@ module Dependabot
23
23
  class UpdateChecker
24
24
  # This class does version resolution for pyproject.toml files.
25
25
  class PoetryVersionResolver
26
+ extend T::Sig
27
+ extend T::Helpers
28
+
26
29
  GIT_REFERENCE_NOT_FOUND_REGEX = /
27
30
  (Failed to checkout
28
31
  (?<tag>.+?)
@@ -38,16 +41,23 @@ module Dependabot
38
41
  \s+check\syour\sgit\sconfiguration
39
42
  /mx
40
43
 
44
+ INCOMPATIBLE_CONSTRAINTS = /Incompatible constraints in requirements of (?<dep>.+?) ((?<ver>.+?)):/
45
+
41
46
  attr_reader :dependency
42
47
  attr_reader :dependency_files
43
48
  attr_reader :credentials
44
49
  attr_reader :repo_contents_path
45
50
 
51
+ sig { returns(Dependabot::Python::PoetryErrorHandler) }
52
+ attr_reader :error_handler
53
+
46
54
  def initialize(dependency:, dependency_files:, credentials:, repo_contents_path:)
47
55
  @dependency = dependency
48
56
  @dependency_files = dependency_files
49
57
  @credentials = credentials
50
58
  @repo_contents_path = repo_contents_path
59
+ @error_handler = PoetryErrorHandler.new(dependencies: dependency,
60
+ dependency_files: dependency_files)
51
61
  end
52
62
 
53
63
  def latest_resolvable_version(requirement: nil)
@@ -115,6 +125,8 @@ module Dependabot
115
125
 
116
126
  # rubocop:disable Metrics/AbcSize
117
127
  def handle_poetry_errors(error)
128
+ error_handler.handle_poetry_error(error)
129
+
118
130
  if error.message.gsub(/\s/, "").match?(GIT_REFERENCE_NOT_FOUND_REGEX)
119
131
  message = error.message.gsub(/\s/, "")
120
132
  match = message.match(GIT_REFERENCE_NOT_FOUND_REGEX)
@@ -322,5 +334,51 @@ module Dependabot
322
334
  end
323
335
  end
324
336
  end
337
+
338
+ class PoetryErrorHandler < UpdateChecker
339
+ extend T::Sig
340
+
341
+ # if a valid config value is not found in project.toml file
342
+ INVALID_CONFIGURATION = /The Poetry configuration is invalid:(?<config>.*)/
343
+
344
+ # if .toml has incorrect version specification i.e. <0.2.0app
345
+ INVALID_VERSION = /Could not parse version constraint: (?<ver>.*)/
346
+
347
+ # dependency source link not accessible
348
+ INVALID_LINK = /No valid distribution links found for package: "(?<dep>.*)" version: "(?<ver>.*)"/
349
+
350
+ sig do
351
+ params(
352
+ dependencies: Dependabot::Dependency,
353
+ dependency_files: T::Array[Dependabot::DependencyFile]
354
+ ).void
355
+ end
356
+ def initialize(dependencies:, dependency_files:)
357
+ @dependencies = dependencies
358
+ @dependency_files = dependency_files
359
+ end
360
+
361
+ private
362
+
363
+ sig { returns(Dependabot::Dependency) }
364
+ attr_reader :dependencies
365
+
366
+ sig { returns(T::Array[Dependabot::DependencyFile]) }
367
+ attr_reader :dependency_files
368
+
369
+ public
370
+
371
+ sig { params(error: Exception).void }
372
+ def handle_poetry_error(error)
373
+ Dependabot.logger.warn(error.message)
374
+
375
+ if (msg = error.message.match(PoetryVersionResolver::INCOMPATIBLE_CONSTRAINTS) ||
376
+ error.message.match(INVALID_CONFIGURATION) || error.message.match(INVALID_VERSION) ||
377
+ error.message.match(INVALID_LINK))
378
+
379
+ raise DependencyFileNotResolvable, msg
380
+ end
381
+ end
382
+ end
325
383
  end
326
384
  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.275.0
4
+ version: 0.276.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-12 00:00:00.000000000 Z
11
+ date: 2024-09-19 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.275.0
19
+ version: 0.276.0
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.275.0
26
+ version: 0.276.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: debug
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -288,7 +288,7 @@ licenses:
288
288
  - MIT
289
289
  metadata:
290
290
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
291
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.275.0
291
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.276.0
292
292
  post_install_message:
293
293
  rdoc_options: []
294
294
  require_paths: