grumlin 1.0.4 → 1.2.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: 37a377cb78a69351a6b8dec3dd7a0cfe1e26798050a63e2a1d06ae6f98ef1685
4
- data.tar.gz: 59fb7208327b03c9977c7926b877a7901df018ae7d5cf3f6826dbce991e51134
3
+ metadata.gz: e12324038e3055ee0fcc736077cf70cdcc771fb655a468020358b4595355bda5
4
+ data.tar.gz: ec4690d68d554a38569b4e693bafbaaba7b37dad20e146b925099627b47e836e
5
5
  SHA512:
6
- metadata.gz: 7131525255531d09a5d01c9dfdd7e39a2b9be0f17861f13852a405b7469f72143ff456a0dd993d57c64f1d5ef3448261332db476f52580e2272fb1e70869f074
7
- data.tar.gz: 208349b5295e788c7b179950a5efccca28b50622d0f642066fcbd6da75d5557d0560b044d9b9431de105ff11837b39e1e5bccd4b872bafd78b8bcef283b7ea4f
6
+ metadata.gz: f3301fc9f7018156a6d6a96fb9e3228635e62c9cefb0da2dca10ded230d8135feea23893078e833a763406c5b58b8952c097d10d2446a2965ae81ef7ea081f4b
7
+ data.tar.gz: 479bf195804c7b8a39c7cb82f18d5284f92a00bd4444620b94887487615eb4fcc57d4e6a619d55ff98a977b73ef0315d6d8c8495ebbd527cdc12a389b8a27b28
@@ -22,7 +22,7 @@ jobs:
22
22
  runs-on: ubuntu-latest
23
23
  strategy:
24
24
  matrix:
25
- ruby: ["2.7", "3.0", "3.1"]
25
+ ruby: ["3.0", "3.1", "3.2", "3.3"]
26
26
  steps:
27
27
  - uses: actions/checkout@v2
28
28
 
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.7
2
+ TargetRubyVersion: 3.0
3
3
  NewCops: enable
4
4
  SuggestExtensions: false
5
5
 
@@ -89,3 +89,6 @@ Style/WordArray:
89
89
 
90
90
  Style/ClassAndModuleChildren:
91
91
  EnforcedStyle: compact
92
+
93
+ FactoryBot/IdSequence:
94
+ Enabled: false
data/.tool-versions CHANGED
@@ -1 +1 @@
1
- ruby 2.7.5
1
+ ruby 3.0.6
data/Gemfile.lock CHANGED
@@ -1,177 +1,202 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- grumlin (1.0.4)
5
- async-pool (~> 0.3.0)
6
- async-websocket (~> 0.22.0)
4
+ grumlin (1.2.0)
5
+ async-pool (~> 0.4.0)
6
+ async-websocket (~> 0.26.0)
7
7
  ibsciss-middleware (~> 0.4.0)
8
- oj (~> 3.13.0)
8
+ oj (~> 3.16.0)
9
9
  retryable (~> 3.0.0)
10
10
  zeitwerk (~> 2.6.0)
11
11
 
12
12
  GEM
13
13
  remote: https://rubygems.org/
14
14
  specs:
15
- activesupport (7.0.4)
15
+ activesupport (7.1.2)
16
+ base64
17
+ bigdecimal
16
18
  concurrent-ruby (~> 1.0, >= 1.0.2)
19
+ connection_pool (>= 2.2.5)
20
+ drb
17
21
  i18n (>= 1.6, < 2)
18
22
  minitest (>= 5.1)
23
+ mutex_m
19
24
  tzinfo (~> 2.0)
20
25
  ast (2.4.2)
21
- async (1.30.3)
26
+ async (1.31.0)
22
27
  console (~> 1.10)
23
28
  nio4r (~> 2.3)
24
29
  timers (~> 4.1)
25
- async-http (0.59.3)
30
+ async-http (0.61.0)
26
31
  async (>= 1.25)
27
32
  async-io (>= 1.28)
28
33
  async-pool (>= 0.2)
29
- protocol-http (~> 0.23.1)
30
- protocol-http1 (~> 0.14.0)
31
- protocol-http2 (~> 0.14.0)
32
- traces (>= 0.8.0)
33
- async-io (1.34.0)
34
+ protocol-http (~> 0.25.0)
35
+ protocol-http1 (~> 0.16.0)
36
+ protocol-http2 (~> 0.15.0)
37
+ traces (>= 0.10.0)
38
+ async-io (1.38.1)
34
39
  async
35
- async-pool (0.3.12)
40
+ async-pool (0.4.0)
36
41
  async (>= 1.25)
