@@ -68,6 +68,16 @@ def __getitem__(self, key):
6868 _dict ["properties" ] = _dict ["properties" ].copy ()
6969 return _dict [key ]
7070
71+ class Provider (dict ):
72+ def __getattr__ (self , name ):
73+ try :
74+ return self [name ]
75+ except KeyError :
76+ # pylint: disable=raise-missing-from
77+ raise AttributeError (name )
78+ def __setattr__ (self , name , value ):
79+ self [name ] = value
80+
7181
7282@dataclass
7383class Endpoint (BaseResponse ):
@@ -121,59 +131,13 @@ def __getitem__(self, key):
121131 return _dict [key ]
122132
123133
124- @dataclass
125- class CartesiaVoice (BaseResponse ):
126- """
127- This class defines the voice for the Cartesia model.
128- """
129-
130- mode : str = field (
131- default = "" , metadata = dataclass_config (exclude = lambda f : f is None or f == "" )
132- )
133- id : str = field (
134- default = "" , metadata = dataclass_config (exclude = lambda f : f is None or f == "" )
135- )
136-
137-
138- @dataclass
139- class ListenProvider (BaseResponse ):
140- """
141- This class defines the provider for the Listen model.
142- """
143-
144- type : str = field (default = "" )
145- model : str = field (default = "" )
146- keyterms : Optional [List [str ]] = field (
147- default = None , metadata = dataclass_config (exclude = lambda f : f is None )
148- )
149-
150- def __getitem__ (self , key ):
151- _dict = self .to_dict ()
152- if "keyterms" in _dict and isinstance (_dict ["keyterms" ], list ):
153- _dict ["keyterms" ] = [str (keyterm ) for keyterm in _dict ["keyterms" ]]
154- return _dict [key ]
155-
156-
157- @dataclass
158- class ThinkProvider (BaseResponse ):
159- """
160- This class defines the provider for the Think model.
161- """
162-
163- type : Optional [str ] = field (default = None )
164- model : Optional [str ] = field (default = None )
165- temperature : Optional [float ] = field (
166- default = None , metadata = dataclass_config (exclude = lambda f : f is None )
167- )
168-
169-
170134@dataclass
171135class Think (BaseResponse ):
172136 """
173137 This class defines any configuration settings for the Think model.
174138 """
175139
176- provider : ThinkProvider = field (default_factory = ThinkProvider )
140+ provider : Provider = field (default_factory = Provider )
177141 functions : Optional [List [Function ]] = field (
178142 default = None , metadata = dataclass_config (exclude = lambda f : f is None )
179143 )
@@ -184,10 +148,12 @@ class Think(BaseResponse):
184148 default = None , metadata = dataclass_config (exclude = lambda f : f is None )
185149 )
186150
151+ def __post_init__ (self ):
152+ if not isinstance (self .provider , Provider ):
153+ self .provider = Provider (self .provider )
154+
187155 def __getitem__ (self , key ):
188156 _dict = self .to_dict ()
189- if "provider" in _dict and isinstance (_dict ["provider" ], dict ):
190- _dict ["provider" ] = ThinkProvider .from_dict (_dict ["provider" ])
191157 if "functions" in _dict and isinstance (_dict ["functions" ], list ):
192158 _dict ["functions" ] = [
193159 Function .from_dict (function ) for function in _dict ["functions" ]
@@ -203,12 +169,14 @@ class Listen(BaseResponse):
203169 This class defines any configuration settings for the Listen model.
204170 """
205171
206- provider : ListenProvider = field (default_factory = ListenProvider )
172+ provider : Provider = field (default_factory = Provider )
173+
174+ def __post_init__ (self ):
175+ if not isinstance (self .provider , Provider ):
176+ self .provider = Provider (self .provider )
207177
208178 def __getitem__ (self , key ):
209179 _dict = self .to_dict ()
210- if "provider" in _dict and isinstance (_dict ["provider" ], dict ):
211- _dict ["provider" ] = ListenProvider .from_dict (_dict ["provider" ])
212180 return _dict [key ]
213181
214182
@@ -218,25 +186,14 @@ class Speak(BaseResponse):
218186 This class defines any configuration settings for the Speak model.
219187 """
220188
221- provider : dict = field (default_factory = dict )
189+ provider : Provider = field (default_factory = Provider )
222190 endpoint : Optional [Endpoint ] = field (
223191 default = None , metadata = dataclass_config (exclude = lambda f : f is None )
224192 )
225193
226194 def __post_init__ (self ):
227- # Allow attribute-style access to provider dict
228- # pylint: disable=missing-class-docstring
229- class AttrDict (dict ):
230- def __getattr__ (self , name ):
231- try :
232- return self [name ]
233- except KeyError :
234- # pylint: disable=raise-missing-from
235- raise AttributeError (name )
236- def __setattr__ (self , name , value ):
237- self [name ] = value
238- if not isinstance (self .provider , AttrDict ):
239- self .provider = AttrDict (self .provider )
195+ if not isinstance (self .provider , Provider ):
196+ self .provider = Provider (self .provider )
240197
241198 def __getitem__ (self , key ):
242199 _dict = self .to_dict ()
0 commit comments