google-protobuf 3.11.3 → 3.19.3

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.

Potentially problematic release.


This version of google-protobuf might be problematic. Click here for more details.

data/tests/basic.rb CHANGED
@@ -31,12 +31,52 @@ module BasicTest
31
31
  end
32
32
  include CommonTests
33
33
 
34
+ def test_issue_8311_crash
35
+ Google::Protobuf::DescriptorPool.generated_pool.build do
36
+ add_file("inner.proto", :syntax => :proto3) do
37
+ add_message "Inner" do
38
+ # Removing either of these fixes the segfault.
39
+ optional :foo, :string, 1
40
+ optional :bar, :string, 2
41
+ end
42
+ end
43
+ end
44
+
45
+ Google::Protobuf::DescriptorPool.generated_pool.build do
46
+ add_file("outer.proto", :syntax => :proto3) do
47
+ add_message "Outer" do
48
+ repeated :inners, :message, 1, "Inner"
49
+ end
50
+ end
51
+ end
52
+
53
+ outer = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("Outer").msgclass
54
+
55
+ outer.new(
56
+ inners: []
57
+ )['inners'].to_s
58
+
59
+ assert_raise Google::Protobuf::TypeError do
60
+ outer.new(
61
+ inners: [nil]
62
+ ).to_s
63
+ end
64
+ end
65
+
66
+ def test_issue_8559_crash
67
+ msg = TestMessage.new
68
+ msg.repeated_int32 = ::Google::Protobuf::RepeatedField.new(:int32, [1, 2, 3])
69
+ # TODO: Remove the platform check once https://github.com/jruby/jruby/issues/6818 is released in JRuby 9.3.0.0
70
+ GC.start(full_mark: true, immediate_sweep: true) unless RUBY_PLATFORM == "java"
71
+ TestMessage.encode(msg)
72
+ end
73
+
34
74
  def test_has_field
35
- m = TestMessage.new
36
- assert !m.has_optional_msg?
37
- m.optional_msg = TestMessage2.new
38
- assert m.has_optional_msg?
39
- assert TestMessage.descriptor.lookup('optional_msg').has?(m)
75
+ m = TestSingularFields.new
76
+ assert !m.has_singular_msg?
77
+ m.singular_msg = TestMessage2.new
78
+ assert m.has_singular_msg?
79
+ assert TestSingularFields.descriptor.lookup('singular_msg').has?(m)
40
80
 
41
81
  m = OneofMessage.new
42
82
  assert !m.has_my_oneof?
@@ -45,32 +85,31 @@ module BasicTest
45
85
  assert_raise NoMethodError do
46
86
  m.has_a?
47
87
  end
48
- assert_raise ArgumentError do
49
- OneofMessage.descriptor.lookup('a').has?(m)
50
- end
88
+ assert_true OneofMessage.descriptor.lookup('a').has?(m)
51
89
 
52
- m = TestMessage.new
90
+ m = TestSingularFields.new
53
91
  assert_raise NoMethodError do
54
- m.has_optional_int32?
92
+ m.has_singular_int32?
55
93
  end
56
94
  assert_raise ArgumentError do
57
- TestMessage.descriptor.lookup('optional_int32').has?(m)
95
+ TestSingularFields.descriptor.lookup('singular_int32').has?(m)
58
96
  end
59
97
 
60
98
  assert_raise NoMethodError do
61
- m.has_optional_string?
99
+ m.has_singular_string?
62
100
  end
63
101
  assert_raise ArgumentError do
64
- TestMessage.descriptor.lookup('optional_string').has?(m)
102
+ TestSingularFields.descriptor.lookup('singular_string').has?(m)
65
103
  end
66
104
 
67
105
  assert_raise NoMethodError do
68
- m.has_optional_bool?
106
+ m.has_singular_bool?
69
107
  end
70
108
  assert_raise ArgumentError do
71
- TestMessage.descriptor.lookup('optional_bool').has?(m)
109
+ TestSingularFields.descriptor.lookup('singular_bool').has?(m)
72
110
  end