37
- async-rspec (1.16.1)
42
+ async-rspec (1.17.0)
38
43
  rspec (~> 3.0)
39
44
  rspec-files (~> 1.0)
40
45
  rspec-memory (~> 1.0)
41
- async-websocket (0.22.1)
46
+ async-websocket (0.26.0)
42
47
  async-http (~> 0.54)
43
48
  async-io (~> 1.23)
44
49
  protocol-rack (~> 0.1)
45
- protocol-websocket (~> 0.9.1)
50
+ protocol-websocket (~> 0.11)
46
51
  backport (1.2.0)
47
- benchmark (0.2.0)
48
- benchmark-ips (2.10.0)
52
+ base64 (0.2.0)
53
+ benchmark (0.3.0)
54
+ benchmark-ips (2.13.0)
55
+ bigdecimal (3.1.5)
49
56
  childprocess (4.1.0)
50
- concurrent-ruby (1.1.10)
51
- console (1.16.2)
57
+ concurrent-ruby (1.2.2)
58
+ connection_pool (2.4.1)
59
+ console (1.23.3)
60
+ fiber-annotation
52
61
  fiber-local
53
62
  dead_end (4.0.0)
54
63
  diff-lcs (1.5.0)
55
64
  docile (1.4.0)
65
+ drb (2.2.0)
66
+ ruby2_keywords
56
67
  e2mmap (0.1.0)
57
- factory_bot (6.2.1)
68
+ factory_bot (6.4.5)
58
69
  activesupport (>= 5.0.0)
70
+ fiber-annotation (0.2.0)
59
71
  fiber-local (1.0.0)
60
- i18n (1.12.0)
72
+ i18n (1.14.1)
61
73
  concurrent-ruby (~> 1.0)
62
74
  ibsciss-middleware (0.4.2)
63
75
  iniparse (1.5.0)
64
- jaro_winkler (1.5.4)
65
- json (2.6.2)
76
+ jaro_winkler (1.5.6)
77
+ json (2.7.1)
66
78
  kramdown (2.4.0)
67
79
  rexml
68
80
  kramdown-parser-gfm (1.1.0)
69
81
  kramdown (~> 2.0)
82
+ language_server-protocol (3.17.0.3)
70
83
  memory_profiler (1.0.1)
71
- mini_portile2 (2.8.0)
72
- minitest (5.16.3)
73
- nio4r (2.5.8)
74
- nokogiri (1.13.9)
75
- mini_portile2 (~> 2.8.0)
84
+ mini_portile2 (2.8.5)
85
+ minitest (5.20.0)
86
+ mutex_m (0.2.0)
87
+ nio4r (2.7.0)
88
+ nokogiri (1.16.0)
89
+ mini_portile2 (~> 2.8.2)
76
90
  racc (~> 1.4)
77
- oj (3.13.23)
78
- overcommit (0.59.1)
91
+ nokogiri (1.16.0-x86_64-linux)
92
+ racc (~> 1.4)
93
+ oj (3.16.3)
94
+ bigdecimal (>= 3.0)
95
+ overcommit (0.61.0)
79
96
  childprocess (>= 0.6.3, < 5)
80
97
  iniparse (~> 1.4)
81
98
  rexml (~> 3.2)
82
- parallel (1.22.1)
83
- parser (3.1.2.1)
99
+ parallel (1.24.0)
100
+ parser (3.2.2.4)
84
101
  ast (~> 2.4.1)
102
+ racc
85
103
  protocol-hpack (1.4.2)
86
- protocol-http (0.23.12)
87
- protocol-http1 (0.14.6)
104
+ protocol-http (0.25.0)
105
+ protocol-http1 (0.16.1)
88
106
  protocol-http (~> 0.22)
89
- protocol-http2 (0.14.2)
107
+ protocol-http2 (0.15.1)
90
108
  protocol-hpack (~> 1.4)
91
109
  protocol-http (~> 0.18)
92
- protocol-rack (0.2.4)
110
+ protocol-rack (0.4.1)
93
111
  protocol-http (~> 0.23)
94
112
  rack (>= 1.0)
95
- protocol-websocket (0.9.1)
113
+ protocol-websocket (0.12.1)
96
114
  protocol-http (~> 0.2)
97
- protocol-http1 (~> 0.2)
98
- racc (1.6.0)
99
- rack (3.0.1)
115
+ racc (1.7.3)
116
+ rack (3.0.8)
100
117
  rainbow (3.1.1)
101
- rake (13.0.6)
102
- regexp_parser (2.6.0)
118
+ rake (13.1.0)
119
+ rbs (2.8.4)
120
+ regexp_parser (2.8.3)
103
121
  retryable (3.0.5)
