dependabot-common 0.225.0 → 0.227.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eff50d0047fd94f2b62e76e55d42561e17780c26da251ba55cd04f493bce0cb5
4
- data.tar.gz: 34d2e201f6198e4478a2b13d8e2c12162ae1a2e74b6c66ebfd45e12518379155
3
+ metadata.gz: 2e7821b483eacc96c321f9dba2b95892317ba3c73f530820c5490677488c3399
4
+ data.tar.gz: bc801665fabf999aac3d5065b1e2689fc98df6b98baa082e64da043fc1ef7995
5
5
  SHA512:
6
- metadata.gz: 97d3947770789948f293026af11c4a8f065831ebf4c5ee5f06c3e2fe147766b5d4615b2497fbd7dfbfb4589a07df52a91de9c7041fe49cd74795fd3fb6be6437
7
- data.tar.gz: 640a7855071b6c94d1a8e91972bf4e34792e6ffcf02ac38d1bb6a42e985fdfc3479b994c645fdb24d77fe450f84e39aef0e6bef2ab41c0394989f9c63f792f19
6
+ metadata.gz: 2e1fb470523d4ea14fbe43f15155f089489fec19354aeb391d5bfa860944ea3286ed40db48630b7861dbcf6cdb2534a637d8f76e3ce322b14a9d0a8365c885a9
7
+ data.tar.gz: f486b2b36383f38064575b3022929ce110cab12ef863762dbae31a8d36691e0a8af59e2252a31b960a3b53d31f1ab8758f10411a8a53a3e12a50ff007a96f410
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require "shellwords"
4
5
 
@@ -44,7 +44,7 @@ module Dependabot
44
44
  @type = type
45
45
 
46
46
  begin
47
- @mode = File.stat((symlink_target || path).sub(%r{^/}, "")).mode.to_s(8)
47
+ @mode = File.stat(realpath).mode.to_s(8)
48
48
  rescue StandardError
49
49
  @mode = mode
50
50
  end
@@ -76,6 +76,10 @@ module Dependabot
76
76
  Pathname.new(File.join(directory, name)).cleanpath.to_path
77
77
  end
78
78
 
79
+ def realpath
80
+ (symlink_target || path).sub(%r{^/}, "")
81
+ end
82
+
79
83
  def ==(other)
80
84
  return false unless other.instance_of?(self.class)
81
85
 
@@ -9,34 +9,12 @@ require "yaml"
9
9
 
10
10
  module Dependabot
11
11
  class DependencyGroup
12
- ANY_DEPENDENCY_NAME = "*"
13
- SECURITY_UPDATES_ONLY = false
14
-
15
- DEFAULT_UPDATE_TYPES = [
16
- SEMVER_MAJOR = "major",
17
- SEMVER_MINOR = "minor",
18
- SEMVER_PATCH = "patch"
19
- ].freeze
20
-
21
- IGNORE_CONDITION_TYPES = {
22
- SEMVER_MAJOR => Dependabot::Config::IgnoreCondition::MAJOR_VERSION_TYPE,
23
- SEMVER_MINOR => Dependabot::Config::IgnoreCondition::MINOR_VERSION_TYPE,
24
- SEMVER_PATCH => Dependabot::Config::IgnoreCondition::PATCH_VERSION_TYPE
25
- }.freeze
26
-
27
- class NullIgnoreCondition
28
- def ignored_versions(_dependency, _security_updates_only)
29
- []
30
- end
31
- end
32
-
33
12
  attr_reader :name, :rules, :dependencies
34
13
 
35
14
  def initialize(name:, rules:)
36
15
  @name = name
37
16
  @rules = rules
38
17
  @dependencies = []
39
- @ignore_condition = generate_ignore_condition!
40
18
  end
41
19
 
42
20
  def contains?(dependency)
@@ -46,18 +24,6 @@ module Dependabot
46
24
  matches_pattern?(dependency.name) && matches_dependency_type?(dependency)
47
25
  end
48
26
 
49
- # This method generates ignored versions for the given Dependency based on
50
- # the any update-types we have defined.
51
- def ignored_versions_for(dependency)
52
- @ignore_condition.ignored_versions(dependency, SECURITY_UPDATES_ONLY)
53
- end
54
-
55
- def targets_highest_versions_possible?
56
- return true unless experimental_rules_enabled?
57
-
58
- update_types.include?(SEMVER_MAJOR)
59
- end
60
-
61
27
  def to_h
