aws-sdk-ecrpublic 1.39.0 → 1.41.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: 3683730a356e59d4bbfd783498e3459ec9fce58aba5ed4853fa808e8227cd991
4
- data.tar.gz: 3cfb07a1cb72287b0477bfb7c0c77a315396bd558dc968606abc51316e39d4af
3
+ metadata.gz: 2c087a6ad19be7133b6249a77384ece229d95ad1d502e1a68ae9283d80ca394e
4
+ data.tar.gz: 1842725553b480f3c8fdf6d1da357eebab25f6f4c149771bc7d522ff13a32cfb
5
5
  SHA512:
6
- metadata.gz: d965fb9f38a2cc3fe0038d5d522c227cf8a6e879b7af25a20ab1fcd0f26469b536223b8874261b046da5c59cf68c47cf091913921efe223a6f5501c0c3dbac4d
7
- data.tar.gz: dc9f210b13f9738a89a420db50f25495cf7433567dbc8ab8435b17e96ee27bb5669f29a353e6f4cfe4e6b6bf1c875ef4038190e7f7a1f2594a2a6052ea5cce5c
6
+ metadata.gz: 7109b289427758ba5b273dc328c021d1e9aa8a180c67d57ef0a9ee24bfbd4d262c349519241039817124c291dd2a1bfd0cf71ec0b54667af472d3c8943ec5856
7
+ data.tar.gz: bcab7f7010ea813c983a123f66c996b86e1103b384cebd432de40b12e379e333f82a836c2a1c92f7466b2abad969e4fecfcd41803537defdc3663fda1b5d04b4
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.41.0 (2024-12-23)
5
+ ------------------
6
+
7
+ * Feature - Add support for Dualstack endpoints
8
+
9
+ 1.40.0 (2024-10-18)
10
+ ------------------
11
+
12
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
13
+
4
14
  1.39.0 (2024-09-24)
5
15
  ------------------
6
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.39.0
1
+ 1.41.0
@@ -1667,7 +1667,7 @@ module Aws::ECRPublic
1667
1667
  tracer: tracer
1668
1668
  )
1669
1669
  context[:gem_name] = 'aws-sdk-ecrpublic'
1670
- context[:gem_version] = '1.39.0'
1670
+ context[:gem_version] = '1.41.0'
1671
1671
  Seahorse::Client::Request.new(handlers, context)
1672
1672
  end
1673
1673
 
@@ -15,26 +15,20 @@ module Aws::ECRPublic
15
15
  #
16
16
  # @return [String]
17
17
  #
18
- # @!attribute use_dual_stack
19
- # When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
20
- #
21
- # @return [Boolean]
22
- #
23
18
  # @!attribute use_fips
24
19
  # When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
25
20
  #
26
21
  # @return [Boolean]
27
22
  #
28
- # @!attribute endpoint
29
- # Override the endpoint used to send this request
23
+ # @!attribute use_dual_stack
24
+ # When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
30
25
  #
31
- # @return [String]
26
+ # @return [Boolean]
32
27
  #
33
28
  EndpointParameters = Struct.new(
34
29
  :region,
35
- :use_dual_stack,
36
30
  :use_fips,
37
- :endpoint,
31
+ :use_dual_stack,
38
32
  ) do
39
33
  include Aws::Structure
40
34
 
@@ -42,25 +36,25 @@ module Aws::ECRPublic
42
36
  class << self
43
37
  PARAM_MAP = {
44
38
  'Region' => :region,
45
- 'UseDualStack' => :use_dual_stack,
46
39
  'UseFIPS' => :use_fips,
47
- 'Endpoint' => :endpoint,
40
+ 'UseDualStack' => :use_dual_stack,
48
41
  }.freeze
49
42
  end
50
43
 
51
44
  def initialize(options = {})
52
45
  self[:region] = options[:region]
53
- self[:use_dual_stack] = options[:use_dual_stack]
54
- self[:use_dual_stack] = false if self[:use_dual_stack].nil?
55
- if self[:use_dual_stack].nil?
56
- raise ArgumentError, "Missing required EndpointParameter: :use_dual_stack"
57
- end
58
46
  self[:use_fips] = options[:use_fips]