73
111
 
112
+ m = TestMessage.new
74
113
  assert_raise NoMethodError do
75
114
  m.has_repeated_msg?
76
115
  end
@@ -79,40 +118,70 @@ module BasicTest
79
118
  end
80
119
  end
81
120
 
121
+ def test_no_presence
122
+ m = TestSingularFields.new
123
+
124
+ # Explicitly setting to zero does not cause anything to be serialized.
125
+ m.singular_int32 = 0
126
+ assert_equal "", TestSingularFields.encode(m)
127
+
128
+ # Explicitly setting to a non-zero value *does* cause serialization.
129
+ m.singular_int32 = 1
130
+ assert_not_equal "", TestSingularFields.encode(m)
131
+
132
+ m.singular_int32 = 0
133
+ assert_equal "", TestSingularFields.encode(m)
134
+ end
135
+
82
136
  def test_set_clear_defaults
137
+ m = TestSingularFields.new
138
+
139
+ m.singular_int32 = -42
140
+ assert_equal -42, m.singular_int32
141
+ m.clear_singular_int32
142
+ assert_equal 0, m.singular_int32
143
+
144
+ m.singular_int32 = 50
145
+ assert_equal 50, m.singular_int32
146
+ TestSingularFields.descriptor.lookup('singular_int32').clear(m)
147
+ assert_equal 0, m.singular_int32
148
+
149
+ m.singular_string = "foo bar"
150
+ assert_equal "foo bar", m.singular_string
151
+ m.clear_singular_string
152
+ assert_equal "", m.singular_string
153
+
154
+ m.singular_string = "foo"
155
+ assert_equal "foo", m.singular_string
156
+ TestSingularFields.descriptor.lookup('singular_string').clear(m)
157
+ assert_equal "", m.singular_string
158
+
159
+ m.singular_msg = TestMessage2.new(:foo => 42)
160
+ assert_equal TestMessage2.new(:foo => 42), m.singular_msg
161
+ assert m.has_singular_msg?
162
+ m.clear_singular_msg
163
+ assert_equal nil, m.singular_msg
164
+ assert !m.has_singular_msg?
165
+
166
+ m.singular_msg = TestMessage2.new(:foo => 42)
167
+ assert_equal TestMessage2.new(:foo => 42), m.singular_msg
168
+ TestSingularFields.descriptor.lookup('singular_msg').clear(m)
169
+ assert_equal nil, m.singular_msg
170
+ end
171
+
172
+ def test_import_proto2
83
173
  m = TestMessage.new
174
+ assert !m.has_optional_proto2_submessage?
175
+ m.optional_proto2_submessage = ::FooBar::Proto2::TestImportedMessage.new
176
+ assert m.has_optional_proto2_submessage?
177
+ assert TestMessage.descriptor.lookup('optional_proto2_submessage').has?(m)
84
178
 
85
- m.optional_int32 = -42
86
- assert_equal -42, m.optional_int32
87
- m.clear_optional_int32
88
- assert_equal 0, m.optional_int32
89
-
90
- m.optional_int32 = 50
91
- assert_equal 50, m.optional_int32
92
- TestMessage.descriptor.lookup('optional_int32').clear(m)
93
- assert_equal 0, m.optional_int32
94
-
95
- m.optional_string = "foo bar"
96
- assert_equal "foo bar", m.optional_string
97
- m.clear_optional_string
98
- assert_equal "", m.optional_string
99
-
100
- m.optional_string = "foo"
101
- assert_equal "foo", m.optional_string
102
- TestMessage.descriptor.lookup('optional_string').clear(m)
103
- assert_equal "", m.optional_string
104
-
105
- m.optional_msg = TestMessage2.new(:foo => 42)
106
- assert_equal TestMessage2.new(:foo => 42), m.optional_msg
107
- assert m.has_optional_msg?
108
- m.clear_optional_msg
109
- assert_equal nil, m.optional_msg
110
- assert !m.has_optional_msg?
111
-
112
- m.optional_msg = TestMessage2.new(:foo => 42)
113
- assert_equal TestMessage2.new(:foo => 42), m.optional_msg
114
- TestMessage.descriptor.lookup('optional_msg').clear(m)
115
- assert_equal nil, m.optional_msg
179
+ m.clear_optional_proto2_submessage
180
+ assert !m.has_optional_proto2_submessage?
181
+ end
182
+
183
+ def test_clear_repeated_fields
184
+ m = TestMessage.new
116
185
 