62
28
  { "name" => name }
63
29
  end
@@ -93,46 +59,6 @@ module Dependabot
93
59
  end
94
60
  end
95
61
 
96
- def pattern_rules?
97
- rules.key?("patterns") && rules["patterns"]&.any?
98
- end
99
-
100
- def update_types
101
- rules.fetch("update-types", DEFAULT_UPDATE_TYPES)
102
- end
103
-
104
- def generate_ignore_condition!
105
- return NullIgnoreCondition.new unless experimental_rules_enabled?
106
-
107
- ignored_update_types = ignored_update_types_for_rules
108
-
109
- return NullIgnoreCondition.new unless ignored_update_types.any?
110
-
111
- Dependabot.logger.debug("The #{name} group has set ignores for update-type(s): #{ignored_update_types}")
112
-
113
- Dependabot::Config::IgnoreCondition.new(
114
- dependency_name: ANY_DEPENDENCY_NAME,
115
- update_types: ignored_update_types
116
- )
117
- end
118
-
119
- def ignored_update_types_for_rules
120
- unless update_types.is_a?(Array)
121
- raise ArgumentError,
122
- "The #{name} group has an unexpected value for update-types: '#{update_types}'"
123
- end
124
-
125
- unless update_types.any?
126
- raise ArgumentError,
127
- "The #{name} group has specified an empty array for update-types."
128
- end
129
-
130
- ignored_update_types = DEFAULT_UPDATE_TYPES - update_types
131
- return [] if ignored_update_types.empty?
132
-
133
- IGNORE_CONDITION_TYPES.fetch_values(*ignored_update_types)
134
- end
135
-
136
62
  def experimental_rules_enabled?
137
63
  Dependabot::Experiments.enabled?(:grouped_updates_experimental_rules)
138
64
  end
@@ -108,6 +108,10 @@ module Dependabot
108
108
 
109
109
  private
110
110
 
111
+ def fetch_support_file(name)
112
+ fetch_file_if_present(name)&.tap { |f| f.support_file = true }
113
+ end
114
+
111
115
  def fetch_file_if_present(filename, fetch_submodules: false)
112
116
  unless repo_contents_path.nil?
113
117
  begin
@@ -128,8 +132,7 @@ module Dependabot
128
132
 
129
133
  fetch_file_from_host(filename, fetch_submodules: fetch_submodules)
130
134
  rescue *CLIENT_NOT_FOUND_ERRORS
131
- path = Pathname.new(File.join(directory, filename)).cleanpath.to_path
132
- raise Dependabot::DependencyFileNotFound, path
135
+ nil
133
136
  end
134
137
 
135
138
  def load_cloned_file_if_present(filename)
@@ -159,19 +162,34 @@ module Dependabot
159
162
 
160
163
  path = Pathname.new(File.join(directory, filename)).cleanpath.to_path
161
164
  content = _fetch_file_content(path, fetch_submodules: fetch_submodules)
162
- type = "symlink" if @linked_paths.key?(path.gsub(%r{^/}, ""))
165
+ clean_path = path.gsub(%r{^/}, "")
166
+
167
+ linked_path = symlinked_subpath(clean_path)
168
+ type = "symlink" if linked_path
169
+ symlink_target = clean_path.sub(linked_path, @linked_paths.dig(linked_path, :path)) if type == "symlink"
163
170
 
164
171
  DependencyFile.new(
165
172
  name: Pathname.new(filename).cleanpath.to_path,
166
173
  directory: directory,
167
174
  type: type,
168
175
  content: content,
169
- symlink_target: @linked_paths.dig(path.gsub(%r{^/}, ""), :path)
176
+ symlink_target: symlink_target
170
177
  )
171
178
  rescue *CLIENT_NOT_FOUND_ERRORS
172
179
  raise Dependabot::DependencyFileNotFound, path
173
180
  end
174
181
 
