phala-cloud 0.1.3__tar.gz → 0.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.
- phala_cloud-0.2.0/.pdm-python +1 -0
- phala_cloud-0.2.0/CHANGELOG.md +2 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/PKG-INFO +2 -1
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/pdm.lock +251 -4
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/pyproject.toml +2 -1
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/__init__.py +8 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/action_responses.py +44 -1
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/actions.py +30 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/client.py +96 -4
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/error_codes.py +1 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/full_client.py +69 -22
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/models/__init__.py +22 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/models/cvms.py +81 -4
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/models/kms.py +49 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/models/nodes.py +8 -0
- phala_cloud-0.2.0/src/phala_cloud/utils.py +133 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/tests/test_action_matrix_async.py +17 -1
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/tests/test_action_matrix_sync.py +16 -1
- phala_cloud-0.2.0/tests/test_client_sync.py +106 -0
- phala_cloud-0.2.0/tests/test_kms_contract.py +88 -0
- phala_cloud-0.2.0/tests/test_mr_config_id.py +125 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/uv.lock +10 -2
- phala_cloud-0.1.3/.pdm-python +0 -1
- phala_cloud-0.1.3/src/phala_cloud/utils.py +0 -51
- phala_cloud-0.1.3/tests/test_client_sync.py +0 -42
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/.gitignore +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/.python-version +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/Makefile +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/README.md +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/examples/repl.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/blockchains.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/errors.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/models/apps.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/models/auth.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/models/base.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/models/os_images.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/result.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/src/phala_cloud/webhook.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/tests/test_465_structured_error.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/tests/test_actions_module.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/tests/test_client_async.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/tests/test_create_app_instance.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/tests/test_cvm_hashid_version_contract.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/tests/test_cvm_kms_info_chain.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/tests/test_e2e_all_interfaces.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/tests/test_provision_compose_update.py +0 -0
- {phala_cloud-0.1.3 → phala_cloud-0.2.0}/tests/test_webhook.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/Users/leechael/workshop/phala/teehouse/sdks/python/.venv/bin/python
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: phala-cloud
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Python SDK for Phala Cloud API (sync/async, pydantic, REPL-friendly)
|
|
5
5
|
Project-URL: Homepage, https://github.com/Phala-Network/phala-cloud
|
|
6
6
|
Project-URL: Repository, https://github.com/Phala-Network/phala-cloud
|
|
@@ -21,6 +21,7 @@ Requires-Python: >=3.10
|
|
|
21
21
|
Requires-Dist: dstack-sdk>=0.5.4
|
|
22
22
|
Requires-Dist: httpx[socks]>=0.27.0
|
|
23
23
|
Requires-Dist: pydantic>=2.7.0
|
|
24
|
+
Requires-Dist: pysha3>=1.0.2
|
|
24
25
|
Provides-Extra: dev
|
|
25
26
|
Requires-Dist: mypy>=1.10.0; extra == 'dev'
|
|
26
27
|
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
groups = ["default", "dev"]
|
|
6
6
|
strategy = ["inherit_metadata"]
|
|
7
7
|
lock_version = "4.5.0"
|
|
8
|
-
content_hash = "sha256:
|
|
8
|
+
content_hash = "sha256:d7f5bdc878ebfe4c09a45f90c29cf1a16f623fc7639b1d2978cc0b1d287d4056"
|
|
9
9
|
|
|
10
10
|
[[metadata.targets]]
|
|
11
11
|
requires_python = ">=3.10"
|
|
@@ -234,21 +234,247 @@ files = [
|
|
|
234
234
|
{file = "cryptography-46.0.7.tar.gz", hash = "sha256:e4cfd68c5f3e0bfdad0d38e023239b96a2fe84146481852dffbcca442c245aa5"},
|
|
235
235
|
]
|
|
236
236
|
|
|
237
|
+
[[package]]
|
|
238
|
+
name = "cytoolz"
|
|
239
|
+
version = "1.1.0"
|
|
240
|
+
requires_python = ">=3.9"
|
|
241
|
+
summary = "Cython implementation of Toolz: High performance functional utilities"
|
|
242
|
+
groups = ["default"]
|
|
243
|
+
marker = "implementation_name == \"cpython\""
|
|
244
|
+
dependencies = [
|
|
245
|
+
"toolz>=0.8.0",
|
|
246
|
+
]
|
|
247
|
+
files = [
|
|
248
|
+
{file = "cytoolz-1.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:72d7043a88ea5e61ba9d17ea0d1c1eff10f645d7edfcc4e56a31ef78be287644"},
|
|
249
|
+
{file = "cytoolz-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d759e9ed421bacfeb456d47af8d734c057b9912b5f2441f95b27ca35e5efab07"},
|
|
250
|
+
{file = "cytoolz-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fdb5be8fbcc0396141189022724155a4c1c93712ac4aef8c03829af0c2a816d7"},
|
|
251
|
+
{file = "cytoolz-1.1.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c8c0a513dc89bc05cc72893609118815bced5ef201f1a317b4cc3423b3a0e750"},
|
|
252
|
+
{file = "cytoolz-1.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce94db4f8ebe842c30c0ece42ff5de977c47859088c2c363dede5a68f6906484"},
|
|
253
|
+
{file = "cytoolz-1.1.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b622d4f54e370c853ded94a668f94fe72c6d70e06ac102f17a2746661c27ab52"},
|
|
254
|
+
{file = "cytoolz-1.1.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:375a65baa5a5b4ff6a0c5ff17e170cf23312e4c710755771ca966144c24216b5"},
|
|
255
|
+
{file = "cytoolz-1.1.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c0d51bcdb3203a062a78f66bbe33db5e3123048e24a5f0e1402422d79df8ee2d"},
|
|
256
|
+
{file = "cytoolz-1.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1010869529bb05dc9802b6d776a34ca1b6d48b9deec70ad5e2918ae175be5c2f"},
|
|
257
|
+
{file = "cytoolz-1.1.0-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:11a8f2e83295bdb33f35454d6bafcb7845b03b5881dcaed66ecbd726c7f16772"},
|
|
258
|
+
{file = "cytoolz-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0499c5e0a8e688ed367a2e51cc13792ae8f08226c15f7d168589fc44b9b9cada"},
|
|
259
|
+
{file = "cytoolz-1.1.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:87d44e6033d4c5e95a7d39ba59b8e105ba1c29b1ccd1d215f26477cc1d64be39"},
|
|
260
|
+
{file = "cytoolz-1.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a68cef396a7de237f7b97422a6a450dfb111722296ba217ba5b34551832f1f6e"},
|
|
261
|
+
{file = "cytoolz-1.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:06ad4c95b258141f138a93ebfdc1d76ac087afc1a82f1401100a1f44b44ba656"},
|
|
262
|
+
{file = "cytoolz-1.1.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:ada59a4b3c59d4ac7162e0ed08667ffa78abf48e975c8a9f9d5b9bc50720f4fd"},
|
|
263
|
+
{file = "cytoolz-1.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:a8957bcaea1ba01327a9b219d2adb84144377684f51444253890dab500ca171f"},
|
|
264
|
+
{file = "cytoolz-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6d8cdc299d67eb0f3b9ecdafeeb55eb3b7b7470e2d950ac34b05ed4c7a5572b8"},
|
|
265
|
+
{file = "cytoolz-1.1.0-cp310-cp310-win32.whl", hash = "sha256:d8e08464c5cdea4f6df31e84b11ed6bfd79cedb99fbcbfdc15eb9361a6053c5a"},
|
|
266
|
+
{file = "cytoolz-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:7e49922a7ed54262d41960bf3b835a7700327bf79cff1e9bfc73d79021132ff8"},
|
|
267
|
+
{file = "cytoolz-1.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:943a662d2e72ffc4438d43ab5a1de8d852237775a423236594a3b3e381b8032c"},
|
|
268
|
+
{file = "cytoolz-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:dba8e5a8c6e3c789d27b0eb5e7ce5ed7d032a7a9aae17ca4ba5147b871f6e327"},
|
|
269
|
+
{file = "cytoolz-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:44b31c05addb0889167a720123b3b497b28dd86f8a0aeaf3ae4ffa11e2c85d55"},
|
|
270
|
+
{file = "cytoolz-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:653cb18c4fc5d8a8cfce2bce650aabcbe82957cd0536827367d10810566d5294"},
|
|
271
|
+
{file = "cytoolz-1.1.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:853a5b4806915020c890e1ce70cc056bbc1dd8bc44f2d74d555cccfd7aefba7d"},
|
|
272
|
+
{file = "cytoolz-1.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7b44e9de86bea013fe84fd8c399d6016bbb96c37c5290769e5c99460b9c53e5"},
|
|
273
|
+
{file = "cytoolz-1.1.0-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:098d628a801dc142e9740126be5624eb7aef1d732bc7a5719f60a2095547b485"},
|
|
274
|
+
{file = "cytoolz-1.1.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:779ee4096ed7a82cffab89372ffc339631c285079dbf33dbe7aff1f6174985df"},
|
|
275
|
+
{file = "cytoolz-1.1.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f2ce18dd99533d077e9712f9faa852f389f560351b1efd2f2bdb193a95eddde2"},
|
|
276
|
+
{file = "cytoolz-1.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ac266a34437812cf841cecbfe19f355ab9c3dd1ef231afc60415d40ff12a76e4"},
|
|
277
|
+
{file = "cytoolz-1.1.0-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1920b9b9c13d60d0bb6cd14594b3bce0870022eccb430618c37156da5f2b7a55"},
|
|
278
|
+
{file = "cytoolz-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47caa376dafd2bdc29f8a250acf59c810ec9105cd6f7680b9a9d070aae8490ec"},
|
|
279
|
+
{file = "cytoolz-1.1.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:5ab2c97d8aaa522b038cca9187b1153347af22309e7c998b14750c6fdec7b1cb"},
|
|
280
|
+
{file = "cytoolz-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4bce006121b120e8b359244ee140bb0b1093908efc8b739db8dbaa3f8fb42139"},
|
|
281
|
+
{file = "cytoolz-1.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7fc0f1e4e9bb384d26e73c6657bbc26abdae4ff66a95933c00f3d578be89181b"},
|
|
282
|
+
{file = "cytoolz-1.1.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:dd3f894ff972da1994d06ac6157d74e40dda19eb31fe5e9b7863ca4278c3a167"},
|
|
283
|
+
{file = "cytoolz-1.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0846f49cf8a4496bd42659040e68bd0484ce6af819709cae234938e039203ba0"},
|
|
284
|
+
{file = "cytoolz-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:16a3af394ade1973226d64bb2f9eb3336adbdea03ed5b134c1bbec5a3b20028e"},
|
|
285
|
+
{file = "cytoolz-1.1.0-cp311-cp311-win32.whl", hash = "sha256:b786c9c8aeab76cc2f76011e986f7321a23a56d985b77d14f155d5e5514ea781"},
|
|
286
|
+
{file = "cytoolz-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:ebf06d1c5344fb22fee71bf664234733e55db72d74988f2ecb7294b05e4db30c"},
|
|
287
|
+
{file = "cytoolz-1.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:b63f5f025fac893393b186e132e3e242de8ee7265d0cd3f5bdd4dda93f6616c9"},
|
|
288
|
+
{file = "cytoolz-1.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:99f8e134c9be11649342853ec8c90837af4089fc8ff1e8f9a024a57d1fa08514"},
|
|
289
|
+
{file = "cytoolz-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0a6f44cf9319c30feb9a50aa513d777ef51efec16f31c404409e7deb8063df64"},
|
|
290
|
+
{file = "cytoolz-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:945580dc158c557172fca899a35a99a16fbcebf6db0c77cb6621084bc82189f9"},
|
|
291
|
+
{file = "cytoolz-1.1.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:257905ec050d04f2f856854620d1e25556fd735064cebd81b460f54939b9f9d5"},
|
|
292
|
+
{file = "cytoolz-1.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:82779049f352fb3ab5e8c993ab45edbb6e02efb1f17f0b50f4972c706cc51d76"},
|
|
293
|
+
{file = "cytoolz-1.1.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7d3e405e435320e08c5a1633afaf285a392e2d9cef35c925d91e2a31dfd7a688"},
|
|
294
|
+
{file = "cytoolz-1.1.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:923df8f5591e0d20543060c29909c149ab1963a7267037b39eee03a83dbc50a8"},
|
|
295
|
+
{file = "cytoolz-1.1.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:25db9e4862f22ea0ae2e56c8bec9fc9fd756b655ae13e8c7b5625d7ed1c582d4"},
|
|
296
|
+
{file = "cytoolz-1.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7a98deb11ccd8e5d9f9441ef2ff3352aab52226a2b7d04756caaa53cd612363"},
|
|
297
|
+
{file = "cytoolz-1.1.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:dce4ee9fc99104bc77efdea80f32ca5a650cd653bcc8a1d984a931153d3d9b58"},
|
|
298
|
+
{file = "cytoolz-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:80d6da158f7d20c15819701bbda1c041f0944ede2f564f5c739b1bc80a9ffb8b"},
|
|
299
|
+
{file = "cytoolz-1.1.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:3b5c5a192abda123ad45ef716ec9082b4cf7d95e9ada8291c5c2cc5558be858b"},
|
|
300
|
+
{file = "cytoolz-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5b399ce7d967b1cb6280250818b786be652aa8ddffd3c0bb5c48c6220d945ab5"},
|
|
301
|
+
{file = "cytoolz-1.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e7e29a1a03f00b4322196cfe8e2c38da9a6c8d573566052c586df83aacc5663c"},
|
|
302
|
+
{file = "cytoolz-1.1.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:5291b117d71652a817ec164e7011f18e6a51f8a352cc9a70ed5b976c51102fda"},
|
|
303
|
+
{file = "cytoolz-1.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:8caef62f846a9011676c51bda9189ae394cdd6bb17f2946ecaedc23243268320"},
|
|
304
|
+
{file = "cytoolz-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:de425c5a8e3be7bb3a195e19191d28d9eb3c2038046064a92edc4505033ec9cb"},
|
|
305
|
+
{file = "cytoolz-1.1.0-cp312-cp312-win32.whl", hash = "sha256:296440a870e8d1f2e1d1edf98f60f1532b9d3ab8dfbd4b25ec08cd76311e79e5"},
|
|
306
|
+
{file = "cytoolz-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:07156987f224c6dac59aa18fb8bf91e1412f5463961862716a3381bf429c8699"},
|
|
307
|
+
{file = "cytoolz-1.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:23e616b38f5b3160c7bb45b0f84a8f3deb4bd26b29fb2dfc716f241c738e27b8"},
|
|
308
|
+
{file = "cytoolz-1.1.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:76c9b58555300be6dde87a41faf1f97966d79b9a678b7a526fcff75d28ef4945"},
|
|
309
|
+
{file = "cytoolz-1.1.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:d1d638b10d3144795655e9395566ce35807df09219fd7cacd9e6acbdef67946a"},
|
|
310
|
+
{file = "cytoolz-1.1.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:26801c1a165e84786a99e03c9c9973356caaca002d66727b761fb1042878ef06"},
|
|
311
|
+
{file = "cytoolz-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2a9a464542912d3272f6dccc5142df057c71c6a5cbd30439389a732df401afb7"},
|
|
312
|
+
{file = "cytoolz-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ed6104fa942aa5784bf54f339563de637557e3443b105760bc4de8f16a7fc79b"},
|
|
313
|
+
{file = "cytoolz-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:56161f0ab60dc4159ec343509abaf809dc88e85c7e420e354442c62e3e7cbb77"},
|
|
314
|
+
{file = "cytoolz-1.1.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:832bd36cc9123535f1945acf6921f8a2a15acc19cfe4065b1c9b985a28671886"},
|
|
315
|
+
{file = "cytoolz-1.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1842636b6e034f229bf084c2bcdcfd36c8437e752eefd2c74ce9e2f10415cb6e"},
|
|
316
|
+
{file = "cytoolz-1.1.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:823df012ab90d2f2a0f92fea453528539bf71ac1879e518524cd0c86aa6df7b9"},
|
|
317
|
+
{file = "cytoolz-1.1.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2f1fcf9e7e7b3487883ff3f815abc35b89dcc45c4cf81c72b7ee457aa72d197b"},
|
|
318
|
+
{file = "cytoolz-1.1.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4cdb3fa1772116827f263f25b0cdd44c663b6701346a56411960534a06c082de"},
|
|
319
|
+
{file = "cytoolz-1.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d1b5c95041741b81430454db65183e133976f45ac3c03454cfa8147952568529"},
|
|
320
|
+
{file = "cytoolz-1.1.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b2079fd9f1a65f4c61e6278c8a6d4f85edf30c606df8d5b32f1add88cbbe2286"},
|
|
321
|
+
{file = "cytoolz-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a92a320d72bef1c7e2d4c6d875125cf57fc38be45feb3fac1bfa64ea401f54a4"},
|
|
322
|
+
{file = "cytoolz-1.1.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:06d1c79aa51e6a92a90b0e456ebce2288f03dd6a76c7f582bfaa3eda7692e8a5"},
|
|
323
|
+
{file = "cytoolz-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e1d7be25f6971e986a52b6d3a0da28e1941850985417c35528f6823aef2cfec5"},
|
|
324
|
+
{file = "cytoolz-1.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:964b248edc31efc50a65e9eaa0c845718503823439d2fa5f8d2c7e974c2b5409"},
|
|
325
|
+
{file = "cytoolz-1.1.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c9ff2b3c57c79b65cb5be14a18c6fd4a06d5036fb3f33e973a9f70e9ac13ca28"},
|
|
326
|
+
{file = "cytoolz-1.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:22290b73086af600042d99f5ce52a43d4ad9872c382610413176e19fc1d4fd2d"},
|
|
327
|
+
{file = "cytoolz-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a2ade74fccd080ea793382968913ee38d7a35c921df435bbf0a6aeecf0d17574"},
|
|
328
|
+
{file = "cytoolz-1.1.0-cp313-cp313-win32.whl", hash = "sha256:db5dbcfda1c00e937426cbf9bdc63c24ebbc358c3263bfcbc1ab4a88dc52aa8e"},
|
|
329
|
+
{file = "cytoolz-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:9e2d3fe3b45c3eb7233746f7aca37789be3dceec3e07dcc406d3e045ea0f7bdc"},
|
|
330
|
+
{file = "cytoolz-1.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:32c559f95ff44a9ebcbd934acaa1e6dc8f3e6ffce4762a79a88528064873d6d5"},
|
|
331
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:9e2cd93b28f667c5870a070ab2b8bb4397470a85c4b204f2454b0ad001cd1ca3"},
|
|
332
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f494124e141a9361f31d79875fe7ea459a3be2b9dadd90480427c0c52a0943d4"},
|
|
333
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:53a3262bf221f19437ed544bf8c0e1980c81ac8e2a53d87a9bc075dba943d36f"},
|
|
334
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:47663e57d3f3f124921f38055e86a1022d0844c444ede2e8f090d3bbf80deb65"},
|
|
335
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a5a8755c4104ee4e3d5ba434c543b5f85fdee6a1f1df33d93f518294da793a60"},
|
|
336
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4d96ff3d381423af1b105295f97de86d1db51732c9566eb37378bab6670c5010"},
|
|
337
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0ec96b3d537cdf47d4e76ded199f7440715f4c71029b45445cff92c1248808c2"},
|
|
338
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:208e2f2ef90a32b0acbff3303d90d89b13570a228d491d2e622a7883a3c68148"},
|
|
339
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0d416a81bb0bd517558668e49d30a7475b5445f9bbafaab7dcf066f1e9adba36"},
|
|
340
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f32e94c91ffe49af04835ee713ebd8e005c85ebe83e7e1fdcc00f27164c2d636"},
|
|
341
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15d0c6405efc040499c46df44056a5c382f551a7624a41cf3e4c84a96b988a15"},
|
|
342
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:bf069c5381d757debae891401b88b3a346ba3a28ca45ba9251103b282463fad8"},
|
|
343
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7d5cf15892e63411ec1bd67deff0e84317d974e6ab2cdfefdd4a7cea2989df66"},
|
|
344
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:3e3872c21170f8341656f8692f8939e8800dcee6549ad2474d4c817bdefd62cd"},
|
|
345
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:b9ddeff8e8fd65eb1fcefa61018100b2b627e759ea6ad275d2e2a93ffac147bf"},
|
|
346
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:02feeeda93e1fa3b33414eb57c2b0aefd1db8f558dd33fdfcce664a0f86056e4"},
|
|
347
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d08154ad45349162b6c37f12d5d1b2e6eef338e657b85e1621e4e6a4a69d64cb"},
|
|
348
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-win32.whl", hash = "sha256:10ae4718a056948d73ca3e1bb9ab1f95f897ec1e362f829b9d37cc29ab566c60"},
|
|
349
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:1bb77bc6197e5cb19784b6a42bb0f8427e81737a630d9d7dda62ed31733f9e6c"},
|
|
350
|
+
{file = "cytoolz-1.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:563dda652c6ff52d215704fbe6b491879b78d7bbbb3a9524ec8e763483cb459f"},
|
|
351
|
+
{file = "cytoolz-1.1.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:d542cee7c7882d2a914a33dec4d3600416fb336734df979473249d4c53d207a1"},
|
|
352
|
+
{file = "cytoolz-1.1.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:31922849b701b0f24bb62e56eb2488dcd3aa6ae3057694bd6b3b7c4c2bc27c2f"},
|
|
353
|
+
{file = "cytoolz-1.1.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:e68308d32afd31943314735c1335e4ab5696110e96b405f6bdb8f2a8dc771a16"},
|
|
354
|
+
{file = "cytoolz-1.1.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fc4bb48b3b866e1867f7c6411a4229e5b44be3989060663713e10efc24c9bd5f"},
|
|
355
|
+
{file = "cytoolz-1.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:456f77207d1445025d7ef262b8370a05492dcb1490cb428b0f3bf1bd744a89b0"},
|
|
356
|
+
{file = "cytoolz-1.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:174ebc71ebb20a9baeffce6ee07ee2cd913754325c93f99d767380d8317930f7"},
|
|
357
|
+
{file = "cytoolz-1.1.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8b3604fef602bcd53415055a4f68468339192fd17be39e687ae24f476d23d56e"},
|
|
358
|
+
{file = "cytoolz-1.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3604b959a01f64c366e7d10ec7634d5f5cfe10301e27a8f090f6eb3b2a628a18"},
|
|
359
|
+
{file = "cytoolz-1.1.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6db2127a3c1bc2f59f08010d2ae53a760771a9de2f67423ad8d400e9ba4276e8"},
|
|
360
|
+
{file = "cytoolz-1.1.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:56584745ac647993a016a21bc76399113b7595e312f8d0a1b140c9fcf9b58a27"},
|
|
361
|
+
{file = "cytoolz-1.1.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:db2c4c3a7f7bd7e03bb1a236a125c8feb86c75802f4ecda6ecfaf946610b2930"},
|
|
362
|
+
{file = "cytoolz-1.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:48cb8a692111a285d2b9acd16d185428176bfbffa8a7c274308525fccd01dd42"},
|
|
363
|
+
{file = "cytoolz-1.1.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d2f344ba5eb17dcf38ee37fdde726f69053f54927db8f8a1bed6ac61e5b1890d"},
|
|
364
|
+
{file = "cytoolz-1.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:abf76b1c1abd031f098f293b6d90ee08bdaa45f8b5678430e331d991b82684b1"},
|
|
365
|
+
{file = "cytoolz-1.1.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:ddf9a38a5b686091265ff45b53d142e44a538cd6c2e70610d3bc6be094219032"},
|
|
366
|
+
{file = "cytoolz-1.1.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:946786755274f07bb2be0400f28adb31d7d85a7c7001873c0a8e24a503428fb3"},
|
|
367
|
+
{file = "cytoolz-1.1.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:d5b8f78b9fed79cf185ad4ddec099abeef45951bdcb416c5835ba05f0a1242c7"},
|
|
368
|
+
{file = "cytoolz-1.1.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:fccde6efefdbc02e676ccb352a2ccc8a8e929f59a1c6d3d60bb78e923a49ca44"},
|
|
369
|
+
{file = "cytoolz-1.1.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:717b7775313da5f51b0fbf50d865aa9c39cb241bd4cb605df3cf2246d6567397"},
|
|
370
|
+
{file = "cytoolz-1.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5158744a09d0e0e4a4f82225e3a3c4ebf38f9ae74467aaa905467270e52f2794"},
|
|
371
|
+
{file = "cytoolz-1.1.0-cp314-cp314-win32.whl", hash = "sha256:1ed534bdbbf063b2bb28fca7d0f6723a3e5a72b086e7c7fe6d74ae8c3e4d00e2"},
|
|
372
|
+
{file = "cytoolz-1.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:472c1c9a085f5ad973ec0ad7f0b9ba0969faea6f96c9e397f6293d386f3a25ec"},
|
|
373
|
+
{file = "cytoolz-1.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:a7ad7ca3386fa86bd301be3fa36e7f0acb024f412f665937955acfc8eb42deff"},
|
|
374
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:64b63ed4b71b1ba813300ad0f06b8aff19a12cf51116e0e4f1ed837cea4debcf"},
|
|
375
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:a60ba6f2ed9eb0003a737e1ee1e9fa2258e749da6477946008d4324efa25149f"},
|
|
376
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1aa58e2434d732241f7f051e6f17657e969a89971025e24578b5cbc6f1346485"},
|
|
377
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:6965af3fc7214645970e312deb9bd35a213a1eaabcfef4f39115e60bf2f76867"},
|
|
378
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ddd2863f321d67527d3b67a93000a378ad6f967056f68c06467fe011278a6d0e"},
|
|
379
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4e6b428e9eb5126053c2ae0efa62512ff4b38ed3951f4d0888ca7005d63e56f5"},
|
|
380
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d758e5ef311d2671e0ae8c214c52e44617cf1e58bef8f022b547b9802a5a7f30"},
|
|
381
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a95416eca473e6c1179b48d86adcf528b59c63ce78f4cb9934f2e413afa9b56b"},
|
|
382
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:36c8ede93525cf11e2cc787b7156e5cecd7340193ef800b816a16f1404a8dc6d"},
|
|
383
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c949755b6d8a649c5fbc888bc30915926f1b09fe42fea9f289e297c2f6ddd3"},
|
|
384
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e1b6d37545816905a76d9ed59fa4e332f929e879f062a39ea0f6f620405cdc27"},
|
|
385
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:05332112d4087904842b36954cd1d3fc0e463a2f4a7ef9477bd241427c593c3b"},
|
|
386
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:31538ca2fad2d688cbd962ccc3f1da847329e2258a52940f10a2ac0719e526be"},
|
|
387
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:747562aa70abf219ea16f07d50ac0157db856d447f7f498f592e097cbc77df0b"},
|
|
388
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:3dc15c48b20c0f467e15e341e102896c8422dccf8efc6322def5c1b02f074629"},
|
|
389
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:3c03137ee6103ba92d5d6ad6a510e86fded69cd67050bd8a1843f15283be17ac"},
|
|
390
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:be8e298d88f88bd172b59912240558be3b7a04959375646e7fd4996401452941"},
|
|
391
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-win32.whl", hash = "sha256:3d407140f5604a89578285d4aac7b18b8eafa055cf776e781aabb89c48738fad"},
|
|
392
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:56e5afb69eb6e1b3ffc34716ee5f92ffbdb5cb003b3a5ca4d4b0fe700e217162"},
|
|
393
|
+
{file = "cytoolz-1.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:27b19b4a286b3ff52040efa42dbe403730aebe5fdfd2def704eb285e2125c63e"},
|
|
394
|
+
{file = "cytoolz-1.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f32e93a55681d782fc6af939f6df36509d65122423cbc930be39b141064adff8"},
|
|
395
|
+
{file = "cytoolz-1.1.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:5d9bc596751cbda8073e65be02ca11706f00029768fbbbc81e11a8c290bb41aa"},
|
|
396
|
+
{file = "cytoolz-1.1.0-pp311-pypy311_pp73-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:9b16660d01c3931951fab49db422c627897c38c1a1f0393a97582004019a4887"},
|
|
397
|
+
{file = "cytoolz-1.1.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b7de5718e2113d4efccea3f06055758cdbc17388ecc3341ba4d1d812837d7c1a"},
|
|
398
|
+
{file = "cytoolz-1.1.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a12a2a1a6bc44099491c05a12039efa08cc33a3d0f8c7b0566185e085e139283"},
|
|
399
|
+
{file = "cytoolz-1.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:047defa7f5f9a32f82373dbc3957289562e8a3fa58ae02ec8e4dca4f43a33a21"},
|
|
400
|
+
{file = "cytoolz-1.1.0.tar.gz", hash = "sha256:13a7bf254c3c0d28b12e2290b82aed0f0977a4c2a2bf84854fcdc7796a29f3b0"},
|
|
401
|
+
]
|
|
402
|
+
|
|
237
403
|
[[package]]
|
|
238
404
|
name = "dstack-sdk"
|
|
239
|
-
version = "0.5.
|
|
405
|
+
version = "0.5.4"
|
|
240
406
|
requires_python = ">=3.10"
|
|
241
407
|
summary = "dstack SDK for Python"
|
|
242
408
|
groups = ["default"]
|
|
243
409
|
dependencies = [
|
|
244
410
|
"asyncio>=3.4.3",
|
|
245
411
|
"cryptography>=43.0.0",
|
|
412
|
+
"eth-keys>=0.5.0",
|
|
413
|
+
"eth-utils>=4.0.0",
|
|
246
414
|
"httpx>=0.27.2",
|
|
247
415
|
"pydantic>=2.9.2",
|
|
248
416
|
]
|
|
249
417
|
files = [
|
|
250
|
-
{file = "dstack_sdk-0.5.
|
|
251
|
-
{file = "dstack_sdk-0.5.
|
|
418
|
+
{file = "dstack_sdk-0.5.4-py3-none-any.whl", hash = "sha256:3c64d021408cc95def04332caab4593efb9d91fe87553d1f9d31c7c6e0fee07b"},
|
|
419
|
+
{file = "dstack_sdk-0.5.4.tar.gz", hash = "sha256:0a5426cf37bcd89f98db37aced09a8a95431943ceaf6ed75eb69baca32902c95"},
|
|
420
|
+
]
|
|
421
|
+
|
|
422
|
+
[[package]]
|
|
423
|
+
name = "eth-hash"
|
|
424
|
+
version = "0.8.0"
|
|
425
|
+
requires_python = "<4,>=3.10"
|
|
426
|
+
summary = "eth-hash: The Ethereum hashing function, keccak256, sometimes (erroneously) called sha3"
|
|
427
|
+
groups = ["default"]
|
|
428
|
+
files = [
|
|
429
|
+
{file = "eth_hash-0.8.0-py3-none-any.whl", hash = "sha256:523718a51b369ab89866b929a5c93c52978cd866ea309192ad980dd8271f9fac"},
|
|
430
|
+
{file = "eth_hash-0.8.0.tar.gz", hash = "sha256:b009752b620da2e9c7668014849d1f5fadbe4f138603f1871cc5d4ca706896b1"},
|
|
431
|
+
]
|
|
432
|
+
|
|
433
|
+
[[package]]
|
|
434
|
+
name = "eth-keys"
|
|
435
|
+
version = "0.7.0"
|
|
436
|
+
requires_python = "<4,>=3.8"
|
|
437
|
+
summary = "eth-keys: Common API for Ethereum key operations"
|
|
438
|
+
groups = ["default"]
|
|
439
|
+
dependencies = [
|
|
440
|
+
"eth-typing>=3",
|
|
441
|
+
"eth-utils>=2",
|
|
442
|
+
]
|
|
443
|
+
files = [
|
|
444
|
+
{file = "eth_keys-0.7.0-py3-none-any.whl", hash = "sha256:b0cdda8ffe8e5ba69c7c5ca33f153828edcace844f67aabd4542d7de38b159cf"},
|
|
445
|
+
{file = "eth_keys-0.7.0.tar.gz", hash = "sha256:79d24fd876201df67741de3e3fefb3f4dbcbb6ace66e47e6fe662851a4547814"},
|
|
446
|
+
]
|
|
447
|
+
|
|
448
|
+
[[package]]
|
|
449
|
+
name = "eth-typing"
|
|
450
|
+
version = "6.0.0"
|
|
451
|
+
requires_python = "<4,>=3.10"
|
|
452
|
+
summary = "eth-typing: Common type annotations for ethereum python packages"
|
|
453
|
+
groups = ["default"]
|
|
454
|
+
dependencies = [
|
|
455
|
+
"typing-extensions>=4.5.0",
|
|
456
|
+
]
|
|
457
|
+
files = [
|
|
458
|
+
{file = "eth_typing-6.0.0-py3-none-any.whl", hash = "sha256:ee74fb641eb36dd885e1c42c2a3055314efa532b3e71480816df70a94d35cfb9"},
|
|
459
|
+
{file = "eth_typing-6.0.0.tar.gz", hash = "sha256:315dd460dc0b71c15a6cd51e3c0b70d237eec8771beb844144f3a1fb4adb2392"},
|
|
460
|
+
]
|
|
461
|
+
|
|
462
|
+
[[package]]
|
|
463
|
+
name = "eth-utils"
|
|
464
|
+
version = "6.0.0"
|
|
465
|
+
requires_python = "<4,>=3.10"
|
|
466
|
+
summary = "eth-utils: Common utility functions for python code that interacts with Ethereum"
|
|
467
|
+
groups = ["default"]
|
|
468
|
+
dependencies = [
|
|
469
|
+
"cytoolz>=0.10.1; implementation_name == \"cpython\"",
|
|
470
|
+
"eth-hash>=0.3.1",
|
|
471
|
+
"eth-typing>=5.0.0",
|
|
472
|
+
"pydantic<3,>=2.0.0",
|
|
473
|
+
"toolz>0.8.2; implementation_name == \"pypy\"",
|
|
474
|
+
]
|
|
475
|
+
files = [
|
|
476
|
+
{file = "eth_utils-6.0.0-py3-none-any.whl", hash = "sha256:63cf48ee32c45541cb5748751909a8345c470432fb6f0fed4bd7c53fd6400469"},
|
|
477
|
+
{file = "eth_utils-6.0.0.tar.gz", hash = "sha256:eb54b2f82dd300d3142c49a89da195e823f5e5284d43203593f87c67bad92a96"},
|
|
252
478
|
]
|
|
253
479
|
|
|
254
480
|
[[package]]
|
|
@@ -689,6 +915,15 @@ files = [
|
|
|
689
915
|
{file = "pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f"},
|
|
690
916
|
]
|
|
691
917
|
|
|
918
|
+
[[package]]
|
|
919
|
+
name = "pysha3"
|
|
920
|
+
version = "1.0.2"
|
|
921
|
+
summary = "SHA-3 (Keccak) for Python 2.7 - 3.5"
|
|
922
|
+
groups = ["default"]
|
|
923
|
+
files = [
|
|
924
|
+
{file = "pysha3-1.0.2.tar.gz", hash = "sha256:fe988e73f2ce6d947220624f04d467faf05f1bbdbc64b0a201296bb3af92739e"},
|
|
925
|
+
]
|
|
926
|
+
|
|
692
927
|
[[package]]
|
|
693
928
|
name = "pytest"
|
|
694
929
|
version = "9.0.3"
|
|
@@ -820,6 +1055,18 @@ files = [
|
|
|
820
1055
|
{file = "tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f"},
|
|
821
1056
|
]
|
|
822
1057
|
|
|
1058
|
+
[[package]]
|
|
1059
|
+
name = "toolz"
|
|
1060
|
+
version = "1.1.0"
|
|
1061
|
+
requires_python = ">=3.9"
|
|
1062
|
+
summary = "List processing tools and functional utilities"
|
|
1063
|
+
groups = ["default"]
|
|
1064
|
+
marker = "implementation_name == \"pypy\" or implementation_name == \"cpython\""
|
|
1065
|
+
files = [
|
|
1066
|
+
{file = "toolz-1.1.0-py3-none-any.whl", hash = "sha256:15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8"},
|
|
1067
|
+
{file = "toolz-1.1.0.tar.gz", hash = "sha256:27a5c770d068c110d9ed9323f24f1543e83b2f300a687b7891c1a6d56b697b5b"},
|
|
1068
|
+
]
|
|
1069
|
+
|
|
823
1070
|
[[package]]
|
|
824
1071
|
name = "typing-extensions"
|
|
825
1072
|
version = "4.15.0"
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "phala-cloud"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.2.0"
|
|
8
8
|
description = "Python SDK for Phala Cloud API (sync/async, pydantic, REPL-friendly)"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -26,6 +26,7 @@ dependencies = [
|
|
|
26
26
|
"httpx[socks]>=0.27.0",
|
|
27
27
|
"pydantic>=2.7.0",
|
|
28
28
|
"dstack-sdk>=0.5.4",
|
|
29
|
+
"pysha3>=1.0.2",
|
|
29
30
|
]
|
|
30
31
|
|
|
31
32
|
[project.optional-dependencies]
|
|
@@ -19,9 +19,13 @@ from .result import SafeResult
|
|
|
19
19
|
from .utils import (
|
|
20
20
|
encrypt_env_vars,
|
|
21
21
|
get_compose_hash,
|
|
22
|
+
get_mr_config_id,
|
|
23
|
+
get_mr_config_id_hex,
|
|
24
|
+
get_mr_config_id_v1,
|
|
22
25
|
parse_env,
|
|
23
26
|
parse_env_vars,
|
|
24
27
|
verify_env_encrypt_public_key,
|
|
28
|
+
verify_mr_config_id,
|
|
25
29
|
)
|
|
26
30
|
from .webhook import WebhookEvent, parse_webhook_event, verify_webhook_signature
|
|
27
31
|
|
|
@@ -46,9 +50,13 @@ __all__ = [
|
|
|
46
50
|
"encrypt_env_vars",
|
|
47
51
|
"error_codes",
|
|
48
52
|
"get_compose_hash",
|
|
53
|
+
"get_mr_config_id",
|
|
54
|
+
"get_mr_config_id_hex",
|
|
55
|
+
"get_mr_config_id_v1",
|
|
49
56
|
"parse_env",
|
|
50
57
|
"parse_env_vars",
|
|
51
58
|
"verify_env_encrypt_public_key",
|
|
59
|
+
"verify_mr_config_id",
|
|
52
60
|
"verify_webhook_signature",
|
|
53
61
|
"parse_webhook_event",
|
|
54
62
|
"WebhookEvent",
|
|
@@ -7,9 +7,11 @@ from .models.apps import AppRevisionsResponse as AppRevisionsResponse
|
|
|
7
7
|
from .models.auth import CurrentUserV20251028, CurrentUserV20260121
|
|
8
8
|
from .models.base import CloudModel
|
|
9
9
|
from .models.cvms import (
|
|
10
|
+
Certificate,
|
|
10
11
|
PaginatedCvmInfosV20251028,
|
|
11
12
|
PaginatedCvmInfosV20260121,
|
|
12
13
|
PaginatedCvmInfosV20260522,
|
|
14
|
+
TcbInfo,
|
|
13
15
|
)
|
|
14
16
|
|
|
15
17
|
|
|
@@ -50,7 +52,10 @@ class ProvisionCvmResponse(CloudModel):
|
|
|
50
52
|
os_image_hash: str | None = None
|
|
51
53
|
instance_type: str | None = None
|
|
52
54
|
node_id: int | None = None
|
|
55
|
+
# Deprecated: identifies a KMS node, not the on-chain KMS contract.
|
|
56
|
+
# Use kms_contract_id instead.
|
|
53
57
|
kms_id: str | None = None
|
|
58
|
+
kms_contract_id: str | None = None
|
|
54
59
|
|
|
55
60
|
|
|
56
61
|
class ProvisionCvmComposeFileUpdateResult(CloudModel):
|
|
@@ -276,8 +281,46 @@ class AppInfoResponse(CloudModel):
|
|
|
276
281
|
# AppRevisionsResponse and AppRevisionDetailResponse are imported from models.apps
|
|
277
282
|
|
|
278
283
|
|
|
284
|
+
class AppAttestationKmsInfo(CloudModel):
|
|
285
|
+
contract_address: str
|
|
286
|
+
chain_id: int | None = None
|
|
287
|
+
version: str
|
|
288
|
+
url: str
|
|
289
|
+
gateway_app_id: str | None = None
|
|
290
|
+
gateway_app_url: str
|
|
291
|
+
kms_type: str
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
class AppAttestationInstance(CloudModel):
|
|
295
|
+
vm_uuid: str | None = None
|
|
296
|
+
name: str | None = None
|
|
297
|
+
instance_id: str | None = None
|
|
298
|
+
status: str | None = None
|
|
299
|
+
image_version: str | None = None
|
|
300
|
+
quote: str | None = None
|
|
301
|
+
ppid: str | None = None
|
|
302
|
+
ppid_sha256: str | None = None
|
|
303
|
+
device_id: str | None = None
|
|
304
|
+
fmspc: str | None = None
|
|
305
|
+
tee_tcb_svn: str | None = None
|
|
306
|
+
mr_config_id: str | None = None
|
|
307
|
+
cpusvn: str | None = None
|
|
308
|
+
pcesvn: int | None = None
|
|
309
|
+
tcb_info: TcbInfo | None = None
|
|
310
|
+
app_certificates: list[Certificate] | None = None
|
|
311
|
+
compose_file: str | None = None
|
|
312
|
+
eventlog: list[GenericObject] = Field(default_factory=list)
|
|
313
|
+
error: str | None = None
|
|
314
|
+
|
|
315
|
+
|
|
279
316
|
class AppAttestationResponse(CloudModel):
|
|
280
|
-
|
|
317
|
+
app_id: str | None = None
|
|
318
|
+
contract_address: str | None = None
|
|
319
|
+
kms_info: AppAttestationKmsInfo | None = None
|
|
320
|
+
instances: list[AppAttestationInstance] = Field(default_factory=list)
|
|
321
|
+
kms_guest_agent_info: GenericObject | None = None
|
|
322
|
+
gateway_guest_agent_info: GenericObject | None = None
|
|
323
|
+
qemu_version: str | None = None
|
|
281
324
|
|
|
282
325
|
|
|
283
326
|
CurrentUserResponse = CurrentUserV20260121 | CurrentUserV20251028
|
|
@@ -15,6 +15,12 @@ __all__ = [
|
|
|
15
15
|
"safe_get_cvm_list",
|
|
16
16
|
"get_kms_list",
|
|
17
17
|
"safe_get_kms_list",
|
|
18
|
+
"list_kms_contracts",
|
|
19
|
+
"safe_list_kms_contracts",
|
|
20
|
+
"get_kms_contract",
|
|
21
|
+
"safe_get_kms_contract",
|
|
22
|
+
"list_kms_contract_nodes",
|
|
23
|
+
"safe_list_kms_contract_nodes",
|
|
18
24
|
"list_all_instance_type_families",
|
|
19
25
|
"safe_list_all_instance_type_families",
|
|
20
26
|
"list_family_instance_types",
|
|
@@ -177,6 +183,30 @@ def safe_get_kms_list(client: Any, *args: Any, **kwargs: Any) -> Any:
|
|
|
177
183
|
return client.safe_get_kms_list(*args, **kwargs)
|
|
178
184
|
|
|
179
185
|
|
|
186
|
+
def list_kms_contracts(client: Any, *args: Any, **kwargs: Any) -> Any:
|
|
187
|
+
return client.list_kms_contracts(*args, **kwargs)
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def safe_list_kms_contracts(client: Any, *args: Any, **kwargs: Any) -> Any:
|
|
191
|
+
return client.safe_list_kms_contracts(*args, **kwargs)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
def get_kms_contract(client: Any, *args: Any, **kwargs: Any) -> Any:
|
|
195
|
+
return client.get_kms_contract(*args, **kwargs)
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
def safe_get_kms_contract(client: Any, *args: Any, **kwargs: Any) -> Any:
|
|
199
|
+
return client.safe_get_kms_contract(*args, **kwargs)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
def list_kms_contract_nodes(client: Any, *args: Any, **kwargs: Any) -> Any:
|
|
203
|
+
return client.list_kms_contract_nodes(*args, **kwargs)
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
def safe_list_kms_contract_nodes(client: Any, *args: Any, **kwargs: Any) -> Any:
|
|
207
|
+
return client.safe_list_kms_contract_nodes(*args, **kwargs)
|
|
208
|
+
|
|
209
|
+
|
|
180
210
|
def list_all_instance_type_families(client: Any, *args: Any, **kwargs: Any) -> Any:
|
|
181
211
|
return client.list_all_instance_type_families(*args, **kwargs)
|
|
182
212
|
|
|
@@ -30,6 +30,9 @@ from .models import (
|
|
|
30
30
|
GetCvmListRequest,
|
|
31
31
|
GetKmsListRequest,
|
|
32
32
|
GetKmsListResponse,
|
|
33
|
+
KmsContract,
|
|
34
|
+
ListKmsContractNodesResponse,
|
|
35
|
+
ListKmsContractsResponse,
|
|
33
36
|
PaginatedCvmInfosAny,
|
|
34
37
|
PaginatedCvmInfosV20251028,
|
|
35
38
|
PaginatedCvmInfosV20260121,
|
|
@@ -37,15 +40,20 @@ from .models import (
|
|
|
37
40
|
)
|
|
38
41
|
from .result import SafeResult
|
|
39
42
|
|
|
40
|
-
ApiVersion = Literal["2025-10-28", "2026-01-21", "2026-05-22"]
|
|
43
|
+
ApiVersion = Literal["2025-10-28", "2026-01-21", "2026-05-22", "2026-06-23"]
|
|
41
44
|
SUPPORTED_API_VERSIONS: tuple[ApiVersion, ...] = (
|
|
42
45
|
"2025-10-28",
|
|
43
46
|
"2026-01-21",
|
|
44
47
|
"2026-05-22",
|
|
48
|
+
"2026-06-23",
|
|
45
49
|
)
|
|
46
|
-
DEFAULT_API_VERSION: ApiVersion = "2026-
|
|
50
|
+
DEFAULT_API_VERSION: ApiVersion = "2026-06-23"
|
|
47
51
|
DEFAULT_BASE_URL = "https://cloud-api.phala.com/api/v1"
|
|
48
52
|
|
|
53
|
+
# The contract-centric KMS API exists from this version onward; the contract
|
|
54
|
+
# methods pin it per request.
|
|
55
|
+
_KMS_CONTRACT_API_VERSION = "2026-06-23"
|
|
56
|
+
|
|
49
57
|
T = TypeVar("T", bound=BaseModel)
|
|
50
58
|
|
|
51
59
|
|
|
@@ -228,8 +236,20 @@ class AsyncPhalaCloud:
|
|
|
228
236
|
self,
|
|
229
237
|
request: GetKmsListRequest | Mapping[str, Any] | None = None,
|
|
230
238
|
) -> GetKmsListResponse:
|
|
239
|
+
"""List KMS nodes (legacy, node-centric shape).
|
|
240
|
+
|
|
241
|
+
.. deprecated::
|
|
242
|
+
From API version 2026-06-23 the KMS API is contract-centric. Use
|
|
243
|
+
:meth:`list_kms_contracts` and :meth:`list_kms_contract_nodes`. This
|
|
244
|
+
method stays pinned to the legacy node-list shape.
|
|
245
|
+
"""
|
|
231
246
|
req = self._coerce(GetKmsListRequest, request)
|
|
232
|
-
data = await self.
|
|
247
|
+
data = await self.request(
|
|
248
|
+
"GET",
|
|
249
|
+
"/kms",
|
|
250
|
+
params=req.model_dump(exclude_none=True),
|
|
251
|
+
headers={"X-Phala-Version": "2026-05-22"},
|
|
252
|
+
)
|
|
233
253
|
return self._validate(GetKmsListResponse, data)
|
|
234
254
|
|
|
235
255
|
async def safe_get_kms_list(
|
|
@@ -238,6 +258,38 @@ class AsyncPhalaCloud:
|
|
|
238
258
|
) -> SafeResult[GetKmsListResponse]:
|
|
239
259
|
return await self.safe(self.get_kms_list, request)
|
|
240
260
|
|
|
261
|
+
async def list_kms_contracts(self) -> ListKmsContractsResponse:
|
|
262
|
+
"""List the available KMS contracts."""
|
|
263
|
+
data = await self.request(
|
|
264
|
+
"GET", "/kms", headers={"X-Phala-Version": _KMS_CONTRACT_API_VERSION}
|
|
265
|
+
)
|
|
266
|
+
return self._validate(ListKmsContractsResponse, data)
|
|
267
|
+
|
|
268
|
+
async def safe_list_kms_contracts(self) -> SafeResult[ListKmsContractsResponse]:
|
|
269
|
+
return await self.safe(self.list_kms_contracts)
|
|
270
|
+
|
|
271
|
+
async def get_kms_contract(self, slug: str) -> KmsContract:
|
|
272
|
+
"""Get a KMS contract by slug (a kc_ hashed id also resolves)."""
|
|
273
|
+
data = await self.request(
|
|
274
|
+
"GET", f"/kms/{slug}", headers={"X-Phala-Version": _KMS_CONTRACT_API_VERSION}
|
|
275
|
+
)
|
|
276
|
+
return self._validate(KmsContract, data)
|
|
277
|
+
|
|
278
|
+
async def safe_get_kms_contract(self, slug: str) -> SafeResult[KmsContract]:
|
|
279
|
+
return await self.safe(self.get_kms_contract, slug)
|
|
280
|
+
|
|
281
|
+
async def list_kms_contract_nodes(self, slug: str) -> ListKmsContractNodesResponse:
|
|
282
|
+
"""List the KMS nodes (with RPC url) under a contract."""
|
|
283
|
+
data = await self.request(
|
|
284
|
+
"GET", f"/kms/{slug}/nodes", headers={"X-Phala-Version": _KMS_CONTRACT_API_VERSION}
|
|
285
|
+
)
|
|
286
|
+
return self._validate(ListKmsContractNodesResponse, data)
|
|
287
|
+
|
|
288
|
+
async def safe_list_kms_contract_nodes(
|
|
289
|
+
self, slug: str
|
|
290
|
+
) -> SafeResult[ListKmsContractNodesResponse]:
|
|
291
|
+
return await self.safe(self.list_kms_contract_nodes, slug)
|
|
292
|
+
|
|
241
293
|
def _decode_or_raise(self, response: httpx.Response) -> Any:
|
|
242
294
|
if response.status_code >= 400:
|
|
243
295
|
raise self._to_api_error(response)
|
|
@@ -465,8 +517,20 @@ class PhalaCloud:
|
|
|
465
517
|
self,
|
|
466
518
|
request: GetKmsListRequest | Mapping[str, Any] | None = None,
|
|
467
519
|
) -> GetKmsListResponse:
|
|
520
|
+
"""List KMS nodes (legacy, node-centric shape).
|
|
521
|
+
|
|
522
|
+
.. deprecated::
|
|
523
|
+
From API version 2026-06-23 the KMS API is contract-centric. Use
|
|
524
|
+
:meth:`list_kms_contracts` and :meth:`list_kms_contract_nodes`. This
|
|
525
|
+
method stays pinned to the legacy node-list shape.
|
|
526
|
+
"""
|
|
468
527
|
req = self._coerce(GetKmsListRequest, request)
|
|
469
|
-
data = self.
|
|
528
|
+
data = self.request(
|
|
529
|
+
"GET",
|
|
530
|
+
"/kms",
|
|
531
|
+
params=req.model_dump(exclude_none=True),
|
|
532
|
+
headers={"X-Phala-Version": "2026-05-22"},
|
|
533
|
+
)
|
|
470
534
|
return self._validate(GetKmsListResponse, data)
|
|
471
535
|
|
|
472
536
|
def safe_get_kms_list(
|
|
@@ -475,6 +539,34 @@ class PhalaCloud:
|
|
|
475
539
|
) -> SafeResult[GetKmsListResponse]:
|
|
476
540
|
return self.safe(self.get_kms_list, request)
|
|
477
541
|
|
|
542
|
+
def list_kms_contracts(self) -> ListKmsContractsResponse:
|
|
543
|
+
"""List the available KMS contracts."""
|
|
544
|
+
data = self.request("GET", "/kms", headers={"X-Phala-Version": _KMS_CONTRACT_API_VERSION})
|
|
545
|
+
return self._validate(ListKmsContractsResponse, data)
|
|
546
|
+
|
|
547
|
+
def safe_list_kms_contracts(self) -> SafeResult[ListKmsContractsResponse]:
|
|
548
|
+
return self.safe(self.list_kms_contracts)
|
|
549
|
+
|
|
550
|
+
def get_kms_contract(self, slug: str) -> KmsContract:
|
|
551
|
+
"""Get a KMS contract by slug (a kc_ hashed id also resolves)."""
|
|
552
|
+
data = self.request(
|
|
553
|
+
"GET", f"/kms/{slug}", headers={"X-Phala-Version": _KMS_CONTRACT_API_VERSION}
|
|
554
|
+
)
|
|
555
|
+
return self._validate(KmsContract, data)
|
|
556
|
+
|
|
557
|
+
def safe_get_kms_contract(self, slug: str) -> SafeResult[KmsContract]:
|
|
558
|
+
return self.safe(self.get_kms_contract, slug)
|
|
559
|
+
|
|
560
|
+
def list_kms_contract_nodes(self, slug: str) -> ListKmsContractNodesResponse:
|
|
561
|
+
"""List the KMS nodes (with RPC url) under a contract."""
|
|
562
|
+
data = self.request(
|
|
563
|
+
"GET", f"/kms/{slug}/nodes", headers={"X-Phala-Version": _KMS_CONTRACT_API_VERSION}
|
|
564
|
+
)
|
|
565
|
+
return self._validate(ListKmsContractNodesResponse, data)
|
|
566
|
+
|
|
567
|
+
def safe_list_kms_contract_nodes(self, slug: str) -> SafeResult[ListKmsContractNodesResponse]:
|
|
568
|
+
return self.safe(self.list_kms_contract_nodes, slug)
|
|
569
|
+
|
|
478
570
|
def _decode_or_raise(self, response: httpx.Response) -> Any:
|
|
479
571
|
if response.status_code >= 400:
|
|
480
572
|
raise self._to_api_error(response)
|