oursprivacy-ingest 0.1.0

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.
Files changed (89) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +16 -0
  4. data/README.md +206 -0
  5. data/SECURITY.md +27 -0
  6. data/lib/oursprivacy_ingest/client.rb +64 -0
  7. data/lib/oursprivacy_ingest/errors.rb +228 -0
  8. data/lib/oursprivacy_ingest/file_part.rb +58 -0
  9. data/lib/oursprivacy_ingest/internal/transport/base_client.rb +573 -0
  10. data/lib/oursprivacy_ingest/internal/transport/pooled_net_requester.rb +204 -0
  11. data/lib/oursprivacy_ingest/internal/type/array_of.rb +168 -0
  12. data/lib/oursprivacy_ingest/internal/type/base_model.rb +534 -0
  13. data/lib/oursprivacy_ingest/internal/type/base_page.rb +55 -0
  14. data/lib/oursprivacy_ingest/internal/type/boolean.rb +77 -0
  15. data/lib/oursprivacy_ingest/internal/type/converter.rb +327 -0
  16. data/lib/oursprivacy_ingest/internal/type/enum.rb +133 -0
  17. data/lib/oursprivacy_ingest/internal/type/file_input.rb +111 -0
  18. data/lib/oursprivacy_ingest/internal/type/hash_of.rb +188 -0
  19. data/lib/oursprivacy_ingest/internal/type/request_parameters.rb +42 -0
  20. data/lib/oursprivacy_ingest/internal/type/union.rb +245 -0
  21. data/lib/oursprivacy_ingest/internal/type/unknown.rb +81 -0
  22. data/lib/oursprivacy_ingest/internal/util.rb +915 -0
  23. data/lib/oursprivacy_ingest/internal.rb +20 -0
  24. data/lib/oursprivacy_ingest/models/track_event_params.rb +1009 -0
  25. data/lib/oursprivacy_ingest/models/track_event_response.rb +26 -0
  26. data/lib/oursprivacy_ingest/models/visitor_upsert_params.rb +972 -0
  27. data/lib/oursprivacy_ingest/models/visitor_upsert_response.rb +26 -0
  28. data/lib/oursprivacy_ingest/models.rb +48 -0
  29. data/lib/oursprivacy_ingest/request_options.rb +79 -0
  30. data/lib/oursprivacy_ingest/resources/track.rb +61 -0
  31. data/lib/oursprivacy_ingest/resources/visitor.rb +52 -0
  32. data/lib/oursprivacy_ingest/version.rb +5 -0
  33. data/lib/oursprivacy_ingest.rb +59 -0
  34. data/manifest.yaml +15 -0
  35. data/rbi/oursprivacy_ingest/client.rbi +46 -0
  36. data/rbi/oursprivacy_ingest/errors.rbi +205 -0
  37. data/rbi/oursprivacy_ingest/file_part.rbi +37 -0
  38. data/rbi/oursprivacy_ingest/internal/transport/base_client.rbi +305 -0
  39. data/rbi/oursprivacy_ingest/internal/transport/pooled_net_requester.rbi +80 -0
  40. data/rbi/oursprivacy_ingest/internal/type/array_of.rbi +108 -0
  41. data/rbi/oursprivacy_ingest/internal/type/base_model.rbi +316 -0
  42. data/rbi/oursprivacy_ingest/internal/type/base_page.rbi +43 -0
  43. data/rbi/oursprivacy_ingest/internal/type/boolean.rbi +58 -0
  44. data/rbi/oursprivacy_ingest/internal/type/converter.rbi +225 -0
  45. data/rbi/oursprivacy_ingest/internal/type/enum.rbi +82 -0
  46. data/rbi/oursprivacy_ingest/internal/type/file_input.rbi +59 -0
  47. data/rbi/oursprivacy_ingest/internal/type/hash_of.rbi +108 -0
  48. data/rbi/oursprivacy_ingest/internal/type/request_parameters.rbi +33 -0
  49. data/rbi/oursprivacy_ingest/internal/type/union.rbi +134 -0
  50. data/rbi/oursprivacy_ingest/internal/type/unknown.rbi +58 -0
  51. data/rbi/oursprivacy_ingest/internal/util.rbi +487 -0
  52. data/rbi/oursprivacy_ingest/internal.rbi +18 -0
  53. data/rbi/oursprivacy_ingest/models/track_event_params.rbi +1072 -0
  54. data/rbi/oursprivacy_ingest/models/track_event_response.rbi +71 -0
  55. data/rbi/oursprivacy_ingest/models/visitor_upsert_params.rbi +1035 -0
  56. data/rbi/oursprivacy_ingest/models/visitor_upsert_response.rbi +71 -0
  57. data/rbi/oursprivacy_ingest/models.rbi +7 -0
  58. data/rbi/oursprivacy_ingest/request_options.rbi +64 -0
  59. data/rbi/oursprivacy_ingest/resources/track.rbi +74 -0
  60. data/rbi/oursprivacy_ingest/resources/visitor.rbi +58 -0
  61. data/rbi/oursprivacy_ingest/version.rbi +5 -0
  62. data/sig/oursprivacy_ingest/client.rbs +25 -0
  63. data/sig/oursprivacy_ingest/errors.rbs +117 -0
  64. data/sig/oursprivacy_ingest/file_part.rbs +21 -0
  65. data/sig/oursprivacy_ingest/internal/transport/base_client.rbs +131 -0
  66. data/sig/oursprivacy_ingest/internal/transport/pooled_net_requester.rbs +45 -0
  67. data/sig/oursprivacy_ingest/internal/type/array_of.rbs +48 -0
  68. data/sig/oursprivacy_ingest/internal/type/base_model.rbs +106 -0
  69. data/sig/oursprivacy_ingest/internal/type/base_page.rbs +24 -0
  70. data/sig/oursprivacy_ingest/internal/type/boolean.rbs +26 -0
  71. data/sig/oursprivacy_ingest/internal/type/converter.rbs +79 -0
  72. data/sig/oursprivacy_ingest/internal/type/enum.rbs +32 -0
  73. data/sig/oursprivacy_ingest/internal/type/file_input.rbs +25 -0
  74. data/sig/oursprivacy_ingest/internal/type/hash_of.rbs +48 -0
  75. data/sig/oursprivacy_ingest/internal/type/request_parameters.rbs +20 -0
  76. data/sig/oursprivacy_ingest/internal/type/union.rbs +52 -0
  77. data/sig/oursprivacy_ingest/internal/type/unknown.rbs +26 -0
  78. data/sig/oursprivacy_ingest/internal/util.rbs +185 -0
  79. data/sig/oursprivacy_ingest/internal.rbs +10 -0
  80. data/sig/oursprivacy_ingest/models/track_event_params.rbs +673 -0
  81. data/sig/oursprivacy_ingest/models/track_event_response.rbs +28 -0
  82. data/sig/oursprivacy_ingest/models/visitor_upsert_params.rbs +653 -0
  83. data/sig/oursprivacy_ingest/models/visitor_upsert_response.rbs +28 -0
  84. data/sig/oursprivacy_ingest/models.rbs +5 -0
  85. data/sig/oursprivacy_ingest/request_options.rbs +36 -0
  86. data/sig/oursprivacy_ingest/resources/track.rbs +21 -0
  87. data/sig/oursprivacy_ingest/resources/visitor.rbs +17 -0
  88. data/sig/oursprivacy_ingest/version.rbs +3 -0
  89. metadata +146 -0