182
+ # Finds the first subpath in path that is a symlink
183
+ def symlinked_subpath(path)
184
+ subpaths(path).find { |subpath| @linked_paths.key?(subpath) }
185
+ end
186
+
187
+ # Given a "foo/bar/baz" path, returns ["foo", "foo/bar", "foo/bar/baz"]
188
+ def subpaths(path)
189
+ components = path.split("/")
190
+ components.map { |component| components[0..components.index(component)].join("/") }
191
+ end
192
+
175
193
  def repo_contents(dir: ".", ignore_base_directory: false,
176
194
  raise_errors: true, fetch_submodules: false)
177
195
  dir = File.join(directory, dir) unless ignore_base_directory
@@ -375,7 +393,7 @@ module Dependabot
375
393
 
376
394
  def _gitlab_repo_contents(repo, path, commit)
377
395
  gitlab_client.
378
- repo_tree(repo, path: path, ref_name: commit, per_page: 100).
396
+ repo_tree(repo, path: path, ref: commit, per_page: 100).
379
397
  map do |file|
380
398
  # GitLab API essentially returns the output from `git ls-tree`
381
399
  type = case file.type
@@ -40,7 +40,6 @@ module Dependabot
40
40
  def pinned?
41
41
  raise "Not a git dependency!" unless git_dependency?
42
42
 
43
- ref = dependency_source_details.fetch(:ref)
44
43
  branch = dependency_source_details.fetch(:branch)
45
44
 
46
45
  return false if ref.nil?
@@ -61,16 +60,14 @@ module Dependabot
61
60
  def pinned_ref_looks_like_version?
62
61
  return false unless pinned?
63
62
 
64
- version_tag?(dependency_source_details.fetch(:ref))
63
+ version_tag?(ref)
65
64
  end
66
65
 
67
66
  def pinned_ref_looks_like_commit_sha?
68
- ref = dependency_source_details.fetch(:ref)
69
67
  ref_looks_like_commit_sha?(ref)
70
68
  end
71
69
 
72
70
  def head_commit_for_pinned_ref
73
- ref = dependency_source_details.fetch(:ref)
74
71
  local_repo_git_metadata_fetcher.head_commit_for_ref_sha(ref)
75
72
  end
76
73
 
@@ -144,15 +141,14 @@ module Dependabot
144
141
  end
145
142
 
146
143
  def most_specific_tag_equivalent_to_pinned_ref
147
- commit_sha = head_commit_for_local_branch(dependency_source_details.fetch(:ref))
144
+ commit_sha = head_commit_for_local_branch(ref)
148
145
  most_specific_version_tag_for_sha(commit_sha)
149
146
  end
150
147
 
151
148
  def local_tag_for_pinned_sha
152
- return unless pinned_ref_looks_like_commit_sha?
149
+ return @local_tag_for_pinned_sha if defined?(@local_tag_for_pinned_sha)
153
150
 
154
- commit_sha = dependency_source_details.fetch(:ref)
155
- most_specific_version_tag_for_sha(commit_sha)
151
+ @local_tag_for_pinned_sha = most_specific_version_tag_for_sha(ref) if pinned_ref_looks_like_commit_sha?
156
152
  end
157
153
 
158
154
  def git_repo_reachable?
@@ -223,7 +219,7 @@ module Dependabot
223
219
  return false unless tag
224
220
 
225
221
  commit_included_in_tag?(
226
- commit: dependency_source_details.fetch(:ref),
222
+ commit: ref,
227
223
  tag: tag,
228
224
  allow_identical: true
229
225
  )
@@ -327,8 +323,11 @@ module Dependabot
327
323
  end
328
324
 
329
325
  def ref_or_branch
330
- dependency_source_details.fetch(:ref) ||
331
- dependency_source_details.fetch(:branch)
326
+ ref || dependency_source_details.fetch(:branch)
327
+ end
328
+
329
+ def ref
330
+ dependency_source_details.fetch(:ref)
332
331
  end
333
332
 
334
333
  def version_tag?(tag)
@@ -336,10 +335,18 @@ module Dependabot
336
335
  end
337
336
 
338
337
  def matches_existing_prefix?(tag)
