zenlayercloud-sdk-python 2.0.62__py3-none-any.whl → 2.0.64__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.
- zenlayercloud/__init__.py +1 -1
- zenlayercloud/common/abstract_client.py +20 -0
- zenlayercloud/common/config.py +17 -1
- zenlayercloud/common/excpetion/error_code.py +2 -0
- zenlayercloud/zec/v20250901/models.py +94 -0
- zenlayercloud/zec/v20250901/zec_client.py +28 -1
- {zenlayercloud_sdk_python-2.0.62.dist-info → zenlayercloud_sdk_python-2.0.64.dist-info}/METADATA +1 -1
- {zenlayercloud_sdk_python-2.0.62.dist-info → zenlayercloud_sdk_python-2.0.64.dist-info}/RECORD +11 -11
- {zenlayercloud_sdk_python-2.0.62.dist-info → zenlayercloud_sdk_python-2.0.64.dist-info}/WHEEL +0 -0
- {zenlayercloud_sdk_python-2.0.62.dist-info → zenlayercloud_sdk_python-2.0.64.dist-info}/licenses/LICENSE +0 -0
- {zenlayercloud_sdk_python-2.0.62.dist-info → zenlayercloud_sdk_python-2.0.64.dist-info}/top_level.txt +0 -0
zenlayercloud/__init__.py
CHANGED
|
@@ -48,6 +48,26 @@ class AbstractClient(object):
|
|
|
48
48
|
code=error_code.SDK_INVALID_REQUEST,
|
|
49
49
|
message="Request must be AbstractModel"
|
|
50
50
|
)
|
|
51
|
+
|
|
52
|
+
max_retries = max(self.config.rate_limit_max_retries or 0, 0)
|
|
53
|
+
duration_func = self.config.rate_limit_retry_duration
|
|
54
|
+
|
|
55
|
+
last_exception = None
|
|
56
|
+
for idx in range(max_retries + 1):
|
|
57
|
+
try:
|
|
58
|
+
return self._do_api_call(action, request, method, headers)
|
|
59
|
+
except ZenlayerCloudSdkException as e:
|
|
60
|
+
if idx < max_retries and e.code == error_code.REQUEST_LIMIT_EXCEEDED:
|
|
61
|
+
last_exception = e
|
|
62
|
+
duration = duration_func(idx)
|
|
63
|
+
_logger.warning("rate limit exceeded, retrying (%d/%d) in %s seconds: %s",
|
|
64
|
+
idx, max_retries, duration, e.message)
|
|
65
|
+
time.sleep(duration)
|
|
66
|
+
continue
|
|
67
|
+
raise
|
|
68
|
+
raise last_exception
|
|
69
|
+
|
|
70
|
+
def _do_api_call(self, action, request, method, headers) -> dict:
|
|
51
71
|
uri = "/api/v2/%s" % self._service
|
|
52
72
|
req = BaseRequest(host=self.config.domain, method=method, uri=uri, header=headers)
|
|
53
73
|
|
zenlayercloud/common/config.py
CHANGED
|
@@ -3,11 +3,19 @@
|
|
|
3
3
|
|
|
4
4
|
DEFAULT_DOMAIN = "console.zenlayer.com"
|
|
5
5
|
|
|
6
|
+
DEFAULT_RATE_LIMIT_MAX_RETRIES = 3
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def exponential_backoff(index):
|
|
10
|
+
"""Default backoff: 1s, 2s, 4s, 8s, ..."""
|
|
11
|
+
return 2 ** index
|
|
12
|
+
|
|
6
13
|
|
|
7
14
|
class Config(object):
|
|
8
15
|
|
|
9
16
|
def __init__(self, scheme=None, domain=None, request_timeout=60, proxy=None, keep_alive=False, debug=False,
|
|
10
|
-
certification=None
|
|
17
|
+
certification=None, rate_limit_max_retries=DEFAULT_RATE_LIMIT_MAX_RETRIES,
|
|
18
|
+
rate_limit_retry_duration=None):
|
|
11
19
|
"""config.
|
|
12
20
|
|
|
13
21
|
:param scheme: http or https, default is https.
|
|
@@ -20,6 +28,12 @@ class Config(object):
|
|
|
20
28
|
:type keep_alive: bool
|
|
21
29
|
:param debug: open or close debug mode.
|
|
22
30
|
:type debug: bool
|
|
31
|
+
:param rate_limit_max_retries: Max retries when REQUEST_LIMIT_EXCEEDED (HTTP 429)
|
|
32
|
+
is returned. Defaults to 3. Set to 0 to disable.
|
|
33
|
+
:type rate_limit_max_retries: int
|
|
34
|
+
:param rate_limit_retry_duration: A callable ``f(index) -> seconds`` that returns
|
|
35
|
+
the wait time before the next retry. Defaults to exponential backoff.
|
|
36
|
+
:type rate_limit_retry_duration: callable
|
|
23
37
|
"""
|
|
24
38
|
|
|
25
39
|
self.scheme = scheme or "https"
|
|
@@ -29,4 +43,6 @@ class Config(object):
|
|
|
29
43
|
self.request_timeout = 60 if request_timeout is None else request_timeout
|
|
30
44
|
self.debug = debug
|
|
31
45
|
self.certification = certification
|
|
46
|
+
self.rate_limit_max_retries = rate_limit_max_retries
|
|
47
|
+
self.rate_limit_retry_duration = rate_limit_retry_duration or exponential_backoff
|
|
32
48
|
|
|
@@ -1083,9 +1083,11 @@ class ChangeNicNetworkTypeResponse(AbstractModel):
|
|
|
1083
1083
|
class ReleaseInstancesRequest(AbstractModel):
|
|
1084
1084
|
def __init__(self):
|
|
1085
1085
|
self.instanceIds = None
|
|
1086
|
+
self.dependResource = None
|
|
1086
1087
|
|
|
1087
1088
|
def _deserialize(self, params):
|
|
1088
1089
|
self.instanceIds = params.get("instanceIds")
|
|
1090
|
+
self.dependResource = params.get("dependResource")
|
|
1089
1091
|
|
|
1090
1092
|
|
|
1091
1093
|
class ReleaseInstancesResponse(AbstractModel):
|
|
@@ -1181,16 +1183,72 @@ class InquiryPriceModifyInstanceTypeResponse(AbstractModel):
|
|
|
1181
1183
|
def __init__(self):
|
|
1182
1184
|
self.requestId = None
|
|
1183
1185
|
self.specPrice = None
|
|
1186
|
+
self.gpuPrice = None
|
|
1184
1187
|
self.systemDiskPrice = None
|
|
1185
1188
|
|
|
1186
1189
|
def _deserialize(self, params):
|
|
1187
1190
|
self.requestId = params.get("requestId")
|
|
1188
1191
|
if params.get("specPrice") is not None:
|
|
1189
1192
|
self.specPrice = PriceItem(params.get("specPrice"))
|
|
1193
|
+
if params.get("gpuPrice") is not None:
|
|
1194
|
+
self.gpuPrice = PriceItem(params.get("gpuPrice"))
|
|
1190
1195
|
if params.get("systemDiskPrice") is not None:
|
|
1191
1196
|
self.systemDiskPrice = PriceItem(params.get("systemDiskPrice"))
|
|
1192
1197
|
|
|
1193
1198
|
|
|
1199
|
+
class DescribeZoneGpuInstanceConfigInfosRequest(AbstractModel):
|
|
1200
|
+
def __init__(self):
|
|
1201
|
+
self.zoneId = None
|
|
1202
|
+
self.instanceType = None
|
|
1203
|
+
|
|
1204
|
+
def _deserialize(self, params):
|
|
1205
|
+
self.zoneId = params.get("zoneId")
|
|
1206
|
+
self.instanceType = params.get("instanceType")
|
|
1207
|
+
|
|
1208
|
+
|
|
1209
|
+
class DescribeZoneGpuInstanceConfigInfosResponse(AbstractModel):
|
|
1210
|
+
def __init__(self):
|
|
1211
|
+
self.requestId = None
|
|
1212
|
+
self.instanceTypeQuotaSet = None
|
|
1213
|
+
|
|
1214
|
+
def _deserialize(self, params):
|
|
1215
|
+
self.requestId = params.get("requestId")
|
|
1216
|
+
if params.get("instanceTypeQuotaSet") is not None:
|
|
1217
|
+
self.instanceTypeQuotaSet = []
|
|
1218
|
+
for item in params.get("instanceTypeQuotaSet"):
|
|
1219
|
+
obj = GpuInstanceTypeQuotaItem(item)
|
|
1220
|
+
self.instanceTypeQuotaSet.append(obj)
|
|
1221
|
+
|
|
1222
|
+
|
|
1223
|
+
class GpuInstanceTypeQuotaItem(AbstractModel):
|
|
1224
|
+
def __init__(self, params=None):
|
|
1225
|
+
if params is None:
|
|
1226
|
+
params = {}
|
|
1227
|
+
if len(params) > 0:
|
|
1228
|
+
self._deserialize(params)
|
|
1229
|
+
return
|
|
1230
|
+
self.zoneId = None
|
|
1231
|
+
self.instanceType = None
|
|
1232
|
+
self.cpuCount = None
|
|
1233
|
+
self.memory = None
|
|
1234
|
+
self.gpuAmount = None
|
|
1235
|
+
self.instanceTypeName = None
|
|
1236
|
+
self.bps = None
|
|
1237
|
+
self.pps = None
|
|
1238
|
+
self.inventoryCapacity = None
|
|
1239
|
+
|
|
1240
|
+
def _deserialize(self, params):
|
|
1241
|
+
self.zoneId = params.get("zoneId")
|
|
1242
|
+
self.instanceType = params.get("instanceType")
|
|
1243
|
+
self.cpuCount = params.get("cpuCount")
|
|
1244
|
+
self.memory = params.get("memory")
|
|
1245
|
+
self.gpuAmount = params.get("gpuAmount")
|
|
1246
|
+
self.instanceTypeName = params.get("instanceTypeName")
|
|
1247
|
+
self.bps = params.get("bps")
|
|
1248
|
+
self.pps = params.get("pps")
|
|
1249
|
+
self.inventoryCapacity = params.get("inventoryCapacity")
|
|
1250
|
+
|
|
1251
|
+
|
|
1194
1252
|
class DescribeImagesRequest(AbstractModel):
|
|
1195
1253
|
def __init__(self):
|
|
1196
1254
|
self.zoneId = None
|
|
@@ -2797,6 +2855,24 @@ class InquiryPriceChangeIpv6InternetChargeTypeResponse(AbstractModel):
|
|
|
2797
2855
|
self.bandwidthPrice = PriceItem(params.get("bandwidthPrice"))
|
|
2798
2856
|
|
|
2799
2857
|
|
|
2858
|
+
class ModifyIpv6BandwidthRequest(AbstractModel):
|
|
2859
|
+
def __init__(self):
|
|
2860
|
+
self.ipv6Id = None
|
|
2861
|
+
self.bandwidth = None
|
|
2862
|
+
|
|
2863
|
+
def _deserialize(self, params):
|
|
2864
|
+
self.ipv6Id = params.get("ipv6Id")
|
|
2865
|
+
self.bandwidth = params.get("bandwidth")
|
|
2866
|
+
|
|
2867
|
+
|
|
2868
|
+
class ModifyIpv6BandwidthResponse(AbstractModel):
|
|
2869
|
+
def __init__(self):
|
|
2870
|
+
self.requestId = None
|
|
2871
|
+
|
|
2872
|
+
def _deserialize(self, params):
|
|
2873
|
+
self.requestId = params.get("requestId")
|
|
2874
|
+
|
|
2875
|
+
|
|
2800
2876
|
class DescribePoolsRequest(AbstractModel):
|
|
2801
2877
|
def __init__(self):
|
|
2802
2878
|
self.poolIds = None
|
|
@@ -4356,6 +4432,24 @@ class InquiryPriceChangeEipInternetChargeTypeResponse(AbstractModel):
|
|
|
4356
4432
|
self.remoteBandwidthPrice = PriceItem(params.get("remoteBandwidthPrice"))
|
|
4357
4433
|
|
|
4358
4434
|
|
|
4435
|
+
class ModifyEipTrafficPackageRequest(AbstractModel):
|
|
4436
|
+
def __init__(self):
|
|
4437
|
+
self.eipId = None
|
|
4438
|
+
self.trafficPackageSize = None
|
|
4439
|
+
|
|
4440
|
+
def _deserialize(self, params):
|
|
4441
|
+
self.eipId = params.get("eipId")
|
|
4442
|
+
self.trafficPackageSize = params.get("trafficPackageSize")
|
|
4443
|
+
|
|
4444
|
+
|
|
4445
|
+
class ModifyEipTrafficPackageResponse(AbstractModel):
|
|
4446
|
+
def __init__(self):
|
|
4447
|
+
self.requestId = None
|
|
4448
|
+
|
|
4449
|
+
def _deserialize(self, params):
|
|
4450
|
+
self.requestId = params.get("requestId")
|
|
4451
|
+
|
|
4452
|
+
|
|
4359
4453
|
class DescribeRoutesRequest(AbstractModel):
|
|
4360
4454
|
def __init__(self):
|
|
4361
4455
|
self.routeIds = None
|
|
@@ -226,13 +226,22 @@ class ZecClient(AbstractClient):
|
|
|
226
226
|
|
|
227
227
|
def InquiryPriceModifyInstanceType(self, request):
|
|
228
228
|
"""
|
|
229
|
-
|
|
229
|
+
查询变更实例规格后的价格。
|
|
230
230
|
"""
|
|
231
231
|
response = self._api_call("InquiryPriceModifyInstanceType", request)
|
|
232
232
|
model = models.InquiryPriceModifyInstanceTypeResponse()
|
|
233
233
|
model._deserialize(response)
|
|
234
234
|
return model
|
|
235
235
|
|
|
236
|
+
def DescribeZoneGpuInstanceConfigInfos(self, request):
|
|
237
|
+
"""
|
|
238
|
+
查询可用区售卖的 GPU 规格信息
|
|
239
|
+
"""
|
|
240
|
+
response = self._api_call("DescribeZoneGpuInstanceConfigInfos", request)
|
|
241
|
+
model = models.DescribeZoneGpuInstanceConfigInfosResponse()
|
|
242
|
+
model._deserialize(response)
|
|
243
|
+
return model
|
|
244
|
+
|
|
236
245
|
def DescribeImages(self, request):
|
|
237
246
|
"""
|
|
238
247
|
查询某节点支持的镜像列表。
|
|
@@ -701,6 +710,15 @@ class ZecClient(AbstractClient):
|
|
|
701
710
|
model._deserialize(response)
|
|
702
711
|
return model
|
|
703
712
|
|
|
713
|
+
def ModifyIpv6Bandwidth(self, request):
|
|
714
|
+
"""
|
|
715
|
+
调整公网IPv6的带宽限速。
|
|
716
|
+
"""
|
|
717
|
+
response = self._api_call("ModifyIpv6Bandwidth", request)
|
|
718
|
+
model = models.ModifyIpv6BandwidthResponse()
|
|
719
|
+
model._deserialize(response)
|
|
720
|
+
return model
|
|
721
|
+
|
|
704
722
|
def DescribePools(self, request):
|
|
705
723
|
"""
|
|
706
724
|
查询账户下的公网 IP 池信息,支持按 IP 池 ID、地域或名称进行筛选,支持分页查询。
|
|
@@ -1052,6 +1070,15 @@ class ZecClient(AbstractClient):
|
|
|
1052
1070
|
model._deserialize(response)
|
|
1053
1071
|
return model
|
|
1054
1072
|
|
|
1073
|
+
def ModifyEipTrafficPackage(self, request):
|
|
1074
|
+
"""
|
|
1075
|
+
调整弹性公网IP流量包。
|
|
1076
|
+
"""
|
|
1077
|
+
response = self._api_call("ModifyEipTrafficPackage", request)
|
|
1078
|
+
model = models.ModifyEipTrafficPackageResponse()
|
|
1079
|
+
model._deserialize(response)
|
|
1080
|
+
return model
|
|
1081
|
+
|
|
1055
1082
|
def DescribeRoutes(self, request):
|
|
1056
1083
|
"""
|
|
1057
1084
|
查询路由列表。用户可以根据ID、名称等信息来搜索Route信息。路由列表包括系统生成的以及用户创建的路由。
|
{zenlayercloud_sdk_python-2.0.62.dist-info → zenlayercloud_sdk_python-2.0.64.dist-info}/RECORD
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
zenlayercloud/__init__.py,sha256=
|
|
1
|
+
zenlayercloud/__init__.py,sha256=DW-Yxwznax6VRjistVr_WTSoROLEHOZK6vAAAv4F4S0,95
|
|
2
2
|
zenlayercloud/aigw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
3
|
zenlayercloud/aigw/v20260414/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
4
|
zenlayercloud/aigw/v20260414/aigw_client.py,sha256=inQDTflrPy3InIZMOvRTjJGz1vE04Jv89XhLOZYuPis,5990
|
|
@@ -19,15 +19,15 @@ zenlayercloud/ccs/v20250901/__init__.py,sha256=A82oWiV038jIXEbygeOeO1DzWKOqGkdQI
|
|
|
19
19
|
zenlayercloud/ccs/v20250901/ccs_client.py,sha256=udKOGiGDxOCtiF7Wh5RdMObwYeE8akvc4S6n2yz1soY,1124
|
|
20
20
|
zenlayercloud/ccs/v20250901/models.py,sha256=52DHoBqyr6KQtvxgHnK0Ux2Ukm3Cce_2mEz1IDKYZWg,3110
|
|
21
21
|
zenlayercloud/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
-
zenlayercloud/common/abstract_client.py,sha256=
|
|
22
|
+
zenlayercloud/common/abstract_client.py,sha256=gWwrUXnh7H6kH_1g2CqyJvxJvVpx6QXgASXDAkZmGGc,6446
|
|
23
23
|
zenlayercloud/common/abstract_model.py,sha256=4wPo9ZnW0HuKQ9_jDW7Hh9BeJLvzE1gM-eHJi_Ldg_0,1626
|
|
24
|
-
zenlayercloud/common/config.py,sha256=
|
|
24
|
+
zenlayercloud/common/config.py,sha256=7Ycuaqh6gN6KWfqkDFWbXL-7XJ4kqWJadlp1xIpWPR0,1907
|
|
25
25
|
zenlayercloud/common/credential.py,sha256=83uoJoomkud2AoxzAKCncFnO8YHhwFZhdco0I-ohT48,1723
|
|
26
26
|
zenlayercloud/common/request.py,sha256=TYKa-cS2bCI7uZYX8p1C8rcyIqIE6ezlW63JzG7nSag,2925
|
|
27
27
|
zenlayercloud/common/response.py,sha256=94XuYv189UaRjxCoS-wH7VBjjnNc26ydWCCfQnjlQxo,497
|
|
28
28
|
zenlayercloud/common/utils.py,sha256=6HpSEU3AOwMdDiBMvR_LE3FXLQyrvnCneAqxjL_FMbc,354
|
|
29
29
|
zenlayercloud/common/excpetion/__init__.py,sha256=A82oWiV038jIXEbygeOeO1DzWKOqGkdQI2X9BX0HkvM,69
|
|
30
|
-
zenlayercloud/common/excpetion/error_code.py,sha256=
|
|
30
|
+
zenlayercloud/common/excpetion/error_code.py,sha256=LtY4AL-KFnAG3UcU2fxGsfn56_qO2eZIvS8C6D6334o,221
|
|
31
31
|
zenlayercloud/common/excpetion/zenlayer_cloud_sdk_exception.py,sha256=IVKBhJKEKwbCgVk2K7bAZk8-rA4bBgbAaD2yciqaOBg,866
|
|
32
32
|
zenlayercloud/ipt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
33
|
zenlayercloud/ipt/v20240901/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -77,8 +77,8 @@ zenlayercloud/zec/v20240401/__init__.py,sha256=A82oWiV038jIXEbygeOeO1DzWKOqGkdQI
|
|
|
77
77
|
zenlayercloud/zec/v20240401/models.py,sha256=2y8NHcednqU-_TdxG6WMfdA1ySvDaTeS7SnnxPfOBNE,131319
|
|
78
78
|
zenlayercloud/zec/v20240401/zec_client.py,sha256=KoDlhy0ufpQB8eHCr4WP1AY5TNvtWK_0XnyoUGA0TeA,29784
|
|
79
79
|
zenlayercloud/zec/v20250901/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
80
|
-
zenlayercloud/zec/v20250901/models.py,sha256=
|
|
81
|
-
zenlayercloud/zec/v20250901/zec_client.py,sha256=
|
|
80
|
+
zenlayercloud/zec/v20250901/models.py,sha256=YQocrsTt3WtGDnbfn3CeRGphYIVLY3lEE-qgV47ZM_M,246476
|
|
81
|
+
zenlayercloud/zec/v20250901/zec_client.py,sha256=catXRIpR9qVIFY5y4zgfh89ItF1LWqmFOjbxpzDlR4o,68408
|
|
82
82
|
zenlayercloud/zga/__init__.py,sha256=A82oWiV038jIXEbygeOeO1DzWKOqGkdQI2X9BX0HkvM,69
|
|
83
83
|
zenlayercloud/zga/v20241104/__init__.py,sha256=A82oWiV038jIXEbygeOeO1DzWKOqGkdQI2X9BX0HkvM,69
|
|
84
84
|
zenlayercloud/zga/v20241104/models.py,sha256=92gBJss6q0Z5FGk2DfHBTvCdif6OY5cVU32gXOY3E2M,40155
|
|
@@ -99,8 +99,8 @@ zenlayercloud/zrm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
|
|
|
99
99
|
zenlayercloud/zrm/v20251014/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
100
100
|
zenlayercloud/zrm/v20251014/models.py,sha256=3As3PAdEKe_Cpb1QpGI2_mrMlM2uZ6QOa4isOi09q3I,7491
|
|
101
101
|
zenlayercloud/zrm/v20251014/zrm_client.py,sha256=p3fKeOdhGdjx_MhFcMuu9wv4bkSiwn_GNrj_570fkMg,2504
|
|
102
|
-
zenlayercloud_sdk_python-2.0.
|
|
103
|
-
zenlayercloud_sdk_python-2.0.
|
|
104
|
-
zenlayercloud_sdk_python-2.0.
|
|
105
|
-
zenlayercloud_sdk_python-2.0.
|
|
106
|
-
zenlayercloud_sdk_python-2.0.
|
|
102
|
+
zenlayercloud_sdk_python-2.0.64.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
103
|
+
zenlayercloud_sdk_python-2.0.64.dist-info/METADATA,sha256=zjIHKVxZpfj5Iwm-oUH8jRhRxvkdi4CkYCM1O6zAH3Q,1653
|
|
104
|
+
zenlayercloud_sdk_python-2.0.64.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
105
|
+
zenlayercloud_sdk_python-2.0.64.dist-info/top_level.txt,sha256=ZU6L6c0yQDkyO8nG0oGpC6ptc0TNucEncz3xbFsoHmE,14
|
|
106
|
+
zenlayercloud_sdk_python-2.0.64.dist-info/RECORD,,
|
{zenlayercloud_sdk_python-2.0.62.dist-info → zenlayercloud_sdk_python-2.0.64.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|