59
47
  self[:use_fips] = false if self[:use_fips].nil?
60
- if self[:use_fips].nil?
61
- raise ArgumentError, "Missing required EndpointParameter: :use_fips"
62
- end
63
- self[:endpoint] = options[:endpoint]
48
+ self[:use_dual_stack] = options[:use_dual_stack]
49
+ self[:use_dual_stack] = false if self[:use_dual_stack].nil?
50
+ end
51
+
52
+ def self.create(config, options={})
53
+ new({
54
+ region: config.region,
55
+ use_fips: config.use_fips_endpoint,
56
+ use_dual_stack: config.use_dualstack_endpoint,
57
+ }.merge(options))
64
58
  end
65
59
  end
66
60
  end
@@ -11,42 +11,20 @@ module Aws::ECRPublic
11
11
  class EndpointProvider
12
12
  def resolve_endpoint(parameters)
13
13
  region = parameters.region
14
- use_dual_stack = parameters.use_dual_stack
15
14
  use_fips = parameters.use_fips
16
- endpoint = parameters.endpoint
17
- if Aws::Endpoints::Matchers.set?(endpoint)
15
+ use_dual_stack = parameters.use_dual_stack
16
+ if Aws::Endpoints::Matchers.set?(region) && (partition_result = Aws::Endpoints::Matchers.aws_partition(region))
18
17
  if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
19
- raise ArgumentError, "Invalid Configuration: FIPS and custom endpoint are not supported"
18
+ raise ArgumentError, "ECR Public does not support FIPS"
20
19
  end
21
20
  if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