339
- return true unless ref_or_branch&.match?(VERSION_REGEX)
338
+ return true unless ref_or_branch
339
+
340
+ if version_tag?(ref_or_branch)
341
+ same_prefix?(ref_or_branch, tag)
342
+ else
343
+ local_tag_for_pinned_sha.nil? || same_prefix?(local_tag_for_pinned_sha, tag)
344
+ end
345
+ end
340
346
 
341
- ref_or_branch.gsub(VERSION_REGEX, "").gsub(/v$/i, "") ==
342
- tag.gsub(VERSION_REGEX, "").gsub(/v$/i, "")
347
+ def same_prefix?(tag, other_tag)
348
+ tag.gsub(VERSION_REGEX, "").gsub(/v$/i, "") ==
349
+ other_tag.gsub(VERSION_REGEX, "").gsub(/v$/i, "")
343
350
  end
344
351
 
345
352
  def to_local_tag(tag)
@@ -417,7 +424,7 @@ module Dependabot
417
424
  return false unless dependency_source_details&.fetch(:ref, nil)
418
425
  return false unless pinned_ref_looks_like_version?
419
426
 
420
- version = version_from_ref(dependency_source_details.fetch(:ref))
427
+ version = version_from_ref(ref)
421
428
  version.prerelease?
422
429
  end
423
430
 
@@ -47,8 +47,10 @@ module Dependabot
47
47
  if ref == "HEAD"
48
48
  # Remove the opening clause of the upload pack as this isn't always
49
49
  # followed by a line break. When it isn't (e.g., with Bitbucket) it