@@ -0,0 +1,316 @@
1
+ # typed: strong
2
+
3
+ module OursprivacyIngest
4
+ module Internal
5
+ module Type
6
+ class BaseModel
7
+ extend OursprivacyIngest::Internal::Type::Converter
8
+ extend OursprivacyIngest::Internal::Util::SorbetRuntimeSupport
9
+
10
+ abstract!
11
+
12
+ KnownField =
13
+ T.type_alias do
14
+ {
15
+ mode: T.nilable(Symbol),
16
+ required: T::Boolean,
17
+ nilable: T::Boolean
18
+ }
19
+ end
20
+
21
+ OrHash =
22
+ T.type_alias do
23
+ T.any(
24
+ OursprivacyIngest::Internal::Type::BaseModel,
25
+ OursprivacyIngest::Internal::AnyHash
26
+ )
27
+ end
28
+
29
+ class << self
30
+ # @api private
31
+ #
32
+ # Assumes superclass fields are totally defined before fields are accessed /
33
+ # defined on subclasses.
34
+ sig do
35
+ params(child: OursprivacyIngest::Internal::Type::BaseModel).void
36
+ end
37
+ def inherited(child)
38
+ end
39
+
40
+ # @api private
41
+ sig do
42
+ returns(
43
+ T::Hash[
44
+ Symbol,
45
+ T.all(
46
+ OursprivacyIngest::Internal::Type::BaseModel::KnownField,
47
+ {
48
+ type_fn:
49
+ T.proc.returns(
50
+ OursprivacyIngest::Internal::Type::Converter::Input
51
+ )
52
+ }
53
+ )
54
+ ]
55
+ )
56
+ end
57
+ def known_fields
58
+ end
59
+
60
+ # @api private
61
+ sig do
62
+ returns(
63
+ T::Hash[
64
+ Symbol,
65
+ T.all(
66
+ OursprivacyIngest::Internal::Type::BaseModel::KnownField,
67
+ { type: OursprivacyIngest::Internal::Type::Converter::Input }
68
+ )
69
+ ]
70
+ )
71
+ end
72
+ def fields
73
+ end
74
+
75
+ # @api private
76
+ sig do
77
+ params(
78
+ name_sym: Symbol,
79
+ required: T::Boolean,
80
+ type_info:
81
+ T.any(
82
+ {
83
+ const:
84
+ T.nilable(
85
+ T.any(NilClass, T::Boolean, Integer, Float, Symbol)
86
+ ),
87
+ enum:
88
+ T.nilable(
89
+ T.proc.returns(
90
+ OursprivacyIngest::Internal::Type::Converter::Input
91
+ )
92
+ ),
93
+ union:
94
+ T.nilable(
95
+ T.proc.returns(
96
+ OursprivacyIngest::Internal::Type::Converter::Input
97
+ )
98
+ ),
99
+ api_name: Symbol,
100
+ nil?: T::Boolean
101
+ },
102
+ T.proc.returns(
103
+ OursprivacyIngest::Internal::Type::Converter::Input
104
+ ),
105
+ OursprivacyIngest::Internal::Type::Converter::Input
106
+ ),
107
+ spec: OursprivacyIngest::Internal::AnyHash
108
+ ).void
109
+ end
110
+ private def add_field(name_sym, required:, type_info:, spec:)
111
+ end
112
+
113
+ # @api private
114
+ sig do
115
+ params(
116
+ name_sym: Symbol,
117
+ type_info:
118
+ T.any(
119
+ OursprivacyIngest::Internal::AnyHash,
120
+ T.proc.returns(
121
+ OursprivacyIngest::Internal::Type::Converter::Input
122
+ ),
123
+ OursprivacyIngest::Internal::Type::Converter::Input
124
+ ),
125
+ spec: OursprivacyIngest::Internal::AnyHash
126
+ ).void
127
+ end
128
+ def required(name_sym, type_info, spec = {})
129
+ end
130
+
131
+ # @api private
132
+ sig do
133
+ params(
134
+ name_sym: Symbol,
135
+ type_info:
136
+ T.any(
137
+ OursprivacyIngest::Internal::AnyHash,
138
+ T.proc.returns(
139
+ OursprivacyIngest::Internal::Type::Converter::Input
140
+ ),
141
+ OursprivacyIngest::Internal::Type::Converter::Input
142
+ ),
143
+ spec: OursprivacyIngest::Internal::AnyHash
144
+ ).void
145
+ end
146
+ def optional(name_sym, type_info, spec = {})
147
+ end
148
+
149
+ # @api private
150
+ #
151
+ # `request_only` attributes not excluded from `.#coerce` when receiving responses
152
+ # even if well behaved servers should not send them
153
+ sig { params(blk: T.proc.void).void }
154
+ private def request_only(&blk)
155
+ end
156
+
157
+ # @api private
158
+ #
159
+ # `response_only` attributes are omitted from `.#dump` when making requests
160
+ sig { params(blk: T.proc.void).void }
161
+ private def response_only(&blk)
162
+ end
163
+
164
+ sig { params(other: T.anything).returns(T::Boolean) }
165
+ def ==(other)
166
+ end
167
+
168
+ sig { returns(Integer) }
169
+ def hash
170
+ end
171
+ end
172
+
173
+ sig { params(other: T.anything).returns(T::Boolean) }
174
+ def ==(other)
175
+ end
176
+
177
+ sig { returns(Integer) }
178
+ def hash
179
+ end
180
+
181
+ class << self
182
+ # @api private
183
+ sig do
184
+ override
185
+ .params(
186
+ value:
187
+ T.any(
188
+ OursprivacyIngest::Internal::Type::BaseModel,
189
+ T::Hash[T.anything, T.anything],
190
+ T.anything
191
+ ),
192
+ state: OursprivacyIngest::Internal::Type::Converter::CoerceState
193
+ )
194
+ .returns(T.any(T.attached_class, T.anything))
195
+ end
196
+ def coerce(value, state:)
197
+ end
198
+
199
+ # @api private
200
+ sig do
201
+ override
202
+ .params(
203
+ value: T.any(T.attached_class, T.anything),
204
+ state: OursprivacyIngest::Internal::Type::Converter::DumpState
205
+ )
206
+ .returns(T.any(T::Hash[T.anything, T.anything], T.anything))
207
+ end
208
+ def dump(value, state:)
209
+ end
210
+
211
+ # @api private
212
+ sig { returns(T.anything) }
213
+ def to_sorbet_type
214
+ end
215
+ end
216
+
217
+ class << self
218
+ # @api private
219
+ sig do
220
+ params(
221
+ model: OursprivacyIngest::Internal::Type::BaseModel,
222
+ convert: T::Boolean
223
+ ).returns(OursprivacyIngest::Internal::AnyHash)
224
+ end
225
+ def recursively_to_h(model, convert:)
226
+ end
227
+ end
228
+
229
+ # Returns the raw value associated with the given key, if found. Otherwise, nil is
230
+ # returned.
231
+ #
232
+ # It is valid to lookup keys that are not in the API spec, for example to access
233
+ # undocumented features. This method does not parse response data into
234
+ # higher-level types. Lookup by anything other than a Symbol is an ArgumentError.
235
+ sig { params(key: Symbol).returns(T.nilable(T.anything)) }
236
+ def [](key)
237
+ end
238
+
239
+ # Returns a Hash of the data underlying this object. O(1)
240
+ #
241
+ # Keys are Symbols and values are the raw values from the response. The return
242
+ # value indicates which values were ever set on the object. i.e. there will be a
243
+ # key in this hash if they ever were, even if the set value was nil.
244
+ #
245
+ # This method is not recursive. The returned value is shared by the object, so it
246
+ # should not be mutated.
247
+ sig { overridable.returns(OursprivacyIngest::Internal::AnyHash) }
248
+ def to_h
249
+ end
250
+
251
+ # Returns a Hash of the data underlying this object. O(1)
252
+ #
253
+ # Keys are Symbols and values are the raw values from the response. The return
254
+ # value indicates which values were ever set on the object. i.e. there will be a
255
+ # key in this hash if they ever were, even if the set value was nil.
256
+ #
257
+ # This method is not recursive. The returned value is shared by the object, so it
258
+ # should not be mutated.
259
+ sig { overridable.returns(OursprivacyIngest::Internal::AnyHash) }
260
+ def to_hash
261
+ end
262
+
263
+ # In addition to the behaviour of `#to_h`, this method will recursively call
264
+ # `#to_h` on nested models.
265
+ sig { overridable.returns(OursprivacyIngest::Internal::AnyHash) }
266
+ def deep_to_h
267
+ end
268
+
269
+ sig do
270
+ params(keys: T.nilable(T::Array[Symbol])).returns(
271
+ OursprivacyIngest::Internal::AnyHash
272
+ )
273
+ end
274
+ def deconstruct_keys(keys)
275
+ end
276
+
277
+ sig { params(a: T.anything).returns(String) }
278
+ def to_json(*a)
279
+ end
280
+
281
+ sig { params(a: T.anything).returns(String) }
282
+ def to_yaml(*a)
283
+ end
284
+
285
+ # Create a new instance of a model.
286
+ sig do
287
+ params(
288
+ data:
289
+ T.any(
290
+ T::Hash[Symbol, T.anything],
291
+ OursprivacyIngest::Internal::Type::BaseModel
292
+ )
293
+ ).returns(T.attached_class)
294
+ end
295
+ def self.new(data = {})
296
+ end
297
+
298
+ class << self
299
+ # @api private
300
+ sig { params(depth: Integer).returns(String) }
301
+ def inspect(depth: 0)
302
+ end
303
+ end
304
+
305
+ sig { returns(String) }
306
+ def to_s
307
+ end
308
+
309
+ # @api private
310
+ sig { returns(String) }
311
+ def inspect
312
+ end
313
+ end
314
+ end
315
+ end
316
+ end
@@ -0,0 +1,43 @@
1
+ # typed: strong
2
+
3
+ module OursprivacyIngest
4
+ module Internal
5
+ module Type
6
+ # @api private
7
+ #
8
+ # This module provides a base implementation for paginated responses in the SDK.
9
+ module BasePage
10
+ Elem = type_member(:out)
11
+
12
+ sig { overridable.returns(T::Boolean) }
13
+ def next_page?
14
+ end
15
+
16
+ sig { overridable.returns(T.self_type) }
17
+ def next_page
18
+ end
19
+
20
+ sig { overridable.params(blk: T.proc.params(arg0: Elem).void).void }
21
+ def auto_paging_each(&blk)
22
+ end
23
+
24
+ sig { returns(T::Enumerable[Elem]) }
25
+ def to_enum
26
+ end
27
+
28
+ # @api private
29
+ sig do
30
+ params(
31
+ client: OursprivacyIngest::Internal::Transport::BaseClient,
32
+ req:
33
+ OursprivacyIngest::Internal::Transport::BaseClient::RequestComponents,
34
+ headers: T::Hash[String, String],
35
+ page_data: T.anything
36
+ ).void
37
+ end
38
+ def initialize(client:, req:, headers:, page_data:)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,58 @@
1
+ # typed: strong
2
+
3
+ module OursprivacyIngest
4
+ module Internal
5
+ module Type
6
+ # @api private
7
+ #
8
+ # Ruby has no Boolean class; this is something for models to refer to.
9
+ class Boolean
10
+ extend OursprivacyIngest::Internal::Type::Converter
11
+ extend OursprivacyIngest::Internal::Util::SorbetRuntimeSupport
12
+
13
+ abstract!
14
+
15
+ sig { params(other: T.anything).returns(T::Boolean) }
16
+ def self.===(other)
17
+ end
18
+
19
+ sig { params(other: T.anything).returns(T::Boolean) }
20
+ def self.==(other)
21
+ end
22
+
23
+ class << self
24
+ # @api private
25
+ #
26
+ # Coerce value to Boolean if possible, otherwise return the original value.
27
+ sig do
28
+ override
29
+ .params(
30
+ value: T.any(T::Boolean, T.anything),
31
+ state: OursprivacyIngest::Internal::Type::Converter::CoerceState
32
+ )
33
+ .returns(T.any(T::Boolean, T.anything))
34
+ end
35
+ def coerce(value, state:)
36
+ end
37
+
38
+ # @api private
39
+ sig do
40
+ override
41
+ .params(
42
+ value: T.any(T::Boolean, T.anything),
43
+ state: OursprivacyIngest::Internal::Type::Converter::DumpState
44
+ )
45
+ .returns(T.any(T::Boolean, T.anything))
46
+ end
47
+ def dump(value, state:)
48
+ end
49
+
50
+ # @api private
51
+ sig { returns(T.anything) }
52
+ def to_sorbet_type
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,225 @@
1
+ # typed: strong
2
+
3
+ module OursprivacyIngest
4
+ module Internal
5
+ module Type
6
+ # @api private
7
+ module Converter
8
+ extend OursprivacyIngest::Internal::Util::SorbetRuntimeSupport
9
+
10
+ Input =
11
+ T.type_alias do
12
+ T.any(
13
+ OursprivacyIngest::Internal::Type::Converter,
14
+ T::Class[T.anything]
15
+ )
16
+ end
17
+
18
+ CoerceState =
19
+ T.type_alias do
20
+ {
21
+ translate_names: T::Boolean,
22
+ strictness: T::Boolean,
23
+ exactness: {
24
+ yes: Integer,
25
+ no: Integer,
26
+ maybe: Integer
27
+ },
28
+ error: T::Class[StandardError],
29
+ branched: Integer
30
+ }
31
+ end
32
+
33
+ DumpState = T.type_alias { { can_retry: T::Boolean } }
34
+
35
+ # @api private
36
+ sig do
37
+ overridable
38
+ .params(
39
+ value: T.anything,
40
+ state: OursprivacyIngest::Internal::Type::Converter::CoerceState
41
+ )
42
+ .returns(T.anything)
43
+ end
44
+ def coerce(value, state:)
45
+ end
46
+
47
+ # @api private
48
+ sig do
49
+ overridable
50
+ .params(
51
+ value: T.anything,
52
+ state: OursprivacyIngest::Internal::Type::Converter::DumpState
53
+ )
54
+ .returns(T.anything)
55
+ end
56
+ def dump(value, state:)
57
+ end
58
+
59
+ # @api private
60
+ sig { params(depth: Integer).returns(String) }
61
+ def inspect(depth: 0)
62
+ end
63
+
64
+ class << self
65
+ # @api private
66
+ sig do
67
+ params(
68
+ spec:
69
+ T.any(
70
+ {
71
+ const:
72
+ T.nilable(
73
+ T.any(NilClass, T::Boolean, Integer, Float, Symbol)
74
+ ),
75
+ enum:
76
+ T.nilable(
77
+ T.proc.returns(
78
+ OursprivacyIngest::Internal::Type::Converter::Input
79
+ )
80
+ ),
81
+ union:
82
+ T.nilable(
83
+ T.proc.returns(
84
+ OursprivacyIngest::Internal::Type::Converter::Input
85
+ )
86
+ )
87
+ },
88
+ T.proc.returns(
89
+ OursprivacyIngest::Internal::Type::Converter::Input
90
+ ),
91
+ OursprivacyIngest::Internal::Type::Converter::Input
92
+ )
93
+ ).returns(T.proc.returns(T.anything))
94
+ end
95
+ def self.type_info(spec)
96
+ end
97
+
98
+ # @api private
99
+ sig do
100
+ params(
101
+ type_info:
102
+ T.any(
103
+ {
104
+ const:
105
+ T.nilable(
106
+ T.any(NilClass, T::Boolean, Integer, Float, Symbol)
107
+ ),
108
+ enum:
109
+ T.nilable(
110
+ T.proc.returns(
111
+ OursprivacyIngest::Internal::Type::Converter::Input
112
+ )
113
+ ),
114
+ union:
115
+ T.nilable(
116
+ T.proc.returns(
117
+ OursprivacyIngest::Internal::Type::Converter::Input
118
+ )
119
+ )
120
+ },
121
+ T.proc.returns(
122
+ OursprivacyIngest::Internal::Type::Converter::Input
123
+ ),
124
+ OursprivacyIngest::Internal::Type::Converter::Input
125
+ ),
126
+ spec:
127
+ T.any(
128
+ {
129
+ const:
130
+ T.nilable(
131
+ T.any(NilClass, T::Boolean, Integer, Float, Symbol)
132
+ ),
133
+ enum:
134
+ T.nilable(
135
+ T.proc.returns(
136
+ OursprivacyIngest::Internal::Type::Converter::Input
137
+ )
138
+ ),
139
+ union:
140
+ T.nilable(
141
+ T.proc.returns(
142
+ OursprivacyIngest::Internal::Type::Converter::Input
143
+ )
144
+ )
145
+ },
146
+ T.proc.returns(
147
+ OursprivacyIngest::Internal::Type::Converter::Input
148
+ ),
149
+ OursprivacyIngest::Internal::Type::Converter::Input
150
+ )
151
+ ).returns(OursprivacyIngest::Internal::AnyHash)
152
+ end
153
+ def self.meta_info(type_info, spec)
154
+ end
155
+
156
+ # @api private
157
+ sig do
158
+ params(translate_names: T::Boolean).returns(
159
+ OursprivacyIngest::Internal::Type::Converter::CoerceState
160
+ )
161
+ end
162
+ def self.new_coerce_state(translate_names: true)
163
+ end
164
+
165
+ # @api private
166
+ #
167
+ # Based on `target`, transform `value` into `target`, to the extent possible:
168
+ #
169
+ # 1. if the given `value` conforms to `target` already, return the given `value`
170
+ # 2. if it's possible and safe to convert the given `value` to `target`, then the
171
+ # converted value
172
+ # 3. otherwise, the given `value` unaltered
173
+ #
174
+ # The coercion process is subject to improvement between minor release versions.
175
+ # See https://docs.pydantic.dev/latest/concepts/unions/#smart-mode
176
+ sig do
177
+ params(
178
+ target: OursprivacyIngest::Internal::Type::Converter::Input,
179
+ value: T.anything,
180
+ state: OursprivacyIngest::Internal::Type::Converter::CoerceState
181
+ ).returns(T.anything)
182
+ end
183
+ def self.coerce(
184
+ target,
185
+ value,
186
+ # The `strictness` is one of `true`, `false`. This informs the coercion strategy
187
+ # when we have to decide between multiple possible conversion targets:
188
+ #
189
+ # - `true`: the conversion must be exact, with minimum coercion.
190
+ # - `false`: the conversion can be approximate, with some coercion.
191
+ #
192
+ # The `exactness` is `Hash` with keys being one of `yes`, `no`, or `maybe`. For
193
+ # any given conversion attempt, the exactness will be updated based on how closely
194
+ # the value recursively matches the target type:
195
+ #
196
+ # - `yes`: the value can be converted to the target type with minimum coercion.
197
+ # - `maybe`: the value can be converted to the target type with some reasonable
198
+ # coercion.
199
+ # - `no`: the value cannot be converted to the target type.
200
+ #
201
+ # See implementation below for more details.
202
+ state: OursprivacyIngest::Internal::Type::Converter.new_coerce_state
203
+ )
204
+ end
205
+
206
+ # @api private
207
+ sig do
208
+ params(
209
+ target: OursprivacyIngest::Internal::Type::Converter::Input,
210
+ value: T.anything,
211
+ state: OursprivacyIngest::Internal::Type::Converter::DumpState
212
+ ).returns(T.anything)
213
+ end
214
+ def self.dump(target, value, state: { can_retry: true })
215
+ end
216
+
217
+ # @api private
218
+ sig { params(target: T.anything, depth: Integer).returns(String) }
219
+ def self.inspect(target, depth:)
220
+ end
221
+ end
222
+ end
223
+ end
224
+ end
225
+ end