22
- raise ArgumentError, "Invalid Configuration: Dualstack and custom endpoint are not supported"
23
- end
24
- return Aws::Endpoints::Endpoint.new(url: endpoint, headers: {}, properties: {})
25
- end
26
- if Aws::Endpoints::Matchers.set?(region)
27
- if (partition_result = Aws::Endpoints::Matchers.aws_partition(region))
28
- if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) && Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
29
- if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) && Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
30
- return Aws::Endpoints::Endpoint.new(url: "https://api.ecr-public-fips.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
31
- end
32
- raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both"
33
- end
34
- if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
35
- if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"))
36
- return Aws::Endpoints::Endpoint.new(url: "https://api.ecr-public-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
37
- end
38
- raise ArgumentError, "FIPS is enabled but this partition does not support FIPS"
39
- end
40
- if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
41
- if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
42
- return Aws::Endpoints::Endpoint.new(url: "https://api.ecr-public.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
43
- end
44
- raise ArgumentError, "DualStack is enabled but this partition does not support DualStack"
21
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
22
+ return Aws::Endpoints::Endpoint.new(url: "https://ecr-public.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
45
23
  end
46
- return Aws::Endpoints::Endpoint.new(url: "https://api.ecr-public.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
24
+ raise ArgumentError, "Dualstack is enabled but this partition does not support dualstack"
47
25
  end
26
+ return Aws::Endpoints::Endpoint.new(url: "https://api.ecr-public.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
48
27
  end
49
- raise ArgumentError, "Invalid Configuration: Missing Region"
50
28
  raise ArgumentError, 'No endpoint could be resolved'
51
29
 
52
30
  end
@@ -12,258 +12,9 @@ module Aws::ECRPublic
12
12
  # @api private
13
13
  module Endpoints
14
14
 
15
- class BatchCheckLayerAvailability
16
- def self.build(context)
17
- Aws::ECRPublic::EndpointParameters.new(
18
- region: context.config.region,
19
- use_dual_stack: context.config.use_dualstack_endpoint,
20
- use_fips: context.config.use_fips_endpoint,
21
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
22
- )
23
- end
24
- end
25
-
26
- class BatchDeleteImage
27
- def self.build(context)
28
- Aws::ECRPublic::EndpointParameters.new(
29
- region: context.config.region,
30
- use_dual_stack: context.config.use_dualstack_endpoint,
31
- use_fips: context.config.use_fips_endpoint,
32
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
33
- )
34
- end
35
- end
36
-
37
- class CompleteLayerUpload
38
- def self.build(context)
39
- Aws::ECRPublic::EndpointParameters.new(
40
- region: context.config.region,
41
- use_dual_stack: context.config.use_dualstack_endpoint,
42
- use_fips: context.config.use_fips_endpoint,
43
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
44
- )
45
- end
46
- end
47
-
48
- class CreateRepository
49
- def self.build(context)
50
- Aws::ECRPublic::EndpointParameters.new(
51
- region: context.config.region,
52
- use_dual_stack: context.config.use_dualstack_endpoint,
53
- use_fips: context.config.use_fips_endpoint,
54
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
55
- )
56
- end
57
- end
58
-
59
- class DeleteRepository
60
- def self.build(context)
61
- Aws::ECRPublic::EndpointParameters.new(
62
- region: context.config.region,
63
- use_dual_stack: context.config.use_dualstack_endpoint,
64
- use_fips: context.config.use_fips_endpoint,
65
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
66
- )
67
- end
68
- end
69
-
70
- class DeleteRepositoryPolicy
71
- def self.build(context)
72
- Aws::ECRPublic::EndpointParameters.new(
73
- region: context.config.region,
74
- use_dual_stack: context.config.use_dualstack_endpoint,
75
- use_fips: context.config.use_fips_endpoint,
76
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
77
- )
78
- end
79
- end
80
-
81
- class DescribeImageTags
82
- def self.build(context)
83
- Aws::ECRPublic::EndpointParameters.new(
84
- region: context.config.region,
85
- use_dual_stack: context.config.use_dualstack_endpoint,
86
- use_fips: context.config.use_fips_endpoint,
87
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
88
- )
89
- end
90
- end
91
-
92
- class DescribeImages
93
- def self.build(context)
94
- Aws::ECRPublic::EndpointParameters.new(
95
- region: context.config.region,
96
- use_dual_stack: context.config.use_dualstack_endpoint,
97
- use_fips: context.config.use_fips_endpoint,
98
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
99
- )
100
- end
101
- end
102
-
103
- class DescribeRegistries
104
- def self.build(context)
105
- Aws::ECRPublic::EndpointParameters.new(
106
- region: context.config.region,
107
- use_dual_stack: context.config.use_dualstack_endpoint,
108
- use_fips: context.config.use_fips_endpoint,
109
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
110
- )
111
- end
112
- end
113
-
114
- class DescribeRepositories
115
- def self.build(context)
116
- Aws::ECRPublic::EndpointParameters.new(
117
- region: context.config.region,
118
- use_dual_stack: context.config.use_dualstack_endpoint,
119
- use_fips: context.config.use_fips_endpoint,
120
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
121
- )
122
- end
123
- end
124
-
125
- class GetAuthorizationToken
126
- def self.build(context)
127
- Aws::ECRPublic::EndpointParameters.new(
128
- region: context.config.region,
129
- use_dual_stack: context.config.use_dualstack_endpoint,
130
- use_fips: context.config.use_fips_endpoint,
131
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
132
- )
133
- end
134
- end
135
-
136
- class GetRegistryCatalogData
137
- def self.build(context)
138
- Aws::ECRPublic::EndpointParameters.new(
139
- region: context.config.region,
140
- use_dual_stack: context.config.use_dualstack_endpoint,
141
- use_fips: context.config.use_fips_endpoint,
142
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
143
- )
144
- end
145
- end
146
-
147
- class GetRepositoryCatalogData
148
- def self.build(context)
149
- Aws::ECRPublic::EndpointParameters.new(
150
- region: context.config.region,
151
- use_dual_stack: context.config.use_dualstack_endpoint,
152
- use_fips: context.config.use_fips_endpoint,
153
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
154
- )
155
- end
156
- end
157
-
158
- class GetRepositoryPolicy
159
- def self.build(context)
160
- Aws::ECRPublic::EndpointParameters.new(
161
- region: context.config.region,
162
- use_dual_stack: context.config.use_dualstack_endpoint,
163
- use_fips: context.config.use_fips_endpoint,
164
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
165
- )
166
- end
167
- end
168
-
169
- class InitiateLayerUpload
170
- def self.build(context)
171
- Aws::ECRPublic::EndpointParameters.new(
172
- region: context.config.region,
173
- use_dual_stack: context.config.use_dualstack_endpoint,
174
- use_fips: context.config.use_fips_endpoint,
175
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
176
- )
177
- end
178
- end
179
-
180
- class ListTagsForResource
181
- def self.build(context)
182
- Aws::ECRPublic::EndpointParameters.new(
183
- region: context.config.region,
184
- use_dual_stack: context.config.use_dualstack_endpoint,
185
- use_fips: context.config.use_fips_endpoint,
186
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
187
- )
188
- end
189
- end
190
-
191
- class PutImage
192
- def self.build(context)
193
- Aws::ECRPublic::EndpointParameters.new(
194
- region: context.config.region,
195
- use_dual_stack: context.config.use_dualstack_endpoint,
196
- use_fips: context.config.use_fips_endpoint,
197
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
198
- )
199
- end
200
- end
201
15
 
202
- class PutRegistryCatalogData
203
- def self.build(context)
204
- Aws::ECRPublic::EndpointParameters.new(
205
- region: context.config.region,
206
- use_dual_stack: context.config.use_dualstack_endpoint,
207
- use_fips: context.config.use_fips_endpoint,
208
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
209
- )
210
- end
16
+ def self.parameters_for_operation(context)
17
+ Aws::ECRPublic::EndpointParameters.create(context.config)
211
18
  end
212
-
213
- class PutRepositoryCatalogData
214
- def self.build(context)
215
- Aws::ECRPublic::EndpointParameters.new(
216
- region: context.config.region,
217
- use_dual_stack: context.config.use_dualstack_endpoint,
218
- use_fips: context.config.use_fips_endpoint,
219
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
220
- )
221
- end
222
- end
223
-
224
- class SetRepositoryPolicy
225
- def self.build(context)
226
- Aws::ECRPublic::EndpointParameters.new(
227
- region: context.config.region,
228
- use_dual_stack: context.config.use_dualstack_endpoint,
229
- use_fips: context.config.use_fips_endpoint,
230
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
231
- )
232
- end
233
- end
234
-
235
- class TagResource
236
- def self.build(context)
237
- Aws::ECRPublic::EndpointParameters.new(
238
- region: context.config.region,
239
- use_dual_stack: context.config.use_dualstack_endpoint,
240
- use_fips: context.config.use_fips_endpoint,
241
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
242
- )
243
- end
244
- end
245
-
246
- class UntagResource
247
- def self.build(context)
248
- Aws::ECRPublic::EndpointParameters.new(
249
- region: context.config.region,
250
- use_dual_stack: context.config.use_dualstack_endpoint,
251
- use_fips: context.config.use_fips_endpoint,
252
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
253
- )
254
- end
255
- end
256
-
257
- class UploadLayerPart
258
- def self.build(context)
259
- Aws::ECRPublic::EndpointParameters.new(
260
- region: context.config.region,
261
- use_dual_stack: context.config.use_dualstack_endpoint,
262
- use_fips: context.config.use_fips_endpoint,
263
- endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
264
- )
265
- end
266
- end
267
-
268
19
  end
269
20
  end
@@ -27,7 +27,7 @@ The endpoint provider used to resolve endpoints. Any object that responds to
27
27
  class Handler < Seahorse::Client::Handler
28
28
  def call(context)
29
29
  unless context[:discovered_endpoint]
30
- params = parameters_for_operation(context)
30
+ params = Aws::ECRPublic::Endpoints.parameters_for_operation(context)
31
31
  endpoint = context.config.endpoint_provider.resolve_endpoint(params)
32
32
 
33
33
  context.http_request.endpoint = endpoint.url
@@ -67,57 +67,6 @@ The endpoint provider used to resolve endpoints. Any object that responds to
67
67
  context.http_request.headers[key] = value
68
68
  end
69
69
  end
70
-
71
- def parameters_for_operation(context)
72
- case context.operation_name
73
- when :batch_check_layer_availability
74
- Aws::ECRPublic::Endpoints::BatchCheckLayerAvailability.build(context)
75
- when :batch_delete_image
76
- Aws::ECRPublic::Endpoints::BatchDeleteImage.build(context)
77
- when :complete_layer_upload
78
- Aws::ECRPublic::Endpoints::CompleteLayerUpload.build(context)
79
- when :create_repository
80
- Aws::ECRPublic::Endpoints::CreateRepository.build(context)
81
- when :delete_repository
82
- Aws::ECRPublic::Endpoints::DeleteRepository.build(context)
83
- when :delete_repository_policy
84
- Aws::ECRPublic::Endpoints::DeleteRepositoryPolicy.build(context)
85
- when :describe_image_tags
86
- Aws::ECRPublic::Endpoints::DescribeImageTags.build(context)
87
- when :describe_images
88
- Aws::ECRPublic::Endpoints::DescribeImages.build(context)
89
- when :describe_registries
90
- Aws::ECRPublic::Endpoints::DescribeRegistries.build(context)
91
- when :describe_repositories
92
- Aws::ECRPublic::Endpoints::DescribeRepositories.build(context)
93
- when :get_authorization_token
94
- Aws::ECRPublic::Endpoints::GetAuthorizationToken.build(context)
95
- when :get_registry_catalog_data
96
- Aws::ECRPublic::Endpoints::GetRegistryCatalogData.build(context)
97
- when :get_repository_catalog_data
98
- Aws::ECRPublic::Endpoints::GetRepositoryCatalogData.build(context)
99
- when :get_repository_policy
100
- Aws::ECRPublic::Endpoints::GetRepositoryPolicy.build(context)
101
- when :initiate_layer_upload
102
- Aws::ECRPublic::Endpoints::InitiateLayerUpload.build(context)
103
- when :list_tags_for_resource
104
- Aws::ECRPublic::Endpoints::ListTagsForResource.build(context)
105
- when :put_image
106
- Aws::ECRPublic::Endpoints::PutImage.build(context)
107
- when :put_registry_catalog_data
108
- Aws::ECRPublic::Endpoints::PutRegistryCatalogData.build(context)
109
- when :put_repository_catalog_data
110
- Aws::ECRPublic::Endpoints::PutRepositoryCatalogData.build(context)
111
- when :set_repository_policy
112
- Aws::ECRPublic::Endpoints::SetRepositoryPolicy.build(context)
113
- when :tag_resource
114
- Aws::ECRPublic::Endpoints::TagResource.build(context)
115
- when :untag_resource
116
- Aws::ECRPublic::Endpoints::UntagResource.build(context)
117
- when :upload_layer_part
118
- Aws::ECRPublic::Endpoints::UploadLayerPart.build(context)
119
- end
120
- end
121
70
  end
122
71
 
123
72
  def add_handlers(handlers, _config)
@@ -54,7 +54,7 @@ module Aws::ECRPublic
54
54
  autoload :EndpointProvider, 'aws-sdk-ecrpublic/endpoint_provider'
55
55
  autoload :Endpoints, 'aws-sdk-ecrpublic/endpoints'
56
56
 
57
- GEM_VERSION = '1.39.0'
57
+ GEM_VERSION = '1.41.0'
58
58
 
59
59
  end
60
60
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-ecrpublic
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.39.0
4
+ version: 1.41.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-24 00:00:00.000000000 Z
11
+ date: 2024-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '3'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 3.207.0
22
+ version: 3.210.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '3'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 3.207.0
32
+ version: 3.210.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: aws-sigv4
35
35
  requirement: !ruby/object:Gem::Requirement