50
- # causes problems for our `sha_for_update_pack_line` logic
51
- line = upload_pack.gsub(/.*git-upload-pack/, "").
50
+ # causes problems for our `sha_for_update_pack_line` logic. The format
51
+ # of this opening clause is documented at
52
+ # https://git-scm.com/docs/http-protocol#_smart_server_response
53
+ line = upload_pack.gsub(/^[0-9a-f]{4}# service=git-upload-pack/, "").
52
54
  lines.find { |l| l.include?(" HEAD") }
53
55
  return sha_for_update_pack_line(line) if line
54
56
  end
@@ -177,7 +179,7 @@ module Dependabot
177
179
  # (GitHub, GitLab, BitBucket) work with or without the suffix.
178
180
  # That change has other ramifications, so it'd be better if Azure started supporting ".git"
179
181
  # like all the other providers.
180
- uri = "https://#{uri.split('git@').last.sub(%r{:/?}, '/')}" if uri.start_with?("git@")
182
+ uri = SharedHelpers.scp_to_standard(uri)
181
183
  uri = URI(uri)
182
184
  hostname = uri.hostname.to_s
183
185
  hostname == "dev.azure.com" || hostname.end_with?(".visualstudio.com")
@@ -186,8 +188,7 @@ module Dependabot
186
188
  # Add in username and password if present in credentials.
187
189
  # Credentials are never present for production Dependabot.
188
190
  def uri_with_auth(uri)
189
- # Handle SCP-style git URIs
190
- uri = "https://#{uri.split('git@').last.sub(%r{:/?}, '/')}" if uri.start_with?("git@")
191
+ uri = SharedHelpers.scp_to_standard(uri)
191
192
  uri = URI(uri)
192
193
  cred = credentials.select { |c| c["type"] == "git_source" }.
193
194
  find { |c| uri.host == c["host"] }
@@ -117,9 +117,8 @@ module Dependabot
117
117
  end
118
118
 
119
119
  def source
120
- return @source if @source_lookup_attempted
120
+ return @source if defined?(@source)
121
121
 
122
- @source_lookup_attempted = true
123
122
  @source = look_up_source
124
123
  end
125
124
 
@@ -10,6 +10,9 @@ module Dependabot
10
10
  :files, :commit_message, :pr_description, :pr_name,
11
11
  :author_details, :labeler, :work_item
12
12
 
13
+ # BitBucket Cloud accepts > 1MB characters, but they display poorly in the UI, so limiting to 4x 65,536
14
+ PR_DESCRIPTION_MAX_LENGTH = 262_143 # 0 based count
15
+
13
16
  def initialize(source:, branch_name:, base_commit:, credentials:,
14
17
  files:, commit_message:, pr_description:, pr_name:,
15
18
  author_details:, labeler: nil, work_item: nil)
@@ -193,8 +193,7 @@ module Dependabot
193
193
  end
194
194
 
195
195
  {
196
- path: (file.symlink_target ||
197
- file.path).sub(%r{^/}, ""),
196
+ path: file.realpath,
198
197
  mode: (file.mode || "100644"),
199
198
  type: "blob"
200
199
  }.merge(content)
@@ -108,7 +108,8 @@ module Dependabot
108
108
  {
109
109
  action: file_action(file),
110
110
  file_path: file.type == "symlink" ? file.symlink_target : file.path,
111
- content: file.content
111
+ content: file.content,
112
+ encoding: file.content_encoding
112
113
  }
113
114
  end
114
115
  end
@@ -365,8 +365,14 @@ module Dependabot
365
365
  "with #{update_count} update#{update_count > 1 ? 's' : ''}:"
366
366
 
367
367
  msg += if update_count >= 5
368
- header = %w(Package Update)
369
- rows = dependencies.map { |dep| [dependency_link(dep), dependency_version_update(dep)] }
368
+ header = %w(Package From To)
369
+ rows = dependencies.map do |dep|
370
+ [
371
+ dependency_link(dep),
372
+ "`#{dep.humanized_previous_version}`",
373
+ "`#{dep.humanized_version}`"
374
+ ]
375
+ end
370
376
  "\n\n#{table([header] + rows)}"
371
377
  elsif update_count > 1
372
378
  " #{dependency_links[0..-2].join(', ')} and #{dependency_links[-1]}."
@@ -529,18 +535,18 @@ module Dependabot
529
535
 
530
536
  # Filter out the conditions where from_config_file is false and dependency is in @dependencies
531
537
  valid_ignore_conditions = @ignore_conditions.select do |ic|
532
- !ic[:from_config_file] && dependencies.any? { |dep| dep.name == ic[:dependency_name] }
538
+ ic["source"] =~ /\A@dependabot ignore/ && dependencies.any? { |dep| dep.name == ic["dependency-name"] }
533
539
  end
534
540
 
535
541
  # Return an empty string if no valid ignore conditions after filtering
536
542
  return "" if valid_ignore_conditions.empty?
537
543
 
538
544
  # Sort them by updated_at (or created_at if updated_at is nil), taking the latest 20
539
- sorted_ignore_conditions = valid_ignore_conditions.sort_by { |ic| ic[:updated_at] || ic[:created_at] }.last(20)
545
+ sorted_ignore_conditions = valid_ignore_conditions.sort_by { |ic| ic["updated-at"] }.last(20)
540
546
 
541
547
  # Map each condition to a row string
542
548
  table_rows = sorted_ignore_conditions.map do |ic|
543
- "| #{ic[:dependency_name]} | [#{ic[:version_requirement]}] |"
549
+ "| #{ic['dependency-name']} | [#{ic['version-requirement']}] |"
544
550
  end
545
551
 
546
552
  summary = "Most Recent Ignore Conditions Applied to This Pull Request"
@@ -230,6 +230,8 @@ module Dependabot
230
230
  @pr_message_encoding = Azure::PR_DESCRIPTION_ENCODING if @pr_message_encoding.nil?
231
231
  when "codecommit"
232
232
  @pr_message_max_length = Codecommit::PR_DESCRIPTION_MAX_LENGTH if @pr_message_max_length.nil?
233
+ when "bitbucket"
234
+ @pr_message_max_length = Bitbucket::PR_DESCRIPTION_MAX_LENGTH if @pr_message_max_length.nil?
233
235
  end
234
236
 
235
237
  @message = MessageBuilder.new(
@@ -144,8 +144,7 @@ module Dependabot
144
144
  end
145
145
 
146
146
  {
147
- path: (file.symlink_target ||
148
- file.path).sub(%r{^/}, ""),
147
+ path: file.realpath,
149
148
  mode: "100644",
150
149
  type: "blob"
151
150
  }.merge(content)
@@ -79,7 +79,8 @@ module Dependabot
79
79
  {
80
80
  action: file_action(file),
81
81
  file_path: file.type == "symlink" ? file.symlink_target : file.path,
82
- content: file.content
82
+ content: file.content,
83
+ encoding: file.content_encoding
83
84
  }
84
85
  end
85
86
  end
@@ -191,6 +191,13 @@ module Dependabot
191
191
  reset_global_git_config(backup_git_config_path)
192
192
  end
193
193
 
194
+ # Handle SCP-style git URIs
195
+ def self.scp_to_standard(uri)
196
+ return uri unless uri.start_with?("git@")
197
+
198
+ "https://#{uri.split('git@').last.sub(%r{:/?}, '/')}"
199
+ end
200
+
194
201
  def self.credential_helper_path
195
202
  File.join(__dir__, "../../bin/git-credential-store-immutable")
196
203
  end
data/lib/dependabot.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dependabot
4
- VERSION = "0.225.0"
4
+ VERSION = "0.227.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.225.0
4
+ version: 0.227.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-31 00:00:00.000000000 Z
11
+ date: 2023-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-codecommit
@@ -84,14 +84,14 @@ dependencies:
84
84
  requirements:
85
85
  - - "~>"
86
86
  - !ruby/object:Gem::Version
87
- version: 1.14.0
87
+ version: 1.18.0
88
88
  type: :runtime
89
89
  prerelease: false
90
90
  version_requirements: !ruby/object:Gem::Requirement
91
91
  requirements:
92
92
  - - "~>"
93
93
  - !ruby/object:Gem::Version
94
- version: 1.14.0
94
+ version: 1.18.0
95
95
  - !ruby/object:Gem::Dependency
96
96
  name: excon
97
97
  requirement: !ruby/object:Gem::Requirement
@@ -101,7 +101,7 @@ dependencies:
101
101
  version: '0.96'
102
102
  - - "<"
103
103
  - !ruby/object:Gem::Version
104
- version: '0.100'
104
+ version: '0.101'
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
@@ -111,35 +111,35 @@ dependencies:
111
111
  version: '0.96'
112
112
  - - "<"
113
113
  - !ruby/object:Gem::Version
114
- version: '0.100'
114
+ version: '0.101'
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: faraday
117
117
  requirement: !ruby/object:Gem::Requirement
118
118
  requirements:
119
119
  - - '='
120
120
  - !ruby/object:Gem::Version
121
- version: 2.7.4
121
+ version: 2.7.10
122
122
  type: :runtime
123
123
  prerelease: false
124
124
  version_requirements: !ruby/object:Gem::Requirement
125
125
  requirements:
126
126
  - - '='
127
127
  - !ruby/object:Gem::Version
128
- version: 2.7.4
128
+ version: 2.7.10
129
129
  - !ruby/object:Gem::Dependency
130
130
  name: faraday-retry
131
131
  requirement: !ruby/object:Gem::Requirement
132
132
  requirements:
133
133
  - - '='
134
134
  - !ruby/object:Gem::Version
135
- version: 2.1.0
135
+ version: 2.2.0
136
136
  type: :runtime
137
137
  prerelease: false
138
138
  version_requirements: !ruby/object:Gem::Requirement
139
139
  requirements:
140
140
  - - '='
141
141
  - !ruby/object:Gem::Version
142
- version: 2.1.0
142
+ version: 2.2.0
143
143
  - !ruby/object:Gem::Dependency
144
144
  name: gitlab
145
145
  requirement: !ruby/object:Gem::Requirement
@@ -346,14 +346,14 @@ dependencies:
346
346
  requirements:
347
347
  - - "~>"
348
348
  - !ruby/object:Gem::Version
349
- version: 1.17.1
349
+ version: 1.19.0
350
350
  type: :development
351
351
  prerelease: false
352
352
  version_requirements: !ruby/object:Gem::Requirement
353
353
  requirements:
354
354
  - - "~>"
355
355
  - !ruby/object:Gem::Version
356
- version: 1.17.1
356
+ version: 1.19.0
357
357
  - !ruby/object:Gem::Dependency
358
358
  name: stackprof
359
359
  requirement: !ruby/object:Gem::Requirement
@@ -486,7 +486,7 @@ licenses:
486
486
  - Nonstandard
487
487
  metadata:
488
488
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
489
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.225.0
489
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.227.0
490
490
  post_install_message:
491
491
  rdoc_options: []
492
492
  require_paths: