paquito 0.10.0 → 0.11.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: 0724a150e6626e863f78a24b665cd7cc8284ff612539ccbd3c58efc2117974f7
4
- data.tar.gz: a2e2d693ed46a3fdb2c57f07fa0e60c11ce1a838eb262bcf19c0c95744b6ad4a
3
+ metadata.gz: caa49c77308b2c81f81faa1308ab462dd0bcc15f91244ab080800ffe0e2ebd9f
4
+ data.tar.gz: 8909a37d22acd65c197c2c38dbc2e8f2e8e717d61f848996058e1c764cdadba7
5
5
  SHA512:
6
- metadata.gz: 95b0aa7760f86aa056ff07d909dd3b4c03a2f4016b00dbdc7ceb0e31e5619c7aea822b20946ee8ded630111670211b95ff47e1a799944946bc4d9e7df18563bb
7
- data.tar.gz: 4fa26995582cde6675e79c81382ef72fe981d2d335daabb33a44e280c76f69df5fd95171bd2dff4c5070296ab95151393470685f6d43ea3afe7571ae51272a8d
6
+ metadata.gz: 25f2d1f9e05ddf14b7edbb798acd253e0590089a6d70296c493d8f8cbb63a2abdbe2b4fcfee7e72d201226b1a729b31c8b3cd1cf240d000abd3db21a4e0ff2d4
7
+ data.tar.gz: 034dea4d9c9e276af49d5aa892e2231eeda24d275a32f846da246334fec167a8a3568972908ac75d8c413f794edfb418253732e903d5e7073e0625a9cff8019d
@@ -23,7 +23,7 @@ jobs:
23
23
  strategy:
24
24
  fail-fast: false
25
25
  matrix:
26
- ruby: [ ruby-head, '3.1', '3.0', '2.7' ]
26
+ ruby: [ ruby-head, '3.2', '3.1', '3.0', '2.7' ]
27
27
  steps:
28
28
  - name: Checkout
29
29
  uses: actions/checkout@v3
@@ -0,0 +1,22 @@
1
+ name: Contributor License Agreement (CLA)
2
+
3
+ on:
4
+ pull_request_target:
5
+ types: [opened, synchronize]
6
+ issue_comment:
7
+ types: [created]
8
+
9
+ jobs:
10
+ cla:
11
+ runs-on: ubuntu-latest
12
+ if: |
13
+ (github.event.issue.pull_request
14
+ && !github.event.issue.pull_request.merged_at
15
+ && contains(github.event.comment.body, 'signed')
16
+ )
17
+ || (github.event.pull_request && !github.event.pull_request.merged)
18
+ steps:
19
+ - uses: Shopify/shopify-cla-action@v1
20
+ with:
21
+ github-token: ${{ secrets.GITHUB_TOKEN }}
22
+ cla-token: ${{ secrets.CLA_TOKEN }}
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Unreleased
2
2
 
3
+ # 0.11.0
4
+
5
+ * Convert some lambdas into proper methods to make them more discoverable by profilers.
6
+ * Optimize `Time` and `ActiveSupport::TimeWithZone` serializers when `active_support/core_ext/time/calculations` is loaded.
7
+
3
8
  # 0.10.0
4
9
 
5
10
  * Introduce a new version `1` format that better handles `Time` and `DateTime` objects. It can be enabled by setting `Paquito.format_version = 1`.
data/Gemfile CHANGED
@@ -6,8 +6,8 @@ source "https://rubygems.org"
6
6
  gemspec
7
7
 
8
8
  gem "rake", "~> 13.0"
9
- gem "activesupport"
10
- gem "activerecord"
9
+ gem "activesupport", ">= 7"
10
+ gem "activerecord", ">= 7"
11
11
  gem "sqlite3"
12
12
  gem "benchmark-ips"
13
13
 
data/Gemfile.lock CHANGED
@@ -1,71 +1,67 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- paquito (0.10.0)
4
+ paquito (0.11.0)
5
5
  msgpack (>= 1.5.2)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activemodel (7.0.4)
11
- activesupport (= 7.0.4)
12
- activerecord (7.0.4)
13
- activemodel (= 7.0.4)
14
- activesupport (= 7.0.4)
15
- activesupport (7.0.4)
10
+ activemodel (7.0.7.1)
11
+ activesupport (= 7.0.7.1)
12
+ activerecord (7.0.7.1)
13
+ activemodel (= 7.0.7.1)
14
+ activesupport (= 7.0.7.1)
15
+ activesupport (7.0.7.1)
16
16
  concurrent-ruby (~> 1.0, >= 1.0.2)
17
17
  i18n (>= 1.6, < 2)
18
18
  minitest (>= 5.1)
19
19
  tzinfo (~> 2.0)
20
20
  ast (2.4.2)
21
- benchmark-ips (2.10.0)
21
+ benchmark-ips (2.12.0)
22
22
  byebug (11.1.3)
23
- concurrent-ruby (1.1.10)
24
- i18n (1.12.0)
23
+ concurrent-ruby (1.2.2)
24
+ i18n (1.14.1)
25
25
  concurrent-ruby (~> 1.0)
26
26
  json (2.6.3)
27
- mini_portile2 (2.8.0)
28
- minitest (5.16.3)
29
- msgpack (1.6.0)
27
+ minitest (5.18.0)
28
+ msgpack (1.7.2)
30
29
  parallel (1.22.1)
31
- parser (3.1.3.0)
30
+ parser (3.2.1.1)
32
31
  ast (~> 2.4.1)
33
32
  rainbow (3.1.1)
34
33
  rake (13.0.6)
35
- regexp_parser (2.6.1)
34
+ regexp_parser (2.7.0)
36
35
  rexml (3.2.5)
37
- rubocop (1.40.0)
36
+ rubocop (1.48.1)
38
37
  json (~> 2.3)
39
38
  parallel (~> 1.10)
40
- parser (>= 3.1.2.1)
39
+ parser (>= 3.2.0.0)
41
40
  rainbow (>= 2.2.2, < 4.0)
42
41
  regexp_parser (>= 1.8, < 3.0)
43
42
  rexml (>= 3.2.5, < 4.0)
44
- rubocop-ast (>= 1.23.0, < 2.0)
43
+ rubocop-ast (>= 1.26.0, < 2.0)
45
44
  ruby-progressbar (~> 1.7)
46
- unicode-display_width (>= 1.4.0, < 3.0)
47
- rubocop-ast (1.24.0)
48
- parser (>= 3.1.1.0)
49
- rubocop-shopify (2.10.1)
50
- rubocop (~> 1.35)
51
- ruby-progressbar (1.11.0)
52
- sorbet-runtime (0.5.10577)
53
- sqlite3 (1.5.4)
54
- mini_portile2 (~> 2.8.0)
55
- sqlite3 (1.5.4-x86_64-darwin)
56
- sqlite3 (1.5.4-x86_64-linux)
57
- tzinfo (2.0.5)
45
+ unicode-display_width (>= 2.4.0, < 3.0)
46
+ rubocop-ast (1.27.0)
47
+ parser (>= 3.2.1.0)
48
+ rubocop-shopify (2.12.0)
49
+ rubocop (~> 1.44)
50
+ ruby-progressbar (1.13.0)
51
+ sorbet-runtime (0.5.10712)
52
+ sqlite3 (1.6.1-arm64-darwin)
53
+ sqlite3 (1.6.1-x86_64-linux)
54
+ tzinfo (2.0.6)
58
55
  concurrent-ruby (~> 1.0)
59
- unicode-display_width (2.3.0)
56
+ unicode-display_width (2.4.2)
60
57
 
61
58
  PLATFORMS
62
- ruby
63
- x86_64-darwin-20
59
+ arm64-darwin
64
60
  x86_64-linux
65
61
 
66
62
  DEPENDENCIES
67
- activerecord
68
- activesupport
63
+ activerecord (>= 7)
64
+ activesupport (>= 7)
69
65
  benchmark-ips
70
66
  byebug
71
67
  minitest (~> 5.0)
@@ -77,4 +73,4 @@ DEPENDENCIES
77
73
  sqlite3
78
74
 
79
75
  BUNDLED WITH
80
- 2.3.8
76
+ 2.3.22
data/dev.yml CHANGED
@@ -2,7 +2,7 @@ name: paquito
2
2
 
3
3
  up:
4
4
  - ruby:
5
- version: 2.7.5
5
+ version: 2.7.8
6
6
  - bundler
7
7
 
8
8
  commands:
@@ -4,6 +4,7 @@ module Paquito
4
4
  class CoderChain
5
5
  def initialize(*coders)
6
6
  @coders = coders.flatten.map { |c| Paquito.cast(c) }