104
122
  reverse_markdown (2.1.1)
105
123
  nokogiri
106
- rexml (3.2.5)
124
+ rexml (3.2.6)
107
125
  rspec (3.12.0)
108
126
  rspec-core (~> 3.12.0)
109
127
  rspec-expectations (~> 3.12.0)
110
128
  rspec-mocks (~> 3.12.0)
111
- rspec-core (3.12.0)
129
+ rspec-core (3.12.2)
112
130
  rspec-support (~> 3.12.0)
113
- rspec-expectations (3.12.0)
131
+ rspec-expectations (3.12.3)
114
132
  diff-lcs (>= 1.2.0, < 2.0)
115
133
  rspec-support (~> 3.12.0)
116
134
  rspec-files (1.1.3)
117
135
  rspec (~> 3.0)
118
- rspec-memory (1.0.3)
136
+ rspec-memory (1.0.4)
119
137
  rspec (~> 3.0)
120
- rspec-mocks (3.12.0)
138
+ rspec-mocks (3.12.6)
121
139
  diff-lcs (>= 1.2.0, < 2.0)
122
140
  rspec-support (~> 3.12.0)
123
- rspec-support (3.12.0)
124
- rubocop (1.38.0)
141
+ rspec-support (3.12.1)
142
+ rubocop (1.59.0)
125
143
  json (~> 2.3)
144
+ language_server-protocol (>= 3.17.0)
126
145
  parallel (~> 1.10)
127
- parser (>= 3.1.2.1)
146
+ parser (>= 3.2.2.4)
128
147
  rainbow (>= 2.2.2, < 4.0)
129
148
  regexp_parser (>= 1.8, < 3.0)
130
149
  rexml (>= 3.2.5, < 4.0)
131
- rubocop-ast (>= 1.23.0, < 2.0)
150
+ rubocop-ast (>= 1.30.0, < 2.0)
132
151
  ruby-progressbar (~> 1.7)
133
- unicode-display_width (>= 1.4.0, < 3.0)
134
- rubocop-ast (1.23.0)
135
- parser (>= 3.1.1.0)
136
- rubocop-performance (1.15.0)
137
- rubocop (>= 1.7.0, < 2.0)
138
- rubocop-ast (>= 0.4.0)
139
- rubocop-rspec (2.15.0)
152
+ unicode-display_width (>= 2.4.0, < 3.0)
153
+ rubocop-ast (1.30.0)
154
+ parser (>= 3.2.1.0)
155
+ rubocop-capybara (2.19.0)
156
+ rubocop (~> 1.41)
157
+ rubocop-factory_bot (2.24.0)
140
158
  rubocop (~> 1.33)
141
- ruby-prof (1.4.3)
142
- ruby-progressbar (1.11.0)
143
- simplecov (0.21.2)
159
+ rubocop-performance (1.20.1)
160
+ rubocop (>= 1.48.1, < 2.0)
161
+ rubocop-ast (>= 1.30.0, < 2.0)
162
+ rubocop-rspec (2.25.0)
163
+ rubocop (~> 1.40)
164
+ rubocop-capybara (~> 2.17)
165
+ rubocop-factory_bot (~> 2.22)
166
+ ruby-prof (1.6.3)
167
+ ruby-progressbar (1.13.0)
168
+ ruby2_keywords (0.0.5)
169
+ simplecov (0.22.0)
144
170
  docile (~> 1.1)
145
171
  simplecov-html (~> 0.11)
146
172
  simplecov_json_formatter (~> 0.1)
147
173
  simplecov-html (0.12.3)
148
174
  simplecov_json_formatter (0.1.4)
149
- solargraph (0.47.2)
175
+ solargraph (0.50.0)
150
176
  backport (~> 1.2)
151
177
  benchmark
152
- bundler (>= 1.17.2)
178
+ bundler (~> 2.0)
153
179
  diff-lcs (~> 1.4)
154
180
  e2mmap
155
181
  jaro_winkler (~> 1.5)
156
182
  kramdown (~> 2.3)
157
183
  kramdown-parser-gfm (~> 1.1)
158
184
  parser (~> 3.0)
159
- reverse_markdown (>= 1.0.5, < 3)
160
- rubocop (>= 0.52)
185
+ rbs (~> 2.0)
186
+ reverse_markdown (~> 2.0)
187
+ rubocop (~> 1.38)
161
188
  thor (~> 1.0)
162
189
  tilt (~> 2.0)
163
190
  yard (~> 0.9, >= 0.9.24)
