sports-odds-api 1.0.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 (158) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +10 -0
  4. data/README.md +186 -0
  5. data/SECURITY.md +27 -0
  6. data/lib/sports_odds_api/client.rb +112 -0
  7. data/lib/sports_odds_api/errors.rb +228 -0
  8. data/lib/sports_odds_api/file_part.rb +55 -0
  9. data/lib/sports_odds_api/internal/next_cursor_page.rb +86 -0
  10. data/lib/sports_odds_api/internal/transport/base_client.rb +580 -0
  11. data/lib/sports_odds_api/internal/transport/pooled_net_requester.rb +201 -0
  12. data/lib/sports_odds_api/internal/type/array_of.rb +168 -0
  13. data/lib/sports_odds_api/internal/type/base_model.rb +534 -0
  14. data/lib/sports_odds_api/internal/type/base_page.rb +55 -0
  15. data/lib/sports_odds_api/internal/type/boolean.rb +77 -0
  16. data/lib/sports_odds_api/internal/type/converter.rb +327 -0
  17. data/lib/sports_odds_api/internal/type/enum.rb +131 -0
  18. data/lib/sports_odds_api/internal/type/file_input.rb +108 -0
  19. data/lib/sports_odds_api/internal/type/hash_of.rb +188 -0
  20. data/lib/sports_odds_api/internal/type/request_parameters.rb +42 -0
  21. data/lib/sports_odds_api/internal/type/union.rb +243 -0
  22. data/lib/sports_odds_api/internal/type/unknown.rb +81 -0
  23. data/lib/sports_odds_api/internal/util.rb +914 -0
  24. data/lib/sports_odds_api/internal.rb +20 -0
  25. data/lib/sports_odds_api/models/account_get_usage_params.rb +14 -0
  26. data/lib/sports_odds_api/models/account_usage.rb +91 -0
  27. data/lib/sports_odds_api/models/event.rb +686 -0
  28. data/lib/sports_odds_api/models/event_get_params.rb +195 -0
  29. data/lib/sports_odds_api/models/league.rb +39 -0
  30. data/lib/sports_odds_api/models/league_get_params.rb +30 -0
  31. data/lib/sports_odds_api/models/league_get_response.rb +8 -0
  32. data/lib/sports_odds_api/models/player.rb +128 -0
  33. data/lib/sports_odds_api/models/player_get_params.rb +58 -0
  34. data/lib/sports_odds_api/models/rate_limit_interval.rb +92 -0
  35. data/lib/sports_odds_api/models/sport.rb +197 -0
  36. data/lib/sports_odds_api/models/sport_get_params.rb +14 -0
  37. data/lib/sports_odds_api/models/sport_get_response.rb +8 -0
  38. data/lib/sports_odds_api/models/stat.rb +144 -0
  39. data/lib/sports_odds_api/models/stat_get_params.rb +43 -0
  40. data/lib/sports_odds_api/models/stat_get_response.rb +8 -0
  41. data/lib/sports_odds_api/models/stream_events_params.rb +38 -0
  42. data/lib/sports_odds_api/models/stream_events_response.rb +120 -0
  43. data/lib/sports_odds_api/models/team.rb +162 -0
  44. data/lib/sports_odds_api/models/team_get_params.rb +58 -0
  45. data/lib/sports_odds_api/models.rb +76 -0
  46. data/lib/sports_odds_api/request_options.rb +78 -0
  47. data/lib/sports_odds_api/resources/account.rb +33 -0
  48. data/lib/sports_odds_api/resources/events.rb +94 -0
  49. data/lib/sports_odds_api/resources/leagues.rb +39 -0
  50. data/lib/sports_odds_api/resources/players.rb +48 -0
  51. data/lib/sports_odds_api/resources/sports.rb +33 -0
  52. data/lib/sports_odds_api/resources/stats.rb +44 -0
  53. data/lib/sports_odds_api/resources/stream.rb +40 -0
  54. data/lib/sports_odds_api/resources/teams.rb +48 -0
  55. data/lib/sports_odds_api/version.rb +5 -0
  56. data/lib/sports_odds_api.rb +82 -0
  57. data/manifest.yaml +15 -0
  58. data/rbi/sports_odds_api/client.rbi +83 -0
  59. data/rbi/sports_odds_api/errors.rbi +205 -0
  60. data/rbi/sports_odds_api/file_part.rbi +37 -0
  61. data/rbi/sports_odds_api/internal/next_cursor_page.rbi +22 -0
  62. data/rbi/sports_odds_api/internal/transport/base_client.rbi +305 -0
  63. data/rbi/sports_odds_api/internal/transport/pooled_net_requester.rbi +80 -0
  64. data/rbi/sports_odds_api/internal/type/array_of.rbi +104 -0
  65. data/rbi/sports_odds_api/internal/type/base_model.rbi +310 -0
  66. data/rbi/sports_odds_api/internal/type/base_page.rbi +43 -0
  67. data/rbi/sports_odds_api/internal/type/boolean.rbi +58 -0
  68. data/rbi/sports_odds_api/internal/type/converter.rbi +225 -0
  69. data/rbi/sports_odds_api/internal/type/enum.rbi +82 -0
  70. data/rbi/sports_odds_api/internal/type/file_input.rbi +59 -0
  71. data/rbi/sports_odds_api/internal/type/hash_of.rbi +104 -0
  72. data/rbi/sports_odds_api/internal/type/request_parameters.rbi +31 -0
  73. data/rbi/sports_odds_api/internal/type/union.rbi +128 -0
  74. data/rbi/sports_odds_api/internal/type/unknown.rbi +58 -0
  75. data/rbi/sports_odds_api/internal/util.rbi +487 -0
  76. data/rbi/sports_odds_api/internal.rbi +18 -0
  77. data/rbi/sports_odds_api/models/account_get_usage_params.rbi +32 -0
  78. data/rbi/sports_odds_api/models/account_usage.rbi +173 -0
  79. data/rbi/sports_odds_api/models/event.rbi +1269 -0
  80. data/rbi/sports_odds_api/models/event_get_params.rbi +286 -0
  81. data/rbi/sports_odds_api/models/league.rbi +74 -0
  82. data/rbi/sports_odds_api/models/league_get_params.rbi +60 -0
  83. data/rbi/sports_odds_api/models/league_get_response.rbi +11 -0
  84. data/rbi/sports_odds_api/models/player.rbi +247 -0
  85. data/rbi/sports_odds_api/models/player_get_params.rbi +95 -0
  86. data/rbi/sports_odds_api/models/rate_limit_interval.rbi +176 -0
  87. data/rbi/sports_odds_api/models/sport.rbi +371 -0
  88. data/rbi/sports_odds_api/models/sport_get_params.rbi +29 -0
  89. data/rbi/sports_odds_api/models/sport_get_response.rbi +11 -0
  90. data/rbi/sports_odds_api/models/stat.rbi +273 -0
  91. data/rbi/sports_odds_api/models/stat_get_params.rbi +72 -0
  92. data/rbi/sports_odds_api/models/stat_get_response.rbi +11 -0
  93. data/rbi/sports_odds_api/models/stream_events_params.rbi +71 -0
  94. data/rbi/sports_odds_api/models/stream_events_response.rbi +247 -0
  95. data/rbi/sports_odds_api/models/team.rbi +305 -0
  96. data/rbi/sports_odds_api/models/team_get_params.rbi +92 -0
  97. data/rbi/sports_odds_api/models.rbi +35 -0
  98. data/rbi/sports_odds_api/request_options.rbi +59 -0
  99. data/rbi/sports_odds_api/resources/account.rbi +21 -0
  100. data/rbi/sports_odds_api/resources/events.rbi +96 -0
  101. data/rbi/sports_odds_api/resources/leagues.rbi +29 -0
  102. data/rbi/sports_odds_api/resources/players.rbi +41 -0
  103. data/rbi/sports_odds_api/resources/sports.rbi +21 -0
  104. data/rbi/sports_odds_api/resources/stats.rbi +34 -0
  105. data/rbi/sports_odds_api/resources/stream.rbi +32 -0
  106. data/rbi/sports_odds_api/resources/teams.rbi +39 -0
  107. data/rbi/sports_odds_api/version.rbi +5 -0
  108. data/sig/sports_odds_api/client.rbs +45 -0
  109. data/sig/sports_odds_api/errors.rbs +117 -0
  110. data/sig/sports_odds_api/file_part.rbs +21 -0
  111. data/sig/sports_odds_api/internal/next_cursor_page.rbs +13 -0
  112. data/sig/sports_odds_api/internal/transport/base_client.rbs +133 -0
  113. data/sig/sports_odds_api/internal/transport/pooled_net_requester.rbs +45 -0
  114. data/sig/sports_odds_api/internal/type/array_of.rbs +48 -0
  115. data/sig/sports_odds_api/internal/type/base_model.rbs +104 -0
  116. data/sig/sports_odds_api/internal/type/base_page.rbs +24 -0
  117. data/sig/sports_odds_api/internal/type/boolean.rbs +26 -0
  118. data/sig/sports_odds_api/internal/type/converter.rbs +79 -0
  119. data/sig/sports_odds_api/internal/type/enum.rbs +32 -0
  120. data/sig/sports_odds_api/internal/type/file_input.rbs +25 -0
  121. data/sig/sports_odds_api/internal/type/hash_of.rbs +48 -0
  122. data/sig/sports_odds_api/internal/type/request_parameters.rbs +19 -0
  123. data/sig/sports_odds_api/internal/type/union.rbs +52 -0
  124. data/sig/sports_odds_api/internal/type/unknown.rbs +26 -0
  125. data/sig/sports_odds_api/internal/util.rbs +185 -0
  126. data/sig/sports_odds_api/internal.rbs +10 -0
  127. data/sig/sports_odds_api/models/account_get_usage_params.rbs +15 -0
  128. data/sig/sports_odds_api/models/account_usage.rbs +116 -0
  129. data/sig/sports_odds_api/models/event.rbs +860 -0
  130. data/sig/sports_odds_api/models/event_get_params.rbs +168 -0
  131. data/sig/sports_odds_api/models/league.rbs +50 -0
  132. data/sig/sports_odds_api/models/league_get_params.rbs +32 -0
  133. data/sig/sports_odds_api/models/league_get_response.rbs +7 -0
  134. data/sig/sports_odds_api/models/player.rbs +162 -0
  135. data/sig/sports_odds_api/models/player_get_params.rbs +56 -0
  136. data/sig/sports_odds_api/models/rate_limit_interval.rbs +67 -0
  137. data/sig/sports_odds_api/models/sport.rbs +241 -0
  138. data/sig/sports_odds_api/models/sport_get_params.rbs +15 -0
  139. data/sig/sports_odds_api/models/sport_get_response.rbs +7 -0
  140. data/sig/sports_odds_api/models/stat.rbs +166 -0
  141. data/sig/sports_odds_api/models/stat_get_params.rbs +38 -0
  142. data/sig/sports_odds_api/models/stat_get_response.rbs +7 -0
  143. data/sig/sports_odds_api/models/stream_events_params.rbs +38 -0
  144. data/sig/sports_odds_api/models/stream_events_response.rbs +151 -0
  145. data/sig/sports_odds_api/models/team.rbs +201 -0
  146. data/sig/sports_odds_api/models/team_get_params.rbs +56 -0
  147. data/sig/sports_odds_api/models.rbs +33 -0
  148. data/sig/sports_odds_api/request_options.rbs +36 -0
  149. data/sig/sports_odds_api/resources/account.rbs +11 -0
  150. data/sig/sports_odds_api/resources/events.rbs +32 -0
  151. data/sig/sports_odds_api/resources/leagues.rbs +13 -0
  152. data/sig/sports_odds_api/resources/players.rbs +16 -0
  153. data/sig/sports_odds_api/resources/sports.rbs +11 -0
  154. data/sig/sports_odds_api/resources/stats.rbs +14 -0
  155. data/sig/sports_odds_api/resources/stream.rbs +14 -0
  156. data/sig/sports_odds_api/resources/teams.rbs +16 -0
  157. data/sig/sports_odds_api/version.rbs +3 -0
  158. metadata +215 -0
