maxcompute-tea-openapi 1.0.0__tar.gz → 1.2.0__tar.gz

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.
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: maxcompute_tea_openapi
3
- Version: 1.0.0
3
+ Version: 1.2.0
4
4
  Summary: Alibaba Cloud MaxCompute openapi SDK Library for Python
5
5
  Home-page: https://github.com/aliyun/aliyun-odps-openapi-sdk
6
6
  Author: Alibaba Cloud MaxCompute Team
@@ -21,8 +21,8 @@ Classifier: Topic :: Software Development
21
21
  Requires-Python: >=3.6
22
22
  Description-Content-Type: text/markdown
23
23
  Requires-Dist: maxcompute_tea_util<1.0.0,>=0.0.1
24
- Requires-Dist: alibabacloud_tea_util<1.0.0,>=0.3.13
25
- Requires-Dist: alibabacloud_credentials<1.0.0,>=0.3.6
24
+ Requires-Dist: alibabacloud_tea_util<1.0.0,>=0.3.14
25
+ Requires-Dist: alibabacloud_credentials<2.0.0,>=1.0.2
26
26
  Dynamic: author
27
27
  Dynamic: author-email
28
28
  Dynamic: classifier
@@ -0,0 +1 @@
1
+ __version__ = "1.2.0"
@@ -30,6 +30,7 @@ class Client:
30
30
  _headers: Dict[str, str] = None
31
31
  _suffix: str = None
32
32
  _global_parameters: openapi_models.GlobalParameters = None
33
+ _odps_endpoint: str = None
33
34
 