7
+ @reverse_coders = @coders.reverse
7
8
  end
8
9
 
9
10
  def dump(object)
@@ -14,7 +15,7 @@ module Paquito
14
15
 
15
16
  def load(payload)
16
17
  object = payload
17
- @coders.reverse_each { |c| object = c.load(object) }
18
+ @reverse_coders.each { |c| object = c.load(object) }
18
19
  object
19
20
  end
20
21
  end
@@ -3,8 +3,17 @@
3
3
  module Paquito
4
4
  class SafeYAML
5
5
  ALL_SYMBOLS = [].freeze # Restricting symbols isn't really useful since symbols are no longer immortal
6
- BASE_PERMITTED_CLASSNAMES = ["TrueClass", "FalseClass", "NilClass", "Numeric", "String", "Array", "Hash",
7
- "Integer", "Float",].freeze
6
+ BASE_PERMITTED_CLASSNAMES = [
7
+ "TrueClass",
8
+ "FalseClass",
9
+ "NilClass",
10
+ "Numeric",
11
+ "String",
12
+ "Array",
13
+ "Hash",
14
+ "Integer",
15
+ "Float",
16
+ ].freeze
8
17
 
9
18
  def initialize(permitted_classes: [], deprecated_classes: [], aliases: false)
10
19
  permitted_classes += BASE_PERMITTED_CLASSNAMES
data/lib/paquito/types.rb CHANGED
@@ -75,6 +75,181 @@ module Paquito
75
75
 
76
76
  # Do not change any #code, this would break current codecs.
77
77
  # New types can be added as long as they have unique #code.