164
- thor (1.2.1)
165
- tilt (2.0.11)
191
+ thor (1.3.0)
192
+ tilt (2.3.0)
166
193
  timers (4.3.5)
167
- traces (0.8.0)
168
- tzinfo (2.0.5)
194
+ traces (0.11.1)
195
+ tzinfo (2.0.6)
169
196
  concurrent-ruby (~> 1.0)
170
- unicode-display_width (2.3.0)
171
- webrick (1.7.0)
172
- yard (0.9.28)
173
- webrick (~> 1.7.0)
174
- zeitwerk (2.6.6)
197
+ unicode-display_width (2.5.0)
198
+ yard (0.9.34)
199
+ zeitwerk (2.6.12)
175
200
 
176
201
  PLATFORMS
177
202
  ruby
@@ -197,4 +222,4 @@ DEPENDENCIES
197
222
  solargraph
198
223
 
199
224
  BUNDLED WITH
200
- 2.2.26
225
+ 2.2.33
data/README.md CHANGED
@@ -27,7 +27,7 @@ event loop.
27
27
 
28
28
  ## Dependencies
29
29
 
30
- Grumlin works with ruby >= 2.7, but it's recommended to use 3.1 due to [zlib warnings](https://github.com/socketry/async-websocket/issues/42).
30
+ Grumlin works with ruby >= 3.0, but it's recommended to use 3.1 due to [zlib warnings](https://github.com/socketry/async-websocket/issues/42).
31
31
 
32
32
  ## Install
33
33
 
data/Rakefile CHANGED
@@ -15,7 +15,7 @@ namespace :definitions do
15
15
  desc "Format definitions.yml"
16
16
  task :format do
17
17
  path = File.join(__dir__, "lib", "definitions.yml")
18
- definitions = YAML.safe_load(File.read(path))
18
+ definitions = YAML.safe_load_file(path)
19
19
 
20
20
  definitions.each_value do |kind|
21
21
  kind.each do |name, list|
data/grumlin.gemspec CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
16
16
 
17
17
  spec.homepage = "https://github.com/babbel/grumlin"
18
18
  spec.license = "MIT"
19
- spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
19
+ spec.required_ruby_version = Gem::Requirement.new(">= 3.0")
20
20
 
21
21
  spec.metadata["homepage_uri"] = spec.homepage
22
22
  spec.metadata["source_code_uri"] = "https://github.com/babbel/grumlin"
@@ -28,10 +28,10 @@ Gem::Specification.new do |spec|
28
28
  end
29
29
  spec.require_paths = ["lib"]
30
30
 
31
- spec.add_dependency "async-pool", "~> 0.3.0"
32
- spec.add_dependency "async-websocket", "~> 0.22.0"
31
+ spec.add_dependency "async-pool", "~> 0.4.0"
32
+ spec.add_dependency "async-websocket", "~> 0.26.0"
33
33
  spec.add_dependency "ibsciss-middleware", "~> 0.4.0"
34
- spec.add_dependency "oj", "~> 3.13.0"
34
+ spec.add_dependency "oj", "~> 3.16.0"
35
35
  spec.add_dependency "retryable", "~> 3.0.0"
36
36
  spec.add_dependency "zeitwerk", "~> 2.6.0"
37
37
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Grumlin::Middlewares::Builder < ::Middleware::Builder
3
+ class Grumlin::Middlewares::Builder < Middleware::Builder
4
4
  def similar?(other)
5
5
  stack == other.stack
6
6
  end
@@ -58,7 +58,7 @@ module Grumlin::Repository::InstanceMethods # rubocop:disable Metrics/ModuleLeng
58
58
 
59
59
  def add_vertex(label, id = nil, start: g, **properties)
60
60
  id ||= properties[T.id]
61
- properties = except(properties, T.id)
61
+ properties = properties.except(T.id)
62
62
 
63
63
  t = start.addV(label)
64
64
  t = t.props(T.id => id) unless id.nil?
@@ -67,7 +67,7 @@ module Grumlin::Repository::InstanceMethods # rubocop:disable Metrics/ModuleLeng
67
67
 
68
68
  def add_edge(label, id = nil, from:, to:, start: g, **properties)
69
69
  id ||= properties[T.id]
70
- properties = except(properties, T.label)
70
+ properties = properties.except(T.label)
71
71
  properties[T.id] = id
72
72
 
73
73
  start.addE(label).from(__.V(from)).to(__.V(to)).props(**properties).next
@@ -132,24 +132,14 @@ module Grumlin::Repository::InstanceMethods # rubocop:disable Metrics/ModuleLeng
132
132
  end