117
186
  m.repeated_int32.push(1)
118
187
  assert_equal [1], m.repeated_int32
@@ -128,6 +197,7 @@ module BasicTest
128
197
  m.a = "foo"
129
198
  assert_equal "foo", m.a
130
199
  assert m.has_my_oneof?
200
+ assert_equal :a, m.my_oneof
131
201
  m.clear_a
132
202
  assert !m.has_my_oneof?
133
203
 
@@ -143,7 +213,6 @@ module BasicTest
143
213
  assert !m.has_my_oneof?
144
214
  end
145
215
 
146
-
147
216
  def test_initialization_map_errors
148
217
  e = assert_raise ArgumentError do
149
218
  TestMessage.new(:hello => "world")
@@ -198,7 +267,7 @@ module BasicTest
198
267
  m.map_string_int32 = {}
199
268
  end
200
269
 
201
- assert_raise TypeError do
270
+ assert_raise Google::Protobuf::TypeError do
202
271
  m = MapMessage.new(:map_string_int32 => { 1 => "I am not a number" })
203
272
  end
204
273
  end
@@ -223,8 +292,12 @@ module BasicTest
223
292
  :map_string_msg => {"a" => TestMessage2.new(:foo => 1),
224
293
  "b" => TestMessage2.new(:foo => 2)},
225
294
  :map_string_enum => {"a" => :A, "b" => :B})
226
- expected = "<BasicTest::MapMessage: map_string_int32: {\"b\"=>2, \"a\"=>1}, map_string_msg: {\"b\"=><BasicTest::TestMessage2: foo: 2>, \"a\"=><BasicTest::TestMessage2: foo: 1>}, map_string_enum: {\"b\"=>:B, \"a\"=>:A}>"
227
- assert_equal expected, m.inspect
295
+
296
+ # JRuby doesn't keep consistent ordering so check for either version
297
+ expected_a = "<BasicTest::MapMessage: map_string_int32: {\"b\"=>2, \"a\"=>1}, map_string_msg: {\"b\"=><BasicTest::TestMessage2: foo: 2>, \"a\"=><BasicTest::TestMessage2: foo: 1>}, map_string_enum: {\"b\"=>:B, \"a\"=>:A}>"
298
+ expected_b = "<BasicTest::MapMessage: map_string_int32: {\"a\"=>1, \"b\"=>2}, map_string_msg: {\"a\"=><BasicTest::TestMessage2: foo: 1>, \"b\"=><BasicTest::TestMessage2: foo: 2>}, map_string_enum: {\"a\"=>:A, \"b\"=>:B}>"
299
+ inspect_result = m.inspect
300
+ assert expected_a == inspect_result || expected_b == inspect_result, "Incorrect inspect result: #{inspect_result}"
228
301
  end
229
302
 
230
303
  def test_map_corruption
@@ -276,6 +349,86 @@ module BasicTest
276
349
  assert_equal m5, m
277
350
  end
278
351
 
352
+ def test_map_wrappers_with_default_values
353
+ run_asserts = ->(m) {
354
+ assert_equal 0.0, m.map_double[0].value
355
+ assert_equal 0.0, m.map_float[0].value
356
+ assert_equal 0, m.map_int32[0].value
357
+ assert_equal 0, m.map_int64[0].value
358
+ assert_equal 0, m.map_uint32[0].value
359
+ assert_equal 0, m.map_uint64[0].value
360
+ assert_equal false, m.map_bool[0].value
361
+ assert_equal '', m.map_string[0].value
362
+ assert_equal '', m.map_bytes[0].value
363
+ }
364
+
365
+ m = proto_module::Wrapper.new(
366
+ map_double: {0 => Google::Protobuf::DoubleValue.new(value: 0.0)},
367
+ map_float: {0 => Google::Protobuf::FloatValue.new(value: 0.0)},
368
+ map_int32: {0 => Google::Protobuf::Int32Value.new(value: 0)},
369
+ map_int64: {0 => Google::Protobuf::Int64Value.new(value: 0)},
370
+ map_uint32: {0 => Google::Protobuf::UInt32Value.new(value: 0)},
371
+ map_uint64: {0 => Google::Protobuf::UInt64Value.new(value: 0)},
372
+ map_bool: {0 => Google::Protobuf::BoolValue.new(value: false)},
373
+ map_string: {0 => Google::Protobuf::StringValue.new(value: '')},
374
+ map_bytes: {0 => Google::Protobuf::BytesValue.new(value: '')},
375
+ )
376
+
377
+ run_asserts.call(m)
378
+ serialized = proto_module::Wrapper::encode(m)
379
+ m2 = proto_module::Wrapper::decode(serialized)
380
+ run_asserts.call(m2)
381
+
382
+ # Test the case where we are serializing directly from the parsed form
383
+ # (before anything lazy is materialized).
384
+ m3 = proto_module::Wrapper::decode(serialized)
385
+ serialized2 = proto_module::Wrapper::encode(m3)
386
+ m4 = proto_module::Wrapper::decode(serialized2)
387
+ run_asserts.call(m4)
388
+
389
+ # Test that the lazy form compares equal to the expanded form.
390
+ m5 = proto_module::Wrapper::decode(serialized2)
391
+ assert_equal m5, m
392
+ end
393
+
394
+ def test_map_wrappers_with_no_value
395
+ run_asserts = ->(m) {
396
+ assert_equal 0.0, m.map_double[0].value
397
+ assert_equal 0.0, m.map_float[0].value
398
+ assert_equal 0, m.map_int32[0].value
399
+ assert_equal 0, m.map_int64[0].value
400
+ assert_equal 0, m.map_uint32[0].value
401
+ assert_equal 0, m.map_uint64[0].value
402
+ assert_equal false, m.map_bool[0].value
403
+ assert_equal '', m.map_string[0].value
404
+ assert_equal '', m.map_bytes[0].value
405
+ }
406
+
407
+ m = proto_module::Wrapper.new(
408
+ map_double: {0 => Google::Protobuf::DoubleValue.new()},
409
+ map_float: {0 => Google::Protobuf::FloatValue.new()},
410
+ map_int32: {0 => Google::Protobuf::Int32Value.new()},
411
+ map_int64: {0 => Google::Protobuf::Int64Value.new()},
412
+ map_uint32: {0 => Google::Protobuf::UInt32Value.new()},
413
+ map_uint64: {0 => Google::Protobuf::UInt64Value.new()},
414
+ map_bool: {0 => Google::Protobuf::BoolValue.new()},
415
+ map_string: {0 => Google::Protobuf::StringValue.new()},
416
+ map_bytes: {0 => Google::Protobuf::BytesValue.new()},
417
+ )
418
+ run_asserts.call(m)
419
+
420
+ serialized = proto_module::Wrapper::encode(m)
421
+ m2 = proto_module::Wrapper::decode(serialized)
422
+ run_asserts.call(m2)
423
+
424
+ # Test the case where we are serializing directly from the parsed form
425
+ # (before anything lazy is materialized).
426
+ m3 = proto_module::Wrapper::decode(serialized)
427
+ serialized2 = proto_module::Wrapper::encode(m3)
428
+ m4 = proto_module::Wrapper::decode(serialized2)
429
+ run_asserts.call(m4)
430
+ end
431
+
279
432
  def test_concurrent_decoding
280
433
  o = Outer.new
281
434
  o.items[0] = Inner.new
@@ -345,6 +498,8 @@ module BasicTest
345
498
  :optional_int32=>0,
346
499
  :optional_int64=>0,
347
500
  :optional_msg=>nil,
501
+ :optional_msg2=>nil,
502
+ :optional_proto2_submessage=>nil,
348
503
  :optional_string=>"foo",
349
504
  :optional_uint32=>0,
350
505
  :optional_uint64=>0,
@@ -382,9 +537,9 @@ module BasicTest
382
537
  m = MapMessage.new(:map_string_int32 => {"a" => 1})
383
538
  expected = {mapStringInt32: {a: 1}, mapStringMsg: {}, mapStringEnum: {}}
384
539
  expected_preserve = {map_string_int32: {a: 1}, map_string_msg: {}, map_string_enum: {}}
385
- assert_equal JSON.parse(MapMessage.encode_json(m), :symbolize_names => true), expected
540
+ assert_equal JSON.parse(MapMessage.encode_json(m, :emit_defaults=>true), :symbolize_names => true), expected
386
541
 
387
- json = MapMessage.encode_json(m, :preserve_proto_fieldnames => true)
542
+ json = MapMessage.encode_json(m, :preserve_proto_fieldnames => true, :emit_defaults=>true)
388
543
  assert_equal JSON.parse(json, :symbolize_names => true), expected_preserve
389
544
 
390
545
  m2 = MapMessage.decode_json(MapMessage.encode_json(m))
@@ -394,7 +549,7 @@ module BasicTest
394
549
  def test_json_maps_emit_defaults_submsg
395
550
  # TODO: Fix JSON in JRuby version.
396
551
  return if RUBY_PLATFORM == "java"
397
- m = MapMessage.new(:map_string_msg => {"a" => TestMessage2.new})
552
+ m = MapMessage.new(:map_string_msg => {"a" => TestMessage2.new(foo: 0)})
398
553
  expected = {mapStringInt32: {}, mapStringMsg: {a: {foo: 0}}, mapStringEnum: {}}
399
554
 
400
555
  actual = MapMessage.encode_json(m, :emit_defaults => true)
@@ -402,6 +557,30 @@ module BasicTest
402
557
  assert_equal JSON.parse(actual, :symbolize_names => true), expected
403
558
  end
404
559
 
560
+ def test_json_emit_defaults_submsg
561
+ # TODO: Fix JSON in JRuby version.
562
+ return if RUBY_PLATFORM == "java"
563
+ m = TestSingularFields.new(singular_msg: proto_module::TestMessage2.new)
564
+
565
+ expected = {
566
+ singularInt32: 0,
567
+ singularInt64: "0",
568
+ singularUint32: 0,
569
+ singularUint64: "0",
570
+ singularBool: false,
571
+ singularFloat: 0,
572
+ singularDouble: 0,
573
+ singularString: "",
574
+ singularBytes: "",
575
+ singularMsg: {},
576
+ singularEnum: "Default",
577
+ }
578
+
579
+ actual = proto_module::TestMessage.encode_json(m, :emit_defaults => true)
580
+
581
+ assert_equal expected, JSON.parse(actual, :symbolize_names => true)
582
+ end
583
+
405
584
  def test_respond_to
406
585
  # This test fails with JRuby 1.7.23, likely because of an old JRuby bug.
407
586
  return if RUBY_PLATFORM == "java"
@@ -441,5 +620,21 @@ module BasicTest
441
620
  assert_raise(FrozenErrorType) { m.map_string_int32.delete('a') }
442
621
  assert_raise(FrozenErrorType) { m.map_string_int32.clear }
443
622
  end
623
+
624
+ def test_map_length
625
+ m = proto_module::MapMessage.new
626
+ assert_equal 0, m.map_string_int32.length
627
+ assert_equal 0, m.map_string_msg.length
628
+ assert_equal 0, m.map_string_int32.size
629
+ assert_equal 0, m.map_string_msg.size
630
+
631
+ m.map_string_int32['a'] = 1
632
+ m.map_string_int32['b'] = 2
633
+ m.map_string_msg['a'] = proto_module::TestMessage2.new
634
+ assert_equal 2, m.map_string_int32.length
635
+ assert_equal 1, m.map_string_msg.length
636
+ assert_equal 2, m.map_string_int32.size
637
+ assert_equal 1, m.map_string_msg.size
638
+ end
444
639
  end
445
640
  end
File without changes
data/tests/stress.rb CHANGED
@@ -30,7 +30,7 @@ module StressTest
30
30
  100_000.times do
31
31
  mnew = TestMessage.decode(data)
32
32
  mnew = mnew.dup
33
- assert_equal mnew.inspect, m.inspect
33
+ assert_equal m.inspect, mnew.inspect
34
34
  assert TestMessage.encode(mnew) == data
35
35
  end
36
36
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-protobuf
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.11.3
4
+ version: 3.19.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Protobuf Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-03 00:00:00.000000000 Z
11
+ date: 2022-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler-dock
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.6.0
19
+ version: 1.1.0
20
20
  type: :development
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.6.0
26
+ version: 1.1.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake-compiler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.9.5
33
+ version: 1.1.0
34
34
  type: :development
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.9.5
40
+ version: 1.1.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: test-unit
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,20 +58,6 @@ dependencies:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: 3.0.9
61
- - !ruby/object:Gem::Dependency
62
- name: rubygems-tasks
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: 0.2.4
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: 0.2.4
75
61
  description: Protocol Buffers are Google's data interchange format.
76
62
  email: protobuf@googlegroups.com
77
63
  executables: []
@@ -79,21 +65,27 @@ extensions:
79
65
  - ext/google/protobuf_c/extconf.rb
80
66
  extra_rdoc_files: []
81
67
  files:
68
+ - ext/google/protobuf_c/convert.c
69
+ - ext/google/protobuf_c/convert.h
82
70
  - ext/google/protobuf_c/defs.c
83
- - ext/google/protobuf_c/encode_decode.c
71
+ - ext/google/protobuf_c/defs.h
84
72
  - ext/google/protobuf_c/extconf.rb
85
73
  - ext/google/protobuf_c/map.c
74
+ - ext/google/protobuf_c/map.h
86
75
  - ext/google/protobuf_c/message.c
76
+ - ext/google/protobuf_c/message.h
87
77
  - ext/google/protobuf_c/protobuf.c
88
78
  - ext/google/protobuf_c/protobuf.h
89
79
  - ext/google/protobuf_c/repeated_field.c
90
- - ext/google/protobuf_c/storage.c
91
- - ext/google/protobuf_c/upb.c
92
- - ext/google/protobuf_c/upb.h
80
+ - ext/google/protobuf_c/repeated_field.h
81
+ - ext/google/protobuf_c/ruby-upb.c
82
+ - ext/google/protobuf_c/ruby-upb.h
93
83
  - ext/google/protobuf_c/wrap_memcpy.c
94
84
  - lib/google/protobuf.rb
95
85
  - lib/google/protobuf/any_pb.rb
96
86
  - lib/google/protobuf/api_pb.rb
87
+ - lib/google/protobuf/descriptor_dsl.rb
88
+ - lib/google/protobuf/descriptor_pb.rb
97
89
  - lib/google/protobuf/duration_pb.rb
98
90
  - lib/google/protobuf/empty_pb.rb
99
91
  - lib/google/protobuf/field_mask_pb.rb
@@ -112,7 +104,7 @@ homepage: https://developers.google.com/protocol-buffers
112
104
  licenses:
113
105
  - BSD-3-Clause
114
106
  metadata:
115
- source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v3.11.3/ruby
107
+ source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v3.19.3/ruby
116
108
  post_install_message:
117
109
  rdoc_options: []
118
110
  require_paths:
@@ -128,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
120
  - !ruby/object:Gem::Version
129
121
  version: '0'
130
122
  requirements: []
131
- rubygems_version: 3.1.2
123
+ rubygems_version: 3.3.4
132
124
  signing_key:
133
125
  specification_version: 4
134
126
  summary: Protocol Buffers