@@ -6,18 +6,25 @@ module Type
66 # @abstract
77 class BaseModel
88 extend OpenAI ::Internal ::Type ::Converter
9+ extend OpenAI ::Internal ::Util ::SorbetRuntimeSupport
910
1011 class << self
1112 # @api private
1213 #
1314 # Assumes superclass fields are totally defined before fields are accessed /
1415 # defined on subclasses.
1516 #
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 )
1921 end
2022
23+ # @api private
24+ #
25+ # @return [Hash{Symbol=>Hash{Symbol=>Object}}]
26+ def known_fields = @known_fields ||= { }
27+
2128 # @api private
2229 #
2330 # @return [Hash{Symbol=>Hash{Symbol=>Object}}]
@@ -199,7 +206,7 @@ class << self
199206 #
200207 # @option state [Integer] :branched
201208 #
202- # @return [OpenAI::Internal::Type::BaseModel , Object]
209+ # @return [self , Object]
203210 def coerce ( value , state :)
204211 exactness = state . fetch ( :exactness )
205212
@@ -258,7 +265,7 @@ def coerce(value, state:)
258265
259266 # @api private
260267 #
261- # @param value [OpenAI::Internal::Type::BaseModel , Object]
268+ # @param value [self , Object]
262269 #
263270 # @param state [Hash{Symbol=>Object}] .
264271 #
@@ -424,6 +431,10 @@ def to_s = self.class.walk(@data).to_s
424431 #
425432 # @return [String]
426433 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
427438 end
428439 end
429440 end
0 commit comments