133
133
 
134
134
  def with_upsert_retry(retry_params, &block)
135
- retry_params = UPSERT_RETRY_PARAMS.merge((retry_params))
135
+ retry_params = UPSERT_RETRY_PARAMS.merge(retry_params)
136
136
  Retryable.retryable(**retry_params, &block)
137
137
  end
138
138
 
139
- # A polyfill for Hash#except for ruby 2.x environments without ActiveSupport
140
- # TODO: delete and use native Hash#except after ruby 2.7 is deprecated.
141
- def except(hash, *keys)
142
- return hash.except(*keys) if hash.respond_to?(:except)
143
-
144
- hash.each_with_object({}) do |(k, v), res|
145
- res[k] = v unless keys.include?(k)
146
- end
147
- end
148
-
149
139
  def cleanup_properties(create_properties, update_properties, *props_to_cleanup)
150
140
  props_to_cleanup = [T.id, T.label] if props_to_cleanup.empty?
151
141
  [create_properties, update_properties].map do |props|
152
- except(props, props_to_cleanup)
142
+ props.except(props_to_cleanup)
153
143
  end
154
144
  end
155
145
  end
@@ -81,7 +81,7 @@ module Grumlin::Repository
81
81
 
82
82
  def default_edge_properties(&block)
83
83
  shortcut :addE, override: true do |*args|
84
- super(*args).props(**block.call(*args)) # rubocop:disable Performance/RedundantBlockCall
84
+ super(*args).props(**block.call(*args)) # rubocop:disable Performance/RedundantBlockCall
85
85
  end
86
86
  end
87
87
 
@@ -61,7 +61,7 @@ class Grumlin::RequestDispatcher
61
61
  end
62
62
 
63
63
  def clear
64
- @requests.each do |_id, request|
64
+ @requests.each_value do |request|
65
65
  request[:channel].close!
66
66
  end
67
67
  @requests.clear
@@ -54,7 +54,8 @@ class Grumlin::RequestErrorFactory
54
54
 
55
55
  def already_exists_error(status)
56
56
  return Grumlin::VertexAlreadyExistsError if status[:message]&.include?(VERTEX_ALREADY_EXISTS)
57
- return Grumlin::EdgeAlreadyExistsError if status[:message]&.include?(EDGE_ALREADY_EXISTS)
57
+
58
+ Grumlin::EdgeAlreadyExistsError if status[:message]&.include?(EDGE_ALREADY_EXISTS)
58
59
  end
59
60
 
60
61
  def concurrent_modification_error(status) # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
@@ -66,7 +67,8 @@ class Grumlin::RequestErrorFactory
66
67
  if status[:message]&.include?(CONCURRENT_EDGE_PROPERTY_INSERT_FAILED)
67
68
  return Grumlin::ConcurrentEdgePropertyInsertFailedError
68
69
  end
69
- return Grumlin::ConcurrentModificationError if status[:message]&.include?(CONCURRENCT_MODIFICATION_FAILED)
70
+
71
+ Grumlin::ConcurrentModificationError if status[:message]&.include?(CONCURRENCT_MODIFICATION_FAILED)
70
72
  end
71
73
  end
72
74
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Grumlin
4
- VERSION = "1.0.4"
4
+ VERSION = "1.2.0"
5
5
  end
data/lib/grumlin.rb CHANGED
@@ -181,7 +181,7 @@ module Grumlin
181
181
  end
182
182
 
183
183
  def definitions
184
- @definitions ||= YAML.safe_load(File.read(File.join(__dir__, "definitions.yml")), symbolize_names: true)
184
+ @definitions ||= YAML.safe_load_file(File.join(__dir__, "definitions.yml"), symbolize_names: true)
185
185
  end
186
186
 
187
187
  def fake_uuid(*parts, separator: "->")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grumlin
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gleb Sinyavskiy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-15 00:00:00.000000000 Z
11
+ date: 2024-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async-pool
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.3.0
19
+ version: 0.4.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.3.0
26
+ version: 0.4.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: async-websocket
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.22.0
33
+ version: 0.26.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.22.0
40
+ version: 0.26.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: ibsciss-middleware
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 3.13.0
61
+ version: 3.16.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 3.13.0
68
+ version: 3.16.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: retryable
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -213,7 +213,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
213
213
  requirements:
214
214
  - - ">="
215
215
  - !ruby/object:Gem::Version
216
- version: 2.7.0
216
+ version: '3.0'
217
217
  required_rubygems_version: !ruby/object:Gem::Requirement
218
218
  requirements:
219
219
  - - ">="