34
35
  def __init__(
35
36
  self,
@@ -75,6 +76,7 @@ class Client:
75
76
  self._signature_version = config.signature_version
76
77
  self._global_parameters = config.global_parameters
77
78
  self._suffix = config.suffix
79
+ self._odps_endpoint = config.odps_endpoint
78
80
 
79
81
  def do_request(
80
82
  self,
@@ -123,12 +125,14 @@ class Client:
123
125
  _retry_times = _retry_times + 1
124
126
  try:
125
127
  _request = TeaRequest()
126
- _request.protocol = UtilClient.default_string(self._protocol, params.protocol)
128
+ _request.protocol = UtilClient.default_string(request.protocol_override, UtilClient.default_string(self._protocol, params.protocol))
127
129
  _request.method = params.method
128
130
  if not UtilClient.is_unset(self._suffix):
129
131
  _request.pathname = f'/{self._suffix}{params.pathname}'
130
132
  else:
131
133
  _request.pathname = params.pathname
134
+ if not UtilClient.is_unset(request.pathname_prefix):
135
+ _request.pathname = f'{request.pathname_prefix}{_request.pathname}'
132
136
  global_queries = {}
133
137
  global_headers = {}
134
138
  if not UtilClient.is_unset(self._global_parameters):
@@ -150,7 +154,7 @@ class Client:
150
154
  request.query)
151
155
  # endpoint is setted in product client
152
156
  _request.headers = TeaCore.merge({
153
- 'host': self._endpoint,
157
+ 'host': UtilClient.default_string(request.endpoint_override, self._endpoint),
154
158
  'user-agent': self.get_user_agent(),
155
159
  'x-odps-user-agent': self.get_user_agent(),
156
160
  'Date': McUtilClient.get_api_timestamp()
@@ -301,12 +305,14 @@ class Client:
301
305
  _retry_times = _retry_times + 1
302
306
  try:
303
307
  _request = TeaRequest()
304
- _request.protocol = UtilClient.default_string(self._protocol, params.protocol)
308
+ _request.protocol = UtilClient.default_string(request.protocol_override, UtilClient.default_string(self._protocol, params.protocol))
305
309
  _request.method = params.method
306
310
  if not UtilClient.is_unset(self._suffix):
307
311
  _request.pathname = f'/{self._suffix}{params.pathname}'
308
312
  else:
309
313
  _request.pathname = params.pathname
314
+ if not UtilClient.is_unset(request.pathname_prefix):
315
+ _request.pathname = f'{request.pathname_prefix}{_request.pathname}'
310
316
  global_queries = {}
311
317
  global_headers = {}
312
318
  if not UtilClient.is_unset(self._global_parameters):
@@ -328,7 +334,7 @@ class Client:
328
334
  request.query)
329
335
  # endpoint is setted in product client
330
336
  _request.headers = TeaCore.merge({
331
- 'host': self._endpoint,
337
+ 'host': UtilClient.default_string(request.endpoint_override, self._endpoint),
332
338
  'user-agent': self.get_user_agent(),
333
339
  'x-odps-user-agent': self.get_user_agent(),
334
340
  'Date': McUtilClient.get_api_timestamp()
@@ -437,11 +443,13 @@ class Client:
437
443
  model: TeaModel,
438
444
  method: str,
439
445
  path: str,
446
+ params: Dict[str, str],
440
447
  runtime: util_models.RuntimeOptions,
441
448
  ) -> dict:
442
449
  UtilClient.validate_model(model)
443
450
  req = openapi_models.OpenApiRequest(
444
- body=UtilClient.to_map(model)
451
+ body=UtilClient.to_map(model),
452
+ query=params
445
453
  )
446
454
  openapi_params = openapi_models.Params(
447
455
  pathname=path,
@@ -455,11 +463,13 @@ class Client:
455
463
  model: TeaModel,
456
464
  method: str,
457
465
  path: str,
466
+ params: Dict[str, str],
458
467
  runtime: util_models.RuntimeOptions,
459
468
  ) -> dict:
460
469
  UtilClient.validate_model(model)
461
470
  req = openapi_models.OpenApiRequest(
462
- body=UtilClient.to_map(model)
471
+ body=UtilClient.to_map(model),
472
+ query=params
463
473
  )
464
474
  openapi_params = openapi_models.Params(
465
475
  pathname=path,
@@ -473,11 +483,13 @@ class Client:
473
483
  model: TeaModel,
474
484
  method: str,
475
485
  path: str,
486
+ params: Dict[str, str],
476
487
  runtime: util_models.RuntimeOptions,
477
488
  ) -> dict:
478
489
  UtilClient.validate_model(model)
479
490
  req = openapi_models.OpenApiRequest(
480
- body=UtilClient.to_map(model)
491
+ body=UtilClient.to_map(model),
492
+ query=params
481
493
  )
482
494
  openapi_params = openapi_models.Params(
483
495
  pathname=path,
@@ -491,11 +503,13 @@ class Client:
491
503
  model: TeaModel,
492
504
  method: str,
493
505
  path: str,
506
+ params: Dict[str, str],
494
507
  runtime: util_models.RuntimeOptions,
495
508
  ) -> dict:
496
509
  UtilClient.validate_model(model)
497
510
  req = openapi_models.OpenApiRequest(
498
- body=UtilClient.to_map(model)
511
+ body=UtilClient.to_map(model),
512
+ query=params
499
513
  )
500
514
  openapi_params = openapi_models.Params(
501
515
  pathname=path,
@@ -504,6 +518,44 @@ class Client:
504
518
  )
505
519
  return await self.call_api_async(openapi_params, req, runtime)
506
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
+
507
559
  def call_api(
508
560
  self,
509
561
  params: openapi_models.Params,
@@ -515,6 +567,8 @@ class Client:
515
567
  'code': 'ParameterMissing',
516
568
  'message': "'params' can not be unset"
517
569
  })
570
+ if UtilClient.empty(self._endpoint) and not UtilClient.empty(self._odps_endpoint):
571
+ self._endpoint = self.get_catalog_endpoint()
518
572
  return self.do_request(params, request, runtime)
519
573
 
520
574
  async def call_api_async(
@@ -528,6 +582,8 @@ class Client:
528
582
  'code': 'ParameterMissing',
529
583
  'message': "'params' can not be unset"
530
584
  })
585
+ if UtilClient.empty(self._endpoint) and not UtilClient.empty(self._odps_endpoint):
586
+ self._endpoint = await self.get_catalog_endpoint_async()
531
587
  return await self.do_request_async(params, request, runtime)
532
588
 
533
589
  def get_user_agent(self) -> str:
@@ -62,6 +62,7 @@ class Config(TeaModel):
62
62
  suffix: str = None,
63
63
  signature_version: str = None,
64
64
  global_parameters: GlobalParameters = None,
65
+ odps_endpoint: str = None,
65
66
  ):
66
67
  # project
67
68
  self.project = project
@@ -97,6 +98,8 @@ class Config(TeaModel):
97
98
  self.signature_version = signature_version
98
99
  # Global Parameters
99
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
100
103
 
101
104
  def validate(self):
102
105
  if self.global_parameters:
@@ -142,6 +145,8 @@ class Config(TeaModel):
142
145
  result['signatureVersion'] = self.signature_version
143
146
  if self.global_parameters is not None:
144
147
  result['globalParameters'] = self.global_parameters.to_map()
148
+ if self.odps_endpoint is not None:
149
+ result['odpsEndpoint'] = self.odps_endpoint
145
150
  return result
146
151
 
147
152
  def from_map(self, m: dict = None):
@@ -181,6 +186,8 @@ class Config(TeaModel):
181
186
  if m.get('globalParameters') is not None:
182
187
  temp_model = GlobalParameters()
183
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')
184
191
  return self
185
192
 
186
193
 
@@ -269,6 +276,8 @@ class OpenApiRequest(TeaModel):
269
276
  stream: BinaryIO = None,
270
277
  host_map: Dict[str, str] = None,
271
278
  endpoint_override: str = None,
279
+ pathname_prefix: str = None,
280
+ protocol_override: str = None,
272
281
  ):
273
282
  self.headers = headers
274
283
  self.query = query
@@ -276,6 +285,8 @@ class OpenApiRequest(TeaModel):
276
285
  self.stream = stream
277
286
  self.host_map = host_map
278
287
  self.endpoint_override = endpoint_override
288
+ self.pathname_prefix = pathname_prefix
289
+ self.protocol_override = protocol_override
279
290
 
280
291
  def validate(self):
281
292
  pass
@@ -298,6 +309,10 @@ class OpenApiRequest(TeaModel):
298
309
  result['hostMap'] = self.host_map
299
310
  if self.endpoint_override is not None:
300
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
301
316
  return result
302
317
 
303
318
  def from_map(self, m: dict = None):
@@ -314,6 +329,49 @@ class OpenApiRequest(TeaModel):
314
329
  self.host_map = m.get('hostMap')
315
330
  if m.get('endpointOverride') is not None:
316
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')
317
375
  return self
318
376
 
319
377
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: maxcompute_tea_openapi
3
- Version: 1.0.0
3
+ Version: 1.2.0
4
4
  Summary: Alibaba Cloud MaxCompute openapi SDK Library for Python
5
5
  Home-page: https://github.com/aliyun/aliyun-odps-openapi-sdk
6
6
  Author: Alibaba Cloud MaxCompute Team
@@ -21,8 +21,8 @@ Classifier: Topic :: Software Development
21
21
  Requires-Python: >=3.6
22
22
  Description-Content-Type: text/markdown
23
23
  Requires-Dist: maxcompute_tea_util<1.0.0,>=0.0.1
24
- Requires-Dist: alibabacloud_tea_util<1.0.0,>=0.3.13
25
- Requires-Dist: alibabacloud_credentials<1.0.0,>=0.3.6
24
+ Requires-Dist: alibabacloud_tea_util<1.0.0,>=0.3.14
25
+ Requires-Dist: alibabacloud_credentials<2.0.0,>=1.0.2
26
26
  Dynamic: author
27
27
  Dynamic: author-email
28
28
  Dynamic: classifier
@@ -0,0 +1,3 @@
1
+ maxcompute_tea_util<1.0.0,>=0.0.1
2
+ alibabacloud_tea_util<1.0.0,>=0.3.14
3
+ alibabacloud_credentials<2.0.0,>=1.0.2
@@ -24,7 +24,7 @@ from setuptools import setup, find_packages
24
24
  """
25
25
  setup module for maxcompute_tea_openapi.
26
26
 
27
- Created on 09/04/2025
27
+ Created on 26/05/2026
28
28
 
29
29
  @author: Alibaba Cloud MaxCompute Team
30
30
  """
@@ -38,8 +38,8 @@ URL = "https://github.com/aliyun/aliyun-odps-openapi-sdk"
38
38
  VERSION = __import__(PACKAGE).__version__
39
39
  REQUIRES = [
40
40
  "maxcompute_tea_util>=0.0.1, <1.0.0",
41
- "alibabacloud_tea_util>=0.3.13, <1.0.0",
42
- "alibabacloud_credentials>=0.3.6, <1.0.0"
41
+ "alibabacloud_tea_util>=0.3.14, <1.0.0",
42
+ "alibabacloud_credentials>=1.0.2, <2.0.0"
43
43
  ]
44
44
 
45
45
  LONG_DESCRIPTION = ''
@@ -1 +0,0 @@
1
- __version__ = "1.0.0"
@@ -1,3 +0,0 @@
1
- maxcompute_tea_util<1.0.0,>=0.0.1
2
- alibabacloud_tea_util<1.0.0,>=0.3.13
3
- alibabacloud_credentials<1.0.0,>=0.3.6