@@ -6,18 +6,25 @@ module Type
6
6
# @abstract
7
7
class BaseModel
8
8
extend OpenAI ::Internal ::Type ::Converter
9
+ extend OpenAI ::Internal ::Util ::SorbetRuntimeSupport
9
10
10
11
class << self
11
12
# @api private
12
13
#
13
14
# Assumes superclass fields are totally defined before fields are accessed /
14
15
# defined on subclasses.
15
16
#
16
- # @return [Hash{Symbol=>Hash{Symbol=>Object}}]
17
- def known_fields
18
- @known_fields ||= ( self < OpenAI ::Internal ::Type ::BaseModel ? superclass . known_fields . dup : { } )
17
+ # @param child [Class<OpenAI::Internal::Type::BaseModel>]
18
+ def inherited ( child )
19
+ super
20
+ child . known_fields . replace ( known_fields . dup )
19
21
end
20
22
23
+ # @api private
24
+ #
25
+ # @return [Hash{Symbol=>Hash{Symbol=>Object}}]
26
+ def known_fields = @known_fields ||= { }
27
+
21
28
# @api private
22
29
#
23
30
# @return [Hash{Symbol=>Hash{Symbol=>Object}}]
@@ -199,7 +206,7 @@ class << self
199
206
#
200
207
# @option state [Integer] :branched
201
208
#
202
- # @return [OpenAI::Internal::Type::BaseModel , Object]
209
+ # @return [self , Object]
203
210
def coerce ( value , state :)
204
211
exactness = state . fetch ( :exactness )
205
212
@@ -258,7 +265,7 @@ def coerce(value, state:)
258
265
259
266
# @api private
260
267
#
261
- # @param value [OpenAI::Internal::Type::BaseModel , Object]
268
+ # @param value [self , Object]
262
269
#
263
270
# @param state [Hash{Symbol=>Object}] .
264
271
#
@@ -424,6 +431,10 @@ def to_s = self.class.walk(@data).to_s
424
431
#
425
432
# @return [String]
426
433
def inspect = "#<#{ self . class } :0x#{ object_id . to_s ( 16 ) } #{ self } >"
434
+
435
+ define_sorbet_constant! ( :KnownField ) do
436
+ T . type_alias { { mode : T . nilable ( Symbol ) , required : T ::Boolean , nilable : T ::Boolean } }
437
+ end
427
438
end
428
439
end
429
440
end
0 commit comments