78
+ class << self
79
+ def time_pack_deprecated(value)
80
+ rational = value.to_r
81
+ if rational.numerator > MAX_INT64 || rational.denominator > MAX_UINT32
82
+ raise PackError, "Time instance out of bounds (#{rational.inspect}), see: https://github.com/Shopify/paquito/issues/26"
83
+ end
84
+
85
+ [rational.numerator, rational.denominator].pack(TIME_FORMAT)
86
+ end
87
+
88
+ def time_unpack_deprecated(payload)
89
+ numerator, denominator = payload.unpack(TIME_FORMAT)
90
+ at = begin
91
+ Rational(numerator, denominator)
92
+ rescue ZeroDivisionError
93
+ raise UnpackError, "Corrupted Time object, see: https://github.com/Shopify/paquito/issues/26"
94
+ end
95
+ Time.at(at).utc
96
+ end
97
+
98
+ def datetime_pack_deprecated(value)
99
+ sec = value.sec + value.sec_fraction
100
+ offset = value.offset
101
+
102
+ if sec.numerator > MAX_INT64 || sec.denominator > MAX_UINT32
103
+ raise PackError, "DateTime#sec_fraction out of bounds (#{sec.inspect}), see: https://github.com/Shopify/paquito/issues/26"
104
+ end
105
+
106
+ if offset.numerator > MAX_INT64 || offset.denominator > MAX_UINT32
107
+ raise PackError, "DateTime#offset out of bounds (#{offset.inspect}), see: https://github.com/Shopify/paquito/issues/26"
108
+ end
109
+
110
+ [
111
+ value.year,
112
+ value.month,
113
+ value.day,
114
+ value.hour,
115
+ value.minute,
116
+ sec.numerator,
117
+ sec.denominator,
118
+ offset.numerator,
119
+ offset.denominator,
120
+ ].pack(DATE_TIME_FORMAT)
121
+ end
122
+
123
+ def datetime_unpack_deprecated(payload)
124
+ (
125
+ year,
126
+ month,
127
+ day,
128
+ hour,
129
+ minute,
130
+ sec_numerator,
131
+ sec_denominator,
132
+ offset_numerator,
133
+ offset_denominator,
134
+ ) = payload.unpack(DATE_TIME_FORMAT)
135
+
136
+ begin
137
+ ::DateTime.new(
138
+ year,
139
+ month,
140
+ day,
141
+ hour,
142
+ minute,
143
+ Rational(sec_numerator, sec_denominator),
144
+ Rational(offset_numerator, offset_denominator),
145
+ )
146
+ rescue ZeroDivisionError
147
+ raise UnpackError, "Corrupted DateTime object, see: https://github.com/Shopify/paquito/issues/26"
148
+ end
149
+ end
150
+
151
+ def date_pack(value)
152
+ [value.year, value.month, value.day].pack(DATE_FORMAT)
153
+ end
154
+
155
+ def date_unpack(payload)
156
+ year, month, day = payload.unpack(DATE_FORMAT)
157
+ ::Date.new(year, month, day)
158
+ end
159
+
160
+ def hash_with_indifferent_access_pack(value, packer)
161
+ unless value.instance_of?(ActiveSupport::HashWithIndifferentAccess)
162
+ raise PackError.new("cannot pack HashWithIndifferentClass subclass", value)
163
+ end
164
+
165
+ packer.write(value.to_h)
166
+ end
167
+
168
+ def hash_with_indifferent_access_unpack(unpacker)
169
+ ActiveSupport::HashWithIndifferentAccess.new(unpacker.read)
170
+ end
171
+
172
+ def time_with_zone_deprecated_pack(value)
173
+ [
174
+ value.utc.to_i,
175
+ (value.time.sec_fraction * 1_000_000_000).to_i,
176
+ value.time_zone.name,
177
+ ].pack(TIME_WITH_ZONE_FORMAT)
178
+ end
179
+
180
+ def time_with_zone_deprecated_unpack(payload)
181
+ sec, nsec, time_zone_name = payload.unpack(TIME_WITH_ZONE_FORMAT)
182
+ time = Time.at(sec, nsec, :nsec, in: 0).utc
183
+ time_zone = ::Time.find_zone(time_zone_name)
184
+ ActiveSupport::TimeWithZone.new(time, time_zone)
185
+ end
186
+
187
+ def time_pack(value, packer)
188
+ packer.write(value.tv_sec)
189
+ packer.write(value.tv_nsec)
190
+ packer.write(value.utc_offset)
191
+ end
192
+
193
+ if ::Time.respond_to?(:at_without_coercion) # Ref: https://github.com/rails/rails/pull/50268
194
+ def time_unpack(unpacker)
195
+ ::Time.at_without_coercion(unpacker.read, unpacker.read, :nanosecond, in: unpacker.read)
196
+ end
197
+ else
198
+ def time_unpack(unpacker)
199
+ ::Time.at(unpacker.read, unpacker.read, :nanosecond, in: unpacker.read)
200
+ end
201
+ end
202
+
203
+ def datetime_pack(value, packer)
204
+ packer.write(value.year)
205
+ packer.write(value.month)
206
+ packer.write(value.day)
207
+ packer.write(value.hour)
208
+ packer.write(value.minute)
209
+
210
+ sec = value.sec + value.sec_fraction
211
+ packer.write(sec.numerator)
212
+ packer.write(sec.denominator)
213
+
214
+ offset = value.offset
215
+ packer.write(offset.numerator)
216
+ packer.write(offset.denominator)
217
+ end
218
+
219
+ def datetime_unpack(unpacker)
220
+ ::DateTime.new(
221
+ unpacker.read, # year
222
+ unpacker.read, # month
223
+ unpacker.read, # day
224
+ unpacker.read, # hour
225
+ unpacker.read, # minute
226
+ Rational(unpacker.read, unpacker.read), # sec fraction
227
+ Rational(unpacker.read, unpacker.read), # offset fraction
228
+ )
229
+ end
230
+
231
+ def time_with_zone_pack(value, packer)
232
+ time = value.utc
233
+ packer.write(time.tv_sec)
234
+ packer.write(time.tv_nsec)
235
+ packer.write(value.time_zone.name)
236
+ end
237
+
238
+ if ::Time.respond_to?(:at_without_coercion) # Ref: https://github.com/rails/rails/pull/50268
239
+ def time_with_zone_unpack(unpacker)
240
+ utc = ::Time.at_without_coercion(unpacker.read, unpacker.read, :nanosecond, in: "UTC")
241
+ time_zone = ::Time.find_zone(unpacker.read)
242
+ ActiveSupport::TimeWithZone.new(utc, time_zone)
243
+ end
244
+ else
245
+ def time_with_zone_unpack(unpacker)
246
+ utc = ::Time.at(unpacker.read, unpacker.read, :nanosecond, in: "UTC")
247
+ time_zone = ::Time.find_zone(unpacker.read)
248
+ ActiveSupport::TimeWithZone.new(utc, time_zone)
249
+ end
250
+ end
251
+ end
252
+
78
253
  TYPES = [
79
254
  {
80
255
  code: 0,
@@ -88,91 +263,22 @@ module Paquito
88
263
  code: 1,
89
264
  class: "Time",
90
265
  version: 0,
91
- packer: ->(value) do
92
- rational = value.to_r
93
- if rational.numerator > MAX_INT64 || rational.denominator > MAX_UINT32
94
- raise PackError, "Time instance out of bounds (#{rational.inspect}), see: https://github.com/Shopify/paquito/issues/26"
95
- end
96
-
97
- [rational.numerator, rational.denominator].pack(TIME_FORMAT)
98
- end,
99
- unpacker: ->(value) do
100
- numerator, denominator = value.unpack(TIME_FORMAT)
101
- at = begin
102
- Rational(numerator, denominator)
103
- rescue ZeroDivisionError
104
- raise UnpackError, "Corrupted Time object, see: https://github.com/Shopify/paquito/issues/26"
105
- end
106
- Time.at(at).utc
107
- end,
266
+ packer: method(:time_pack_deprecated),
267
+ unpacker: method(:time_unpack_deprecated),
108
268
  }.freeze,
109
269
  {
110
270
  code: 2,
111
271
  class: "DateTime",
112
272
  version: 0,
113
- packer: ->(value) do
114
- sec = value.sec + value.sec_fraction
115
- offset = value.offset
116
-
117
- if sec.numerator > MAX_INT64 || sec.denominator > MAX_UINT32
118
- raise PackError, "DateTime#sec_fraction out of bounds (#{sec.inspect}), see: https://github.com/Shopify/paquito/issues/26"
119
- end
120
-
121
- if offset.numerator > MAX_INT64 || offset.denominator > MAX_UINT32
122
- raise PackError, "DateTime#offset out of bounds (#{offset.inspect}), see: https://github.com/Shopify/paquito/issues/26"
123
- end
124
-
125
- [
126
- value.year,
127
- value.month,
128
- value.day,
129
- value.hour,
130
- value.minute,
131
- sec.numerator,
132
- sec.denominator,
133
- offset.numerator,
134
- offset.denominator,
135
- ].pack(DATE_TIME_FORMAT)
136
- end,
137
- unpacker: ->(value) do
138
- (
139
- year,
140
- month,
141
- day,
142
- hour,
143
- minute,
144
- sec_numerator,
145
- sec_denominator,
146
- offset_numerator,
147
- offset_denominator,
148
- ) = value.unpack(DATE_TIME_FORMAT)
149
-
150
- begin
151
- ::DateTime.new(
152
- year,
153
- month,
154
- day,
155
- hour,
156
- minute,
157
- Rational(sec_numerator, sec_denominator),
158
- Rational(offset_numerator, offset_denominator),
159
- )
160
- rescue ZeroDivisionError
161
- raise UnpackError, "Corrupted DateTime object, see: https://github.com/Shopify/paquito/issues/26"
162
- end
163
- end,
273
+ packer: method(:datetime_pack_deprecated),
274
+ unpacker: method(:datetime_unpack_deprecated),
164
275
  }.freeze,
165
276
  {
166
277
  code: 3,
167
278
  class: "Date",
168
279
  version: 0,
169
- packer: ->(value) do
170
- [value.year, value.month, value.day].pack(DATE_FORMAT)
171
- end,
172
- unpacker: ->(value) do
173
- year, month, day = value.unpack(DATE_FORMAT)
174
- ::Date.new(year, month, day)
175
- end,
280
+ packer: method(:date_pack),
281
+ unpacker: method(:date_unpack),
176
282
  }.freeze,
177
283
  {
178
284
  code: 4,
@@ -193,33 +299,16 @@ module Paquito
193
299
  code: 7,
194
300
  class: "ActiveSupport::HashWithIndifferentAccess",
195
301
  version: 0,
196
- packer: ->(value, packer) do
197
- unless value.instance_of?(ActiveSupport::HashWithIndifferentAccess)
198
- raise PackError.new("cannot pack HashWithIndifferentClass subclass", value)
199
- end
200
-
201
- packer.write(value.to_h)
202
- end,
203
- unpacker: ->(unpacker) { ActiveSupport::HashWithIndifferentAccess.new(unpacker.read) },
302
+ packer: method(:hash_with_indifferent_access_pack),
303
+ unpacker: method(:hash_with_indifferent_access_unpack),
204
304
  recursive: true,
205
305
  }.freeze,
206
306
  {
207
307
  code: 8,
208
308
  class: "ActiveSupport::TimeWithZone",
209
309
  version: 0,
210
- packer: ->(value) do
211
- [
212
- value.utc.to_i,
213
- (value.time.sec_fraction * 1_000_000_000).to_i,
214
- value.time_zone.name,
215
- ].pack(TIME_WITH_ZONE_FORMAT)
216
- end,
217
- unpacker: ->(value) do
218
- sec, nsec, time_zone_name = value.unpack(TIME_WITH_ZONE_FORMAT)
219
- time = Time.at(sec, nsec, :nsec, in: 0).utc
220
- time_zone = ::Time.find_zone(time_zone_name)
221
- ActiveSupport::TimeWithZone.new(time, time_zone)
222
- end,
310
+ packer: method(:time_with_zone_deprecated_pack),
311
+ unpacker: method(:time_with_zone_deprecated_unpack),
223
312
  }.freeze,
224
313
  {
225
314
  code: 9,
@@ -235,63 +324,24 @@ module Paquito
235
324
  class: "Time",
236
325
  version: 1,
237
326
  recursive: true,
238
- packer: ->(value, packer) do
239
- packer.write(value.tv_sec)
240
- packer.write(value.tv_nsec)
241
- packer.write(value.utc_offset)
242
- end,
243
- unpacker: ->(unpacker) do
244
- ::Time.at(unpacker.read, unpacker.read, :nanosecond, in: unpacker.read)
245
- end,
327
+ packer: method(:time_pack),
328
+ unpacker: method(:time_unpack),
246
329
  }.freeze,
247
330
  {
248
331
  code: 12,
249
332
  class: "DateTime",
250
333
  version: 1,
251
334
  recursive: true,
252
- packer: ->(value, packer) do
253
- packer.write(value.year)
254
- packer.write(value.month)
255
- packer.write(value.day)
256
- packer.write(value.hour)
257
- packer.write(value.minute)
258
-
259
- sec = value.sec + value.sec_fraction
260
- packer.write(sec.numerator)
261
- packer.write(sec.denominator)
262
-
263
- offset = value.offset
264
- packer.write(offset.numerator)
265
- packer.write(offset.denominator)
266
- end,
267
- unpacker: ->(unpacker) do
268
- ::DateTime.new(
269
- unpacker.read, # year
270
- unpacker.read, # month
271
- unpacker.read, # day
272
- unpacker.read, # hour
273
- unpacker.read, # minute
274
- Rational(unpacker.read, unpacker.read), # sec fraction
275
- Rational(unpacker.read, unpacker.read), # offset fraction
276
- )
277
- end,
335
+ packer: method(:datetime_pack),
336
+ unpacker: method(:datetime_unpack),
278
337
  }.freeze,
279
338
  {
280
339
  code: 13,
281
340
  class: "ActiveSupport::TimeWithZone",
282
341
  version: 1,
283
342
  recursive: true,
284
- packer: ->(value, packer) do
285
- time = value.utc
286
- packer.write(time.tv_sec)
287
- packer.write(time.tv_nsec)
288
- packer.write(value.time_zone.name)
289
- end,
290
- unpacker: ->(unpacker) do
291
- utc = ::Time.at(unpacker.read, unpacker.read, :nanosecond, in: "UTC")
292
- time_zone = ::Time.find_zone(unpacker.read)
293
- ActiveSupport::TimeWithZone.new(utc, time_zone)
294
- end,
343
+ packer: method(:time_with_zone_pack),
344
+ unpacker: method(:time_with_zone_unpack),
295
345
  }.freeze,
296
346
  # { code: 127, class: "Object" }, reserved for serializable Object type
297
347
  ]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Paquito
4
- VERSION = "0.10.0"
4
+ VERSION = "0.11.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paquito
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean Boussier
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-09 00:00:00.000000000 Z
11
+ date: 2023-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -32,6 +32,7 @@ extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
34
  - ".github/workflows/ci.yml"
35
+ - ".github/workflows/cla.yml"
35
36
  - ".gitignore"
36
37
  - ".rubocop.yml"
37
38
  - CHANGELOG.md
@@ -91,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
92
  - !ruby/object:Gem::Version
92
93
  version: '0'
93
94
  requirements: []
94
- rubygems_version: 3.3.3
95
+ rubygems_version: 3.4.22
95
96
  signing_key:
96
97
  specification_version: 4
97
98
  summary: Framework for defining efficient and extendable serializers