maxcompute-tea-openapi 0.0.4__py3-none-any.whl

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.
@@ -0,0 +1 @@
1
+ __version__ = "0.0.4"
@@ -0,0 +1,690 @@
1
+ # -*- coding: utf-8 -*-
2
+ # This file is auto-generated, don't edit it. Thanks.
3
+ import time
4
+
5
+ from Tea.exceptions import TeaException, UnretryableException
6
+ from Tea.request import TeaRequest
7
+ from Tea.core import TeaCore
8
+ from Tea.model import TeaModel
9
+ from typing import Dict, Any
10
+
11
+ from alibabacloud_credentials.client import Client as CredentialClient
12
+ from maxcompute_tea_openapi import models as openapi_models
13
+ from alibabacloud_tea_util.client import Client as UtilClient
14
+ from alibabacloud_credentials import models as credential_models
15
+ from alibabacloud_tea_util import models as util_models
16
+ from maxcompute_tea_util.client import Client as McUtilClient
17
+
18
+
19
+ class Client:
20
+ _endpoint: str = None
21
+ _project: str = None
22
+ _region_id: str = None
23
+ _protocol: str = None
24
+ _method: str = None
25
+ _user_agent: str = None
26
+ _read_timeout: int = None
27
+ _connect_timeout: int = None
28
+ _credential: CredentialClient = None
29
+ _signature_version: str = None
30
+ _headers: Dict[str, str] = None
31
+ _suffix: str = None
32
+ _global_parameters: openapi_models.GlobalParameters = None
33
+ _odps_endpoint: str = None
34
+
35
+ def __init__(
36
+ self,
37
+ config: openapi_models.Config,
38
+ ):
39
+ """
40
+ Init client with Config
41
+ @param config: config contains the necessary information to create a client
42
+ """
43
+ if UtilClient.is_unset(config):
44
+ raise TeaException({
45
+ 'code': 'ParameterMissing',
46
+ 'message': "'config' can not be unset"
47
+ })
48
+ if not UtilClient.empty(config.access_key_id) and not UtilClient.empty(config.access_key_secret):
49
+ if not UtilClient.empty(config.security_token):
50
+ config.type = 'sts'
51
+ else:
52
+ config.type = 'access_key'
53
+ credential_config = credential_models.Config(
54
+ access_key_id=config.access_key_id,
55
+ type=config.type,
56
+ access_key_secret=config.access_key_secret
57
+ )
58
+ credential_config.security_token = config.security_token
59
+ self._credential = CredentialClient(credential_config)
60
+ elif not UtilClient.empty(config.bearer_token):
61
+ cc = credential_models.Config(
62
+ type='bearer',
63
+ bearer_token=config.bearer_token
64
+ )
65
+ self._credential = CredentialClient(cc)
66
+ elif not UtilClient.is_unset(config.credential):
67
+ self._credential = config.credential
68
+ self._project = config.project
69
+ self._endpoint = config.endpoint
70
+ self._protocol = config.protocol
71
+ self._method = config.method
72
+ self._region_id = config.region_id
73
+ self._user_agent = config.user_agent
74
+ self._read_timeout = config.read_timeout
75
+ self._connect_timeout = config.connect_timeout
76
+ self._signature_version = config.signature_version
77
+ self._global_parameters = config.global_parameters
78
+ self._suffix = config.suffix
79
+ self._odps_endpoint = config.odps_endpoint
80
+
81
+ def do_request(
82
+ self,
83
+ params: openapi_models.Params,
84
+ request: openapi_models.OpenApiRequest,
85
+ runtime: util_models.RuntimeOptions,
86
+ ) -> dict:
87
+ """
88
+ Encapsulate the request and invoke the network
89
+ @param action: api name
90
+ @param version: product version
91
+ @param protocol: http or https
92
+ @param method: e.g. GET
93
+ @param auth_type: authorization type e.g. AK
94
+ @param body_type: response body type e.g. String
95
+ @param request: object of OpenApiRequest
96
+ @param runtime: which controls some details of call api, such as retry times
97
+ @return: the response
98
+ """
99
+ params.validate()
100
+ request.validate()
101
+ runtime.validate()
102
+ _runtime = {
103
+ 'timeouted': 'retry',
104
+ 'readTimeout': UtilClient.default_number(runtime.read_timeout, self._read_timeout),
105
+ 'connectTimeout': UtilClient.default_number(runtime.connect_timeout, self._connect_timeout),
106
+ 'retry': {
107
+ 'retryable': runtime.autoretry,
108
+ 'maxAttempts': UtilClient.default_number(runtime.max_attempts, 3)
109
+ },
110
+ 'backoff': {
111
+ 'policy': UtilClient.default_string(runtime.backoff_policy, 'no'),
112
+ 'period': UtilClient.default_number(runtime.backoff_period, 1)
113
+ },
114
+ 'ignoreSSL': runtime.ignore_ssl
115
+ }
116
+ _last_request = None
117
+ _last_exception = None
118
+ _now = time.time()
119
+ _retry_times = 0
120
+ while TeaCore.allow_retry(_runtime.get('retry'), _retry_times, _now):
121
+ if _retry_times > 0:
122
+ _backoff_time = TeaCore.get_backoff_time(_runtime.get('backoff'), _retry_times)
123
+ if _backoff_time > 0:
124
+ TeaCore.sleep(_backoff_time)
125
+ _retry_times = _retry_times + 1
126
+ try:
127
+ _request = TeaRequest()
128
+ _request.protocol = UtilClient.default_string(request.protocol_override, UtilClient.default_string(self._protocol, params.protocol))
129
+ _request.method = params.method
130
+ if not UtilClient.is_unset(self._suffix):
131
+ _request.pathname = f'/{self._suffix}{params.pathname}'
132
+ else:
133
+ _request.pathname = params.pathname
134
+ if not UtilClient.is_unset(request.pathname_prefix):
135
+ _request.pathname = f'{request.pathname_prefix}{_request.pathname}'
136
+ global_queries = {}
137
+ global_headers = {}
138
+ if not UtilClient.is_unset(self._global_parameters):
139
+ global_params = self._global_parameters
140
+ if not UtilClient.is_unset(global_params.queries):
141
+ global_queries = global_params.queries
142
+ if not UtilClient.is_unset(global_params.headers):
143
+ global_headers = global_params.headers
144
+ extends_headers = {}
145
+ extends_queries = {}
146
+ if not UtilClient.is_unset(runtime.extends_parameters):
147
+ extends_parameters = runtime.extends_parameters
148
+ if not UtilClient.is_unset(extends_parameters.headers):
149
+ extends_headers = extends_parameters.headers
150
+ if not UtilClient.is_unset(extends_parameters.queries):
151
+ extends_queries = extends_parameters.queries
152
+ _request.query = TeaCore.merge(global_queries,
153
+ extends_queries,
154
+ request.query)
155
+ # endpoint is setted in product client
156
+ _request.headers = TeaCore.merge({
157
+ 'host': UtilClient.default_string(request.endpoint_override, self._endpoint),
158
+ 'user-agent': self.get_user_agent(),
159
+ 'x-odps-user-agent': self.get_user_agent(),
160
+ 'Date': McUtilClient.get_api_timestamp()
161
+ }, global_headers,
162
+ extends_headers,
163
+ request.headers)
164
+ if not UtilClient.is_unset(request.stream):
165
+ tmp = UtilClient.read_as_bytes(request.stream)
166
+ _request.body = tmp
167
+ if not UtilClient.is_unset(request.body):
168
+ json_obj = UtilClient.to_jsonstring(request.body)
169
+ _request.body = json_obj
170
+ _request.headers['content-type'] = 'application/json; charset=utf-8'
171
+ canonical_string = McUtilClient.build_canonical_string(params.method, params.pathname, _request.query, _request.headers)
172
+ if not UtilClient.equal_string(params.auth_type, 'Anonymous'):
173
+ if UtilClient.is_unset(self._credential):
174
+ raise TeaException({
175
+ 'code': f'InvalidCredentials',
176
+ 'message': f'Please set up the credentials correctly. If you are setting them through environment variables, please ensure that ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET are set correctly. See https://help.aliyun.com/zh/sdk/developer-reference/configure-the-alibaba-cloud-accesskey-environment-variable-on-linux-macos-and-windows-systems for more details.'
177
+ })
178
+ credential_model = self._credential.get_credential()
179
+ auth_type = credential_model.type
180
+ if UtilClient.equal_string(auth_type, 'bearer'):
181
+ bearer_token = credential_model.bearer_token
182
+ _request.headers['x-odps-bearer-token'] = bearer_token
183
+ else:
184
+ access_key_id = credential_model.access_key_id
185
+ access_key_secret = credential_model.access_key_secret
186
+ security_token = credential_model.security_token
187
+ _request.headers['Authorization'] = McUtilClient.get_signature(canonical_string, access_key_id, access_key_secret)
188
+ if not UtilClient.empty(security_token):
189
+ _request.headers['authorization-sts-token'] = security_token
190
+ _last_request = _request
191
+ _response = TeaCore.do_action(_request, _runtime)
192
+ if UtilClient.equal_number(_response.status_code, 204):
193
+ return {
194
+ 'headers': _response.headers
195
+ }
196
+ if UtilClient.is_4xx(_response.status_code) or UtilClient.is_5xx(_response.status_code):
197
+ err = {}
198
+ response_body = UtilClient.read_as_string(_response.body)
199
+ try:
200
+ _res = UtilClient.parse_json(response_body)
201
+ err = UtilClient.assert_as_map(_res)
202
+ except Exception as error:
203
+ err = {}
204
+ err['Code'] = 'Unknown'
205
+ err['Message'] = response_body
206
+ request_id = McUtilClient.to_string(self.default_any(_response.headers.get('x-odps-request-id'), _response.headers.get('X-Odps-Request-Id')))
207
+ err['statusCode'] = _response.status_code
208
+ raise TeaException({
209
+ 'code': f"{self.default_any(err.get('Code'), err.get('code'))}",
210
+ 'message': f"code: {_response.status_code}, {self.default_any(err.get('Message'), err.get('message'))} request id: {request_id}",
211
+ 'data': err,
212
+ 'description': f"{self.default_any(err.get('Description'), err.get('description'))}",
213
+ 'accessDeniedDetail': self.default_any(err.get('AccessDeniedDetail'), err.get('accessDeniedDetail'))
214
+ })
215
+ if UtilClient.equal_string(params.body_type, 'binary'):
216
+ resp = {
217
+ 'body': _response.body,
218
+ 'headers': _response.headers,
219
+ 'statusCode': _response.status_code
220
+ }
221
+ return resp
222
+ elif UtilClient.equal_string(params.body_type, 'byte'):
223
+ byt = UtilClient.read_as_bytes(_response.body)
224
+ return {
225
+ 'body': byt,
226
+ 'headers': _response.headers,
227
+ 'statusCode': _response.status_code
228
+ }
229
+ elif UtilClient.equal_string(params.body_type, 'string'):
230
+ str = UtilClient.read_as_string(_response.body)
231
+ return {
232
+ 'body': str,
233
+ 'headers': _response.headers,
234
+ 'statusCode': _response.status_code
235
+ }
236
+ elif UtilClient.equal_string(params.body_type, 'json'):
237
+ obj = UtilClient.read_as_json(_response.body)
238
+ res = UtilClient.assert_as_map(obj)
239
+ return res
240
+ elif UtilClient.equal_string(params.body_type, 'array'):
241
+ arr = UtilClient.read_as_json(_response.body)
242
+ return {
243
+ 'body': arr,
244
+ 'headers': _response.headers,
245
+ 'statusCode': _response.status_code
246
+ }
247
+ else:
248
+ anything = UtilClient.read_as_string(_response.body)
249
+ return {
250
+ 'body': anything,
251
+ 'headers': _response.headers,
252
+ 'statusCode': _response.status_code
253
+ }
254
+ except Exception as e:
255
+ if TeaCore.is_retryable(e):
256
+ _last_exception = e
257
+ continue
258
+ raise e
259
+ raise UnretryableException(_last_request, _last_exception)
260
+
261
+ async def do_request_async(
262
+ self,
263
+ params: openapi_models.Params,
264
+ request: openapi_models.OpenApiRequest,
265
+ runtime: util_models.RuntimeOptions,
266
+ ) -> dict:
267
+ """
268
+ Encapsulate the request and invoke the network
269
+ @param action: api name
270
+ @param version: product version
271
+ @param protocol: http or https
272
+ @param method: e.g. GET
273
+ @param auth_type: authorization type e.g. AK
274
+ @param body_type: response body type e.g. String
275
+ @param request: object of OpenApiRequest
276
+ @param runtime: which controls some details of call api, such as retry times
277
+ @return: the response
278
+ """
279
+ params.validate()
280
+ request.validate()
281
+ runtime.validate()
282
+ _runtime = {
283
+ 'timeouted': 'retry',
284
+ 'readTimeout': UtilClient.default_number(runtime.read_timeout, self._read_timeout),
285
+ 'connectTimeout': UtilClient.default_number(runtime.connect_timeout, self._connect_timeout),
286
+ 'retry': {
287
+ 'retryable': runtime.autoretry,
288
+ 'maxAttempts': UtilClient.default_number(runtime.max_attempts, 3)
289
+ },
290
+ 'backoff': {
291
+ 'policy': UtilClient.default_string(runtime.backoff_policy, 'no'),
292
+ 'period': UtilClient.default_number(runtime.backoff_period, 1)
293
+ },
294
+ 'ignoreSSL': runtime.ignore_ssl
295
+ }
296
+ _last_request = None
297
+ _last_exception = None
298
+ _now = time.time()
299
+ _retry_times = 0
300
+ while TeaCore.allow_retry(_runtime.get('retry'), _retry_times, _now):
301
+ if _retry_times > 0:
302
+ _backoff_time = TeaCore.get_backoff_time(_runtime.get('backoff'), _retry_times)
303
+ if _backoff_time > 0:
304
+ TeaCore.sleep(_backoff_time)
305
+ _retry_times = _retry_times + 1
306
+ try:
307
+ _request = TeaRequest()
308
+ _request.protocol = UtilClient.default_string(request.protocol_override, UtilClient.default_string(self._protocol, params.protocol))
309
+ _request.method = params.method
310
+ if not UtilClient.is_unset(self._suffix):
311
+ _request.pathname = f'/{self._suffix}{params.pathname}'
312
+ else:
313
+ _request.pathname = params.pathname
314
+ if not UtilClient.is_unset(request.pathname_prefix):
315
+ _request.pathname = f'{request.pathname_prefix}{_request.pathname}'
316
+ global_queries = {}
317
+ global_headers = {}
318
+ if not UtilClient.is_unset(self._global_parameters):
319
+ global_params = self._global_parameters
320
+ if not UtilClient.is_unset(global_params.queries):
321
+ global_queries = global_params.queries
322
+ if not UtilClient.is_unset(global_params.headers):
323
+ global_headers = global_params.headers
324
+ extends_headers = {}
325
+ extends_queries = {}
326
+ if not UtilClient.is_unset(runtime.extends_parameters):
327
+ extends_parameters = runtime.extends_parameters
328
+ if not UtilClient.is_unset(extends_parameters.headers):
329
+ extends_headers = extends_parameters.headers
330
+ if not UtilClient.is_unset(extends_parameters.queries):
331
+ extends_queries = extends_parameters.queries
332
+ _request.query = TeaCore.merge(global_queries,
333
+ extends_queries,
334
+ request.query)
335
+ # endpoint is setted in product client
336
+ _request.headers = TeaCore.merge({
337
+ 'host': UtilClient.default_string(request.endpoint_override, self._endpoint),
338
+ 'user-agent': self.get_user_agent(),
339
+ 'x-odps-user-agent': self.get_user_agent(),
340
+ 'Date': McUtilClient.get_api_timestamp()
341
+ }, global_headers,
342
+ extends_headers,
343
+ request.headers)
344
+ if not UtilClient.is_unset(request.stream):
345
+ tmp = await UtilClient.read_as_bytes_async(request.stream)
346
+ _request.body = tmp
347
+ if not UtilClient.is_unset(request.body):
348
+ json_obj = UtilClient.to_jsonstring(request.body)
349
+ _request.body = json_obj
350
+ _request.headers['content-type'] = 'application/json; charset=utf-8'
351
+ canonical_string = McUtilClient.build_canonical_string(params.method, params.pathname, _request.query, _request.headers)
352
+ if not UtilClient.equal_string(params.auth_type, 'Anonymous'):
353
+ if UtilClient.is_unset(self._credential):
354
+ raise TeaException({
355
+ 'code': f'InvalidCredentials',
356
+ 'message': f'Please set up the credentials correctly. If you are setting them through environment variables, please ensure that ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET are set correctly. See https://help.aliyun.com/zh/sdk/developer-reference/configure-the-alibaba-cloud-accesskey-environment-variable-on-linux-macos-and-windows-systems for more details.'
357
+ })
358
+ credential_model = await self._credential.get_credential_async()
359
+ auth_type = credential_model.type
360
+ if UtilClient.equal_string(auth_type, 'bearer'):
361
+ bearer_token = credential_model.bearer_token
362
+ _request.headers['x-odps-bearer-token'] = bearer_token
363
+ else:
364
+ access_key_id = credential_model.access_key_id
365
+ access_key_secret = credential_model.access_key_secret
366
+ security_token = credential_model.security_token
367
+ _request.headers['Authorization'] = McUtilClient.get_signature(canonical_string, access_key_id, access_key_secret)
368
+ if not UtilClient.empty(security_token):
369
+ _request.headers['authorization-sts-token'] = security_token
370
+ _last_request = _request
371
+ _response = await TeaCore.async_do_action(_request, _runtime)
372
+ if UtilClient.equal_number(_response.status_code, 204):
373
+ return {
374
+ 'headers': _response.headers
375
+ }
376
+ if UtilClient.is_4xx(_response.status_code) or UtilClient.is_5xx(_response.status_code):
377
+ err = {}
378
+ response_body = await UtilClient.read_as_string_async(_response.body)
379
+ try:
380
+ _res = UtilClient.parse_json(response_body)
381
+ err = UtilClient.assert_as_map(_res)
382
+ except Exception as error:
383
+ err = {}
384
+ err['Code'] = 'Unknown'
385
+ err['Message'] = response_body
386
+ request_id = McUtilClient.to_string(self.default_any(_response.headers.get('x-odps-request-id'), _response.headers.get('X-Odps-Request-Id')))
387
+ err['statusCode'] = _response.status_code
388
+ raise TeaException({
389
+ 'code': f"{self.default_any(err.get('Code'), err.get('code'))}",
390
+ 'message': f"code: {_response.status_code}, {self.default_any(err.get('Message'), err.get('message'))} request id: {request_id}",
391
+ 'data': err,
392
+ 'description': f"{self.default_any(err.get('Description'), err.get('description'))}",
393
+ 'accessDeniedDetail': self.default_any(err.get('AccessDeniedDetail'), err.get('accessDeniedDetail'))
394
+ })
395
+ if UtilClient.equal_string(params.body_type, 'binary'):
396
+ resp = {
397
+ 'body': _response.body,
398
+ 'headers': _response.headers,
399
+ 'statusCode': _response.status_code
400
+ }
401
+ return resp
402
+ elif UtilClient.equal_string(params.body_type, 'byte'):
403
+ byt = await UtilClient.read_as_bytes_async(_response.body)
404
+ return {
405
+ 'body': byt,
406
+ 'headers': _response.headers,
407
+ 'statusCode': _response.status_code
408
+ }
409
+ elif UtilClient.equal_string(params.body_type, 'string'):
410
+ str = await UtilClient.read_as_string_async(_response.body)
411
+ return {
412
+ 'body': str,
413
+ 'headers': _response.headers,
414
+ 'statusCode': _response.status_code
415
+ }
416
+ elif UtilClient.equal_string(params.body_type, 'json'):
417
+ obj = await UtilClient.read_as_json_async(_response.body)
418
+ res = UtilClient.assert_as_map(obj)
419
+ return res
420
+ elif UtilClient.equal_string(params.body_type, 'array'):
421
+ arr = await UtilClient.read_as_json_async(_response.body)
422
+ return {
423
+ 'body': arr,
424
+ 'headers': _response.headers,
425
+ 'statusCode': _response.status_code
426
+ }
427
+ else:
428
+ anything = await UtilClient.read_as_string_async(_response.body)
429
+ return {
430
+ 'body': anything,
431
+ 'headers': _response.headers,
432
+ 'statusCode': _response.status_code
433
+ }
434
+ except Exception as e:
435
+ if TeaCore.is_retryable(e):
436
+ _last_exception = e
437
+ continue
438
+ raise e
439
+ raise UnretryableException(_last_request, _last_exception)
440
+
441
+ def request_with_model(
442
+ self,
443
+ model: TeaModel,
444
+ method: str,
445
+ path: str,
446
+ params: Dict[str, str],
447
+ runtime: util_models.RuntimeOptions,
448
+ ) -> dict:
449
+ UtilClient.validate_model(model)
450
+ req = openapi_models.OpenApiRequest(
451
+ body=UtilClient.to_map(model),
452
+ query=params
453
+ )
454
+ openapi_params = openapi_models.Params(
455
+ pathname=path,
456
+ method=method,
457
+ body_type='json'
458
+ )
459
+ return self.call_api(openapi_params, req, runtime)
460
+
461
+ async def request_with_model_async(
462
+ self,
463
+ model: TeaModel,
464
+ method: str,
465
+ path: str,
466
+ params: Dict[str, str],
467
+ runtime: util_models.RuntimeOptions,
468
+ ) -> dict:
469
+ UtilClient.validate_model(model)
470
+ req = openapi_models.OpenApiRequest(
471
+ body=UtilClient.to_map(model),
472
+ query=params
473
+ )
474
+ openapi_params = openapi_models.Params(
475
+ pathname=path,
476
+ method=method,
477
+ body_type='json'
478
+ )
479
+ return await self.call_api_async(openapi_params, req, runtime)
480
+
481
+ def request_without_model(
482
+ self,
483
+ model: TeaModel,
484
+ method: str,
485
+ path: str,
486
+ params: Dict[str, str],
487
+ runtime: util_models.RuntimeOptions,
488
+ ) -> dict:
489
+ UtilClient.validate_model(model)
490
+ req = openapi_models.OpenApiRequest(
491
+ body=UtilClient.to_map(model),
492
+ query=params
493
+ )
494
+ openapi_params = openapi_models.Params(
495
+ pathname=path,
496
+ method=method,
497
+ body_type='none'
498
+ )
499
+ return self.call_api(openapi_params, req, runtime)
500
+
501
+ async def request_without_model_async(
502
+ self,
503
+ model: TeaModel,
504
+ method: str,
505
+ path: str,
506
+ params: Dict[str, str],
507
+ runtime: util_models.RuntimeOptions,
508
+ ) -> dict:
509
+ UtilClient.validate_model(model)
510
+ req = openapi_models.OpenApiRequest(
511
+ body=UtilClient.to_map(model),
512
+ query=params
513
+ )
514
+ openapi_params = openapi_models.Params(
515
+ pathname=path,
516
+ method=method,
517
+ body_type='none'
518
+ )
519
+ return await self.call_api_async(openapi_params, req, runtime)
520
+
521
+ def call_routing_api(self) -> openapi_models.RoutingResponse:
522
+ req = openapi_models.OpenApiRequest(
523
+ endpoint_override=self._odps_endpoint,
524
+ pathname_prefix='/api'
525
+ )
526
+ openapi_params = openapi_models.Params(
527
+ pathname='/catalogapi',
528
+ method='GET',
529
+ body_type='string'
530
+ )
531
+ return TeaCore.from_map(
532
+ openapi_models.RoutingResponse(),
533
+ self.do_request(openapi_params, req, util_models.RuntimeOptions())
534
+ )
535
+
536
+ async def call_routing_api_async(self) -> openapi_models.RoutingResponse:
537
+ req = openapi_models.OpenApiRequest(
538
+ endpoint_override=self._odps_endpoint,
539
+ pathname_prefix='/api'
540
+ )
541
+ openapi_params = openapi_models.Params(
542
+ pathname='/catalogapi',
543
+ method='GET',
544
+ body_type='string'
545
+ )
546
+ return TeaCore.from_map(
547
+ openapi_models.RoutingResponse(),
548
+ await self.do_request_async(openapi_params, req, util_models.RuntimeOptions())
549
+ )
550
+
551
+ def get_catalog_endpoint(self) -> str:
552
+ resp = self.call_routing_api()
553
+ return resp.body
554
+
555
+ async def get_catalog_endpoint_async(self) -> str:
556
+ resp = await self.call_routing_api_async()
557
+ return resp.body
558
+
559
+ def call_api(
560
+ self,
561
+ params: openapi_models.Params,
562
+ request: openapi_models.OpenApiRequest,
563
+ runtime: util_models.RuntimeOptions,
564
+ ) -> dict:
565
+ if UtilClient.is_unset(params):
566
+ raise TeaException({
567
+ 'code': 'ParameterMissing',
568
+ 'message': "'params' can not be unset"
569
+ })
570
+ if UtilClient.empty(self._endpoint) and not UtilClient.empty(self._odps_endpoint):
571
+ self._endpoint = self.get_catalog_endpoint()
572
+ return self.do_request(params, request, runtime)
573
+
574
+ async def call_api_async(
575
+ self,
576
+ params: openapi_models.Params,
577
+ request: openapi_models.OpenApiRequest,
578
+ runtime: util_models.RuntimeOptions,
579
+ ) -> dict:
580
+ if UtilClient.is_unset(params):
581
+ raise TeaException({
582
+ 'code': 'ParameterMissing',
583
+ 'message': "'params' can not be unset"
584
+ })
585
+ if UtilClient.empty(self._endpoint) and not UtilClient.empty(self._odps_endpoint):
586
+ self._endpoint = await self.get_catalog_endpoint_async()
587
+ return await self.do_request_async(params, request, runtime)
588
+
589
+ def get_user_agent(self) -> str:
590
+ """
591
+ Get user agent
592
+ @return: user agent
593
+ """
594
+ user_agent = UtilClient.get_user_agent(self._user_agent)
595
+ return user_agent
596
+
597
+ def get_access_key_id(self) -> str:
598
+ """
599
+ Get accesskey id by using credential
600
+ @return: accesskey id
601
+ """
602
+ if UtilClient.is_unset(self._credential):
603
+ return ''
604
+ access_key_id = self._credential.get_access_key_id()
605
+ return access_key_id
606
+
607
+ async def get_access_key_id_async(self) -> str:
608
+ """
609
+ Get accesskey id by using credential
610
+ @return: accesskey id
611
+ """
612
+ if UtilClient.is_unset(self._credential):
613
+ return ''
614
+ access_key_id = await self._credential.get_access_key_id_async()
615
+ return access_key_id
616
+
617
+ def get_access_key_secret(self) -> str:
618
+ """
619
+ Get accesskey secret by using credential
620
+ @return: accesskey secret
621
+ """
622
+ if UtilClient.is_unset(self._credential):
623
+ return ''
624
+ secret = self._credential.get_access_key_secret()
625
+ return secret
626
+
627
+ async def get_access_key_secret_async(self) -> str:
628
+ """
629
+ Get accesskey secret by using credential
630
+ @return: accesskey secret
631
+ """
632
+ if UtilClient.is_unset(self._credential):
633
+ return ''
634
+ secret = await self._credential.get_access_key_secret_async()
635
+ return secret
636
+
637
+ def get_security_token(self) -> str:
638
+ """
639
+ Get security token by using credential
640
+ @return: security token
641
+ """
642
+ if UtilClient.is_unset(self._credential):
643
+ return ''
644
+ token = self._credential.get_security_token()
645
+ return token
646
+
647
+ async def get_security_token_async(self) -> str:
648
+ """
649
+ Get security token by using credential
650
+ @return: security token
651
+ """
652
+ if UtilClient.is_unset(self._credential):
653
+ return ''
654
+ token = await self._credential.get_security_token_async()
655
+ return token
656
+
657
+ def get_bearer_token(self) -> str:
658
+ """
659
+ Get bearer token by credential
660
+ @return: bearer token
661
+ """
662
+ if UtilClient.is_unset(self._credential):
663
+ return ''
664
+ token = self._credential.get_bearer_token()
665
+ return token
666
+
667
+ async def get_bearer_token_async(self) -> str:
668
+ """
669
+ Get bearer token by credential
670
+ @return: bearer token
671
+ """
672
+ if UtilClient.is_unset(self._credential):
673
+ return ''
674
+ token = self._credential.get_bearer_token()
675
+ return token
676
+
677
+ @staticmethod
678
+ def default_any(
679
+ input_value: Any,
680
+ default_value: Any,
681
+ ) -> Any:
682
+ """
683
+ If inputValue is not null, return it or return defaultValue
684
+ @param input_value: users input value
685
+ @param default_value: default value
686
+ @return: the final result
687
+ """
688
+ if UtilClient.is_unset(input_value):
689
+ return default_value
690
+ return input_value
@@ -0,0 +1,377 @@
1
+ # -*- coding: utf-8 -*-
2
+ # This file is auto-generated, don't edit it. Thanks.
3
+ from Tea.model import TeaModel
4
+ from typing import Dict, Any, BinaryIO
5
+
6
+ from alibabacloud_credentials.client import Client as CredentialClient
7
+
8
+
9
+ class GlobalParameters(TeaModel):
10
+ def __init__(
11
+ self,
12
+ headers: Dict[str, str] = None,
13
+ queries: Dict[str, str] = None,
14
+ ):
15
+ self.headers = headers
16
+ self.queries = queries
17
+
18
+ def validate(self):
19
+ pass
20
+
21
+ def to_map(self):
22
+ _map = super().to_map()
23
+ if _map is not None:
24
+ return _map
25
+
26
+ result = dict()
27
+ if self.headers is not None:
28
+ result['headers'] = self.headers
29
+ if self.queries is not None:
30
+ result['queries'] = self.queries
31
+ return result
32
+
33
+ def from_map(self, m: dict = None):
34
+ m = m or dict()
35
+ if m.get('headers') is not None:
36
+ self.headers = m.get('headers')
37
+ if m.get('queries') is not None:
38
+ self.queries = m.get('queries')
39
+ return self
40
+
41
+
42
+ class Config(TeaModel):
43
+ """
44
+ Model for initing client
45
+ """
46
+ def __init__(
47
+ self,
48
+ project: str = None,
49
+ access_key_id: str = None,
50
+ access_key_secret: str = None,
51
+ security_token: str = None,
52
+ bearer_token: str = None,
53
+ protocol: str = None,
54
+ method: str = None,
55
+ region_id: str = None,
56
+ read_timeout: int = None,
57
+ connect_timeout: int = None,
58
+ credential: CredentialClient = None,
59
+ endpoint: str = None,
60
+ type: str = None,
61
+ user_agent: str = None,
62
+ suffix: str = None,
63
+ signature_version: str = None,
64
+ global_parameters: GlobalParameters = None,
65
+ odps_endpoint: str = None,
66
+ ):
67
+ # project
68
+ self.project = project
69
+ # accesskey id
70
+ self.access_key_id = access_key_id
71
+ # accesskey secret
72
+ self.access_key_secret = access_key_secret
73
+ # security token
74
+ self.security_token = security_token
75
+ # bearer token
76
+ self.bearer_token = bearer_token
77
+ # http protocol
78
+ self.protocol = protocol
79
+ # http method
80
+ self.method = method
81
+ # region id
82
+ self.region_id = region_id
83
+ # read timeout
84
+ self.read_timeout = read_timeout
85
+ # connect timeout
86
+ self.connect_timeout = connect_timeout
87
+ # credential
88
+ self.credential = credential
89
+ # endpoint
90
+ self.endpoint = endpoint
91
+ # credential type
92
+ self.type = type
93
+ # user agent
94
+ self.user_agent = user_agent
95
+ # suffix for endpoint
96
+ self.suffix = suffix
97
+ # Signature Version
98
+ self.signature_version = signature_version
99
+ # Global Parameters
100
+ self.global_parameters = global_parameters
101
+ # ODPS endpoint, used to resolve catalog endpoint via routing API when endpoint is not set
102
+ self.odps_endpoint = odps_endpoint
103
+
104
+ def validate(self):
105
+ if self.global_parameters:
106
+ self.global_parameters.validate()
107
+
108
+ def to_map(self):
109
+ _map = super().to_map()
110
+ if _map is not None:
111
+ return _map
112
+
113
+ result = dict()
114
+ if self.project is not None:
115
+ result['project'] = self.project
116
+ if self.access_key_id is not None:
117
+ result['accessKeyId'] = self.access_key_id
118
+ if self.access_key_secret is not None:
119
+ result['accessKeySecret'] = self.access_key_secret
120
+ if self.security_token is not None:
121
+ result['securityToken'] = self.security_token
122
+ if self.bearer_token is not None:
123
+ result['bearerToken'] = self.bearer_token
124
+ if self.protocol is not None:
125
+ result['protocol'] = self.protocol
126
+ if self.method is not None:
127
+ result['method'] = self.method
128
+ if self.region_id is not None:
129
+ result['regionId'] = self.region_id
130
+ if self.read_timeout is not None:
131
+ result['readTimeout'] = self.read_timeout
132
+ if self.connect_timeout is not None:
133
+ result['connectTimeout'] = self.connect_timeout
134
+ if self.credential is not None:
135
+ result['credential'] = self.credential
136
+ if self.endpoint is not None:
137
+ result['endpoint'] = self.endpoint
138
+ if self.type is not None:
139
+ result['type'] = self.type
140
+ if self.user_agent is not None:
141
+ result['userAgent'] = self.user_agent
142
+ if self.suffix is not None:
143
+ result['suffix'] = self.suffix
144
+ if self.signature_version is not None:
145
+ result['signatureVersion'] = self.signature_version
146
+ if self.global_parameters is not None:
147
+ result['globalParameters'] = self.global_parameters.to_map()
148
+ if self.odps_endpoint is not None:
149
+ result['odpsEndpoint'] = self.odps_endpoint
150
+ return result
151
+
152
+ def from_map(self, m: dict = None):
153
+ m = m or dict()
154
+ if m.get('project') is not None:
155
+ self.project = m.get('project')
156
+ if m.get('accessKeyId') is not None:
157
+ self.access_key_id = m.get('accessKeyId')
158
+ if m.get('accessKeySecret') is not None:
159
+ self.access_key_secret = m.get('accessKeySecret')
160
+ if m.get('securityToken') is not None:
161
+ self.security_token = m.get('securityToken')
162
+ if m.get('bearerToken') is not None:
163
+ self.bearer_token = m.get('bearerToken')
164
+ if m.get('protocol') is not None:
165
+ self.protocol = m.get('protocol')
166
+ if m.get('method') is not None:
167
+ self.method = m.get('method')
168
+ if m.get('regionId') is not None:
169
+ self.region_id = m.get('regionId')
170
+ if m.get('readTimeout') is not None:
171
+ self.read_timeout = m.get('readTimeout')
172
+ if m.get('connectTimeout') is not None:
173
+ self.connect_timeout = m.get('connectTimeout')
174
+ if m.get('credential') is not None:
175
+ self.credential = m.get('credential')
176
+ if m.get('endpoint') is not None:
177
+ self.endpoint = m.get('endpoint')
178
+ if m.get('type') is not None:
179
+ self.type = m.get('type')
180
+ if m.get('userAgent') is not None:
181
+ self.user_agent = m.get('userAgent')
182
+ if m.get('suffix') is not None:
183
+ self.suffix = m.get('suffix')
184
+ if m.get('signatureVersion') is not None:
185
+ self.signature_version = m.get('signatureVersion')
186
+ if m.get('globalParameters') is not None:
187
+ temp_model = GlobalParameters()
188
+ self.global_parameters = temp_model.from_map(m['globalParameters'])
189
+ if m.get('odpsEndpoint') is not None:
190
+ self.odps_endpoint = m.get('odpsEndpoint')
191
+ return self
192
+
193
+
194
+ class Params(TeaModel):
195
+ def __init__(
196
+ self,
197
+ action: str = None,
198
+ version: str = None,
199
+ protocol: str = None,
200
+ pathname: str = None,
201
+ method: str = None,
202
+ auth_type: str = None,
203
+ body_type: str = None,
204
+ req_body_type: str = None,
205
+ style: str = None,
206
+ ):
207
+ self.action = action
208
+ self.version = version
209
+ self.protocol = protocol
210
+ self.pathname = pathname
211
+ self.method = method
212
+ self.auth_type = auth_type
213
+ self.body_type = body_type
214
+ self.req_body_type = req_body_type
215
+ self.style = style
216
+
217
+ def validate(self):
218
+ self.validate_required(self.pathname, 'pathname')
219
+ self.validate_required(self.method, 'method')
220
+
221
+ def to_map(self):
222
+ _map = super().to_map()
223
+ if _map is not None:
224
+ return _map
225
+
226
+ result = dict()
227
+ if self.action is not None:
228
+ result['action'] = self.action
229
+ if self.version is not None:
230
+ result['version'] = self.version
231
+ if self.protocol is not None:
232
+ result['protocol'] = self.protocol
233
+ if self.pathname is not None:
234
+ result['pathname'] = self.pathname
235
+ if self.method is not None:
236
+ result['method'] = self.method
237
+ if self.auth_type is not None:
238
+ result['authType'] = self.auth_type
239
+ if self.body_type is not None:
240
+ result['bodyType'] = self.body_type
241
+ if self.req_body_type is not None:
242
+ result['reqBodyType'] = self.req_body_type
243
+ if self.style is not None:
244
+ result['style'] = self.style
245
+ return result
246
+
247
+ def from_map(self, m: dict = None):
248
+ m = m or dict()
249
+ if m.get('action') is not None:
250
+ self.action = m.get('action')
251
+ if m.get('version') is not None:
252
+ self.version = m.get('version')
253
+ if m.get('protocol') is not None:
254
+ self.protocol = m.get('protocol')
255
+ if m.get('pathname') is not None:
256
+ self.pathname = m.get('pathname')
257
+ if m.get('method') is not None:
258
+ self.method = m.get('method')
259
+ if m.get('authType') is not None:
260
+ self.auth_type = m.get('authType')
261
+ if m.get('bodyType') is not None:
262
+ self.body_type = m.get('bodyType')
263
+ if m.get('reqBodyType') is not None:
264
+ self.req_body_type = m.get('reqBodyType')
265
+ if m.get('style') is not None:
266
+ self.style = m.get('style')
267
+ return self
268
+
269
+
270
+ class OpenApiRequest(TeaModel):
271
+ def __init__(
272
+ self,
273
+ headers: Dict[str, str] = None,
274
+ query: Dict[str, str] = None,
275
+ body: Any = None,
276
+ stream: BinaryIO = None,
277
+ host_map: Dict[str, str] = None,
278
+ endpoint_override: str = None,
279
+ pathname_prefix: str = None,
280
+ protocol_override: str = None,
281
+ ):
282
+ self.headers = headers
283
+ self.query = query
284
+ self.body = body
285
+ self.stream = stream
286
+ self.host_map = host_map
287
+ self.endpoint_override = endpoint_override
288
+ self.pathname_prefix = pathname_prefix
289
+ self.protocol_override = protocol_override
290
+
291
+ def validate(self):
292
+ pass
293
+
294
+ def to_map(self):
295
+ _map = super().to_map()
296
+ if _map is not None:
297
+ return _map
298
+
299
+ result = dict()
300
+ if self.headers is not None:
301
+ result['headers'] = self.headers
302
+ if self.query is not None:
303
+ result['query'] = self.query
304
+ if self.body is not None:
305
+ result['body'] = self.body
306
+ if self.stream is not None:
307
+ result['stream'] = self.stream
308
+ if self.host_map is not None:
309
+ result['hostMap'] = self.host_map
310
+ if self.endpoint_override is not None:
311
+ result['endpointOverride'] = self.endpoint_override
312
+ if self.pathname_prefix is not None:
313
+ result['pathnamePrefix'] = self.pathname_prefix
314
+ if self.protocol_override is not None:
315
+ result['protocolOverride'] = self.protocol_override
316
+ return result
317
+
318
+ def from_map(self, m: dict = None):
319
+ m = m or dict()
320
+ if m.get('headers') is not None:
321
+ self.headers = m.get('headers')
322
+ if m.get('query') is not None:
323
+ self.query = m.get('query')
324
+ if m.get('body') is not None:
325
+ self.body = m.get('body')
326
+ if m.get('stream') is not None:
327
+ self.stream = m.get('stream')
328
+ if m.get('hostMap') is not None:
329
+ self.host_map = m.get('hostMap')
330
+ if m.get('endpointOverride') is not None:
331
+ self.endpoint_override = m.get('endpointOverride')
332
+ if m.get('pathnamePrefix') is not None:
333
+ self.pathname_prefix = m.get('pathnamePrefix')
334
+ if m.get('protocolOverride') is not None:
335
+ self.protocol_override = m.get('protocolOverride')
336
+ return self
337
+
338
+
339
+ class RoutingResponse(TeaModel):
340
+ def __init__(
341
+ self,
342
+ body: str = None,
343
+ headers: Dict[str, str] = None,
344
+ status_code: int = None,
345
+ ):
346
+ self.body = body
347
+ self.headers = headers
348
+ self.status_code = status_code
349
+
350
+ def validate(self):
351
+ pass
352
+
353
+ def to_map(self):
354
+ _map = super().to_map()
355
+ if _map is not None:
356
+ return _map
357
+
358
+ result = dict()
359
+ if self.body is not None:
360
+ result['body'] = self.body
361
+ if self.headers is not None:
362
+ result['headers'] = self.headers
363
+ if self.status_code is not None:
364
+ result['statusCode'] = self.status_code
365
+ return result
366
+
367
+ def from_map(self, m: dict = None):
368
+ m = m or dict()
369
+ if m.get('body') is not None:
370
+ self.body = m.get('body')
371
+ if m.get('headers') is not None:
372
+ self.headers = m.get('headers')
373
+ if m.get('statusCode') is not None:
374
+ self.status_code = m.get('statusCode')
375
+ return self
376
+
377
+
@@ -0,0 +1,36 @@
1
+ Metadata-Version: 2.4
2
+ Name: maxcompute_tea_openapi
3
+ Version: 0.0.4
4
+ Summary: Alibaba Cloud MaxCompute openapi SDK Library for Python
5
+ Home-page: https://github.com/aliyun/aliyun-odps-openapi-sdk
6
+ Author: Alibaba Cloud MaxCompute Team
7
+ Author-email: zhangdingxin.zdx@alibaba-inc.com
8
+ License: Apache License 2.0
9
+ Keywords: maxcompute,tea,openapi
10
+ Platform: any
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: Apache Software License
14
+ Classifier: Programming Language :: Python
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.6
17
+ Classifier: Programming Language :: Python :: 3.7
18
+ Classifier: Programming Language :: Python :: 3.8
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Topic :: Software Development
21
+ Requires-Python: >=3.6
22
+ Description-Content-Type: text/markdown
23
+ Requires-Dist: maxcompute_tea_util<1.0.0,>=0.0.1
24
+ Requires-Dist: alibabacloud_tea_util<1.0.0,>=0.3.14
25
+ Requires-Dist: alibabacloud_credentials<2.0.0,>=1.0.2
26
+ Dynamic: author
27
+ Dynamic: author-email
28
+ Dynamic: classifier
29
+ Dynamic: description-content-type
30
+ Dynamic: home-page
31
+ Dynamic: keywords
32
+ Dynamic: license
33
+ Dynamic: platform
34
+ Dynamic: requires-dist
35
+ Dynamic: requires-python
36
+ Dynamic: summary
@@ -0,0 +1,7 @@
1
+ maxcompute_tea_openapi/__init__.py,sha256=1mptEzQihbdyqqzMgdns_j5ZGK9gz7hR2bsgA_TnjO4,22
2
+ maxcompute_tea_openapi/client.py,sha256=Ey5tCQ-mLML7ysmYxRAjCi67vBcZgSVJ2iGzBh8g1Ik,31025
3
+ maxcompute_tea_openapi/models.py,sha256=jkA1Ufh2M-ue09N0Ld1I15avfiZMA-PqNSYRvMn49Ac,12796
4
+ maxcompute_tea_openapi-0.0.4.dist-info/METADATA,sha256=q7cEUXkGqd4QpUowqRIf-yP8rqQe2OC1MpW7fQuBnrU,1282
5
+ maxcompute_tea_openapi-0.0.4.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
6
+ maxcompute_tea_openapi-0.0.4.dist-info/top_level.txt,sha256=ynGm4_autZM7ZP1j4UsrrMCZIUtYxzjz7rnvGoppTVg,23
7
+ maxcompute_tea_openapi-0.0.4.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1 @@
1
+ maxcompute_tea_openapi