@@ -0,0 +1,310 @@
1
+ # typed: strong
2
+
3
+ module SportsOddsAPI
4
+ module Internal
5
+ module Type
6
+ class BaseModel
7
+ extend SportsOddsAPI::Internal::Type::Converter
8
+ extend SportsOddsAPI::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
+ SportsOddsAPI::Internal::Type::BaseModel,
25
+ SportsOddsAPI::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 { params(child: T.self_type).void }
35
+ def inherited(child)
36
+ end
37
+
38
+ # @api private
39
+ sig do
40
+ returns(
41
+ T::Hash[
42
+ Symbol,
43
+ T.all(
44
+ SportsOddsAPI::Internal::Type::BaseModel::KnownField,
45
+ {
46
+ type_fn:
47
+ T.proc.returns(
48
+ SportsOddsAPI::Internal::Type::Converter::Input
49
+ )
50
+ }
51
+ )
52
+ ]
53
+ )
54
+ end
55
+ def known_fields
56
+ end
57
+
58
+ # @api private
59
+ sig do
60
+ returns(
61
+ T::Hash[
62
+ Symbol,
63
+ T.all(
64
+ SportsOddsAPI::Internal::Type::BaseModel::KnownField,
65
+ { type: SportsOddsAPI::Internal::Type::Converter::Input }
66
+ )
67
+ ]
68
+ )
69
+ end
70
+ def fields
71
+ end
72
+
73
+ # @api private
74
+ sig do
75
+ params(
76
+ name_sym: Symbol,
77
+ required: T::Boolean,
78
+ type_info:
79
+ T.any(
80
+ {
81
+ const:
82
+ T.nilable(
83
+ T.any(NilClass, T::Boolean, Integer, Float, Symbol)
84
+ ),
85
+ enum:
86
+ T.nilable(
87
+ T.proc.returns(
88
+ SportsOddsAPI::Internal::Type::Converter::Input
89
+ )
90
+ ),
91
+ union:
92
+ T.nilable(
93
+ T.proc.returns(
94
+ SportsOddsAPI::Internal::Type::Converter::Input
95
+ )
96
+ ),
97
+ api_name: Symbol,
98
+ nil?: T::Boolean
99
+ },
100
+ T.proc.returns(
101
+ SportsOddsAPI::Internal::Type::Converter::Input
102
+ ),
103
+ SportsOddsAPI::Internal::Type::Converter::Input
104
+ ),
105
+ spec: SportsOddsAPI::Internal::AnyHash
106
+ ).void
107
+ end
108
+ private def add_field(name_sym, required:, type_info:, spec:)
109
+ end
110
+
111
+ # @api private
112
+ sig do
113
+ params(
114
+ name_sym: Symbol,
115
+ type_info:
116
+ T.any(
117
+ SportsOddsAPI::Internal::AnyHash,
118
+ T.proc.returns(
119
+ SportsOddsAPI::Internal::Type::Converter::Input
120
+ ),
121
+ SportsOddsAPI::Internal::Type::Converter::Input
122
+ ),
123
+ spec: SportsOddsAPI::Internal::AnyHash
124
+ ).void
125
+ end
126
+ def required(name_sym, type_info, spec = {})
127
+ end
128
+
129
+ # @api private
130
+ sig do
131
+ params(
132
+ name_sym: Symbol,
133
+ type_info:
134
+ T.any(
135
+ SportsOddsAPI::Internal::AnyHash,
136
+ T.proc.returns(
137
+ SportsOddsAPI::Internal::Type::Converter::Input
138
+ ),
139
+ SportsOddsAPI::Internal::Type::Converter::Input
140
+ ),
141
+ spec: SportsOddsAPI::Internal::AnyHash
142
+ ).void
143
+ end
144
+ def optional(name_sym, type_info, spec = {})
145
+ end
146
+
147
+ # @api private
148
+ #
149
+ # `request_only` attributes not excluded from `.#coerce` when receiving responses
150
+ # even if well behaved servers should not send them
151
+ sig { params(blk: T.proc.void).void }
152
+ private def request_only(&blk)
153
+ end
154
+
155
+ # @api private
156
+ #
157
+ # `response_only` attributes are omitted from `.#dump` when making requests
158
+ sig { params(blk: T.proc.void).void }
159
+ private def response_only(&blk)
160
+ end
161
+
162
+ sig { params(other: T.anything).returns(T::Boolean) }
163
+ def ==(other)
164
+ end
165
+
166
+ sig { returns(Integer) }
167
+ def hash
168
+ end
169
+ end
170
+
171
+ sig { params(other: T.anything).returns(T::Boolean) }
172
+ def ==(other)
173
+ end
174
+
175
+ sig { returns(Integer) }
176
+ def hash
177
+ end
178
+
179
+ class << self
180
+ # @api private
181
+ sig do
182
+ override
183
+ .params(
184
+ value:
185
+ T.any(
186
+ SportsOddsAPI::Internal::Type::BaseModel,
187
+ T::Hash[T.anything, T.anything],
188
+ T.anything
189
+ ),
190
+ state: SportsOddsAPI::Internal::Type::Converter::CoerceState
191
+ )
192
+ .returns(T.any(T.attached_class, T.anything))
193
+ end
194
+ def coerce(value, state:)
195
+ end
196
+
197
+ # @api private
198
+ sig do
199
+ override
200
+ .params(
201
+ value: T.any(T.attached_class, T.anything),
202
+ state: SportsOddsAPI::Internal::Type::Converter::DumpState
203
+ )
204
+ .returns(T.any(T::Hash[T.anything, T.anything], T.anything))
205
+ end
206
+ def dump(value, state:)
207
+ end
208
+
209
+ # @api private
210
+ sig { returns(T.anything) }
211
+ def to_sorbet_type
212
+ end
213
+ end
214
+
215
+ class << self
216
+ # @api private
217
+ sig do
218
+ params(
219
+ model: SportsOddsAPI::Internal::Type::BaseModel,
220
+ convert: T::Boolean
221
+ ).returns(SportsOddsAPI::Internal::AnyHash)
222
+ end
223
+ def recursively_to_h(model, convert:)
224
+ end
225
+ end
226
+
227
+ # Returns the raw value associated with the given key, if found. Otherwise, nil is
228
+ # returned.
229
+ #
230
+ # It is valid to lookup keys that are not in the API spec, for example to access
231
+ # undocumented features. This method does not parse response data into
232
+ # higher-level types. Lookup by anything other than a Symbol is an ArgumentError.
233
+ sig { params(key: Symbol).returns(T.nilable(T.anything)) }
234
+ def [](key)
235
+ end
236
+
237
+ # Returns a Hash of the data underlying this object. O(1)
238
+ #
239
+ # Keys are Symbols and values are the raw values from the response. The return
240
+ # value indicates which values were ever set on the object. i.e. there will be a
241
+ # key in this hash if they ever were, even if the set value was nil.
242
+ #
243
+ # This method is not recursive. The returned value is shared by the object, so it
244
+ # should not be mutated.
245
+ sig { overridable.returns(SportsOddsAPI::Internal::AnyHash) }
246
+ def to_h
247
+ end
248
+
249
+ # Returns a Hash of the data underlying this object. O(1)
250
+ #
251
+ # Keys are Symbols and values are the raw values from the response. The return
252
+ # value indicates which values were ever set on the object. i.e. there will be a
253
+ # key in this hash if they ever were, even if the set value was nil.
254
+ #
255
+ # This method is not recursive. The returned value is shared by the object, so it
256
+ # should not be mutated.
257
+ sig { overridable.returns(SportsOddsAPI::Internal::AnyHash) }
258
+ def to_hash
259
+ end
260
+
261
+ # In addition to the behaviour of `#to_h`, this method will recursively call
262
+ # `#to_h` on nested models.
263
+ sig { overridable.returns(SportsOddsAPI::Internal::AnyHash) }
264
+ def deep_to_h
265
+ end
266
+
267
+ sig do
268
+ params(keys: T.nilable(T::Array[Symbol])).returns(
269
+ SportsOddsAPI::Internal::AnyHash
270
+ )
271
+ end
272
+ def deconstruct_keys(keys)
273
+ end
274
+
275
+ sig { params(a: T.anything).returns(String) }
276
+ def to_json(*a)
277
+ end
278
+
279
+ sig { params(a: T.anything).returns(String) }
280
+ def to_yaml(*a)
281
+ end
282
+
283
+ # Create a new instance of a model.
284
+ sig do
285
+ params(data: T.any(T::Hash[Symbol, T.anything], T.self_type)).returns(
286
+ T.attached_class
287
+ )
288
+ end
289
+ def self.new(data = {})
290
+ end
291
+
292
+ class << self
293
+ # @api private
294
+ sig { params(depth: Integer).returns(String) }
295
+ def inspect(depth: 0)
296
+ end
297
+ end
298
+
299
+ sig { returns(String) }
300
+ def to_s
301
+ end
302
+
303
+ # @api private
304
+ sig { returns(String) }
305
+ def inspect
306
+ end
307
+ end
308
+ end
309
+ end
310
+ end
@@ -0,0 +1,43 @@
1
+ # typed: strong
2
+
3
+ module SportsOddsAPI
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: SportsOddsAPI::Internal::Transport::BaseClient,
32
+ req:
33
+ SportsOddsAPI::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 SportsOddsAPI
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 SportsOddsAPI::Internal::Type::Converter
11
+ extend SportsOddsAPI::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: SportsOddsAPI::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: SportsOddsAPI::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 SportsOddsAPI
4
+ module Internal
5
+ module Type
6
+ # @api private
7
+ module Converter
8
+ extend SportsOddsAPI::Internal::Util::SorbetRuntimeSupport
9
+
10
+ Input =
11
+ T.type_alias do
12
+ T.any(
13
+ SportsOddsAPI::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: SportsOddsAPI::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: SportsOddsAPI::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
+ SportsOddsAPI::Internal::Type::Converter::Input
79
+ )
80
+ ),
81
+ union:
82
+ T.nilable(
83
+ T.proc.returns(
84
+ SportsOddsAPI::Internal::Type::Converter::Input
85
+ )
86
+ )
87
+ },
88
+ T.proc.returns(
89
+ SportsOddsAPI::Internal::Type::Converter::Input
90
+ ),
91
+ SportsOddsAPI::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
+ SportsOddsAPI::Internal::Type::Converter::Input
112
+ )
113
+ ),
114
+ union:
115
+ T.nilable(
116
+ T.proc.returns(
117
+ SportsOddsAPI::Internal::Type::Converter::Input
118
+ )
119
+ )
120
+ },
121
+ T.proc.returns(
122
+ SportsOddsAPI::Internal::Type::Converter::Input
123
+ ),
124
+ SportsOddsAPI::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
+ SportsOddsAPI::Internal::Type::Converter::Input
137
+ )
138
+ ),
139
+ union:
140
+ T.nilable(
141
+ T.proc.returns(
142
+ SportsOddsAPI::Internal::Type::Converter::Input
143
+ )
144
+ )
145
+ },
146
+ T.proc.returns(
147
+ SportsOddsAPI::Internal::Type::Converter::Input
148
+ ),
149
+ SportsOddsAPI::Internal::Type::Converter::Input
150
+ )
151
+ ).returns(SportsOddsAPI::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
+ SportsOddsAPI::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: SportsOddsAPI::Internal::Type::Converter::Input,
179
+ value: T.anything,
180
+ state: SportsOddsAPI::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: SportsOddsAPI::Internal::Type::Converter.new_coerce_state
203
+ )
204
+ end
205
+
206
+ # @api private
207
+ sig do
208
+ params(
209
+ target: SportsOddsAPI::Internal::Type::Converter::Input,
210
+ value: T.anything,
211
+ state: SportsOddsAPI::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
@@ -0,0 +1,82 @@
1
+ # typed: strong
2
+
3
+ module SportsOddsAPI
4
+ module Internal
5
+ module Type
6
+ # @api private
7
+ #
8
+ # A value from among a specified list of options. OpenAPI enum values map to Ruby
9
+ # values in the SDK as follows:
10
+ #
11
+ # 1. boolean => true | false
12
+ # 2. integer => Integer
13
+ # 3. float => Float
14
+ # 4. string => Symbol
15
+ #
16
+ # We can therefore convert string values to Symbols, but can't convert other
17
+ # values safely.
18
+ module Enum
19
+ include SportsOddsAPI::Internal::Type::Converter
20
+ include SportsOddsAPI::Internal::Util::SorbetRuntimeSupport
21
+
22
+ # All of the valid Symbol values for this enum.
23
+ sig do
24
+ overridable.returns(
25
+ T::Array[T.any(NilClass, T::Boolean, Integer, Float, Symbol)]
26
+ )
27
+ end
28
+ def values
29
+ end
30
+
31
+ sig { params(other: T.anything).returns(T::Boolean) }
32
+ def ===(other)
33
+ end
34
+
35
+ sig { params(other: T.anything).returns(T::Boolean) }
36
+ def ==(other)
37
+ end
38
+
39
+ sig { returns(Integer) }
40
+ def hash
41
+ end
42
+
43
+ # @api private
44
+ #
45
+ # Unlike with primitives, `Enum` additionally validates that the value is a member
46
+ # of the enum.
47
+ sig do
48
+ override
49
+ .params(
50
+ value: T.any(String, Symbol, T.anything),
51
+ state: SportsOddsAPI::Internal::Type::Converter::CoerceState
52
+ )
53
+ .returns(T.any(Symbol, T.anything))
54
+ end
55
+ def coerce(value, state:)
56
+ end
57
+
58
+ # @api private
59
+ sig do
60
+ override
61
+ .params(
62
+ value: T.any(Symbol, T.anything),
63
+ state: SportsOddsAPI::Internal::Type::Converter::DumpState
64
+ )
65
+ .returns(T.any(Symbol, T.anything))
66
+ end
67
+ def dump(value, state:)
68
+ end
69
+
70
+ # @api private
71
+ sig { returns(T.anything) }
72
+ def to_sorbet_type
73
+ end
74
+
75
+ # @api private
76
+ sig { params(depth: Integer).returns(String) }
77
+ def inspect(depth: 0)
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end