13
13
14
14
15
15
import copy
16
+ import http .client as httplib
16
17
import logging
17
18
from logging import FileHandler
18
19
import multiprocessing
19
20
import sys
20
- from typing import Optional
21
+ from typing import Any , ClassVar , Dict , List , Literal , Optional , TypedDict
22
+ from typing_extensions import NotRequired , Self
23
+
21
24
import urllib3
22
25
23
- import http .client as httplib
24
26
25
27
JSON_SCHEMA_VALIDATION_KEYWORDS = {
26
28
'multipleOf' , 'maximum' , 'exclusiveMaximum' ,
27
29
'minimum' , 'exclusiveMinimum' , 'maxLength' ,
28
30
'minLength' , 'pattern' , 'maxItems' , 'minItems'
29
31
}
30
32
33
+ ServerVariablesT = Dict [str , str ]
34
+
35
+ GenericAuthSetting = TypedDict (
36
+ "GenericAuthSetting" ,
37
+ {
38
+ "type" : str ,
39
+ "in" : str ,
40
+ "key" : str ,
41
+ "value" : str ,
42
+ },
43
+ )
44
+
45
+
46
+ OAuth2AuthSetting = TypedDict (
47
+ "OAuth2AuthSetting" ,
48
+ {
49
+ "type" : Literal ["oauth2" ],
50
+ "in" : Literal ["header" ],
51
+ "key" : Literal ["Authorization" ],
52
+ "value" : str ,
53
+ },
54
+ )
55
+
56
+
57
+ APIKeyAuthSetting = TypedDict (
58
+ "APIKeyAuthSetting" ,
59
+ {
60
+ "type" : Literal ["api_key" ],
61
+ "in" : str ,
62
+ "key" : str ,
63
+ "value" : Optional [str ],
64
+ },
65
+ )
66
+
67
+
68
+ BasicAuthSetting = TypedDict (
69
+ "BasicAuthSetting" ,
70
+ {
71
+ "type" : Literal ["basic" ],
72
+ "in" : Literal ["header" ],
73
+ "key" : Literal ["Authorization" ],
74
+ "value" : Optional [str ],
75
+ },
76
+ )
77
+
78
+
79
+ BearerFormatAuthSetting = TypedDict (
80
+ "BearerFormatAuthSetting" ,
81
+ {
82
+ "type" : Literal ["bearer" ],
83
+ "in" : Literal ["header" ],
84
+ "format" : Literal ["JWT" ],
85
+ "key" : Literal ["Authorization" ],
86
+ "value" : str ,
87
+ },
88
+ )
89
+
90
+
91
+ BearerAuthSetting = TypedDict (
92
+ "BearerAuthSetting" ,
93
+ {
94
+ "type" : Literal ["bearer" ],
95
+ "in" : Literal ["header" ],
96
+ "key" : Literal ["Authorization" ],
97
+ "value" : str ,
98
+ },
99
+ )
100
+
101
+
102
+ HTTPSignatureAuthSetting = TypedDict (
103
+ "HTTPSignatureAuthSetting" ,
104
+ {
105
+ "type" : Literal ["http-signature" ],
106
+ "in" : Literal ["header" ],
107
+ "key" : Literal ["Authorization" ],
108
+ "value" : None ,
109
+ },
110
+ )
111
+
112
+
113
+ AuthSettings = TypedDict (
114
+ "AuthSettings" ,
115
+ {
116
+ },
117
+ total = False ,
118
+ )
119
+
120
+
121
+ class HostSettingVariable (TypedDict ):
122
+ description : str
123
+ default_value : str
124
+ enum_values : List [str ]
125
+
126
+
127
+ class HostSetting (TypedDict ):
128
+ url : str
129
+ description : str
130
+ variables : NotRequired [Dict [str , HostSettingVariable ]]
131
+
132
+
31
133
class Configuration :
32
134
"""This class contains various settings of the API client.
33
135
@@ -61,20 +163,26 @@ class Configuration:
61
163
62
164
"""
63
165
64
- _default = None
65
-
66
- def __init__ (self , host = None ,
67
- api_key = None , api_key_prefix = None ,
68
- username = None , password = None ,
69
- access_token = None ,
70
- server_index = None , server_variables = None ,
71
- server_operation_index = None , server_operation_variables = None ,
72
- ignore_operation_servers = False ,
73
- ssl_ca_cert = None ,
74
- retries = None ,
75
- * ,
76
- debug : Optional [bool ] = None
77
- ) -> None :
166
+ _default : ClassVar [Optional [Self ]] = None
167
+
168
+ def __init__ (
169
+ self ,
170
+ host : Optional [str ]= None ,
171
+ api_key : Optional [Dict [str , str ]]= None ,
172
+ api_key_prefix : Optional [Dict [str , str ]]= None ,
173
+ username : Optional [str ]= None ,
174
+ password : Optional [str ]= None ,
175
+ access_token : Optional [str ]= None ,
176
+ server_index : Optional [int ]= None ,
177
+ server_variables : Optional [ServerVariablesT ]= None ,
178
+ server_operation_index : Optional [Dict [int , int ]]= None ,
179
+ server_operation_variables : Optional [Dict [int , ServerVariablesT ]]= None ,
180
+ ignore_operation_servers : bool = False ,
181
+ ssl_ca_cert : Optional [str ]= None ,
182
+ retries : Optional [int ] = None ,
183
+ * ,
184
+ debug : Optional [bool ] = None ,
185
+ ) -> None :
78
186
"""Constructor
79
187
"""
80
188
self ._base_path = "http://localhost:59999" if host is None else host
@@ -198,7 +306,7 @@ def __init__(self, host=None,
198
306
"""date format
199
307
"""
200
308
201
- def __deepcopy__ (self , memo ) :
309
+ def __deepcopy__ (self , memo : Dict [ int , Any ]) -> Self :
202
310
cls = self .__class__
203
311
result = cls .__new__ (cls )
204
312
memo [id (self )] = result
@@ -212,11 +320,11 @@ def __deepcopy__(self, memo):
212
320
result .debug = self .debug
213
321
return result
214
322
215
- def __setattr__ (self , name , value ) :
323
+ def __setattr__ (self , name : str , value : Any ) -> None :
216
324
object .__setattr__ (self , name , value )
217
325
218
326
@classmethod
219
- def set_default (cls , default ) :
327
+ def set_default (cls , default : Optional [ Self ]) -> None :
220
328
"""Set default instance of configuration.
221
329
222
330
It stores default configuration, which can be
@@ -227,7 +335,7 @@ def set_default(cls, default):
227
335
cls ._default = default
228
336
229
337
@classmethod
230
- def get_default_copy (cls ):
338
+ def get_default_copy (cls ) -> Self :
231
339
"""Deprecated. Please use `get_default` instead.
232
340
233
341
Deprecated. Please use `get_default` instead.
@@ -237,7 +345,7 @@ def get_default_copy(cls):
237
345
return cls .get_default ()
238
346
239
347
@classmethod
240
- def get_default (cls ):
348
+ def get_default (cls ) -> Self :
241
349
"""Return the default configuration.
242
350
243
351
This method returns newly created, based on default constructor,
@@ -247,11 +355,11 @@ def get_default(cls):
247
355
:return: The configuration object.
248
356
"""
249
357
if cls ._default is None :
250
- cls ._default = Configuration ()
358
+ cls ._default = cls ()
251
359
return cls ._default
252
360
253
361
@property
254
- def logger_file (self ):
362
+ def logger_file (self ) -> Optional [ str ] :
255
363
"""The logger file.
256
364
257
365
If the logger_file is None, then add stream handler and remove file
@@ -263,7 +371,7 @@ def logger_file(self):
263
371
return self .__logger_file
264
372
265
373
@logger_file .setter
266
- def logger_file (self , value ) :
374
+ def logger_file (self , value : Optional [ str ]) -> None :
267
375
"""The logger file.
268
376
269
377
If the logger_file is None, then add stream handler and remove file
@@ -282,7 +390,7 @@ def logger_file(self, value):
282
390
logger .addHandler (self .logger_file_handler )
283
391
284
392
@property
285
- def debug (self ):
393
+ def debug (self ) -> bool :
286
394
"""Debug status
287
395
288
396
:param value: The debug status, True or False.
@@ -291,7 +399,7 @@ def debug(self):
291
399
return self .__debug
292
400
293
401
@debug .setter
294
- def debug (self , value ) :
402
+ def debug (self , value : bool ) -> None :
295
403
"""Debug status
296
404
297
405
:param value: The debug status, True or False.
@@ -313,7 +421,7 @@ def debug(self, value):
313
421
httplib .HTTPConnection .debuglevel = 0
314
422
315
423
@property
316
- def logger_format (self ):
424
+ def logger_format (self ) -> str :
317
425
"""The logger format.
318
426
319
427
The logger_formatter will be updated when sets logger_format.
@@ -324,7 +432,7 @@ def logger_format(self):
324
432
return self .__logger_format
325
433
326
434
@logger_format .setter
327
- def logger_format (self , value ) :
435
+ def logger_format (self , value : str ) -> None :
328
436
"""The logger format.
329
437
330
438
The logger_formatter will be updated when sets logger_format.
@@ -335,7 +443,7 @@ def logger_format(self, value):
335
443
self .__logger_format = value
336
444
self .logger_formatter = logging .Formatter (self .__logger_format )
337
445
338
- def get_api_key_with_prefix (self , identifier , alias = None ):
446
+ def get_api_key_with_prefix (self , identifier : str , alias : Optional [ str ] = None ) -> Optional [ str ] :
339
447
"""Gets API key (with prefix if set).
340
448
341
449
:param identifier: The identifier of apiKey.
@@ -352,7 +460,9 @@ def get_api_key_with_prefix(self, identifier, alias=None):
352
460
else :
353
461
return key
354
462
355
- def get_basic_auth_token (self ):
463
+ return None
464
+
465
+ def get_basic_auth_token (self ) -> Optional [str ]:
356
466
"""Gets HTTP basic authentication header (string).
357
467
358
468
:return: The token for basic HTTP authentication.
@@ -367,15 +477,15 @@ def get_basic_auth_token(self):
367
477
basic_auth = username + ':' + password
368
478
).get ('authorization' )
369
479
370
- def auth_settings (self ):
480
+ def auth_settings (self )-> AuthSettings :
371
481
"""Gets Auth Settings dict for api client.
372
482
373
483
:return: The Auth Settings information dict.
374
484
"""
375
- auth = {}
485
+ auth : AuthSettings = {}
376
486
return auth
377
487
378
- def to_debug_report (self ):
488
+ def to_debug_report (self ) -> str :
379
489
"""Gets the essential information for debugging.
380
490
381
491
:return: The report for debugging.
@@ -387,7 +497,7 @@ def to_debug_report(self):
387
497
"SDK Package Version: 0.0.1" .\
388
498
format (env = sys .platform , pyversion = sys .version )
389
499
390
- def get_host_settings (self ):
500
+ def get_host_settings (self ) -> List [ HostSetting ] :
391
501
"""Gets an array of host settings
392
502
393
503
:return: An array of host settings
@@ -399,7 +509,12 @@ def get_host_settings(self):
399
509
}
400
510
]
401
511
402
- def get_host_from_settings (self , index , variables = None , servers = None ):
512
+ def get_host_from_settings (
513
+ self ,
514
+ index : Optional [int ],
515
+ variables : Optional [ServerVariablesT ]= None ,
516
+ servers : Optional [List [HostSetting ]]= None ,
517
+ ) -> str :
403
518
"""Gets host URL based on the index and variables
404
519
:param index: array index of the host settings
405
520
:param variables: hash of variable and the corresponding value
@@ -439,12 +554,12 @@ def get_host_from_settings(self, index, variables=None, servers=None):
439
554
return url
440
555
441
556
@property
442
- def host (self ):
557
+ def host (self ) -> str :
443
558
"""Return generated host."""
444
559
return self .get_host_from_settings (self .server_index , variables = self .server_variables )
445
560
446
561
@host .setter
447
- def host (self , value ) :
562
+ def host (self , value : str ) -> None :
448
563
"""Fix base path."""
449
564
self ._base_path = value
450
565
self .server_index = None
0 commit comments