From 3cd41376b6cc37ef11f21ef8df8403c9fc7c0b6c Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Tue, 2 Dec 2025 14:00:40 +0700 Subject: [PATCH 01/19] setup signed-docs importer python project --- signed_docs/.python-version | 1 + signed_docs/README.md | 7 +++ signed_docs/main.py | 9 +++ signed_docs/pyproject.toml | 10 ++++ signed_docs/uv.lock | 110 ++++++++++++++++++++++++++++++++++++ 5 files changed, 137 insertions(+) create mode 100644 signed_docs/.python-version create mode 100644 signed_docs/README.md create mode 100644 signed_docs/main.py create mode 100644 signed_docs/pyproject.toml create mode 100644 signed_docs/uv.lock diff --git a/signed_docs/.python-version b/signed_docs/.python-version new file mode 100644 index 000000000000..24ee5b1be996 --- /dev/null +++ b/signed_docs/.python-version @@ -0,0 +1 @@ +3.13 diff --git a/signed_docs/README.md b/signed_docs/README.md new file mode 100644 index 000000000000..6557b0da094f --- /dev/null +++ b/signed_docs/README.md @@ -0,0 +1,7 @@ +# Catalyst Signed Documents importer + +> A script for inserting ["Catalyst Signed Documents"] +like `Proposal`, `Comment`, `Proposal Form Template`, etc. via the `v1/document` PUT endpoint. + + +["Catalyst Signed Documents"]: https://docs.dev.projectcatalyst.io/libs/main/architecture/08_concepts/signed_doc/spec/ \ No newline at end of file diff --git a/signed_docs/main.py b/signed_docs/main.py new file mode 100644 index 000000000000..6528211cbce8 --- /dev/null +++ b/signed_docs/main.py @@ -0,0 +1,9 @@ +import argparse + +parser = argparse.ArgumentParser(description="Catalyst Signed Document importer.") + + +args = parser.parse_args() + + +print(f"Finished importing documents.") \ No newline at end of file diff --git a/signed_docs/pyproject.toml b/signed_docs/pyproject.toml new file mode 100644 index 000000000000..abbdcd780980 --- /dev/null +++ b/signed_docs/pyproject.toml @@ -0,0 +1,10 @@ +[project] +name = "signed-docs" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.13" +dependencies = [ + "argparse>=1.4.0", + "requests>=2.32.5", +] diff --git a/signed_docs/uv.lock b/signed_docs/uv.lock new file mode 100644 index 000000000000..0cbbac86a2af --- /dev/null +++ b/signed_docs/uv.lock @@ -0,0 +1,110 @@ +version = 1 +revision = 3 +requires-python = ">=3.13" + +[[package]] +name = "argparse" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/dd/e617cfc3f6210ae183374cd9f6a26b20514bbb5a792af97949c5aacddf0f/argparse-1.4.0.tar.gz", hash = "sha256:62b089a55be1d8949cd2bc7e0df0bddb9e028faefc8c32038cc84862aefdd6e4", size = 70508, upload-time = "2015-09-12T20:22:16.217Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/94/3af39d34be01a24a6e65433d19e107099374224905f1e0cc6bbe1fd22a2f/argparse-1.4.0-py2.py3-none-any.whl", hash = "sha256:c31647edb69fd3d465a847ea3157d37bed1f95f19760b11a47aa91c04b666314", size = 23000, upload-time = "2015-09-14T16:03:16.137Z" }, +] + +[[package]] +name = "certifi" +version = "2025.11.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/8c/58f469717fa48465e4a50c014a0400602d3c437d7c0c468e17ada824da3a/certifi-2025.11.12.tar.gz", hash = "sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316", size = 160538, upload-time = "2025-11-12T02:54:51.517Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/7d/9bc192684cea499815ff478dfcdc13835ddf401365057044fb721ec6bddb/certifi-2025.11.12-py3-none-any.whl", hash = "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b", size = 159438, upload-time = "2025-11-12T02:54:49.735Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/45/4b3a1239bbacd321068ea6e7ac28875b03ab8bc0aa0966452db17cd36714/charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794", size = 208091, upload-time = "2025-10-14T04:41:13.346Z" }, + { url = "https://files.pythonhosted.org/packages/7d/62/73a6d7450829655a35bb88a88fca7d736f9882a27eacdca2c6d505b57e2e/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed", size = 147936, upload-time = "2025-10-14T04:41:14.461Z" }, + { url = "https://files.pythonhosted.org/packages/89/c5/adb8c8b3d6625bef6d88b251bbb0d95f8205831b987631ab0c8bb5d937c2/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72", size = 144180, upload-time = "2025-10-14T04:41:15.588Z" }, + { url = "https://files.pythonhosted.org/packages/91/ed/9706e4070682d1cc219050b6048bfd293ccf67b3d4f5a4f39207453d4b99/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328", size = 161346, upload-time = "2025-10-14T04:41:16.738Z" }, + { url = "https://files.pythonhosted.org/packages/d5/0d/031f0d95e4972901a2f6f09ef055751805ff541511dc1252ba3ca1f80cf5/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede", size = 158874, upload-time = "2025-10-14T04:41:17.923Z" }, + { url = "https://files.pythonhosted.org/packages/f5/83/6ab5883f57c9c801ce5e5677242328aa45592be8a00644310a008d04f922/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894", size = 153076, upload-time = "2025-10-14T04:41:19.106Z" }, + { url = "https://files.pythonhosted.org/packages/75/1e/5ff781ddf5260e387d6419959ee89ef13878229732732ee73cdae01800f2/charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1", size = 150601, upload-time = "2025-10-14T04:41:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/d7/57/71be810965493d3510a6ca79b90c19e48696fb1ff964da319334b12677f0/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490", size = 150376, upload-time = "2025-10-14T04:41:21.398Z" }, + { url = "https://files.pythonhosted.org/packages/e5/d5/c3d057a78c181d007014feb7e9f2e65905a6c4ef182c0ddf0de2924edd65/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44", size = 144825, upload-time = "2025-10-14T04:41:22.583Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8c/d0406294828d4976f275ffbe66f00266c4b3136b7506941d87c00cab5272/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133", size = 162583, upload-time = "2025-10-14T04:41:23.754Z" }, + { url = "https://files.pythonhosted.org/packages/d7/24/e2aa1f18c8f15c4c0e932d9287b8609dd30ad56dbe41d926bd846e22fb8d/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3", size = 150366, upload-time = "2025-10-14T04:41:25.27Z" }, + { url = "https://files.pythonhosted.org/packages/e4/5b/1e6160c7739aad1e2df054300cc618b06bf784a7a164b0f238360721ab86/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e", size = 160300, upload-time = "2025-10-14T04:41:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/7a/10/f882167cd207fbdd743e55534d5d9620e095089d176d55cb22d5322f2afd/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc", size = 154465, upload-time = "2025-10-14T04:41:28.322Z" }, + { url = "https://files.pythonhosted.org/packages/89/66/c7a9e1b7429be72123441bfdbaf2bc13faab3f90b933f664db506dea5915/charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac", size = 99404, upload-time = "2025-10-14T04:41:29.95Z" }, + { url = "https://files.pythonhosted.org/packages/c4/26/b9924fa27db384bdcd97ab83b4f0a8058d96ad9626ead570674d5e737d90/charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14", size = 107092, upload-time = "2025-10-14T04:41:31.188Z" }, + { url = "https://files.pythonhosted.org/packages/af/8f/3ed4bfa0c0c72a7ca17f0380cd9e4dd842b09f664e780c13cff1dcf2ef1b/charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2", size = 100408, upload-time = "2025-10-14T04:41:32.624Z" }, + { url = "https://files.pythonhosted.org/packages/2a/35/7051599bd493e62411d6ede36fd5af83a38f37c4767b92884df7301db25d/charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd", size = 207746, upload-time = "2025-10-14T04:41:33.773Z" }, + { url = "https://files.pythonhosted.org/packages/10/9a/97c8d48ef10d6cd4fcead2415523221624bf58bcf68a802721a6bc807c8f/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb", size = 147889, upload-time = "2025-10-14T04:41:34.897Z" }, + { url = "https://files.pythonhosted.org/packages/10/bf/979224a919a1b606c82bd2c5fa49b5c6d5727aa47b4312bb27b1734f53cd/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e", size = 143641, upload-time = "2025-10-14T04:41:36.116Z" }, + { url = "https://files.pythonhosted.org/packages/ba/33/0ad65587441fc730dc7bd90e9716b30b4702dc7b617e6ba4997dc8651495/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14", size = 160779, upload-time = "2025-10-14T04:41:37.229Z" }, + { url = "https://files.pythonhosted.org/packages/67/ed/331d6b249259ee71ddea93f6f2f0a56cfebd46938bde6fcc6f7b9a3d0e09/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191", size = 159035, upload-time = "2025-10-14T04:41:38.368Z" }, + { url = "https://files.pythonhosted.org/packages/67/ff/f6b948ca32e4f2a4576aa129d8bed61f2e0543bf9f5f2b7fc3758ed005c9/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838", size = 152542, upload-time = "2025-10-14T04:41:39.862Z" }, + { url = "https://files.pythonhosted.org/packages/16/85/276033dcbcc369eb176594de22728541a925b2632f9716428c851b149e83/charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6", size = 149524, upload-time = "2025-10-14T04:41:41.319Z" }, + { url = "https://files.pythonhosted.org/packages/9e/f2/6a2a1f722b6aba37050e626530a46a68f74e63683947a8acff92569f979a/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e", size = 150395, upload-time = "2025-10-14T04:41:42.539Z" }, + { url = "https://files.pythonhosted.org/packages/60/bb/2186cb2f2bbaea6338cad15ce23a67f9b0672929744381e28b0592676824/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c", size = 143680, upload-time = "2025-10-14T04:41:43.661Z" }, + { url = "https://files.pythonhosted.org/packages/7d/a5/bf6f13b772fbb2a90360eb620d52ed8f796f3c5caee8398c3b2eb7b1c60d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090", size = 162045, upload-time = "2025-10-14T04:41:44.821Z" }, + { url = "https://files.pythonhosted.org/packages/df/c5/d1be898bf0dc3ef9030c3825e5d3b83f2c528d207d246cbabe245966808d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152", size = 149687, upload-time = "2025-10-14T04:41:46.442Z" }, + { url = "https://files.pythonhosted.org/packages/a5/42/90c1f7b9341eef50c8a1cb3f098ac43b0508413f33affd762855f67a410e/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828", size = 160014, upload-time = "2025-10-14T04:41:47.631Z" }, + { url = "https://files.pythonhosted.org/packages/76/be/4d3ee471e8145d12795ab655ece37baed0929462a86e72372fd25859047c/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec", size = 154044, upload-time = "2025-10-14T04:41:48.81Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6f/8f7af07237c34a1defe7defc565a9bc1807762f672c0fde711a4b22bf9c0/charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9", size = 99940, upload-time = "2025-10-14T04:41:49.946Z" }, + { url = "https://files.pythonhosted.org/packages/4b/51/8ade005e5ca5b0d80fb4aff72a3775b325bdc3d27408c8113811a7cbe640/charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c", size = 107104, upload-time = "2025-10-14T04:41:51.051Z" }, + { url = "https://files.pythonhosted.org/packages/da/5f/6b8f83a55bb8278772c5ae54a577f3099025f9ade59d0136ac24a0df4bde/charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2", size = 100743, upload-time = "2025-10-14T04:41:52.122Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, +] + +[[package]] +name = "idna" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, +] + +[[package]] +name = "requests" +version = "2.32.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, +] + +[[package]] +name = "signed-docs" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "argparse" }, + { name = "requests" }, +] + +[package.metadata] +requires-dist = [ + { name = "argparse", specifier = ">=1.4.0" }, + { name = "requests", specifier = ">=2.32.5" }, +] + +[[package]] +name = "urllib3" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, +] From 9e3698ff8cde77338362dc599063447060d95562 Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Wed, 3 Dec 2025 15:43:04 +0700 Subject: [PATCH 02/19] wip --- signed_docs/README.md | 4 +- signed_docs/main.py | 9 - signed_docs/pyproject.toml | 4 + signed_docs/setup_fund.py | 37 ++ signed_docs/uv.lock | 739 +++++++++++++++++++++++++++++++++++++ 5 files changed, 782 insertions(+), 11 deletions(-) delete mode 100644 signed_docs/main.py create mode 100644 signed_docs/setup_fund.py diff --git a/signed_docs/README.md b/signed_docs/README.md index 6557b0da094f..45d8834409a1 100644 --- a/signed_docs/README.md +++ b/signed_docs/README.md @@ -1,6 +1,6 @@ -# Catalyst Signed Documents importer +# Catalyst Signed Documents importer scripts -> A script for inserting ["Catalyst Signed Documents"] +> A collection of scripts for inserting ["Catalyst Signed Documents"] like `Proposal`, `Comment`, `Proposal Form Template`, etc. via the `v1/document` PUT endpoint. diff --git a/signed_docs/main.py b/signed_docs/main.py deleted file mode 100644 index 6528211cbce8..000000000000 --- a/signed_docs/main.py +++ /dev/null @@ -1,9 +0,0 @@ -import argparse - -parser = argparse.ArgumentParser(description="Catalyst Signed Document importer.") - - -args = parser.parse_args() - - -print(f"Finished importing documents.") \ No newline at end of file diff --git a/signed_docs/pyproject.toml b/signed_docs/pyproject.toml index abbdcd780980..e86367d1782a 100644 --- a/signed_docs/pyproject.toml +++ b/signed_docs/pyproject.toml @@ -7,4 +7,8 @@ requires-python = ">=3.13" dependencies = [ "argparse>=1.4.0", "requests>=2.32.5", + "catalyst-python" ] + +[tool.uv.sources] +catalyst-python = { git = "https://github.com/input-output-hk/catalyst-libs.git", subdirectory="catalyst-python", branch = "feat/catalyst-python" } diff --git a/signed_docs/setup_fund.py b/signed_docs/setup_fund.py new file mode 100644 index 000000000000..df126847f567 --- /dev/null +++ b/signed_docs/setup_fund.py @@ -0,0 +1,37 @@ +import argparse +import os + +from catalyst_python.admin import AdminKey +from catalyst_python.ed25519 import Ed25519Keys +from catalyst_python.signed_doc import ( + brand_parameters_form_template_doc, + brand_parameters_doc, + campaign_parameters_form_template_doc, + campaign_parameters_doc, + category_parameters_form_template_doc, + category_parameters_doc, + proposal_form_template_doc, + proposal_doc, +) + + +def load_admin_key() -> AdminKey: + key = Ed25519Keys(os.environ["CAT_GATEWAY_ADMIN_PRIVATE_KEY"]) + return AdminKey(key=key, network="cardano", subnet="preprod") + + +def publish_fund_documents(admin: AdminKey): + brand_template = brand_parameters_form_template_doc({"type": "object"}, admin) + brand = brand_parameters_doc({}, brand_template, admin) + campaign_template = campaign_parameters_form_template_doc( + {"type": "object"}, brand, admin + ) + + +parser = argparse.ArgumentParser(description="Catalyst Signed Document importer.") + + +args = parser.parse_args() + + +print(f"Finished setup Fund.") diff --git a/signed_docs/uv.lock b/signed_docs/uv.lock index 0cbbac86a2af..ab35beb77f86 100644 --- a/signed_docs/uv.lock +++ b/signed_docs/uv.lock @@ -2,6 +2,15 @@ version = 1 revision = 3 requires-python = ">=3.13" +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + [[package]] name = "argparse" version = "1.4.0" @@ -11,6 +20,103 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f2/94/3af39d34be01a24a6e65433d19e107099374224905f1e0cc6bbe1fd22a2f/argparse-1.4.0-py2.py3-none-any.whl", hash = "sha256:c31647edb69fd3d465a847ea3157d37bed1f95f19760b11a47aa91c04b666314", size = 23000, upload-time = "2015-09-14T16:03:16.137Z" }, ] +[[package]] +name = "asn1crypto" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/de/cf/d547feed25b5244fcb9392e288ff9fdc3280b10260362fc45d37a798a6ee/asn1crypto-1.5.1.tar.gz", hash = "sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c", size = 121080, upload-time = "2022-03-15T14:46:52.889Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/7f/09065fd9e27da0eda08b4d6897f1c13535066174cc023af248fc2a8d5e5a/asn1crypto-1.5.1-py2.py3-none-any.whl", hash = "sha256:db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67", size = 105045, upload-time = "2022-03-15T14:46:51.055Z" }, +] + +[[package]] +name = "attrs" +version = "25.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, +] + +[[package]] +name = "base58" +version = "2.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7f/45/8ae61209bb9015f516102fa559a2914178da1d5868428bd86a1b4421141d/base58-2.1.1.tar.gz", hash = "sha256:c5d0cb3f5b6e81e8e35da5754388ddcc6d0d14b6c6a132cb93d69ed580a7278c", size = 6528, upload-time = "2021-10-30T22:12:17.858Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4a/45/ec96b29162a402fc4c1c5512d114d7b3787b9d1c2ec241d9568b4816ee23/base58-2.1.1-py3-none-any.whl", hash = "sha256:11a36f4d3ce51dfc1043f3218591ac4eb1ceb172919cebe05b52a5bcc8d245c2", size = 5621, upload-time = "2021-10-30T22:12:16.658Z" }, +] + +[[package]] +name = "blockfrost-python" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/53/57/2215688ac342c28a7a1874a75d314d299d1bde5afda07d43dcf9b718d0d9/blockfrost_python-0.6.0.tar.gz", hash = "sha256:764b795617aadfd712b2a214fa6bd26cca33f0008340e0225126d18be040b112", size = 45671, upload-time = "2024-08-28T10:42:38.895Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/5a/340b4d06f20ec087a86012bc2294db1ed7c6c85a764d19b329993787a28b/blockfrost_python-0.6.0-py3-none-any.whl", hash = "sha256:c88840b8034b30dc06c637ccd14806e472d830d63522d2a667d9263640a354f4", size = 30857, upload-time = "2024-08-28T10:42:37.412Z" }, +] + +[[package]] +name = "cachetools" +version = "6.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/44/ca1675be2a83aeee1886ab745b28cda92093066590233cc501890eb8417a/cachetools-6.2.2.tar.gz", hash = "sha256:8e6d266b25e539df852251cfd6f990b4bc3a141db73b939058d809ebd2590fc6", size = 31571, upload-time = "2025-11-13T17:42:51.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/46/eb6eca305c77a4489affe1c5d8f4cae82f285d9addd8de4ec084a7184221/cachetools-6.2.2-py3-none-any.whl", hash = "sha256:6c09c98183bf58560c97b2abfcedcbaf6a896a490f534b031b661d3723b45ace", size = 11503, upload-time = "2025-11-13T17:42:50.232Z" }, +] + +[[package]] +name = "cardano-tools" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pexpect" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0d/b1/0ab7ed91e3112fc484fd2539ae4a61516b686c8c80eb512ff830b1f063d1/cardano_tools-2.1.0.tar.gz", hash = "sha256:445c8a5c769f57e5e04494ac4e3012082c3d0f1bd9a9eaed7f834d37ad7a069e", size = 38367, upload-time = "2022-12-06T03:56:16.938Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/52/858b1a5785b502f8570c111f2f556f36add3d14a8714ece2d4e4687fd22c/cardano_tools-2.1.0-py3-none-any.whl", hash = "sha256:c562c234b3d9a51540d41432f88aeae9a68c9441e0ea363c675dd712380ca06c", size = 34492, upload-time = "2022-12-06T03:56:15.076Z" }, +] + +[[package]] +name = "catalyst-python" +version = "0.1.0" +source = { git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&branch=feat%2Fcatalyst-python#bfd90e22eacf110fb06c6d837bb0b0de9b4ae447" } +dependencies = [ + { name = "cryptography" }, + { name = "pycardano" }, + { name = "python-bitcoinlib" }, + { name = "requests" }, +] + +[[package]] +name = "cbor2" +version = "5.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/b8/c0f6a7d46f816cb18b1fda61a2fe648abe16039f1ff93ea720a6e9fb3cee/cbor2-5.7.1.tar.gz", hash = "sha256:7a405a1d7c8230ee9acf240aad48ae947ef584e8af05f169f3c1bde8f01f8b71", size = 102467, upload-time = "2025-10-24T09:23:06.569Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/b1/51fb868fe38d893c570bb90b38d365ff0f00421402c1ae8f63b31b25d665/cbor2-5.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:59d5da59fffe89692d5bd1530eef4d26e4eb7aa794aaa1f4e192614786409009", size = 69068, upload-time = "2025-10-24T09:22:34.464Z" }, + { url = "https://files.pythonhosted.org/packages/b9/db/5abc62ec456f552f617aac3359a5d7114b23be9c4d886169592cd5f074b9/cbor2-5.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:533117918d518e01348f8cd0331271c207e7224b9a1ed492a0ff00847f28edc8", size = 68927, upload-time = "2025-10-24T09:22:35.458Z" }, + { url = "https://files.pythonhosted.org/packages/9a/c2/58d787395c99874d2a2395b3a22c9d48a3cfc5a7dcd5817bf74764998b75/cbor2-5.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8d6d9436ff3c3323ea5863ecf7ae1139590991685b44b9eb6b7bb1734a594af6", size = 285185, upload-time = "2025-10-24T09:22:36.867Z" }, + { url = "https://files.pythonhosted.org/packages/d0/9c/b680b264a8f4b9aa59c95e166c816275a13138cbee92dd2917f58bca47b9/cbor2-5.7.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:661b871ca754a619fcd98c13a38b4696b2b57dab8b24235c00b0ba322c040d24", size = 284440, upload-time = "2025-10-24T09:22:38.08Z" }, + { url = "https://files.pythonhosted.org/packages/1f/59/68183c655d6226d0eee10027f52516882837802a8d5746317a88362ed686/cbor2-5.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d8065aa90d715fd9bb28727b2d774ee16e695a0e1627ae76e54bf19f9d99d63f", size = 276876, upload-time = "2025-10-24T09:22:39.561Z" }, + { url = "https://files.pythonhosted.org/packages/ee/a2/1964e0a569d2b81e8f4862753fee7701ae5773c22e45492a26f92f62e75a/cbor2-5.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:cb1b7047d73590cfe8e373e2c804fa99be47e55b1b6186602d0f86f384cecec1", size = 278216, upload-time = "2025-10-24T09:22:41.132Z" }, + { url = "https://files.pythonhosted.org/packages/00/78/9b566d68cb88bb1ecebe354765625161c9d6060a16e55008006d6359f776/cbor2-5.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:31d511df7ebd6624fdb4cecdafb4ffb9a205f9ff8c8d98edd1bef0d27f944d74", size = 68451, upload-time = "2025-10-24T09:22:42.227Z" }, + { url = "https://files.pythonhosted.org/packages/db/85/7a6a922d147d027fd5d8fd5224b39e8eaf152a42e8cf16351458096d3d62/cbor2-5.7.1-cp313-cp313-win_arm64.whl", hash = "sha256:f5d37f7b0f84394d2995bd8722cb01c86a885c4821a864a34b7b4d9950c5e26e", size = 64111, upload-time = "2025-10-24T09:22:43.213Z" }, + { url = "https://files.pythonhosted.org/packages/5f/f0/f220222a57371e33434ba7bdc25de31d611cbc0ade2a868e03c3553305e7/cbor2-5.7.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:e5826e4fa4c33661960073f99cf67c82783895524fb66f3ebdd635c19b5a7d68", size = 69002, upload-time = "2025-10-24T09:22:44.316Z" }, + { url = "https://files.pythonhosted.org/packages/c7/3c/34b62ba5173541659f248f005d13373530f02fb997b78fde00bf01ede4f4/cbor2-5.7.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:f19a00d6ac9a77cb611073250b06bf4494b41ba78a1716704f7008e0927d9366", size = 69177, upload-time = "2025-10-24T09:22:45.711Z" }, + { url = "https://files.pythonhosted.org/packages/77/fd/2400d820d9733df00a5c18aa74201e51d710fb91588687eb594f4a7688ea/cbor2-5.7.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d2113aea044cd172f199da3520bc4401af69eae96c5180ca7eb660941928cb89", size = 284259, upload-time = "2025-10-24T09:22:46.749Z" }, + { url = "https://files.pythonhosted.org/packages/42/65/280488ef196c1d71ba123cd406ea47727bb3a0e057767a733d9793fcc428/cbor2-5.7.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f17eacea2d28fecf28ac413c1d7927cde0a11957487d2630655d6b5c9c46a0b", size = 281958, upload-time = "2025-10-24T09:22:48.876Z" }, + { url = "https://files.pythonhosted.org/packages/42/82/bcdd3fdc73bd5f4194fdb08c808112010add9530bae1dcfdb1e2b2ceae19/cbor2-5.7.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d65deea39cae533a629561e7da672402c46731122b6129ed7c8eaa1efe04efce", size = 276025, upload-time = "2025-10-24T09:22:50.147Z" }, + { url = "https://files.pythonhosted.org/packages/ae/a8/a6065dd6a157b877d7d8f3fe96f410fb191a2db1e6588f4d20b5f9a507c2/cbor2-5.7.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:57d8cc29ec1fd20500748e0e767ff88c13afcee839081ba4478c41fcda6ee18b", size = 275978, upload-time = "2025-10-24T09:22:51.873Z" }, + { url = "https://files.pythonhosted.org/packages/62/f4/37934045174af9e4253a340b43f07197af54002070cb80fae82d878f1f14/cbor2-5.7.1-cp314-cp314-win_amd64.whl", hash = "sha256:94fb939d0946f80c49ba45105ca3a3e13e598fc9abd63efc6661b02d4b4d2c50", size = 70269, upload-time = "2025-10-24T09:22:53.275Z" }, + { url = "https://files.pythonhosted.org/packages/0b/fd/933416643e7f5540ae818691fb23fa4189010c6efa39a12c4f59d825da28/cbor2-5.7.1-cp314-cp314-win_arm64.whl", hash = "sha256:4fd7225ac820bbb9f03bd16bc1a7efb6c4d1c451f22c0a153ff4ec46495c59c5", size = 66182, upload-time = "2025-10-24T09:22:54.697Z" }, + { url = "https://files.pythonhosted.org/packages/d5/7d/383bafeabb54c17fe5b6d5aca4e863e6b7df10bcc833b34aa169e9dfce1a/cbor2-5.7.1-py3-none-any.whl", hash = "sha256:68834e4eff2f56629ce6422b0634bc3f74c5a4269de5363f5265fe452c706ba7", size = 23829, upload-time = "2025-10-24T09:23:05.54Z" }, +] + [[package]] name = "certifi" version = "2025.11.12" @@ -20,6 +126,64 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/70/7d/9bc192684cea499815ff478dfcdc13835ddf401365057044fb721ec6bddb/certifi-2025.11.12-py3-none-any.whl", hash = "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b", size = 159438, upload-time = "2025-11-12T02:54:49.735Z" }, ] +[[package]] +name = "certvalidator" +version = "0.11.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asn1crypto" }, + { name = "oscrypto" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a2/92/bb5902af005671fe343a55d50db4f1680f8a5551cd1f28f54118c4a61865/certvalidator-0.11.1.tar.gz", hash = "sha256:922d141c94393ab285ca34338e18dd4093e3ae330b1f278e96c837cb62cffaad", size = 25204, upload-time = "2016-07-29T14:57:44.754Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/e5/7f18a038f5951318234215403c396cf078e1bef7700a1a8527149e6bc72a/certvalidator-0.11.1-py2.py3-none-any.whl", hash = "sha256:77520b269f516d4fb0902998d5bd0eb3727fe153b659aa1cb828dcf12ea6b8de", size = 31458, upload-time = "2016-07-29T14:57:42.107Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, +] + [[package]] name = "charset-normalizer" version = "3.4.4" @@ -61,6 +225,219 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, ] +[[package]] +name = "coloredlogs" +version = "15.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "humanfriendly" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cc/c7/eed8f27100517e8c0e6b923d5f0845d0cb99763da6fdee00478f91db7325/coloredlogs-15.0.1.tar.gz", hash = "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0", size = 278520, upload-time = "2021-06-11T10:22:45.202Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl", hash = "sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934", size = 46018, upload-time = "2021-06-11T10:22:42.561Z" }, +] + +[[package]] +name = "cose" +version = "0.9.dev8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "cbor2" }, + { name = "certvalidator" }, + { name = "cryptography" }, + { name = "ecdsa" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c8/51/1ce23503581575c1ac48911a14ed92ed16b1ec10e1f32e792c7af428d33e/cose-0.9.dev8.tar.gz", hash = "sha256:c48d1edcf7fbc564f4f4ac9d0daa52378ea9d26216e5c4bf4b324883ae5ef880", size = 32839, upload-time = "2021-07-01T21:31:16.526Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/d5/8adf228892da7aafc4893129e08c689465ab0cbabe0e6f582306d6e0d4de/cose-0.9.dev8-py3-none-any.whl", hash = "sha256:f1c3be98e50724e846e3a1d23efe19a150665a4f24917ac8bfbc8e5abb31ccb0", size = 48962, upload-time = "2021-07-01T21:31:15.004Z" }, +] + +[[package]] +name = "cryptography" +version = "46.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/33/c00162f49c0e2fe8064a62cb92b93e50c74a72bc370ab92f86112b33ff62/cryptography-46.0.3.tar.gz", hash = "sha256:a8b17438104fed022ce745b362294d9ce35b4c2e45c1d958ad4a4b019285f4a1", size = 749258, upload-time = "2025-10-15T23:18:31.74Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/42/9c391dd801d6cf0d561b5890549d4b27bafcc53b39c31a817e69d87c625b/cryptography-46.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:109d4ddfadf17e8e7779c39f9b18111a09efb969a301a31e987416a0191ed93a", size = 7225004, upload-time = "2025-10-15T23:16:52.239Z" }, + { url = "https://files.pythonhosted.org/packages/1c/67/38769ca6b65f07461eb200e85fc1639b438bdc667be02cf7f2cd6a64601c/cryptography-46.0.3-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:09859af8466b69bc3c27bdf4f5d84a665e0f7ab5088412e9e2ec49758eca5cbc", size = 4296667, upload-time = "2025-10-15T23:16:54.369Z" }, + { url = "https://files.pythonhosted.org/packages/5c/49/498c86566a1d80e978b42f0d702795f69887005548c041636df6ae1ca64c/cryptography-46.0.3-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:01ca9ff2885f3acc98c29f1860552e37f6d7c7d013d7334ff2a9de43a449315d", size = 4450807, upload-time = "2025-10-15T23:16:56.414Z" }, + { url = "https://files.pythonhosted.org/packages/4b/0a/863a3604112174c8624a2ac3c038662d9e59970c7f926acdcfaed8d61142/cryptography-46.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6eae65d4c3d33da080cff9c4ab1f711b15c1d9760809dad6ea763f3812d254cb", size = 4299615, upload-time = "2025-10-15T23:16:58.442Z" }, + { url = "https://files.pythonhosted.org/packages/64/02/b73a533f6b64a69f3cd3872acb6ebc12aef924d8d103133bb3ea750dc703/cryptography-46.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5bf0ed4490068a2e72ac03d786693adeb909981cc596425d09032d372bcc849", size = 4016800, upload-time = "2025-10-15T23:17:00.378Z" }, + { url = "https://files.pythonhosted.org/packages/25/d5/16e41afbfa450cde85a3b7ec599bebefaef16b5c6ba4ec49a3532336ed72/cryptography-46.0.3-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:5ecfccd2329e37e9b7112a888e76d9feca2347f12f37918facbb893d7bb88ee8", size = 4984707, upload-time = "2025-10-15T23:17:01.98Z" }, + { url = "https://files.pythonhosted.org/packages/c9/56/e7e69b427c3878352c2fb9b450bd0e19ed552753491d39d7d0a2f5226d41/cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a2c0cd47381a3229c403062f764160d57d4d175e022c1df84e168c6251a22eec", size = 4482541, upload-time = "2025-10-15T23:17:04.078Z" }, + { url = "https://files.pythonhosted.org/packages/78/f6/50736d40d97e8483172f1bb6e698895b92a223dba513b0ca6f06b2365339/cryptography-46.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91", size = 4299464, upload-time = "2025-10-15T23:17:05.483Z" }, + { url = "https://files.pythonhosted.org/packages/00/de/d8e26b1a855f19d9994a19c702fa2e93b0456beccbcfe437eda00e0701f2/cryptography-46.0.3-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:c0a7bb1a68a5d3471880e264621346c48665b3bf1c3759d682fc0864c540bd9e", size = 4950838, upload-time = "2025-10-15T23:17:07.425Z" }, + { url = "https://files.pythonhosted.org/packages/8f/29/798fc4ec461a1c9e9f735f2fc58741b0daae30688f41b2497dcbc9ed1355/cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926", size = 4481596, upload-time = "2025-10-15T23:17:09.343Z" }, + { url = "https://files.pythonhosted.org/packages/15/8d/03cd48b20a573adfff7652b76271078e3045b9f49387920e7f1f631d125e/cryptography-46.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0abf1ffd6e57c67e92af68330d05760b7b7efb243aab8377e583284dbab72c71", size = 4426782, upload-time = "2025-10-15T23:17:11.22Z" }, + { url = "https://files.pythonhosted.org/packages/fa/b1/ebacbfe53317d55cf33165bda24c86523497a6881f339f9aae5c2e13e57b/cryptography-46.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a04bee9ab6a4da801eb9b51f1b708a1b5b5c9eb48c03f74198464c66f0d344ac", size = 4698381, upload-time = "2025-10-15T23:17:12.829Z" }, + { url = "https://files.pythonhosted.org/packages/96/92/8a6a9525893325fc057a01f654d7efc2c64b9de90413adcf605a85744ff4/cryptography-46.0.3-cp311-abi3-win32.whl", hash = "sha256:f260d0d41e9b4da1ed1e0f1ce571f97fe370b152ab18778e9e8f67d6af432018", size = 3055988, upload-time = "2025-10-15T23:17:14.65Z" }, + { url = "https://files.pythonhosted.org/packages/7e/bf/80fbf45253ea585a1e492a6a17efcb93467701fa79e71550a430c5e60df0/cryptography-46.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:a9a3008438615669153eb86b26b61e09993921ebdd75385ddd748702c5adfddb", size = 3514451, upload-time = "2025-10-15T23:17:16.142Z" }, + { url = "https://files.pythonhosted.org/packages/2e/af/9b302da4c87b0beb9db4e756386a7c6c5b8003cd0e742277888d352ae91d/cryptography-46.0.3-cp311-abi3-win_arm64.whl", hash = "sha256:5d7f93296ee28f68447397bf5198428c9aeeab45705a55d53a6343455dcb2c3c", size = 2928007, upload-time = "2025-10-15T23:17:18.04Z" }, + { url = "https://files.pythonhosted.org/packages/f5/e2/a510aa736755bffa9d2f75029c229111a1d02f8ecd5de03078f4c18d91a3/cryptography-46.0.3-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:00a5e7e87938e5ff9ff5447ab086a5706a957137e6e433841e9d24f38a065217", size = 7158012, upload-time = "2025-10-15T23:17:19.982Z" }, + { url = "https://files.pythonhosted.org/packages/73/dc/9aa866fbdbb95b02e7f9d086f1fccfeebf8953509b87e3f28fff927ff8a0/cryptography-46.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c8daeb2d2174beb4575b77482320303f3d39b8e81153da4f0fb08eb5fe86a6c5", size = 4288728, upload-time = "2025-10-15T23:17:21.527Z" }, + { url = "https://files.pythonhosted.org/packages/c5/fd/bc1daf8230eaa075184cbbf5f8cd00ba9db4fd32d63fb83da4671b72ed8a/cryptography-46.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:39b6755623145ad5eff1dab323f4eae2a32a77a7abef2c5089a04a3d04366715", size = 4435078, upload-time = "2025-10-15T23:17:23.042Z" }, + { url = "https://files.pythonhosted.org/packages/82/98/d3bd5407ce4c60017f8ff9e63ffee4200ab3e23fe05b765cab805a7db008/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:db391fa7c66df6762ee3f00c95a89e6d428f4d60e7abc8328f4fe155b5ac6e54", size = 4293460, upload-time = "2025-10-15T23:17:24.885Z" }, + { url = "https://files.pythonhosted.org/packages/26/e9/e23e7900983c2b8af7a08098db406cf989d7f09caea7897e347598d4cd5b/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:78a97cf6a8839a48c49271cdcbd5cf37ca2c1d6b7fdd86cc864f302b5e9bf459", size = 3995237, upload-time = "2025-10-15T23:17:26.449Z" }, + { url = "https://files.pythonhosted.org/packages/91/15/af68c509d4a138cfe299d0d7ddb14afba15233223ebd933b4bbdbc7155d3/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:dfb781ff7eaa91a6f7fd41776ec37c5853c795d3b358d4896fdbb5df168af422", size = 4967344, upload-time = "2025-10-15T23:17:28.06Z" }, + { url = "https://files.pythonhosted.org/packages/ca/e3/8643d077c53868b681af077edf6b3cb58288b5423610f21c62aadcbe99f4/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:6f61efb26e76c45c4a227835ddeae96d83624fb0d29eb5df5b96e14ed1a0afb7", size = 4466564, upload-time = "2025-10-15T23:17:29.665Z" }, + { url = "https://files.pythonhosted.org/packages/0e/43/c1e8726fa59c236ff477ff2b5dc071e54b21e5a1e51aa2cee1676f1c986f/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:23b1a8f26e43f47ceb6d6a43115f33a5a37d57df4ea0ca295b780ae8546e8044", size = 4292415, upload-time = "2025-10-15T23:17:31.686Z" }, + { url = "https://files.pythonhosted.org/packages/42/f9/2f8fefdb1aee8a8e3256a0568cffc4e6d517b256a2fe97a029b3f1b9fe7e/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b419ae593c86b87014b9be7396b385491ad7f320bde96826d0dd174459e54665", size = 4931457, upload-time = "2025-10-15T23:17:33.478Z" }, + { url = "https://files.pythonhosted.org/packages/79/30/9b54127a9a778ccd6d27c3da7563e9f2d341826075ceab89ae3b41bf5be2/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:50fc3343ac490c6b08c0cf0d704e881d0d660be923fd3076db3e932007e726e3", size = 4466074, upload-time = "2025-10-15T23:17:35.158Z" }, + { url = "https://files.pythonhosted.org/packages/ac/68/b4f4a10928e26c941b1b6a179143af9f4d27d88fe84a6a3c53592d2e76bf/cryptography-46.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:22d7e97932f511d6b0b04f2bfd818d73dcd5928db509460aaf48384778eb6d20", size = 4420569, upload-time = "2025-10-15T23:17:37.188Z" }, + { url = "https://files.pythonhosted.org/packages/a3/49/3746dab4c0d1979888f125226357d3262a6dd40e114ac29e3d2abdf1ec55/cryptography-46.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d55f3dffadd674514ad19451161118fd010988540cee43d8bc20675e775925de", size = 4681941, upload-time = "2025-10-15T23:17:39.236Z" }, + { url = "https://files.pythonhosted.org/packages/fd/30/27654c1dbaf7e4a3531fa1fc77986d04aefa4d6d78259a62c9dc13d7ad36/cryptography-46.0.3-cp314-cp314t-win32.whl", hash = "sha256:8a6e050cb6164d3f830453754094c086ff2d0b2f3a897a1d9820f6139a1f0914", size = 3022339, upload-time = "2025-10-15T23:17:40.888Z" }, + { url = "https://files.pythonhosted.org/packages/f6/30/640f34ccd4d2a1bc88367b54b926b781b5a018d65f404d409aba76a84b1c/cryptography-46.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:760f83faa07f8b64e9c33fc963d790a2edb24efb479e3520c14a45741cd9b2db", size = 3494315, upload-time = "2025-10-15T23:17:42.769Z" }, + { url = "https://files.pythonhosted.org/packages/ba/8b/88cc7e3bd0a8e7b861f26981f7b820e1f46aa9d26cc482d0feba0ecb4919/cryptography-46.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:516ea134e703e9fe26bcd1277a4b59ad30586ea90c365a87781d7887a646fe21", size = 2919331, upload-time = "2025-10-15T23:17:44.468Z" }, + { url = "https://files.pythonhosted.org/packages/fd/23/45fe7f376a7df8daf6da3556603b36f53475a99ce4faacb6ba2cf3d82021/cryptography-46.0.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:cb3d760a6117f621261d662bccc8ef5bc32ca673e037c83fbe565324f5c46936", size = 7218248, upload-time = "2025-10-15T23:17:46.294Z" }, + { url = "https://files.pythonhosted.org/packages/27/32/b68d27471372737054cbd34c84981f9edbc24fe67ca225d389799614e27f/cryptography-46.0.3-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4b7387121ac7d15e550f5cb4a43aef2559ed759c35df7336c402bb8275ac9683", size = 4294089, upload-time = "2025-10-15T23:17:48.269Z" }, + { url = "https://files.pythonhosted.org/packages/26/42/fa8389d4478368743e24e61eea78846a0006caffaf72ea24a15159215a14/cryptography-46.0.3-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:15ab9b093e8f09daab0f2159bb7e47532596075139dd74365da52ecc9cb46c5d", size = 4440029, upload-time = "2025-10-15T23:17:49.837Z" }, + { url = "https://files.pythonhosted.org/packages/5f/eb/f483db0ec5ac040824f269e93dd2bd8a21ecd1027e77ad7bdf6914f2fd80/cryptography-46.0.3-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:46acf53b40ea38f9c6c229599a4a13f0d46a6c3fa9ef19fc1a124d62e338dfa0", size = 4297222, upload-time = "2025-10-15T23:17:51.357Z" }, + { url = "https://files.pythonhosted.org/packages/fd/cf/da9502c4e1912cb1da3807ea3618a6829bee8207456fbbeebc361ec38ba3/cryptography-46.0.3-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10ca84c4668d066a9878890047f03546f3ae0a6b8b39b697457b7757aaf18dbc", size = 4012280, upload-time = "2025-10-15T23:17:52.964Z" }, + { url = "https://files.pythonhosted.org/packages/6b/8f/9adb86b93330e0df8b3dcf03eae67c33ba89958fc2e03862ef1ac2b42465/cryptography-46.0.3-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:36e627112085bb3b81b19fed209c05ce2a52ee8b15d161b7c643a7d5a88491f3", size = 4978958, upload-time = "2025-10-15T23:17:54.965Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a0/5fa77988289c34bdb9f913f5606ecc9ada1adb5ae870bd0d1054a7021cc4/cryptography-46.0.3-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1000713389b75c449a6e979ffc7dcc8ac90b437048766cef052d4d30b8220971", size = 4473714, upload-time = "2025-10-15T23:17:56.754Z" }, + { url = "https://files.pythonhosted.org/packages/14/e5/fc82d72a58d41c393697aa18c9abe5ae1214ff6f2a5c18ac470f92777895/cryptography-46.0.3-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:b02cf04496f6576afffef5ddd04a0cb7d49cf6be16a9059d793a30b035f6b6ac", size = 4296970, upload-time = "2025-10-15T23:17:58.588Z" }, + { url = "https://files.pythonhosted.org/packages/78/06/5663ed35438d0b09056973994f1aec467492b33bd31da36e468b01ec1097/cryptography-46.0.3-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:71e842ec9bc7abf543b47cf86b9a743baa95f4677d22baa4c7d5c69e49e9bc04", size = 4940236, upload-time = "2025-10-15T23:18:00.897Z" }, + { url = "https://files.pythonhosted.org/packages/fc/59/873633f3f2dcd8a053b8dd1d38f783043b5fce589c0f6988bf55ef57e43e/cryptography-46.0.3-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:402b58fc32614f00980b66d6e56a5b4118e6cb362ae8f3fda141ba4689bd4506", size = 4472642, upload-time = "2025-10-15T23:18:02.749Z" }, + { url = "https://files.pythonhosted.org/packages/3d/39/8e71f3930e40f6877737d6f69248cf74d4e34b886a3967d32f919cc50d3b/cryptography-46.0.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ef639cb3372f69ec44915fafcd6698b6cc78fbe0c2ea41be867f6ed612811963", size = 4423126, upload-time = "2025-10-15T23:18:04.85Z" }, + { url = "https://files.pythonhosted.org/packages/cd/c7/f65027c2810e14c3e7268353b1681932b87e5a48e65505d8cc17c99e36ae/cryptography-46.0.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b51b8ca4f1c6453d8829e1eb7299499ca7f313900dd4d89a24b8b87c0a780d4", size = 4686573, upload-time = "2025-10-15T23:18:06.908Z" }, + { url = "https://files.pythonhosted.org/packages/0a/6e/1c8331ddf91ca4730ab3086a0f1be19c65510a33b5a441cb334e7a2d2560/cryptography-46.0.3-cp38-abi3-win32.whl", hash = "sha256:6276eb85ef938dc035d59b87c8a7dc559a232f954962520137529d77b18ff1df", size = 3036695, upload-time = "2025-10-15T23:18:08.672Z" }, + { url = "https://files.pythonhosted.org/packages/90/45/b0d691df20633eff80955a0fc7695ff9051ffce8b69741444bd9ed7bd0db/cryptography-46.0.3-cp38-abi3-win_amd64.whl", hash = "sha256:416260257577718c05135c55958b674000baef9a1c7d9e8f306ec60d71db850f", size = 3501720, upload-time = "2025-10-15T23:18:10.632Z" }, + { url = "https://files.pythonhosted.org/packages/e8/cb/2da4cc83f5edb9c3257d09e1e7ab7b23f049c7962cae8d842bbef0a9cec9/cryptography-46.0.3-cp38-abi3-win_arm64.whl", hash = "sha256:d89c3468de4cdc4f08a57e214384d0471911a3830fcdaf7a8cc587e42a866372", size = 2918740, upload-time = "2025-10-15T23:18:12.277Z" }, +] + +[[package]] +name = "docker" +version = "7.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "requests" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/91/9b/4a2ea29aeba62471211598dac5d96825bb49348fa07e906ea930394a83ce/docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c", size = 117834, upload-time = "2024-05-23T11:13:57.216Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/26/57c6fb270950d476074c087527a558ccb6f4436657314bfb6cdf484114c4/docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0", size = 147774, upload-time = "2024-05-23T11:13:55.01Z" }, +] + +[[package]] +name = "ecdsa" +version = "0.19.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/1f/924e3caae75f471eae4b26bd13b698f6af2c44279f67af317439c2f4c46a/ecdsa-0.19.1.tar.gz", hash = "sha256:478cba7b62555866fcb3bb3fe985e06decbdb68ef55713c4e5ab98c57d508e61", size = 201793, upload-time = "2025-03-13T11:52:43.25Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/a3/460c57f094a4a165c84a1341c373b0a4f5ec6ac244b998d5021aade89b77/ecdsa-0.19.1-py2.py3-none-any.whl", hash = "sha256:30638e27cf77b7e15c4c4cc1973720149e1033827cfd00661ca5c8cc0cdb24c3", size = 150607, upload-time = "2025-03-13T11:52:41.757Z" }, +] + +[[package]] +name = "ecpy" +version = "1.2.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/48/3f8c1a252e3a46fd04e6fabc5e11c933b9c39cf84edd4e7c906e29c23750/ECPy-1.2.5.tar.gz", hash = "sha256:9635cffb9b6ecf7fd7f72aea1665829ac74a1d272006d0057d45a621aae20228", size = 38458, upload-time = "2020-10-26T11:56:16.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/35/4a113189f7138035a21bd255d30dc7bffc77c942c93b7948d2eac2e22429/ECPy-1.2.5-py3-none-any.whl", hash = "sha256:559c92e42406d9d1a6b2b8fc26e6ad7bc985f33903b72f426a56cb1073a25ce3", size = 43075, upload-time = "2020-10-26T11:56:13.613Z" }, +] + +[[package]] +name = "frozendict" +version = "2.4.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/b2/2a3d1374b7780999d3184e171e25439a8358c47b481f68be883c14086b4c/frozendict-2.4.7.tar.gz", hash = "sha256:e478fb2a1391a56c8a6e10cc97c4a9002b410ecd1ac28c18d780661762e271bd", size = 317082, upload-time = "2025-11-11T22:40:14.251Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/74/f94141b38a51a553efef7f510fc213894161ae49b88bffd037f8d2a7cb2f/frozendict-2.4.7-py3-none-any.whl", hash = "sha256:972af65924ea25cf5b4d9326d549e69a9a4918d8a76a9d3a7cd174d98b237550", size = 16264, upload-time = "2025-11-11T22:40:12.836Z" }, +] + +[[package]] +name = "frozenlist" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/f5/c831fac6cc817d26fd54c7eaccd04ef7e0288806943f7cc5bbf69f3ac1f0/frozenlist-1.8.0.tar.gz", hash = "sha256:3ede829ed8d842f6cd48fc7081d7a41001a56f1f38603f9d49bf3020d59a31ad", size = 45875, upload-time = "2025-10-06T05:38:17.865Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2d/40/0832c31a37d60f60ed79e9dfb5a92e1e2af4f40a16a29abcc7992af9edff/frozenlist-1.8.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8d92f1a84bb12d9e56f818b3a746f3efba93c1b63c8387a73dde655e1e42282a", size = 85717, upload-time = "2025-10-06T05:36:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/30/ba/b0b3de23f40bc55a7057bd38434e25c34fa48e17f20ee273bbde5e0650f3/frozenlist-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96153e77a591c8adc2ee805756c61f59fef4cf4073a9275ee86fe8cba41241f7", size = 49651, upload-time = "2025-10-06T05:36:28.855Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ab/6e5080ee374f875296c4243c381bbdef97a9ac39c6e3ce1d5f7d42cb78d6/frozenlist-1.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f21f00a91358803399890ab167098c131ec2ddd5f8f5fd5fe9c9f2c6fcd91e40", size = 49417, upload-time = "2025-10-06T05:36:29.877Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4e/e4691508f9477ce67da2015d8c00acd751e6287739123113a9fca6f1604e/frozenlist-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fb30f9626572a76dfe4293c7194a09fb1fe93ba94c7d4f720dfae3b646b45027", size = 234391, upload-time = "2025-10-06T05:36:31.301Z" }, + { url = "https://files.pythonhosted.org/packages/40/76/c202df58e3acdf12969a7895fd6f3bc016c642e6726aa63bd3025e0fc71c/frozenlist-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaa352d7047a31d87dafcacbabe89df0aa506abb5b1b85a2fb91bc3faa02d822", size = 233048, upload-time = "2025-10-06T05:36:32.531Z" }, + { url = "https://files.pythonhosted.org/packages/f9/c0/8746afb90f17b73ca5979c7a3958116e105ff796e718575175319b5bb4ce/frozenlist-1.8.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:03ae967b4e297f58f8c774c7eabcce57fe3c2434817d4385c50661845a058121", size = 226549, upload-time = "2025-10-06T05:36:33.706Z" }, + { url = "https://files.pythonhosted.org/packages/7e/eb/4c7eefc718ff72f9b6c4893291abaae5fbc0c82226a32dcd8ef4f7a5dbef/frozenlist-1.8.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f6292f1de555ffcc675941d65fffffb0a5bcd992905015f85d0592201793e0e5", size = 239833, upload-time = "2025-10-06T05:36:34.947Z" }, + { url = "https://files.pythonhosted.org/packages/c2/4e/e5c02187cf704224f8b21bee886f3d713ca379535f16893233b9d672ea71/frozenlist-1.8.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29548f9b5b5e3460ce7378144c3010363d8035cea44bc0bf02d57f5a685e084e", size = 245363, upload-time = "2025-10-06T05:36:36.534Z" }, + { url = "https://files.pythonhosted.org/packages/1f/96/cb85ec608464472e82ad37a17f844889c36100eed57bea094518bf270692/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ec3cc8c5d4084591b4237c0a272cc4f50a5b03396a47d9caaf76f5d7b38a4f11", size = 229314, upload-time = "2025-10-06T05:36:38.582Z" }, + { url = "https://files.pythonhosted.org/packages/5d/6f/4ae69c550e4cee66b57887daeebe006fe985917c01d0fff9caab9883f6d0/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:517279f58009d0b1f2e7c1b130b377a349405da3f7621ed6bfae50b10adf20c1", size = 243365, upload-time = "2025-10-06T05:36:40.152Z" }, + { url = "https://files.pythonhosted.org/packages/7a/58/afd56de246cf11780a40a2c28dc7cbabbf06337cc8ddb1c780a2d97e88d8/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:db1e72ede2d0d7ccb213f218df6a078a9c09a7de257c2fe8fcef16d5925230b1", size = 237763, upload-time = "2025-10-06T05:36:41.355Z" }, + { url = "https://files.pythonhosted.org/packages/cb/36/cdfaf6ed42e2644740d4a10452d8e97fa1c062e2a8006e4b09f1b5fd7d63/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b4dec9482a65c54a5044486847b8a66bf10c9cb4926d42927ec4e8fd5db7fed8", size = 240110, upload-time = "2025-10-06T05:36:42.716Z" }, + { url = "https://files.pythonhosted.org/packages/03/a8/9ea226fbefad669f11b52e864c55f0bd57d3c8d7eb07e9f2e9a0b39502e1/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:21900c48ae04d13d416f0e1e0c4d81f7931f73a9dfa0b7a8746fb2fe7dd970ed", size = 233717, upload-time = "2025-10-06T05:36:44.251Z" }, + { url = "https://files.pythonhosted.org/packages/1e/0b/1b5531611e83ba7d13ccc9988967ea1b51186af64c42b7a7af465dcc9568/frozenlist-1.8.0-cp313-cp313-win32.whl", hash = "sha256:8b7b94a067d1c504ee0b16def57ad5738701e4ba10cec90529f13fa03c833496", size = 39628, upload-time = "2025-10-06T05:36:45.423Z" }, + { url = "https://files.pythonhosted.org/packages/d8/cf/174c91dbc9cc49bc7b7aab74d8b734e974d1faa8f191c74af9b7e80848e6/frozenlist-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:878be833caa6a3821caf85eb39c5ba92d28e85df26d57afb06b35b2efd937231", size = 43882, upload-time = "2025-10-06T05:36:46.796Z" }, + { url = "https://files.pythonhosted.org/packages/c1/17/502cd212cbfa96eb1388614fe39a3fc9ab87dbbe042b66f97acb57474834/frozenlist-1.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:44389d135b3ff43ba8cc89ff7f51f5a0bb6b63d829c8300f79a2fe4fe61bcc62", size = 39676, upload-time = "2025-10-06T05:36:47.8Z" }, + { url = "https://files.pythonhosted.org/packages/d2/5c/3bbfaa920dfab09e76946a5d2833a7cbdf7b9b4a91c714666ac4855b88b4/frozenlist-1.8.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e25ac20a2ef37e91c1b39938b591457666a0fa835c7783c3a8f33ea42870db94", size = 89235, upload-time = "2025-10-06T05:36:48.78Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d6/f03961ef72166cec1687e84e8925838442b615bd0b8854b54923ce5b7b8a/frozenlist-1.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07cdca25a91a4386d2e76ad992916a85038a9b97561bf7a3fd12d5d9ce31870c", size = 50742, upload-time = "2025-10-06T05:36:49.837Z" }, + { url = "https://files.pythonhosted.org/packages/1e/bb/a6d12b7ba4c3337667d0e421f7181c82dda448ce4e7ad7ecd249a16fa806/frozenlist-1.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4e0c11f2cc6717e0a741f84a527c52616140741cd812a50422f83dc31749fb52", size = 51725, upload-time = "2025-10-06T05:36:50.851Z" }, + { url = "https://files.pythonhosted.org/packages/bc/71/d1fed0ffe2c2ccd70b43714c6cab0f4188f09f8a67a7914a6b46ee30f274/frozenlist-1.8.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b3210649ee28062ea6099cfda39e147fa1bc039583c8ee4481cb7811e2448c51", size = 284533, upload-time = "2025-10-06T05:36:51.898Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/fb1685a7b009d89f9bf78a42d94461bc06581f6e718c39344754a5d9bada/frozenlist-1.8.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:581ef5194c48035a7de2aefc72ac6539823bb71508189e5de01d60c9dcd5fa65", size = 292506, upload-time = "2025-10-06T05:36:53.101Z" }, + { url = "https://files.pythonhosted.org/packages/e6/3b/b991fe1612703f7e0d05c0cf734c1b77aaf7c7d321df4572e8d36e7048c8/frozenlist-1.8.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3ef2d026f16a2b1866e1d86fc4e1291e1ed8a387b2c333809419a2f8b3a77b82", size = 274161, upload-time = "2025-10-06T05:36:54.309Z" }, + { url = "https://files.pythonhosted.org/packages/ca/ec/c5c618767bcdf66e88945ec0157d7f6c4a1322f1473392319b7a2501ded7/frozenlist-1.8.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5500ef82073f599ac84d888e3a8c1f77ac831183244bfd7f11eaa0289fb30714", size = 294676, upload-time = "2025-10-06T05:36:55.566Z" }, + { url = "https://files.pythonhosted.org/packages/7c/ce/3934758637d8f8a88d11f0585d6495ef54b2044ed6ec84492a91fa3b27aa/frozenlist-1.8.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:50066c3997d0091c411a66e710f4e11752251e6d2d73d70d8d5d4c76442a199d", size = 300638, upload-time = "2025-10-06T05:36:56.758Z" }, + { url = "https://files.pythonhosted.org/packages/fc/4f/a7e4d0d467298f42de4b41cbc7ddaf19d3cfeabaf9ff97c20c6c7ee409f9/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5c1c8e78426e59b3f8005e9b19f6ff46e5845895adbde20ece9218319eca6506", size = 283067, upload-time = "2025-10-06T05:36:57.965Z" }, + { url = "https://files.pythonhosted.org/packages/dc/48/c7b163063d55a83772b268e6d1affb960771b0e203b632cfe09522d67ea5/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:eefdba20de0d938cec6a89bd4d70f346a03108a19b9df4248d3cf0d88f1b0f51", size = 292101, upload-time = "2025-10-06T05:36:59.237Z" }, + { url = "https://files.pythonhosted.org/packages/9f/d0/2366d3c4ecdc2fd391e0afa6e11500bfba0ea772764d631bbf82f0136c9d/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cf253e0e1c3ceb4aaff6df637ce033ff6535fb8c70a764a8f46aafd3d6ab798e", size = 289901, upload-time = "2025-10-06T05:37:00.811Z" }, + { url = "https://files.pythonhosted.org/packages/b8/94/daff920e82c1b70e3618a2ac39fbc01ae3e2ff6124e80739ce5d71c9b920/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:032efa2674356903cd0261c4317a561a6850f3ac864a63fc1583147fb05a79b0", size = 289395, upload-time = "2025-10-06T05:37:02.115Z" }, + { url = "https://files.pythonhosted.org/packages/e3/20/bba307ab4235a09fdcd3cc5508dbabd17c4634a1af4b96e0f69bfe551ebd/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6da155091429aeba16851ecb10a9104a108bcd32f6c1642867eadaee401c1c41", size = 283659, upload-time = "2025-10-06T05:37:03.711Z" }, + { url = "https://files.pythonhosted.org/packages/fd/00/04ca1c3a7a124b6de4f8a9a17cc2fcad138b4608e7a3fc5877804b8715d7/frozenlist-1.8.0-cp313-cp313t-win32.whl", hash = "sha256:0f96534f8bfebc1a394209427d0f8a63d343c9779cda6fc25e8e121b5fd8555b", size = 43492, upload-time = "2025-10-06T05:37:04.915Z" }, + { url = "https://files.pythonhosted.org/packages/59/5e/c69f733a86a94ab10f68e496dc6b7e8bc078ebb415281d5698313e3af3a1/frozenlist-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5d63a068f978fc69421fb0e6eb91a9603187527c86b7cd3f534a5b77a592b888", size = 48034, upload-time = "2025-10-06T05:37:06.343Z" }, + { url = "https://files.pythonhosted.org/packages/16/6c/be9d79775d8abe79b05fa6d23da99ad6e7763a1d080fbae7290b286093fd/frozenlist-1.8.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bf0a7e10b077bf5fb9380ad3ae8ce20ef919a6ad93b4552896419ac7e1d8e042", size = 41749, upload-time = "2025-10-06T05:37:07.431Z" }, + { url = "https://files.pythonhosted.org/packages/f1/c8/85da824b7e7b9b6e7f7705b2ecaf9591ba6f79c1177f324c2735e41d36a2/frozenlist-1.8.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:cee686f1f4cadeb2136007ddedd0aaf928ab95216e7691c63e50a8ec066336d0", size = 86127, upload-time = "2025-10-06T05:37:08.438Z" }, + { url = "https://files.pythonhosted.org/packages/8e/e8/a1185e236ec66c20afd72399522f142c3724c785789255202d27ae992818/frozenlist-1.8.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:119fb2a1bd47307e899c2fac7f28e85b9a543864df47aa7ec9d3c1b4545f096f", size = 49698, upload-time = "2025-10-06T05:37:09.48Z" }, + { url = "https://files.pythonhosted.org/packages/a1/93/72b1736d68f03fda5fdf0f2180fb6caaae3894f1b854d006ac61ecc727ee/frozenlist-1.8.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4970ece02dbc8c3a92fcc5228e36a3e933a01a999f7094ff7c23fbd2beeaa67c", size = 49749, upload-time = "2025-10-06T05:37:10.569Z" }, + { url = "https://files.pythonhosted.org/packages/a7/b2/fabede9fafd976b991e9f1b9c8c873ed86f202889b864756f240ce6dd855/frozenlist-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:cba69cb73723c3f329622e34bdbf5ce1f80c21c290ff04256cff1cd3c2036ed2", size = 231298, upload-time = "2025-10-06T05:37:11.993Z" }, + { url = "https://files.pythonhosted.org/packages/3a/3b/d9b1e0b0eed36e70477ffb8360c49c85c8ca8ef9700a4e6711f39a6e8b45/frozenlist-1.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:778a11b15673f6f1df23d9586f83c4846c471a8af693a22e066508b77d201ec8", size = 232015, upload-time = "2025-10-06T05:37:13.194Z" }, + { url = "https://files.pythonhosted.org/packages/dc/94/be719d2766c1138148564a3960fc2c06eb688da592bdc25adcf856101be7/frozenlist-1.8.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0325024fe97f94c41c08872db482cf8ac4800d80e79222c6b0b7b162d5b13686", size = 225038, upload-time = "2025-10-06T05:37:14.577Z" }, + { url = "https://files.pythonhosted.org/packages/e4/09/6712b6c5465f083f52f50cf74167b92d4ea2f50e46a9eea0523d658454ae/frozenlist-1.8.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:97260ff46b207a82a7567b581ab4190bd4dfa09f4db8a8b49d1a958f6aa4940e", size = 240130, upload-time = "2025-10-06T05:37:15.781Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d4/cd065cdcf21550b54f3ce6a22e143ac9e4836ca42a0de1022da8498eac89/frozenlist-1.8.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:54b2077180eb7f83dd52c40b2750d0a9f175e06a42e3213ce047219de902717a", size = 242845, upload-time = "2025-10-06T05:37:17.037Z" }, + { url = "https://files.pythonhosted.org/packages/62/c3/f57a5c8c70cd1ead3d5d5f776f89d33110b1addae0ab010ad774d9a44fb9/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2f05983daecab868a31e1da44462873306d3cbfd76d1f0b5b69c473d21dbb128", size = 229131, upload-time = "2025-10-06T05:37:18.221Z" }, + { url = "https://files.pythonhosted.org/packages/6c/52/232476fe9cb64f0742f3fde2b7d26c1dac18b6d62071c74d4ded55e0ef94/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:33f48f51a446114bc5d251fb2954ab0164d5be02ad3382abcbfe07e2531d650f", size = 240542, upload-time = "2025-10-06T05:37:19.771Z" }, + { url = "https://files.pythonhosted.org/packages/5f/85/07bf3f5d0fb5414aee5f47d33c6f5c77bfe49aac680bfece33d4fdf6a246/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:154e55ec0655291b5dd1b8731c637ecdb50975a2ae70c606d100750a540082f7", size = 237308, upload-time = "2025-10-06T05:37:20.969Z" }, + { url = "https://files.pythonhosted.org/packages/11/99/ae3a33d5befd41ac0ca2cc7fd3aa707c9c324de2e89db0e0f45db9a64c26/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:4314debad13beb564b708b4a496020e5306c7333fa9a3ab90374169a20ffab30", size = 238210, upload-time = "2025-10-06T05:37:22.252Z" }, + { url = "https://files.pythonhosted.org/packages/b2/60/b1d2da22f4970e7a155f0adde9b1435712ece01b3cd45ba63702aea33938/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:073f8bf8becba60aa931eb3bc420b217bb7d5b8f4750e6f8b3be7f3da85d38b7", size = 231972, upload-time = "2025-10-06T05:37:23.5Z" }, + { url = "https://files.pythonhosted.org/packages/3f/ab/945b2f32de889993b9c9133216c068b7fcf257d8595a0ac420ac8677cab0/frozenlist-1.8.0-cp314-cp314-win32.whl", hash = "sha256:bac9c42ba2ac65ddc115d930c78d24ab8d4f465fd3fc473cdedfccadb9429806", size = 40536, upload-time = "2025-10-06T05:37:25.581Z" }, + { url = "https://files.pythonhosted.org/packages/59/ad/9caa9b9c836d9ad6f067157a531ac48b7d36499f5036d4141ce78c230b1b/frozenlist-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:3e0761f4d1a44f1d1a47996511752cf3dcec5bbdd9cc2b4fe595caf97754b7a0", size = 44330, upload-time = "2025-10-06T05:37:26.928Z" }, + { url = "https://files.pythonhosted.org/packages/82/13/e6950121764f2676f43534c555249f57030150260aee9dcf7d64efda11dd/frozenlist-1.8.0-cp314-cp314-win_arm64.whl", hash = "sha256:d1eaff1d00c7751b7c6662e9c5ba6eb2c17a2306ba5e2a37f24ddf3cc953402b", size = 40627, upload-time = "2025-10-06T05:37:28.075Z" }, + { url = "https://files.pythonhosted.org/packages/c0/c7/43200656ecc4e02d3f8bc248df68256cd9572b3f0017f0a0c4e93440ae23/frozenlist-1.8.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d3bb933317c52d7ea5004a1c442eef86f426886fba134ef8cf4226ea6ee1821d", size = 89238, upload-time = "2025-10-06T05:37:29.373Z" }, + { url = "https://files.pythonhosted.org/packages/d1/29/55c5f0689b9c0fb765055629f472c0de484dcaf0acee2f7707266ae3583c/frozenlist-1.8.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:8009897cdef112072f93a0efdce29cd819e717fd2f649ee3016efd3cd885a7ed", size = 50738, upload-time = "2025-10-06T05:37:30.792Z" }, + { url = "https://files.pythonhosted.org/packages/ba/7d/b7282a445956506fa11da8c2db7d276adcbf2b17d8bb8407a47685263f90/frozenlist-1.8.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2c5dcbbc55383e5883246d11fd179782a9d07a986c40f49abe89ddf865913930", size = 51739, upload-time = "2025-10-06T05:37:32.127Z" }, + { url = "https://files.pythonhosted.org/packages/62/1c/3d8622e60d0b767a5510d1d3cf21065b9db874696a51ea6d7a43180a259c/frozenlist-1.8.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:39ecbc32f1390387d2aa4f5a995e465e9e2f79ba3adcac92d68e3e0afae6657c", size = 284186, upload-time = "2025-10-06T05:37:33.21Z" }, + { url = "https://files.pythonhosted.org/packages/2d/14/aa36d5f85a89679a85a1d44cd7a6657e0b1c75f61e7cad987b203d2daca8/frozenlist-1.8.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92db2bf818d5cc8d9c1f1fc56b897662e24ea5adb36ad1f1d82875bd64e03c24", size = 292196, upload-time = "2025-10-06T05:37:36.107Z" }, + { url = "https://files.pythonhosted.org/packages/05/23/6bde59eb55abd407d34f77d39a5126fb7b4f109a3f611d3929f14b700c66/frozenlist-1.8.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2dc43a022e555de94c3b68a4ef0b11c4f747d12c024a520c7101709a2144fb37", size = 273830, upload-time = "2025-10-06T05:37:37.663Z" }, + { url = "https://files.pythonhosted.org/packages/d2/3f/22cff331bfad7a8afa616289000ba793347fcd7bc275f3b28ecea2a27909/frozenlist-1.8.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb89a7f2de3602cfed448095bab3f178399646ab7c61454315089787df07733a", size = 294289, upload-time = "2025-10-06T05:37:39.261Z" }, + { url = "https://files.pythonhosted.org/packages/a4/89/5b057c799de4838b6c69aa82b79705f2027615e01be996d2486a69ca99c4/frozenlist-1.8.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:33139dc858c580ea50e7e60a1b0ea003efa1fd42e6ec7fdbad78fff65fad2fd2", size = 300318, upload-time = "2025-10-06T05:37:43.213Z" }, + { url = "https://files.pythonhosted.org/packages/30/de/2c22ab3eb2a8af6d69dc799e48455813bab3690c760de58e1bf43b36da3e/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:168c0969a329b416119507ba30b9ea13688fafffac1b7822802537569a1cb0ef", size = 282814, upload-time = "2025-10-06T05:37:45.337Z" }, + { url = "https://files.pythonhosted.org/packages/59/f7/970141a6a8dbd7f556d94977858cfb36fa9b66e0892c6dd780d2219d8cd8/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:28bd570e8e189d7f7b001966435f9dac6718324b5be2990ac496cf1ea9ddb7fe", size = 291762, upload-time = "2025-10-06T05:37:46.657Z" }, + { url = "https://files.pythonhosted.org/packages/c1/15/ca1adae83a719f82df9116d66f5bb28bb95557b3951903d39135620ef157/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:b2a095d45c5d46e5e79ba1e5b9cb787f541a8dee0433836cea4b96a2c439dcd8", size = 289470, upload-time = "2025-10-06T05:37:47.946Z" }, + { url = "https://files.pythonhosted.org/packages/ac/83/dca6dc53bf657d371fbc88ddeb21b79891e747189c5de990b9dfff2ccba1/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:eab8145831a0d56ec9c4139b6c3e594c7a83c2c8be25d5bcf2d86136a532287a", size = 289042, upload-time = "2025-10-06T05:37:49.499Z" }, + { url = "https://files.pythonhosted.org/packages/96/52/abddd34ca99be142f354398700536c5bd315880ed0a213812bc491cff5e4/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:974b28cf63cc99dfb2188d8d222bc6843656188164848c4f679e63dae4b0708e", size = 283148, upload-time = "2025-10-06T05:37:50.745Z" }, + { url = "https://files.pythonhosted.org/packages/af/d3/76bd4ed4317e7119c2b7f57c3f6934aba26d277acc6309f873341640e21f/frozenlist-1.8.0-cp314-cp314t-win32.whl", hash = "sha256:342c97bf697ac5480c0a7ec73cd700ecfa5a8a40ac923bd035484616efecc2df", size = 44676, upload-time = "2025-10-06T05:37:52.222Z" }, + { url = "https://files.pythonhosted.org/packages/89/76/c615883b7b521ead2944bb3480398cbb07e12b7b4e4d073d3752eb721558/frozenlist-1.8.0-cp314-cp314t-win_amd64.whl", hash = "sha256:06be8f67f39c8b1dc671f5d83aaefd3358ae5cdcf8314552c57e7ed3e6475bdd", size = 49451, upload-time = "2025-10-06T05:37:53.425Z" }, + { url = "https://files.pythonhosted.org/packages/e0/a3/5982da14e113d07b325230f95060e2169f5311b1017ea8af2a29b374c289/frozenlist-1.8.0-cp314-cp314t-win_arm64.whl", hash = "sha256:102e6314ca4da683dca92e3b1355490fed5f313b768500084fbe6371fddfdb79", size = 42507, upload-time = "2025-10-06T05:37:54.513Z" }, + { url = "https://files.pythonhosted.org/packages/9a/9a/e35b4a917281c0b8419d4207f4334c8e8c5dbf4f3f5f9ada73958d937dcc/frozenlist-1.8.0-py3-none-any.whl", hash = "sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d", size = 13409, upload-time = "2025-10-06T05:38:16.721Z" }, +] + +[[package]] +name = "humanfriendly" +version = "10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyreadline3", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cc/3f/2c29224acb2e2df4d2046e4c73ee2662023c58ff5b113c4c1adac0886c43/humanfriendly-10.0.tar.gz", hash = "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc", size = 360702, upload-time = "2021-09-17T21:40:43.31Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl", hash = "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477", size = 86794, upload-time = "2021-09-17T21:40:39.897Z" }, +] + [[package]] name = "idna" version = "3.11" @@ -70,6 +447,286 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, ] +[[package]] +name = "mnemonic" +version = "0.21" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/77/e6232ed59fbd7b90208bb8d4f89ed5aabcf30a524bc2fb8f0dafbe8e7df9/mnemonic-0.21.tar.gz", hash = "sha256:1fe496356820984f45559b1540c80ff10de448368929b9c60a2b55744cc88acf", size = 152462, upload-time = "2024-01-05T10:46:14.895Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/57/48/5abb16ce7f9d97b728e6b97c704ceaa614362e0847651f379ed0511942a0/mnemonic-0.21-py3-none-any.whl", hash = "sha256:72dc9de16ec5ef47287237b9b6943da11647a03fe7cf1f139fc3d7c4a7439288", size = 92701, upload-time = "2024-01-05T10:46:12.703Z" }, +] + +[[package]] +name = "ogmios" +version = "1.4.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachetools" }, + { name = "cardano-tools" }, + { name = "coloredlogs" }, + { name = "orjson" }, + { name = "pydantic" }, + { name = "setuptools" }, + { name = "websockets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/a5/713afcc13265f70685dc8e8fb2bcf9dbef0d64e2f44b46280e7a1caab7bc/ogmios-1.4.3.tar.gz", hash = "sha256:f9e756df83be385f89c82a194a3c51c0a4ba25e5df699dfcfb2914a57c012754", size = 114688, upload-time = "2025-11-07T00:07:52.049Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/e0/3c9ce6307a538af8273a07a0a51b06cc34a3c1017189821c86b30a01ce93/ogmios-1.4.3-py3-none-any.whl", hash = "sha256:6d6eb9e2c577d71a90ab4dd72112990933dd29e3d7fb58053f9009ddc53db358", size = 128947, upload-time = "2025-11-07T00:07:50.901Z" }, +] + +[[package]] +name = "orjson" +version = "3.11.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c6/fe/ed708782d6709cc60eb4c2d8a361a440661f74134675c72990f2c48c785f/orjson-3.11.4.tar.gz", hash = "sha256:39485f4ab4c9b30a3943cfe99e1a213c4776fb69e8abd68f66b83d5a0b0fdc6d", size = 5945188, upload-time = "2025-10-24T15:50:38.027Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/15/c52aa7112006b0f3d6180386c3a46ae057f932ab3425bc6f6ac50431cca1/orjson-3.11.4-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2d6737d0e616a6e053c8b4acc9eccea6b6cce078533666f32d140e4f85002534", size = 243525, upload-time = "2025-10-24T15:49:29.737Z" }, + { url = "https://files.pythonhosted.org/packages/ec/38/05340734c33b933fd114f161f25a04e651b0c7c33ab95e9416ade5cb44b8/orjson-3.11.4-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:afb14052690aa328cc118a8e09f07c651d301a72e44920b887c519b313d892ff", size = 128871, upload-time = "2025-10-24T15:49:31.109Z" }, + { url = "https://files.pythonhosted.org/packages/55/b9/ae8d34899ff0c012039b5a7cb96a389b2476e917733294e498586b45472d/orjson-3.11.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38aa9e65c591febb1b0aed8da4d469eba239d434c218562df179885c94e1a3ad", size = 130055, upload-time = "2025-10-24T15:49:33.382Z" }, + { url = "https://files.pythonhosted.org/packages/33/aa/6346dd5073730451bee3681d901e3c337e7ec17342fb79659ec9794fc023/orjson-3.11.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f2cf4dfaf9163b0728d061bebc1e08631875c51cd30bf47cb9e3293bfbd7dcd5", size = 129061, upload-time = "2025-10-24T15:49:34.935Z" }, + { url = "https://files.pythonhosted.org/packages/39/e4/8eea51598f66a6c853c380979912d17ec510e8e66b280d968602e680b942/orjson-3.11.4-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89216ff3dfdde0e4070932e126320a1752c9d9a758d6a32ec54b3b9334991a6a", size = 136541, upload-time = "2025-10-24T15:49:36.923Z" }, + { url = "https://files.pythonhosted.org/packages/9a/47/cb8c654fa9adcc60e99580e17c32b9e633290e6239a99efa6b885aba9dbc/orjson-3.11.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9daa26ca8e97fae0ce8aa5d80606ef8f7914e9b129b6b5df9104266f764ce436", size = 137535, upload-time = "2025-10-24T15:49:38.307Z" }, + { url = "https://files.pythonhosted.org/packages/43/92/04b8cc5c2b729f3437ee013ce14a60ab3d3001465d95c184758f19362f23/orjson-3.11.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c8b2769dc31883c44a9cd126560327767f848eb95f99c36c9932f51090bfce9", size = 136703, upload-time = "2025-10-24T15:49:40.795Z" }, + { url = "https://files.pythonhosted.org/packages/aa/fd/d0733fcb9086b8be4ebcfcda2d0312865d17d0d9884378b7cffb29d0763f/orjson-3.11.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1469d254b9884f984026bd9b0fa5bbab477a4bfe558bba6848086f6d43eb5e73", size = 136293, upload-time = "2025-10-24T15:49:42.347Z" }, + { url = "https://files.pythonhosted.org/packages/c2/d7/3c5514e806837c210492d72ae30ccf050ce3f940f45bf085bab272699ef4/orjson-3.11.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:68e44722541983614e37117209a194e8c3ad07838ccb3127d96863c95ec7f1e0", size = 140131, upload-time = "2025-10-24T15:49:43.638Z" }, + { url = "https://files.pythonhosted.org/packages/9c/dd/ba9d32a53207babf65bd510ac4d0faaa818bd0df9a9c6f472fe7c254f2e3/orjson-3.11.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:8e7805fda9672c12be2f22ae124dcd7b03928d6c197544fe12174b86553f3196", size = 406164, upload-time = "2025-10-24T15:49:45.498Z" }, + { url = "https://files.pythonhosted.org/packages/8e/f9/f68ad68f4af7c7bde57cd514eaa2c785e500477a8bc8f834838eb696a685/orjson-3.11.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:04b69c14615fb4434ab867bf6f38b2d649f6f300af30a6705397e895f7aec67a", size = 149859, upload-time = "2025-10-24T15:49:46.981Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d2/7f847761d0c26818395b3d6b21fb6bc2305d94612a35b0a30eae65a22728/orjson-3.11.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:639c3735b8ae7f970066930e58cf0ed39a852d417c24acd4a25fc0b3da3c39a6", size = 139926, upload-time = "2025-10-24T15:49:48.321Z" }, + { url = "https://files.pythonhosted.org/packages/9f/37/acd14b12dc62db9a0e1d12386271b8661faae270b22492580d5258808975/orjson-3.11.4-cp313-cp313-win32.whl", hash = "sha256:6c13879c0d2964335491463302a6ca5ad98105fc5db3565499dcb80b1b4bd839", size = 136007, upload-time = "2025-10-24T15:49:49.938Z" }, + { url = "https://files.pythonhosted.org/packages/c0/a9/967be009ddf0a1fffd7a67de9c36656b28c763659ef91352acc02cbe364c/orjson-3.11.4-cp313-cp313-win_amd64.whl", hash = "sha256:09bf242a4af98732db9f9a1ec57ca2604848e16f132e3f72edfd3c5c96de009a", size = 131314, upload-time = "2025-10-24T15:49:51.248Z" }, + { url = "https://files.pythonhosted.org/packages/cb/db/399abd6950fbd94ce125cb8cd1a968def95174792e127b0642781e040ed4/orjson-3.11.4-cp313-cp313-win_arm64.whl", hash = "sha256:a85f0adf63319d6c1ba06fb0dbf997fced64a01179cf17939a6caca662bf92de", size = 126152, upload-time = "2025-10-24T15:49:52.922Z" }, + { url = "https://files.pythonhosted.org/packages/25/e3/54ff63c093cc1697e758e4fceb53164dd2661a7d1bcd522260ba09f54533/orjson-3.11.4-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:42d43a1f552be1a112af0b21c10a5f553983c2a0938d2bbb8ecd8bc9fb572803", size = 243501, upload-time = "2025-10-24T15:49:54.288Z" }, + { url = "https://files.pythonhosted.org/packages/ac/7d/e2d1076ed2e8e0ae9badca65bf7ef22710f93887b29eaa37f09850604e09/orjson-3.11.4-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:26a20f3fbc6c7ff2cb8e89c4c5897762c9d88cf37330c6a117312365d6781d54", size = 128862, upload-time = "2025-10-24T15:49:55.961Z" }, + { url = "https://files.pythonhosted.org/packages/9f/37/ca2eb40b90621faddfa9517dfe96e25f5ae4d8057a7c0cdd613c17e07b2c/orjson-3.11.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e3f20be9048941c7ffa8fc523ccbd17f82e24df1549d1d1fe9317712d19938e", size = 130047, upload-time = "2025-10-24T15:49:57.406Z" }, + { url = "https://files.pythonhosted.org/packages/c7/62/1021ed35a1f2bad9040f05fa4cc4f9893410df0ba3eaa323ccf899b1c90a/orjson-3.11.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aac364c758dc87a52e68e349924d7e4ded348dedff553889e4d9f22f74785316", size = 129073, upload-time = "2025-10-24T15:49:58.782Z" }, + { url = "https://files.pythonhosted.org/packages/e8/3f/f84d966ec2a6fd5f73b1a707e7cd876813422ae4bf9f0145c55c9c6a0f57/orjson-3.11.4-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d5c54a6d76e3d741dcc3f2707f8eeb9ba2a791d3adbf18f900219b62942803b1", size = 136597, upload-time = "2025-10-24T15:50:00.12Z" }, + { url = "https://files.pythonhosted.org/packages/32/78/4fa0aeca65ee82bbabb49e055bd03fa4edea33f7c080c5c7b9601661ef72/orjson-3.11.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f28485bdca8617b79d44627f5fb04336897041dfd9fa66d383a49d09d86798bc", size = 137515, upload-time = "2025-10-24T15:50:01.57Z" }, + { url = "https://files.pythonhosted.org/packages/c1/9d/0c102e26e7fde40c4c98470796d050a2ec1953897e2c8ab0cb95b0759fa2/orjson-3.11.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bfc2a484cad3585e4ba61985a6062a4c2ed5c7925db6d39f1fa267c9d166487f", size = 136703, upload-time = "2025-10-24T15:50:02.944Z" }, + { url = "https://files.pythonhosted.org/packages/df/ac/2de7188705b4cdfaf0b6c97d2f7849c17d2003232f6e70df98602173f788/orjson-3.11.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e34dbd508cb91c54f9c9788923daca129fe5b55c5b4eebe713bf5ed3791280cf", size = 136311, upload-time = "2025-10-24T15:50:04.441Z" }, + { url = "https://files.pythonhosted.org/packages/e0/52/847fcd1a98407154e944feeb12e3b4d487a0e264c40191fb44d1269cbaa1/orjson-3.11.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b13c478fa413d4b4ee606ec8e11c3b2e52683a640b006bb586b3041c2ca5f606", size = 140127, upload-time = "2025-10-24T15:50:07.398Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ae/21d208f58bdb847dd4d0d9407e2929862561841baa22bdab7aea10ca088e/orjson-3.11.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:724ca721ecc8a831b319dcd72cfa370cc380db0bf94537f08f7edd0a7d4e1780", size = 406201, upload-time = "2025-10-24T15:50:08.796Z" }, + { url = "https://files.pythonhosted.org/packages/8d/55/0789d6de386c8366059db098a628e2ad8798069e94409b0d8935934cbcb9/orjson-3.11.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:977c393f2e44845ce1b540e19a786e9643221b3323dae190668a98672d43fb23", size = 149872, upload-time = "2025-10-24T15:50:10.234Z" }, + { url = "https://files.pythonhosted.org/packages/cc/1d/7ff81ea23310e086c17b41d78a72270d9de04481e6113dbe2ac19118f7fb/orjson-3.11.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1e539e382cf46edec157ad66b0b0872a90d829a6b71f17cb633d6c160a223155", size = 139931, upload-time = "2025-10-24T15:50:11.623Z" }, + { url = "https://files.pythonhosted.org/packages/77/92/25b886252c50ed64be68c937b562b2f2333b45afe72d53d719e46a565a50/orjson-3.11.4-cp314-cp314-win32.whl", hash = "sha256:d63076d625babab9db5e7836118bdfa086e60f37d8a174194ae720161eb12394", size = 136065, upload-time = "2025-10-24T15:50:13.025Z" }, + { url = "https://files.pythonhosted.org/packages/63/b8/718eecf0bb7e9d64e4956afaafd23db9f04c776d445f59fe94f54bdae8f0/orjson-3.11.4-cp314-cp314-win_amd64.whl", hash = "sha256:0a54d6635fa3aaa438ae32e8570b9f0de36f3f6562c308d2a2a452e8b0592db1", size = 131310, upload-time = "2025-10-24T15:50:14.46Z" }, + { url = "https://files.pythonhosted.org/packages/1a/bf/def5e25d4d8bfce296a9a7c8248109bf58622c21618b590678f945a2c59c/orjson-3.11.4-cp314-cp314-win_arm64.whl", hash = "sha256:78b999999039db3cf58f6d230f524f04f75f129ba3d1ca2ed121f8657e575d3d", size = 126151, upload-time = "2025-10-24T15:50:15.878Z" }, +] + +[[package]] +name = "oscrypto" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asn1crypto" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/81/a7654e654a4b30eda06ef9ad8c1b45d1534bfd10b5c045d0c0f6b16fecd2/oscrypto-1.3.0.tar.gz", hash = "sha256:6f5fef59cb5b3708321db7cca56aed8ad7e662853351e7991fcf60ec606d47a4", size = 184590, upload-time = "2022-03-18T01:53:26.889Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/7c/fa07d3da2b6253eb8474be16eab2eadf670460e364ccc895ca7ff388ee30/oscrypto-1.3.0-py2.py3-none-any.whl", hash = "sha256:2b2f1d2d42ec152ca90ccb5682f3e051fb55986e1b170ebde472b133713e7085", size = 194553, upload-time = "2022-03-18T01:53:24.559Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pprintpp" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/1a/7737e7a0774da3c3824d654993cf57adc915cb04660212f03406334d8c0b/pprintpp-0.4.0.tar.gz", hash = "sha256:ea826108e2c7f49dc6d66c752973c3fc9749142a798d6b254e1e301cfdbc6403", size = 17995, upload-time = "2018-07-01T01:42:34.87Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/d1/e4ed95fdd3ef13b78630280d9e9e240aeb65cc7c544ec57106149c3942fb/pprintpp-0.4.0-py2.py3-none-any.whl", hash = "sha256:b6b4dcdd0c0c0d75e4d7b2f21a9e933e5b2ce62b26e1a54537f9651ae5a5c01d", size = 16952, upload-time = "2018-07-01T01:42:36.496Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pycardano" +version = "0.18.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "base58" }, + { name = "blockfrost-python" }, + { name = "cachetools" }, + { name = "cbor2" }, + { name = "cose" }, + { name = "docker" }, + { name = "ecpy" }, + { name = "frozendict" }, + { name = "frozenlist" }, + { name = "mnemonic" }, + { name = "ogmios" }, + { name = "pprintpp" }, + { name = "pynacl" }, + { name = "requests" }, + { name = "typeguard" }, + { name = "websocket-client" }, + { name = "websockets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/31/00/702b13cdf7fbd4e36d394ff69e81534767103773c560cd0d0ae6b30181f0/pycardano-0.18.0.tar.gz", hash = "sha256:d64712b7cc9f8c3266ebee7dc9a7bf8d10b158df471e9e1154c4d84da9263cae", size = 89517, upload-time = "2025-11-27T19:48:42.56Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/36/1e476eeea09b46f998fa5e7a11beccc06bcc4e508e793fc664ab1d9f083b/pycardano-0.18.0-py3-none-any.whl", hash = "sha256:4f15f5b73df439a72a6bee653765f84c6fdc70e0df006b4566d88579a75880ec", size = 104634, upload-time = "2025-11-27T19:48:41.507Z" }, +] + +[[package]] +name = "pycparser" +version = "2.23" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload-time = "2025-09-09T13:23:47.91Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload-time = "2025-09-09T13:23:46.651Z" }, +] + +[[package]] +name = "pydantic" +version = "2.12.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591, upload-time = "2025-11-26T15:11:46.471Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.41.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload-time = "2025-11-04T13:43:49.098Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403, upload-time = "2025-11-04T13:40:25.248Z" }, + { url = "https://files.pythonhosted.org/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206, upload-time = "2025-11-04T13:40:27.099Z" }, + { url = "https://files.pythonhosted.org/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307, upload-time = "2025-11-04T13:40:29.806Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258, upload-time = "2025-11-04T13:40:33.544Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917, upload-time = "2025-11-04T13:40:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186, upload-time = "2025-11-04T13:40:37.436Z" }, + { url = "https://files.pythonhosted.org/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164, upload-time = "2025-11-04T13:40:40.289Z" }, + { url = "https://files.pythonhosted.org/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146, upload-time = "2025-11-04T13:40:42.809Z" }, + { url = "https://files.pythonhosted.org/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788, upload-time = "2025-11-04T13:40:44.752Z" }, + { url = "https://files.pythonhosted.org/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133, upload-time = "2025-11-04T13:40:46.66Z" }, + { url = "https://files.pythonhosted.org/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852, upload-time = "2025-11-04T13:40:48.575Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679, upload-time = "2025-11-04T13:40:50.619Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766, upload-time = "2025-11-04T13:40:52.631Z" }, + { url = "https://files.pythonhosted.org/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005, upload-time = "2025-11-04T13:40:54.734Z" }, + { url = "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622, upload-time = "2025-11-04T13:40:56.68Z" }, + { url = "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725, upload-time = "2025-11-04T13:40:58.807Z" }, + { url = "https://files.pythonhosted.org/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040, upload-time = "2025-11-04T13:41:00.853Z" }, + { url = "https://files.pythonhosted.org/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691, upload-time = "2025-11-04T13:41:03.504Z" }, + { url = "https://files.pythonhosted.org/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897, upload-time = "2025-11-04T13:41:05.804Z" }, + { url = "https://files.pythonhosted.org/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302, upload-time = "2025-11-04T13:41:07.809Z" }, + { url = "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877, upload-time = "2025-11-04T13:41:09.827Z" }, + { url = "https://files.pythonhosted.org/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680, upload-time = "2025-11-04T13:41:12.379Z" }, + { url = "https://files.pythonhosted.org/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960, upload-time = "2025-11-04T13:41:14.627Z" }, + { url = "https://files.pythonhosted.org/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102, upload-time = "2025-11-04T13:41:16.868Z" }, + { url = "https://files.pythonhosted.org/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039, upload-time = "2025-11-04T13:41:18.934Z" }, + { url = "https://files.pythonhosted.org/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126, upload-time = "2025-11-04T13:41:21.418Z" }, + { url = "https://files.pythonhosted.org/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489, upload-time = "2025-11-04T13:41:24.076Z" }, + { url = "https://files.pythonhosted.org/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288, upload-time = "2025-11-04T13:41:26.33Z" }, + { url = "https://files.pythonhosted.org/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255, upload-time = "2025-11-04T13:41:28.569Z" }, + { url = "https://files.pythonhosted.org/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760, upload-time = "2025-11-04T13:41:31.055Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092, upload-time = "2025-11-04T13:41:33.21Z" }, + { url = "https://files.pythonhosted.org/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385, upload-time = "2025-11-04T13:41:35.508Z" }, + { url = "https://files.pythonhosted.org/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832, upload-time = "2025-11-04T13:41:37.732Z" }, + { url = "https://files.pythonhosted.org/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585, upload-time = "2025-11-04T13:41:40Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078, upload-time = "2025-11-04T13:41:42.323Z" }, + { url = "https://files.pythonhosted.org/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914, upload-time = "2025-11-04T13:41:45.221Z" }, + { url = "https://files.pythonhosted.org/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560, upload-time = "2025-11-04T13:41:47.474Z" }, + { url = "https://files.pythonhosted.org/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244, upload-time = "2025-11-04T13:41:49.992Z" }, + { url = "https://files.pythonhosted.org/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955, upload-time = "2025-11-04T13:41:54.079Z" }, + { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906, upload-time = "2025-11-04T13:41:56.606Z" }, + { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607, upload-time = "2025-11-04T13:41:58.889Z" }, + { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769, upload-time = "2025-11-04T13:42:01.186Z" }, +] + +[[package]] +name = "pynacl" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b2/46/aeca065d227e2265125aea590c9c47fbf5786128c9400ee0eb7c88931f06/pynacl-1.6.1.tar.gz", hash = "sha256:8d361dac0309f2b6ad33b349a56cd163c98430d409fa503b10b70b3ad66eaa1d", size = 3506616, upload-time = "2025-11-10T16:02:13.195Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/d6/4b2dca33ed512de8f54e5c6074aa06eaeb225bfbcd9b16f33a414389d6bd/pynacl-1.6.1-cp314-cp314t-macosx_10_10_universal2.whl", hash = "sha256:7d7c09749450c385301a3c20dca967a525152ae4608c0a096fe8464bfc3df93d", size = 389109, upload-time = "2025-11-10T16:01:28.79Z" }, + { url = "https://files.pythonhosted.org/packages/3c/30/e8dbb8ff4fa2559bbbb2187ba0d0d7faf728d17cb8396ecf4a898b22d3da/pynacl-1.6.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fc734c1696ffd49b40f7c1779c89ba908157c57345cf626be2e0719488a076d3", size = 808254, upload-time = "2025-11-10T16:01:37.839Z" }, + { url = "https://files.pythonhosted.org/packages/44/f9/f5449c652f31da00249638dbab065ad4969c635119094b79b17c3a4da2ab/pynacl-1.6.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3cd787ec1f5c155dc8ecf39b1333cfef41415dc96d392f1ce288b4fe970df489", size = 1407365, upload-time = "2025-11-10T16:01:40.454Z" }, + { url = "https://files.pythonhosted.org/packages/eb/2f/9aa5605f473b712065c0a193ebf4ad4725d7a245533f0cd7e5dcdbc78f35/pynacl-1.6.1-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b35d93ab2df03ecb3aa506be0d3c73609a51449ae0855c2e89c7ed44abde40b", size = 843842, upload-time = "2025-11-10T16:01:30.524Z" }, + { url = "https://files.pythonhosted.org/packages/32/8d/748f0f6956e207453da8f5f21a70885fbbb2e060d5c9d78e0a4a06781451/pynacl-1.6.1-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dece79aecbb8f4640a1adbb81e4aa3bfb0e98e99834884a80eb3f33c7c30e708", size = 1445559, upload-time = "2025-11-10T16:01:33.663Z" }, + { url = "https://files.pythonhosted.org/packages/78/d0/2387f0dcb0e9816f38373999e48db4728ed724d31accdd4e737473319d35/pynacl-1.6.1-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:c2228054f04bf32d558fb89bb99f163a8197d5a9bf4efa13069a7fa8d4b93fc3", size = 825791, upload-time = "2025-11-10T16:01:34.823Z" }, + { url = "https://files.pythonhosted.org/packages/18/3d/ef6fb7eb072aaf15f280bc66f26ab97e7fc9efa50fb1927683013ef47473/pynacl-1.6.1-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:2b12f1b97346f177affcdfdc78875ff42637cb40dcf79484a97dae3448083a78", size = 1410843, upload-time = "2025-11-10T16:01:36.401Z" }, + { url = "https://files.pythonhosted.org/packages/e3/fb/23824a017526850ee7d8a1cc4cd1e3e5082800522c10832edbbca8619537/pynacl-1.6.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e735c3a1bdfde3834503baf1a6d74d4a143920281cb724ba29fb84c9f49b9c48", size = 801140, upload-time = "2025-11-10T16:01:42.013Z" }, + { url = "https://files.pythonhosted.org/packages/5d/d1/ebc6b182cb98603a35635b727d62f094bc201bf610f97a3bb6357fe688d2/pynacl-1.6.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3384a454adf5d716a9fadcb5eb2e3e72cd49302d1374a60edc531c9957a9b014", size = 1371966, upload-time = "2025-11-10T16:01:43.297Z" }, + { url = "https://files.pythonhosted.org/packages/64/f4/c9d7b6f02924b1f31db546c7bd2a83a2421c6b4a8e6a2e53425c9f2802e0/pynacl-1.6.1-cp314-cp314t-win32.whl", hash = "sha256:d8615ee34d01c8e0ab3f302dcdd7b32e2bcf698ba5f4809e7cc407c8cdea7717", size = 230482, upload-time = "2025-11-10T16:01:47.688Z" }, + { url = "https://files.pythonhosted.org/packages/c4/2c/942477957fba22da7bf99131850e5ebdff66623418ab48964e78a7a8293e/pynacl-1.6.1-cp314-cp314t-win_amd64.whl", hash = "sha256:5f5b35c1a266f8a9ad22525049280a600b19edd1f785bccd01ae838437dcf935", size = 243232, upload-time = "2025-11-10T16:01:45.208Z" }, + { url = "https://files.pythonhosted.org/packages/7a/0c/bdbc0d04a53b96a765ab03aa2cf9a76ad8653d70bf1665459b9a0dedaa1c/pynacl-1.6.1-cp314-cp314t-win_arm64.whl", hash = "sha256:d984c91fe3494793b2a1fb1e91429539c6c28e9ec8209d26d25041ec599ccf63", size = 187907, upload-time = "2025-11-10T16:01:46.328Z" }, + { url = "https://files.pythonhosted.org/packages/49/41/3cfb3b4f3519f6ff62bf71bf1722547644bcfb1b05b8fdbdc300249ba113/pynacl-1.6.1-cp38-abi3-macosx_10_10_universal2.whl", hash = "sha256:a6f9fd6d6639b1e81115c7f8ff16b8dedba1e8098d2756275d63d208b0e32021", size = 387591, upload-time = "2025-11-10T16:01:49.1Z" }, + { url = "https://files.pythonhosted.org/packages/18/21/b8a6563637799f617a3960f659513eccb3fcc655d5fc2be6e9dc6416826f/pynacl-1.6.1-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e49a3f3d0da9f79c1bec2aa013261ab9fa651c7da045d376bd306cf7c1792993", size = 798866, upload-time = "2025-11-10T16:01:55.688Z" }, + { url = "https://files.pythonhosted.org/packages/e8/6c/dc38033bc3ea461e05ae8f15a81e0e67ab9a01861d352ae971c99de23e7c/pynacl-1.6.1-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7713f8977b5d25f54a811ec9efa2738ac592e846dd6e8a4d3f7578346a841078", size = 1398001, upload-time = "2025-11-10T16:01:57.101Z" }, + { url = "https://files.pythonhosted.org/packages/9f/05/3ec0796a9917100a62c5073b20c4bce7bf0fea49e99b7906d1699cc7b61b/pynacl-1.6.1-cp38-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5a3becafc1ee2e5ea7f9abc642f56b82dcf5be69b961e782a96ea52b55d8a9fc", size = 834024, upload-time = "2025-11-10T16:01:50.228Z" }, + { url = "https://files.pythonhosted.org/packages/f0/b7/ae9982be0f344f58d9c64a1c25d1f0125c79201634efe3c87305ac7cb3e3/pynacl-1.6.1-cp38-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4ce50d19f1566c391fedc8dc2f2f5be265ae214112ebe55315e41d1f36a7f0a9", size = 1436766, upload-time = "2025-11-10T16:01:51.886Z" }, + { url = "https://files.pythonhosted.org/packages/b4/51/b2ccbf89cf3025a02e044dd68a365cad593ebf70f532299f2c047d2b7714/pynacl-1.6.1-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:543f869140f67d42b9b8d47f922552d7a967e6c116aad028c9bfc5f3f3b3a7b7", size = 817275, upload-time = "2025-11-10T16:01:53.351Z" }, + { url = "https://files.pythonhosted.org/packages/a8/6c/dd9ee8214edf63ac563b08a9b30f98d116942b621d39a751ac3256694536/pynacl-1.6.1-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a2bb472458c7ca959aeeff8401b8efef329b0fc44a89d3775cffe8fad3398ad8", size = 1401891, upload-time = "2025-11-10T16:01:54.587Z" }, + { url = "https://files.pythonhosted.org/packages/0f/c1/97d3e1c83772d78ee1db3053fd674bc6c524afbace2bfe8d419fd55d7ed1/pynacl-1.6.1-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:3206fa98737fdc66d59b8782cecc3d37d30aeec4593d1c8c145825a345bba0f0", size = 772291, upload-time = "2025-11-10T16:01:58.111Z" }, + { url = "https://files.pythonhosted.org/packages/4d/ca/691ff2fe12f3bb3e43e8e8df4b806f6384593d427f635104d337b8e00291/pynacl-1.6.1-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:53543b4f3d8acb344f75fd4d49f75e6572fce139f4bfb4815a9282296ff9f4c0", size = 1370839, upload-time = "2025-11-10T16:01:59.252Z" }, + { url = "https://files.pythonhosted.org/packages/30/27/06fe5389d30391fce006442246062cc35773c84fbcad0209fbbf5e173734/pynacl-1.6.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:319de653ef84c4f04e045eb250e6101d23132372b0a61a7acf91bac0fda8e58c", size = 791371, upload-time = "2025-11-10T16:02:01.075Z" }, + { url = "https://files.pythonhosted.org/packages/2c/7a/e2bde8c9d39074a5aa046c7d7953401608d1f16f71e237f4bef3fb9d7e49/pynacl-1.6.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:262a8de6bba4aee8a66f5edf62c214b06647461c9b6b641f8cd0cb1e3b3196fe", size = 1363031, upload-time = "2025-11-10T16:02:02.656Z" }, + { url = "https://files.pythonhosted.org/packages/dd/b6/63fd77264dae1087770a1bb414bc604470f58fbc21d83822fc9c76248076/pynacl-1.6.1-cp38-abi3-win32.whl", hash = "sha256:9fd1a4eb03caf8a2fe27b515a998d26923adb9ddb68db78e35ca2875a3830dde", size = 226585, upload-time = "2025-11-10T16:02:07.116Z" }, + { url = "https://files.pythonhosted.org/packages/12/c8/b419180f3fdb72ab4d45e1d88580761c267c7ca6eda9a20dcbcba254efe6/pynacl-1.6.1-cp38-abi3-win_amd64.whl", hash = "sha256:a569a4069a7855f963940040f35e87d8bc084cb2d6347428d5ad20550a0a1a21", size = 238923, upload-time = "2025-11-10T16:02:04.401Z" }, + { url = "https://files.pythonhosted.org/packages/35/76/c34426d532e4dce7ff36e4d92cb20f4cbbd94b619964b93d24e8f5b5510f/pynacl-1.6.1-cp38-abi3-win_arm64.whl", hash = "sha256:5953e8b8cfadb10889a6e7bd0f53041a745d1b3d30111386a1bb37af171e6daf", size = 183970, upload-time = "2025-11-10T16:02:05.786Z" }, +] + +[[package]] +name = "pyreadline3" +version = "3.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/49/4cea918a08f02817aabae639e3d0ac046fef9f9180518a3ad394e22da148/pyreadline3-3.5.4.tar.gz", hash = "sha256:8d57d53039a1c75adba8e50dd3d992b28143480816187ea5efbd5c78e6c885b7", size = 99839, upload-time = "2024-09-19T02:40:10.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl", hash = "sha256:eaf8e6cc3c49bcccf145fc6067ba8643d1df34d604a1ec0eccbf7a18e6d3fae6", size = 83178, upload-time = "2024-09-19T02:40:08.598Z" }, +] + +[[package]] +name = "python-bitcoinlib" +version = "0.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/a1/ca9d770094a0bfd0f2ce66b7180f0a7729b1b646d90f37f6debf38b28fab/python-bitcoinlib-0.12.2.tar.gz", hash = "sha256:c65ab61427c77c38d397bfc431f71d86fd355b453a536496ec3fcb41bd10087d", size = 153798, upload-time = "2023-06-03T18:37:11.091Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/46/b388d0885cf799f5bc66ca9995c83e5b7e17cb737f812a7c2591aa789ea6/python_bitcoinlib-0.12.2-py3-none-any.whl", hash = "sha256:2f29a9f475f21c12169b3a6cc8820f34f11362d7ff1200a5703dce3e4e903a44", size = 106954, upload-time = "2023-06-03T18:37:08.524Z" }, +] + +[[package]] +name = "pywin32" +version = "311" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" }, + { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" }, + { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" }, + { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714, upload-time = "2025-07-14T20:13:32.449Z" }, + { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800, upload-time = "2025-07-14T20:13:34.312Z" }, + { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540, upload-time = "2025-07-14T20:13:36.379Z" }, +] + [[package]] name = "requests" version = "2.32.5" @@ -85,21 +742,74 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, ] +[[package]] +name = "setuptools" +version = "80.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958, upload-time = "2025-05-27T00:56:51.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, +] + [[package]] name = "signed-docs" version = "0.1.0" source = { virtual = "." } dependencies = [ { name = "argparse" }, + { name = "catalyst-python" }, { name = "requests" }, ] [package.metadata] requires-dist = [ { name = "argparse", specifier = ">=1.4.0" }, + { name = "catalyst-python", git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&branch=feat%2Fcatalyst-python" }, { name = "requests", specifier = ">=2.32.5" }, ] +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "typeguard" +version = "4.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/68/71c1a15b5f65f40e91b65da23b8224dad41349894535a97f63a52e462196/typeguard-4.4.4.tar.gz", hash = "sha256:3a7fd2dffb705d4d0efaed4306a704c89b9dee850b688f060a8b1615a79e5f74", size = 75203, upload-time = "2025-06-18T09:56:07.624Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/a9/e3aee762739c1d7528da1c3e06d518503f8b6c439c35549b53735ba52ead/typeguard-4.4.4-py3-none-any.whl", hash = "sha256:b5f562281b6bfa1f5492470464730ef001646128b180769880468bd84b68b09e", size = 34874, upload-time = "2025-06-18T09:56:05.999Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, +] + [[package]] name = "urllib3" version = "2.5.0" @@ -108,3 +818,32 @@ sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599 wheels = [ { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, ] + +[[package]] +name = "websocket-client" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/41/aa4bf9664e4cda14c3b39865b12251e8e7d239f4cd0e3cc1b6c2ccde25c1/websocket_client-1.9.0.tar.gz", hash = "sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98", size = 70576, upload-time = "2025-10-07T21:16:36.495Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/db/b10e48aa8fff7407e67470363eac595018441cf32d5e1001567a7aeba5d2/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef", size = 82616, upload-time = "2025-10-07T21:16:34.951Z" }, +] + +[[package]] +name = "websockets" +version = "15.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016, upload-time = "2025-03-05T20:03:41.606Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/9f/51f0cf64471a9d2b4d0fc6c534f323b664e7095640c34562f5182e5a7195/websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931", size = 175440, upload-time = "2025-03-05T20:02:36.695Z" }, + { url = "https://files.pythonhosted.org/packages/8a/05/aa116ec9943c718905997412c5989f7ed671bc0188ee2ba89520e8765d7b/websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675", size = 173098, upload-time = "2025-03-05T20:02:37.985Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0b/33cef55ff24f2d92924923c99926dcce78e7bd922d649467f0eda8368923/websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151", size = 173329, upload-time = "2025-03-05T20:02:39.298Z" }, + { url = "https://files.pythonhosted.org/packages/31/1d/063b25dcc01faa8fada1469bdf769de3768b7044eac9d41f734fd7b6ad6d/websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22", size = 183111, upload-time = "2025-03-05T20:02:40.595Z" }, + { url = "https://files.pythonhosted.org/packages/93/53/9a87ee494a51bf63e4ec9241c1ccc4f7c2f45fff85d5bde2ff74fcb68b9e/websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f", size = 182054, upload-time = "2025-03-05T20:02:41.926Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b2/83a6ddf56cdcbad4e3d841fcc55d6ba7d19aeb89c50f24dd7e859ec0805f/websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8", size = 182496, upload-time = "2025-03-05T20:02:43.304Z" }, + { url = "https://files.pythonhosted.org/packages/98/41/e7038944ed0abf34c45aa4635ba28136f06052e08fc2168520bb8b25149f/websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375", size = 182829, upload-time = "2025-03-05T20:02:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/e0/17/de15b6158680c7623c6ef0db361da965ab25d813ae54fcfeae2e5b9ef910/websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d", size = 182217, upload-time = "2025-03-05T20:02:50.14Z" }, + { url = "https://files.pythonhosted.org/packages/33/2b/1f168cb6041853eef0362fb9554c3824367c5560cbdaad89ac40f8c2edfc/websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4", size = 182195, upload-time = "2025-03-05T20:02:51.561Z" }, + { url = "https://files.pythonhosted.org/packages/86/eb/20b6cdf273913d0ad05a6a14aed4b9a85591c18a987a3d47f20fa13dcc47/websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa", size = 176393, upload-time = "2025-03-05T20:02:53.814Z" }, + { url = "https://files.pythonhosted.org/packages/1b/6c/c65773d6cab416a64d191d6ee8a8b1c68a09970ea6909d16965d26bfed1e/websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561", size = 176837, upload-time = "2025-03-05T20:02:55.237Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743, upload-time = "2025-03-05T20:03:39.41Z" }, +] From d2938ea256d64384f00f5a893d79624476b97996 Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Wed, 3 Dec 2025 17:05:15 +0700 Subject: [PATCH 03/19] add setting file --- signed_docs/dev/.keep | 0 signed_docs/dev/settings.json | 5 +++++ 2 files changed, 5 insertions(+) create mode 100644 signed_docs/dev/.keep create mode 100644 signed_docs/dev/settings.json diff --git a/signed_docs/dev/.keep b/signed_docs/dev/.keep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/signed_docs/dev/settings.json b/signed_docs/dev/settings.json new file mode 100644 index 000000000000..decf68860621 --- /dev/null +++ b/signed_docs/dev/settings.json @@ -0,0 +1,5 @@ +{ + "url": "https://app.dev.projectcatalyst.io/api/gateway/v1/document", + "timeout": 10, + "admin_private_key_env": "ADMIN_PRIVATE_KEY" +} \ No newline at end of file From 962d0d58cda5320caad11b5c6c462549e78af21d Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Wed, 3 Dec 2025 17:26:13 +0700 Subject: [PATCH 04/19] wip --- signed_docs/dev/settings.json | 4 +- signed_docs/pyproject.toml | 3 +- signed_docs/setup_fund.py | 91 ++++++++++++++++++++++++++++++++--- signed_docs/uv.lock | 13 ++++- 4 files changed, 101 insertions(+), 10 deletions(-) diff --git a/signed_docs/dev/settings.json b/signed_docs/dev/settings.json index decf68860621..d156a0a431b7 100644 --- a/signed_docs/dev/settings.json +++ b/signed_docs/dev/settings.json @@ -1,5 +1,7 @@ { "url": "https://app.dev.projectcatalyst.io/api/gateway/v1/document", + "url": "http://100.76.226.39:3030/api/v1/document", "timeout": 10, - "admin_private_key_env": "ADMIN_PRIVATE_KEY" + "network": "preprod", + "admin_private_key_env": "CAT_GATEWAY_ADMIN_PRIVATE_KEY" } \ No newline at end of file diff --git a/signed_docs/pyproject.toml b/signed_docs/pyproject.toml index e86367d1782a..692518a81ee8 100644 --- a/signed_docs/pyproject.toml +++ b/signed_docs/pyproject.toml @@ -7,7 +7,8 @@ requires-python = ">=3.13" dependencies = [ "argparse>=1.4.0", "requests>=2.32.5", - "catalyst-python" + "catalyst-python", + "pathlib>=1.0.1", ] [tool.uv.sources] diff --git a/signed_docs/setup_fund.py b/signed_docs/setup_fund.py index df126847f567..31c470519f0f 100644 --- a/signed_docs/setup_fund.py +++ b/signed_docs/setup_fund.py @@ -1,9 +1,14 @@ import argparse import os +import requests +import time +import json +from pathlib import Path from catalyst_python.admin import AdminKey from catalyst_python.ed25519 import Ed25519Keys from catalyst_python.signed_doc import ( + SignedDocument, brand_parameters_form_template_doc, brand_parameters_doc, campaign_parameters_form_template_doc, @@ -15,23 +20,95 @@ ) -def load_admin_key() -> AdminKey: - key = Ed25519Keys(os.environ["CAT_GATEWAY_ADMIN_PRIVATE_KEY"]) - return AdminKey(key=key, network="cardano", subnet="preprod") +def load_json_file(filepath: str) -> dict[str, str]: + """Read a JSON file from the specified path and return the parsed content.""" + with Path(filepath).open("r") as f: + return json.load(f) -def publish_fund_documents(admin: AdminKey): +def read_settings(env_dir: Path) -> dict[str, str]: + """Extract and prepare configs before applying.""" + # load settings.json + settings_path = Path(env_dir) / "settings.json" + assert Path.is_file(settings_path), f"Missing settings.json at {settings_path}" + settings = load_json_file(settings_path) + print(f"Loaded settings:\n{settings}") + + return settings + + +def read_admin_key(admin_key_env: str, network: str) -> AdminKey: + key = Ed25519Keys(os.environ[admin_key_env]) + if network == "mainnet": + network = None + return AdminKey(key=key, network="cardano", subnet=network) + + +def publish_document( + url: str, timeout: int, retry: bool, doc: SignedDocument, token: str +): + headers = {"Authorization": f"Bearer {token}", "Content-Type": "application/cbor"} + data = bytes.fromhex(doc.build_and_sign()) + + while True: + try: + resp = requests.put(url, timeout=timeout, headers=headers, data=data) + resp.raise_for_status() + break + except requests.exceptions.RequestException as e: + errmsg = f"failed to send HTTP request: {e}" + print(errmsg) + + if retry: + print("Retrying in 1 minute...") + time.sleep(60) + else: + break + + +def setup_fund(env: str, retry: bool): + """Read config files from the specified `env`, then apply the configs.""" + file_dir = Path(__file__).resolve().parent + env_dir = Path(file_dir) / env + + print(f"Setting config for environment: {env}") + print(f"Looking for configs in: {env_dir}") + + settings = read_settings(env_dir) + admin = read_admin_key(settings["admin_private_key_env"], settings["network"]) + + url = settings["url"] + timeout = settings["timeout"] + brand_template = brand_parameters_form_template_doc({"type": "object"}, admin) + publish_document( + url=url, + timeout=timeout, + retry=retry, + doc=brand_template, + token=admin.auth_token(), + ) + brand = brand_parameters_doc({}, brand_template, admin) - campaign_template = campaign_parameters_form_template_doc( - {"type": "object"}, brand, admin + publish_document( + url=url, timeout=timeout, retry=retry, doc=brand, token=admin.auth_token() ) parser = argparse.ArgumentParser(description="Catalyst Signed Document importer.") - +parser.add_argument( + "--retry", + action="store_true", + help="If submiting fails, wait 1 minute and retry indefinitely until successful.", +) +parser.add_argument( + "env", + type=str, + help="The environment to configure (e.g., dev, qa, preprod, prod).", +) args = parser.parse_args() +setup_fund(args.env, args.retry) print(f"Finished setup Fund.") diff --git a/signed_docs/uv.lock b/signed_docs/uv.lock index ab35beb77f86..7da61d8e5f36 100644 --- a/signed_docs/uv.lock +++ b/signed_docs/uv.lock @@ -84,7 +84,7 @@ wheels = [ [[package]] name = "catalyst-python" version = "0.1.0" -source = { git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&branch=feat%2Fcatalyst-python#bfd90e22eacf110fb06c6d837bb0b0de9b4ae447" } +source = { git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&branch=feat%2Fcatalyst-python#75b2c221acafe889572b33efdc8e69701d0ed390" } dependencies = [ { name = "cryptography" }, { name = "pycardano" }, @@ -524,6 +524,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/01/7c/fa07d3da2b6253eb8474be16eab2eadf670460e364ccc895ca7ff388ee30/oscrypto-1.3.0-py2.py3-none-any.whl", hash = "sha256:2b2f1d2d42ec152ca90ccb5682f3e051fb55986e1b170ebde472b133713e7085", size = 194553, upload-time = "2022-03-18T01:53:24.559Z" }, ] +[[package]] +name = "pathlib" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ac/aa/9b065a76b9af472437a0059f77e8f962fe350438b927cb80184c32f075eb/pathlib-1.0.1.tar.gz", hash = "sha256:6940718dfc3eff4258203ad5021090933e5c04707d5ca8cc9e73c94a7894ea9f", size = 49298, upload-time = "2014-09-03T15:41:57.18Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/f9/690a8600b93c332de3ab4a344a4ac34f00c8f104917061f779db6a918ed6/pathlib-1.0.1-py3-none-any.whl", hash = "sha256:f35f95ab8b0f59e6d354090350b44a80a80635d22efdedfa84c7ad1cf0a74147", size = 14363, upload-time = "2022-05-04T13:37:20.585Z" }, +] + [[package]] name = "pexpect" version = "4.9.0" @@ -758,6 +767,7 @@ source = { virtual = "." } dependencies = [ { name = "argparse" }, { name = "catalyst-python" }, + { name = "pathlib" }, { name = "requests" }, ] @@ -765,6 +775,7 @@ dependencies = [ requires-dist = [ { name = "argparse", specifier = ">=1.4.0" }, { name = "catalyst-python", git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&branch=feat%2Fcatalyst-python" }, + { name = "pathlib", specifier = ">=1.0.1" }, { name = "requests", specifier = ">=2.32.5" }, ] From 548a91dcbce4a43a366d0d66f9082c3376f1e70b Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Wed, 3 Dec 2025 17:39:21 +0700 Subject: [PATCH 05/19] wip --- signed_docs/dev/brand_parameters.json | 1 + .../dev/brand_parameters_form_template.json | 1 + signed_docs/dev/campaign_parameters.json | 1 + .../campaign_parameters_form_template.json | 1 + signed_docs/dev/settings.json | 1 - signed_docs/setup_fund.py | 56 +++++++++++++++---- 6 files changed, 49 insertions(+), 12 deletions(-) create mode 100644 signed_docs/dev/brand_parameters.json create mode 100644 signed_docs/dev/brand_parameters_form_template.json create mode 100644 signed_docs/dev/campaign_parameters.json create mode 100644 signed_docs/dev/campaign_parameters_form_template.json diff --git a/signed_docs/dev/brand_parameters.json b/signed_docs/dev/brand_parameters.json new file mode 100644 index 000000000000..9e26dfeeb6e6 --- /dev/null +++ b/signed_docs/dev/brand_parameters.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/signed_docs/dev/brand_parameters_form_template.json b/signed_docs/dev/brand_parameters_form_template.json new file mode 100644 index 000000000000..61ef6e4e6858 --- /dev/null +++ b/signed_docs/dev/brand_parameters_form_template.json @@ -0,0 +1 @@ +{"type": "object"} \ No newline at end of file diff --git a/signed_docs/dev/campaign_parameters.json b/signed_docs/dev/campaign_parameters.json new file mode 100644 index 000000000000..9e26dfeeb6e6 --- /dev/null +++ b/signed_docs/dev/campaign_parameters.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/signed_docs/dev/campaign_parameters_form_template.json b/signed_docs/dev/campaign_parameters_form_template.json new file mode 100644 index 000000000000..61ef6e4e6858 --- /dev/null +++ b/signed_docs/dev/campaign_parameters_form_template.json @@ -0,0 +1 @@ +{"type": "object"} \ No newline at end of file diff --git a/signed_docs/dev/settings.json b/signed_docs/dev/settings.json index d156a0a431b7..8a6a6a945522 100644 --- a/signed_docs/dev/settings.json +++ b/signed_docs/dev/settings.json @@ -1,5 +1,4 @@ { - "url": "https://app.dev.projectcatalyst.io/api/gateway/v1/document", "url": "http://100.76.226.39:3030/api/v1/document", "timeout": 10, "network": "preprod", diff --git a/signed_docs/setup_fund.py b/signed_docs/setup_fund.py index 31c470519f0f..1667af346592 100644 --- a/signed_docs/setup_fund.py +++ b/signed_docs/setup_fund.py @@ -26,15 +26,15 @@ def load_json_file(filepath: str) -> dict[str, str]: return json.load(f) -def read_settings(env_dir: Path) -> dict[str, str]: - """Extract and prepare configs before applying.""" - # load settings.json - settings_path = Path(env_dir) / "settings.json" - assert Path.is_file(settings_path), f"Missing settings.json at {settings_path}" - settings = load_json_file(settings_path) - print(f"Loaded settings:\n{settings}") +def read_json_file(env_dir: Path, file_name: str) -> dict[str, str]: + filepath = Path(env_dir) / file_name + assert Path.is_file(filepath), f"Missing {file_name} at {filepath}" - return settings + with Path(filepath).open("r") as f: + json_f = json.load(f) + + print(f"Loaded {filepath}:\n{json_f}") + return json_f def read_admin_key(admin_key_env: str, network: str) -> AdminKey: @@ -74,13 +74,16 @@ def setup_fund(env: str, retry: bool): print(f"Setting config for environment: {env}") print(f"Looking for configs in: {env_dir}") - settings = read_settings(env_dir) + settings = read_json_file(env_dir, "settings.json") admin = read_admin_key(settings["admin_private_key_env"], settings["network"]) url = settings["url"] timeout = settings["timeout"] - brand_template = brand_parameters_form_template_doc({"type": "object"}, admin) + brand_template = brand_parameters_form_template_doc( + read_json_file(env_dir, "brand_parameters_form_template.json"), + admin, + ) publish_document( url=url, timeout=timeout, @@ -89,11 +92,42 @@ def setup_fund(env: str, retry: bool): token=admin.auth_token(), ) - brand = brand_parameters_doc({}, brand_template, admin) + brand = brand_parameters_doc( + read_json_file(env_dir, "brand_parameters_form_template.json"), + brand_template, + admin, + ) publish_document( url=url, timeout=timeout, retry=retry, doc=brand, token=admin.auth_token() ) + campaign_template = campaign_parameters_form_template_doc( + read_json_file(env_dir, "campaign_parameters_form_template.json"), + brand, + admin, + ) + publish_document( + url=url, + timeout=timeout, + retry=retry, + doc=campaign_template, + token=admin.auth_token(), + ) + + campaign = campaign_parameters_doc( + read_json_file(env_dir, "campaign_parameters.json"), + campaign_template, + brand, + admin, + ) + publish_document( + url=url, + timeout=timeout, + retry=retry, + doc=campaign, + token=admin.auth_token(), + ) + parser = argparse.ArgumentParser(description="Catalyst Signed Document importer.") parser.add_argument( From 0e4404ab1aa7ec707affb3e7e403c14ab46d8c9a Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Thu, 4 Dec 2025 14:20:24 +0700 Subject: [PATCH 06/19] use release tag of `catalyst-python` --- signed_docs/pyproject.toml | 2 +- signed_docs/uv.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/signed_docs/pyproject.toml b/signed_docs/pyproject.toml index 692518a81ee8..30caa4fba599 100644 --- a/signed_docs/pyproject.toml +++ b/signed_docs/pyproject.toml @@ -12,4 +12,4 @@ dependencies = [ ] [tool.uv.sources] -catalyst-python = { git = "https://github.com/input-output-hk/catalyst-libs.git", subdirectory="catalyst-python", branch = "feat/catalyst-python" } +catalyst-python = { git = "https://github.com/input-output-hk/catalyst-libs.git", subdirectory="catalyst-python", tag = "catalyst-python/v0.1.0" } diff --git a/signed_docs/uv.lock b/signed_docs/uv.lock index 7da61d8e5f36..4c4d742d3f20 100644 --- a/signed_docs/uv.lock +++ b/signed_docs/uv.lock @@ -84,7 +84,7 @@ wheels = [ [[package]] name = "catalyst-python" version = "0.1.0" -source = { git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&branch=feat%2Fcatalyst-python#75b2c221acafe889572b33efdc8e69701d0ed390" } +source = { git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&tag=catalyst-python%2Fv0.1.0#b421ea75911124f8e3c193ebdd783cb2719eeca8" } dependencies = [ { name = "cryptography" }, { name = "pycardano" }, @@ -774,7 +774,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "argparse", specifier = ">=1.4.0" }, - { name = "catalyst-python", git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&branch=feat%2Fcatalyst-python" }, + { name = "catalyst-python", git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&tag=catalyst-python%2Fv0.1.0" }, { name = "pathlib", specifier = ">=1.0.1" }, { name = "requests", specifier = ">=2.32.5" }, ] From 5aa4e40641dab54c8fa7a7887bad988ef13a0b92 Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Fri, 5 Dec 2025 13:57:13 +0700 Subject: [PATCH 07/19] wip --- .../dev/categories/category_parameters_1.json | 1 + .../category_parameters_form_template_1.json | 1 + .../proposal_comment_form_template_1.json | 46 + .../categories/proposal_form_template_1.json | 1491 +++++++++++++++++ signed_docs/dev/settings.json | 52 +- signed_docs/pyproject.toml | 2 +- signed_docs/setup_fund.py | 187 ++- signed_docs/uv.lock | 4 +- 8 files changed, 1732 insertions(+), 52 deletions(-) create mode 100644 signed_docs/dev/categories/category_parameters_1.json create mode 100644 signed_docs/dev/categories/category_parameters_form_template_1.json create mode 100644 signed_docs/dev/categories/proposal_comment_form_template_1.json create mode 100644 signed_docs/dev/categories/proposal_form_template_1.json diff --git a/signed_docs/dev/categories/category_parameters_1.json b/signed_docs/dev/categories/category_parameters_1.json new file mode 100644 index 000000000000..9e26dfeeb6e6 --- /dev/null +++ b/signed_docs/dev/categories/category_parameters_1.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/signed_docs/dev/categories/category_parameters_form_template_1.json b/signed_docs/dev/categories/category_parameters_form_template_1.json new file mode 100644 index 000000000000..61ef6e4e6858 --- /dev/null +++ b/signed_docs/dev/categories/category_parameters_form_template_1.json @@ -0,0 +1 @@ +{"type": "object"} \ No newline at end of file diff --git a/signed_docs/dev/categories/proposal_comment_form_template_1.json b/signed_docs/dev/categories/proposal_comment_form_template_1.json new file mode 100644 index 000000000000..78384aab7290 --- /dev/null +++ b/signed_docs/dev/categories/proposal_comment_form_template_1.json @@ -0,0 +1,46 @@ +{ + "$id":"https://cardano.org/schemas/catalyst/comments", + "$schema":"http://json-schema.org/draft-07/schema#", + "definitions":{ + "multiLineTextEntry":{ + "$comment":"UI - Multiline text entry without any markup or rich text capability.", + "pattern":"^[\\S\\s]+$", + "type":"string", + "x-note":"Enter multiple lines of plain text. You can use line breaks but no special formatting." + } + }, + "description":"Schema for comments on Catalyst proposals", + "maintainers":[ + { + "name":"Catalyst Team", + "url":"https://projectcatalyst.io/" + } + ], + "properties":{ + "comment":{ + "description":"The comments on the proposal", + "properties":{ + "content":{ + "$ref":"#/definitions/multiLineTextEntry", + "description":"The comment text content", + "maxLength":2000, + "minLength":1 + } + }, + "required":[ + "content" + ], + "type":"object" + } + }, + "required":[ + "comment" + ], + "title":"Proposal Comments Schema", + "type":"object", + "x-changelog":{ + "2025-06-16":[ + "Updating maxLength for content text" + ] + } +} \ No newline at end of file diff --git a/signed_docs/dev/categories/proposal_form_template_1.json b/signed_docs/dev/categories/proposal_form_template_1.json new file mode 100644 index 000000000000..6fac155cd4c2 --- /dev/null +++ b/signed_docs/dev/categories/proposal_form_template_1.json @@ -0,0 +1,1491 @@ +{ + "$id":"https://raw.githubusercontent.com/input-output-hk/catalyst-voices/refs/heads/main/docs/src/architecture/08_concepts/document_templates/proposal/f15/0199802c-21b4-7d6c-aacd-54aa31fe1e4c.schema.json", + "$schema":"http://json-schema.org/draft-07/schema#", + "additionalProperties":false, + "definitions":{ + "agreementConfirmation":{ + "$comment":"UI - A Boolean choice, defaults to `false` but its invalid if its not set to `true`.", + "const":true, + "default":false, + "format":"agreementConfirmation", + "type":"boolean", + "x-note":"Select Yes or No." + }, + "borderGroup":{ + "$comment":"UI - Border Group for better UI rendering", + "type":"object", + "x-border-color":"#ff0000" + }, + "currency":{ + "title":"Currency/Token amount", + "type":"integer" + }, + "dropDownSingleSelect":{ + "$comment":"UI - Drop Down Selection of a single entry from the defined enum.", + "contentMediaType":"text/plain", + "format":"dropDownSingleSelect", + "pattern":"^.*$", + "type":"string", + "x-note":"Select one option from the dropdown menu. Only one choice is allowed." + }, + "durationInMonths":{ + "$comment":"UI - A Duration represented in total months.", + "format":"datetime:duration:months", + "type":"integer", + "x-note":"Enter the duration of the proposal in months." + }, + "languageCode":{ + "$comment":"UI - ISO 639-1 language code selection", + "default":"en", + "description":"Two-letter ISO 639-1 language code", + "enum":[ + "aa", + "ab", + "af", + "ak", + "am", + "ar", + "as", + "ay", + "az", + "ba", + "be", + "bg", + "bh", + "bi", + "bn", + "bo", + "br", + "bs", + "ca", + "ce", + "ch", + "co", + "cs", + "cu", + "cv", + "cy", + "da", + "de", + "dv", + "dz", + "ee", + "el", + "en", + "eo", + "es", + "et", + "eu", + "fa", + "ff", + "fi", + "fj", + "fo", + "fr", + "fy", + "ga", + "gd", + "gl", + "gn", + "gu", + "gv", + "ha", + "he", + "hi", + "ho", + "hr", + "ht", + "hu", + "hy", + "hz", + "ia", + "id", + "ie", + "ig", + "ii", + "ik", + "io", + "is", + "it", + "iu", + "ja", + "jv", + "ka", + "kg", + "ki", + "kj", + "kk", + "kl", + "km", + "kn", + "ko", + "kr", + "ks", + "ku", + "kv", + "kw", + "ky", + "la", + "lb", + "lg", + "li", + "ln", + "lo", + "lt", + "lu", + "lv", + "mg", + "mh", + "mi", + "mk", + "ml", + "mn", + "mr", + "ms", + "mt", + "my", + "na", + "nb", + "nd", + "ne", + "ng", + "nl", + "nn", + "no", + "nr", + "nv", + "ny", + "oc", + "oj", + "om", + "or", + "os", + "pa", + "pi", + "pl", + "ps", + "pt", + "qu", + "rm", + "rn", + "ro", + "ru", + "rw", + "sa", + "sc", + "sd", + "se", + "sg", + "si", + "sk", + "sl", + "sm", + "sn", + "so", + "sq", + "sr", + "ss", + "st", + "su", + "sv", + "sw", + "ta", + "te", + "tg", + "th", + "ti", + "tk", + "tl", + "tn", + "to", + "tr", + "ts", + "tt", + "tw", + "ty", + "ug", + "uk", + "ur", + "uz", + "ve", + "vi", + "vo", + "wa", + "wo", + "xh", + "yi", + "yo", + "za", + "zh", + "zu" + ], + "title":"Language Code", + "type":"string", + "x-note":"Select the ISO 639-1 two-letter code for the language. For example: ''en'' for English, ''es'' for Spanish, ''fr'' for French, etc." + }, + "multiLineTextEntry":{ + "$comment":"UI - Multiline text entry without any markup or rich text capability.", + "contentMediaType":"text/plain", + "pattern":"^[\\S\\s]*$", + "type":"string", + "x-note":"Enter multiple lines of plain text. You can use line breaks but no special formatting." + }, + "multiLineTextEntryListMarkdown":{ + "$comment":"UI - A Growable List of markdown formatted text fields.", + "default":[ + + ], + "format":"multiLineTextEntryListMarkdown", + "items":{ + "$ref":"#/definitions/multiLineTextEntryMarkdown", + "maxLength":10240 + }, + "type":"array", + "uniqueItems":true, + "x-note":"Add multiple markdown-formatted text entries. Each entry can include rich formatting and should be unique." + }, + "multiLineTextEntryMarkdown":{ + "$comment":"UI - Multiline text entry with Markdown content.", + "contentMediaType":"text/markdown", + "pattern":"^[\\S\\s]*$", + "type":"string", + "x-note":"Use Markdown formatting for rich text. Available formatting:\n- Headers: # for h1, ## for h2, etc.\n- Lists: * or - for bullets, 1. for numbered\n- Emphasis: *italic* or **bold**\n- Links: [text](url)\n- Code: `inline` or ```block```" + }, + "multiSelect":{ + "$comment":"UI - Multiselect from the given items.", + "format":"multiSelect", + "type":"array", + "uniqueItems":true, + "x-note":"Select multiple options from the dropdown menu. Multiple choices are allowed." + }, + "nestedQuestions":{ + "$comment":"UI - The container for a nested question set.", + "additionalProperties":false, + "format":"nestedQuestions", + "type":"object", + "x-note":"Add multiple questions. Each question should be unique." + }, + "nestedQuestionsList":{ + "$comment":"UI - A Growable List of Questions. The contents are an object, that can have any UI elements within.", + "default":[ + + ], + "format":"nestedQuestionsList", + "type":"array", + "uniqueItems":true, + "x-note":"Add multiple questions. Each question should be unique." + }, + "radioButtonSelect":{ + "$comment":"UI - Radio Button Selection", + "format":"radioButtonSelect", + "type":"string", + "x-note":"Select one option from a list of radio buttons" + }, + "schemaReferenceNonUI":{ + "$comment":"NOT UI: used to identify the kind of template document used.", + "format":"path", + "readOnly":true, + "type":"string" + }, + "section":{ + "$comment":"UI - Logical Document Sub-Section Break.", + "additionalProperties":false, + "type":"object", + "x-note":"Subsections containing specific details about the proposal." + }, + "segment":{ + "$comment":"UI - Logical Document Section Break.", + "additionalProperties":false, + "properties":{ + "budget":{ + "type":"object" + }, + "category_details":{ + "type":"object" + }, + "category_questions":{ + "type":"object" + }, + "consent_confirmation":{ + "type":"object" + }, + "dependencies":{ + "type":"object" + }, + "feasibility":{ + "type":"object" + }, + "impact":{ + "type":"object" + }, + "milestones":{ + "type":"object" + }, + "ongoing_projects":{ + "type":"object" + }, + "open_source":{ + "type":"object" + }, + "problem":{ + "type":"object" + }, + "proposer":{ + "type":"object" + }, + "self_assessment":{ + "type":"object" + }, + "self_assessment_checklist":{ + "type":"object" + }, + "solution":{ + "type":"object" + }, + "supportingLinks":{ + "type":"object" + }, + "team":{ + "type":"object" + }, + "theme":{ + "type":"object" + }, + "time":{ + "type":"object" + }, + "title":{ + "type":"object" + }, + "translation":{ + "type":"object" + }, + "value":{ + "type":"object" + } + }, + "type":"object", + "x-note":"Major sections of the proposal. Each segment contains sections of information grouped together." + }, + "singleGroupedTagSelector":{ + "$comment":"UI - A selector where a top level selection, gives a single choice from a list of tags.", + "additionalProperties":true, + "format":"singleGroupedTagSelector", + "type":"object", + "x-note":"Select one option from the dropdown menu. Only one choice is allowed." + }, + "singleLineHttpsURLEntry":{ + "$comment":"UI - Single Line text entry for HTTPS Urls.", + "format":"uri", + "maxLength":255, + "pattern":"^https://[^\\s]+$", + "type":"string", + "x-note":"Must start with ''https://'' and is followed by one or more non-whitespace characters, ending at the end of the string." + }, + "singleLineHttpsURLEntryList":{ + "$comment":"UI - A Growable List of HTTPS URLs.", + "default":[ + + ], + "format":"singleLineHttpsURLEntryList", + "items":{ + "$ref":"#/definitions/singleLineHttpsURLEntry", + "maxLength":255 + }, + "type":"array", + "uniqueItems":true, + "x-note":"Enter multiple HTTPS URLs. Each URL should be unique and under 1024 characters." + }, + "singleLineTextEntry":{ + "$comment":"UI - Single Line text entry without any markup or rich text capability.", + "contentMediaType":"text/plain", + "pattern":"^.*$", + "type":"string", + "x-note":"Enter a single line of text. No formatting, line breaks, or special characters are allowed." + }, + "singleLineTextEntryList":{ + "$comment":"UI - A Growable List of single line text (no markup or richtext).", + "default":[ + + ], + "format":"singleLineTextEntryList", + "items":{ + "$ref":"#/definitions/singleLineTextEntry", + "maxLength":1024 + }, + "type":"array", + "uniqueItems":true, + "x-note":"Add multiple single-line text entries. Each entry should be unique and under 1024 characters." + }, + "tagGroup":{ + "$comment":"UI - An individual group within a singleGroupedTagSelector.", + "format":"tagGroup", + "pattern":"^.*$", + "type":"string", + "x-note":"Select one option from the dropdown menu. Only one choice is allowed." + }, + "tagInput":{ + "$comment":"UI - A tag-style input field for adding/removing items with visual tags", + "default":[ + + ], + "format":"tag-input", + "type":"array", + "uniqueItems":true, + "x-note":"Add or remove items that will be displayed as tags with remove buttons" + }, + "tagSelection":{ + "$comment":"UI - An individual tag within the group of a singleGroupedTagSelector.", + "format":"tagSelection", + "pattern":"^.*$", + "type":"string", + "x-note":"Select one option from the dropdown menu. Only one choice is allowed." + }, + "tokenValueCardanoADA":{ + "$comment":"UI - A Token Value denominated in Cardano ADA.", + "format":"token:cardano:ada", + "type":"integer", + "x-note":"Enter the amount of Cardano ADA to be used in the proposal." + }, + "yesNoChoice":{ + "$comment":"UI - A Boolean choice, represented as a Yes/No selection. Yes = true.", + "default":false, + "format":"yesNoChoice", + "type":"boolean", + "x-note":"Select Yes or No." + } + }, + "description":"Schema for the F15 Midnight: Compact DApps", + "maintainers":[ + { + "name":"Catalyst Team", + "url":"https://projectcatalyst.io/" + } + ], + "properties":{ + "$schema":{ + "$ref":"#/definitions/schemaReferenceNonUI", + "const":"./0199802c-21b4-7d6c-aacd-54aa31fe1e4c.schema.json", + "default":"./0199802c-21b4-7d6c-aacd-54aa31fe1e4c.schema.json" + }, + "agreements":{ + "$ref":"#/definitions/segment", + "properties":{ + "consent_confirmation":{ + "$ref":"#/definitions/section", + "properties":{ + "terms_and_conditions":{ + "$ref":"#/definitions/agreementConfirmation", + "description":"I confirm that I have read, understand and shall adhere to the [Project Catalyst Platform Terms of Use](https://docs.projectcatalyst.io/current-fund/fund-basics/project-catalyst-terms-and-conditions/project-catalyst-platform-terms-of-use), [Project Catalyst Platform Privacy Policy](https://docs.projectcatalyst.io/current-fund/fund-basics/project-catalyst-terms-and-conditions/project-catalyst-platform-privacy-policy), [Project Catalyst Terms and Conditions – Midnight Compact DApps Submissions](https://docs.projectcatalyst.io/current-fund/fund-basics/project-catalyst-terms-and-conditions/project-catalyst-terms-and-conditions-midnight-compact-dapps-submissions), [Fund Rules](https://docs.projectcatalyst.io/current-fund/fund-basics/fund-rules), [Privacy Policy](https://docs.projectcatalyst.io/current-fund/fund-basics/project-catalyst-terms-and-conditions/catalyst-fc-privacy-policy). I understand that providing accurate and truthful information is essential for my proposal to remain eligible to participate in the current Fund.", + "title":"I Agree" + } + }, + "required":[ + "terms_and_conditions" + ], + "title":"Consent & Confirmation", + "x-order":[ + "terms_and_conditions" + ] + }, + "ongoing_projects":{ + "$ref":"#/definitions/section", + "properties":{ + "has_ongoing_projects":{ + "$ref":"#/definitions/yesNoChoice", + "description":"Do you have not yet completed projects?", + "title":"Have you previously submitted a project in Catalyst that was funded and is not yet completed?", + "x-placeholder":"Select if you or co-proposers have any ongoing projects" + }, + "projects":{ + "$ref":"#/definitions/tagInput", + "description":"If you answered “yes” to the previous question, please select first how many there are in total and then list all IDs for any projects you are currently involved in that have not been completed yet.", + "items":{ + "properties":{ + "project_id":{ + "description":"Seven digit project ID from Catalyst website", + "maxLength":7, + "minLength":7, + "pattern":"^[0-9]{7}$", + "title":"Project ID", + "type":"string" + } + }, + "required":[ + "project_id" + ], + "type":"object" + }, + "maxItems":15, + "minItems":0, + "title":"Project ID''s", + "x-guidance":"You can find a seven digit project ID on each original proposal page listed on Catalyst website. [Search for yours here.](https://projectcatalyst.io/search)", + "x-subsection":false + } + }, + "required":[ + "has_ongoing_projects", + "projects" + ], + "title":"Ongoing Projects", + "x-guidance":"Important Notice\n\nPlease review [Fund Rules](https://docs.projectcatalyst.io/current-fund/fund-basics/fund-rules) carefully, as eligibility to participate may be affected by the status of your ongoing projects. Providing accurate information is mandatory, failure to do so will result in your proposal being deemed ineligible in the current Fund.", + "x-order":[ + "has_ongoing_projects", + "projects" + ] + } + }, + "title":"Required Acknowledgements", + "x-icon":"double_check", + "x-order":[ + "ongoing_projects", + "consent_confirmation" + ] + }, + "campaign_category":{ + "$ref":"#/definitions/segment", + "description":"Determine the eligibility of the proposal for this category", + "properties":{ + "category_details":{ + "$ref":"#/definitions/section", + "properties":{ + "details":{ + "title":"Selected Category", + "type":"object" + } + }, + "title":"Selected Category" + }, + "category_questions":{ + "$ref":"#/definitions/section", + "description":"Answer the following questions to determine the eligibility of your proposal.", + "properties":{ + "build_goal":{ + "$ref":"#/definitions/multiLineTextEntryMarkdown", + "description":"Please provide your rationale.", + "maxLength":10240, + "minLength":200, + "title":"What exactly will you build? List the Compact contract(s) and key functions/proofs, the demo UI flow, Lace (Midnight) wallet integration, and your basic test plan.", + "x-guidance":"Usefulness (Pattern & Necessity)\n\n- Clear mapping from problem to data-protection pattern (e.g., selective disclosure for KYC, private votes, confidential asset ops).\n- Why this requires Midnight + Compact versus a public ledger.\n- Novelty relative to existing examples; what new building block it adds.", + "x-placeholder":"Please provide your rationale." + }, + "dapp_purpose":{ + "$ref":"#/definitions/multiLineTextEntryMarkdown", + "description":"Please provide your rationale.", + "maxLength":10240, + "minLength":200, + "title":"What is useful about your DApp within one of the specified industry or enterprise verticals?", + "x-guidance":"General Guidance\n\n- Be concise; prefer bullets over prose.\n- This is a code-first PoC, not a company pitch. No pitch decks/marketing.\n- Include concrete details (e.g., file paths, API/entrypoints, test commands).\n- If helpful, include a simple architecture diagram or sequence.\n- Keep within 3 months and 3 milestones; each milestone needs deliverables + acceptance criteria + evidence.\n- Use correct nomenclature (Compact ≠ TypeScript; privacy-enhancing/data protection).", + "x-placeholder":"Please provide your rationale." + }, + "developer_reuse":{ + "$ref":"#/definitions/multiLineTextEntryMarkdown", + "description":"Please provide your rationale.", + "maxLength":10240, + "minLength":200, + "title":"How will other developers learn from and reuse your repo? Describe repo structure, README contents, docs/tutorials, test instructions, and extension points. Which developer personas benefit, and how will you gauge impact (forks, stars, issues, remixes)?", + "x-guidance":"Developer Value\n\n- Identified developer personas (e.g., DApp devs, zk-curious, integrators) and how this example helps them.\n- Potential to attract new builders (clarity, reusability) and measurable signals (forks, stars, issues, downstream examples)", + "x-placeholder":"Please provide your rationale." + } + }, + "required":[ + "dapp_purpose", + "build_goal", + "developer_reuse" + ], + "title":"Category Questions", + "x-guidance":"General Guidance\n\nIn consideration of the Reviewers assessing your proposal, be concise and use bulleted lists where possible. ", + "x-order":[ + "dapp_purpose", + "build_goal", + "developer_reuse" + ] + } + }, + "title":"Campaign Category", + "x-icon":"top-bar", + "x-order":[ + "category_details", + "category_questions" + ] + }, + "details":{ + "$ref":"#/definitions/segment", + "properties":{ + "feasibility":{ + "$ref":"#/definitions/section", + "properties":{ + "feasibility":{ + "$ref":"#/definitions/multiLineTextEntryMarkdown", + "description":"What is your capability to deliver your project with high levels of trust and accountability? How do you intend to validate if your approach is feasible?", + "maxLength":10240, + "minLength":200, + "title":"What is your capability to deliver your project with high levels of trust and accountability? How do you intend to validate if your approach is feasible?", + "x-guidance":"Please describe your existing capabilities that demonstrate how and why you believe you’re best suited to deliver this project?\nPlease include the steps or processes that demonstrate that you can be trusted to manage funds properly." + } + }, + "required":[ + "feasibility" + ], + "title":"Capabilities & Feasibility" + }, + "impact":{ + "$ref":"#/definitions/section", + "properties":{ + "impact":{ + "$ref":"#/definitions/multiLineTextEntryMarkdown", + "description":"Please define the positive impact your project will have on Midnight ecosystem", + "maxLength":10240, + "minLength":200, + "title":"Please define the positive impact your project will have on Midnight ecosystem", + "x-guidance":"Please include here a description of how you intend to measure impact (whether quantitative or qualitative) and how and with whom you will share your outputs:\n\n- In what way will the success of your project bring value to the Midnight ecosystem?\n- How will you measure this impact?\n- How will you share the outputs and opportunities that result from your project?" + } + }, + "required":[ + "impact" + ], + "title":"Impact" + }, + "solution":{ + "$ref":"#/definitions/section", + "properties":{ + "solution":{ + "$ref":"#/definitions/multiLineTextEntryMarkdown", + "description":"Please describe your proposed solution and how it addresses the problem", + "maxLength":10240, + "minLength":200, + "title":"Please describe your proposed solution and how it addresses the problem", + "x-guidance":"How you write this section will depend on what type of proposal you are writing. You might want to include details on:\n\n- How do you perceive the problem you are solving?\n- What are your reasons for approaching it in the way that you have?\n- Who will your project engage?\n\n Explain what is unique about your solution, who will benefit, and why this is important to Midnight." + } + }, + "required":[ + "solution" + ], + "title":"Solution" + } + }, + "required":[ + "solution", + "impact", + "feasibility" + ], + "title":"Your Project and Solution", + "x-icon":"chart-pie", + "x-order":[ + "solution", + "impact", + "feasibility" + ] + }, + "milestones":{ + "$ref":"#/definitions/segment", + "properties":{ + "milestones":{ + "$ref":"#/definitions/section", + "description":"What are the key milestones you need to achieve in order to complete your project successfully?", + "properties":{ + "milestone_list":{ + "description":"Please refer to the Guidance card on the right for details", + "items":{ + "properties":{ + "acceptance_criteria":{ + "$ref":"#/definitions/multiLineTextEntryMarkdown", + "description":"Specific conditions that must be met", + "maxLength":2000, + "minLength":200, + "title":"Acceptance Criteria", + "x-placeholder":"Define the criteria for success in this milestone" + }, + "cost":{ + "$ref":"#/definitions/currency", + "description":"The cost of this milestone in $USDM", + "format":"token:usdm", + "multipleOf":1, + "title":"Cost", + "x-placeholder":"Enter the cost associated with this milestone" + }, + "delivery_month":{ + "$ref":"#/definitions/durationInMonths", + "description":"The month when this milestone will be delivered", + "maximum":3, + "minimum":1, + "title":"Delivery Month", + "x-placeholder":"Enter the month when this milestone is expected to be delivered" + }, + "evidence":{ + "$ref":"#/definitions/multiLineTextEntryMarkdown", + "description":"How you will demonstrate achievement", + "maxLength":2000, + "minLength":100, + "title":"Evidence of Completion", + "x-placeholder":"Specify the evidence that will demonstrate this milestone is complete" + }, + "outputs":{ + "$ref":"#/definitions/multiLineTextEntryMarkdown", + "description":"What will be delivered in this milestone", + "maxLength":2000, + "minLength":200, + "title":"Milestone Outputs", + "x-placeholder":"Describe the deliverables or outcomes for this milestone" + }, + "progress":{ + "$ref":"#/definitions/dropDownSingleSelect", + "description":"Current status of the milestone", + "enum":[ + "10 %", + "20 %", + "30 %", + "40 %", + "50 %", + "60 %", + "70 %", + "80 %", + "90 %", + "100 %" + ], + "title":"Progress", + "x-placeholder":"Enter the percentage of overall project completion progress for this milestone (10-100%)" + }, + "title":{ + "$ref":"#/definitions/singleLineTextEntry", + "description":"A clear, concise title for this milestone", + "maxLength":100, + "title":"Milestone Title", + "x-placeholder":"Enter the title for this milestone" + } + }, + "required":[ + "title", + "outputs", + "acceptance_criteria", + "evidence", + "delivery_month", + "cost" + ], + "title":"Milestone", + "type":"object", + "x-guidance":"Please follow this [guideline here](https://docs.projectcatalyst.io/current-fund/project-onboarding/milestone-based-proposals) to understand how to build your indicative milestones. Each milestone must have declared:\n\nA. **Milestone outputs**\n - What will be delivered\n\nB. **Acceptance criteria**\n - What conditions must be met\n\nC. **Evidence of completion**\n - How you will prove the milestone is complete", + "x-subsection":true + }, + "maxItems":3, + "minItems":3, + "title":"What are the key milestones you need to achieve in order to complete your project successfully?", + "type":"array", + "x-guidance":"For Midnight Grant Amounts 2 milestones, plus the final one including Project Close-out Report and Video, must be included (**3 milestones in total**)\n\nExpected Project outcomes:\n\n- M1: Publish public repository of required assets + the smart contract\n\n- M2: Connect smart contract to user interface (UI), make assets available into the repository, and have documentation\n\n- M3: Proof of Concept UI demonstrated in the Project Completion Video, testing suite complete, and Project Completion Report" + } + }, + "required":[ + "milestone_list" + ], + "title":"Project Milestones", + "x-guidance":"Please note milestones are only indicative during the proposal submission stage. Each funded project will formalize a milestone schedule and amounts during the onboarding stage." + } + }, + "title":"Milestones", + "x-icon":"flag", + "x-order":[ + "milestones" + ] + }, + "pitch":{ + "$ref":"#/definitions/segment", + "properties":{ + "budget":{ + "$ref":"#/definitions/section", + "properties":{ + "costs":{ + "$ref":"#/definitions/multiLineTextEntryMarkdown", + "description":"Please provide a cost breakdown of the proposed work and resources", + "maxLength":10240, + "minLength":200, + "title":"Please provide a cost breakdown of the proposed work and resources", + "x-guidance":"Give an account of how the work is budgeted. It may be helpful to refer to your plan and timeline, list the resources you will need at each stage, and what they cost.\n\nIt is your responsibility to properly manage the funds provided. Make sure to reference [Fund Rules](https://docs.projectcatalyst.io/current-fund/fund-basics/fund-rules) to understand eligibility around costs." + } + }, + "required":[ + "costs" + ], + "title":"Budget & Costs" + }, + "team":{ + "$ref":"#/definitions/section", + "properties":{ + "who":{ + "$ref":"#/definitions/multiLineTextEntryMarkdown", + "description":"Who is participating in the project team and what are their roles?", + "maxLength":10240, + "minLength":100, + "title":"Who is participating in the project team and what are their roles?", + "x-guidance":"List your team and collaborators, include links to their Linkedin profiles (or similar) and state what aspect of the project each participant will undertake.\n\nIf additional team members need to be recruited, please state what skills gaps you are looking to fill so readers understand what other roles will be needed to complete the project.\n\nYou are expected to have already engaged the relevant members of the organizations referenced so you have their commitment and capacity to support the project. If you have not taken any steps to this effect, it is likely that the resources will not be available if you are approved for funding, which can jeopardize the project before it has even begun.\n\nYour proposal will be publicly available, so make sure to obtain any consent required before including confidential or third party information.\n\nAll applicants must disclose their project team’s roles and scope of services across all submitted proposals. Failure to disclose this information may lead to disqualification from the current fund round." + } + }, + "required":[ + "who" + ], + "title":"Project Team" + }, + "value":{ + "$ref":"#/definitions/section", + "properties":{ + "note":{ + "$ref":"#/definitions/multiLineTextEntryMarkdown", + "description":"How does the cost of the project represent value for the Midnight ecosystem?", + "maxLength":10240, + "minLength":200, + "title":"How does the cost of the project represent value for the Midnight ecosystem?", + "x-guidance":"Provide a compelling reason about how your project represents a good use of funds and justify how it will create value for the Midnight ecosystem." + } + }, + "required":[ + "note" + ], + "title":"Value for Money" + } + }, + "required":[ + "team", + "budget", + "value" + ], + "title":"Final Pitch", + "x-icon":"presentation-chart-line", + "x-order":[ + "team", + "budget", + "value" + ] + }, + "self_assessment":{ + "$ref":"#/definitions/segment", + "properties":{ + "self_assessment_checklist":{ + "$ref":"#/definitions/section", + "properties":{ + "developer_experience":{ + "$ref":"#/definitions/agreementConfirmation", + "description":"Developer Experience Focus:", + "title":"I confirm that the proposal clearly defines which part of the developer journey it improves and how it makes building on Midnight easier and more productive." + }, + "open_source_commitment":{ + "$ref":"#/definitions/agreementConfirmation", + "description":"Open Source Commitment:", + "title":"I confirm that the proposal explicitly states the chosen permissive open-source license (e.g., MIT, Apache 2.0) and commits to a public code repository." + }, + "quality_documentation":{ + "$ref":"#/definitions/agreementConfirmation", + "description":"High-Quality Documentation:", + "title":"I confirm that a plan for creating and maintaining clear, comprehensive documentation is a core part of the proposal''s scope." + }, + "realistic_scope":{ + "$ref":"#/definitions/agreementConfirmation", + "description":"Realistic Scope:", + "title":"I confirm that the budget and timeline (3 months) are realistic for delivering the proposed tool or resource." + }, + "strategic_fit":{ + "$ref":"#/definitions/agreementConfirmation", + "description":"Strategic Fit:", + "title":"I confirm that the proposal clearly provides a basic prototype reference application for one of the areas of interest." + }, + "verifiable_builder_credentials":{ + "$ref":"#/definitions/agreementConfirmation", + "description":"Verifiable Builder Credentials:", + "title":"I confirm that the team provides evidence of their technical ability and experience in creating developer tools or high-quality technical content (e.g., GitHub, portfolio)." + } + }, + "required":[ + "strategic_fit", + "developer_experience", + "open_source_commitment", + "verifiable_builder_credentials", + "quality_documentation", + "realistic_scope" + ], + "title":"Self-Assessment Checklist", + "x-guidance":"Use this checklist to ensure your proposal meets all foundational and content requirements before submission.", + "x-order":[ + "strategic_fit", + "developer_experience", + "open_source_commitment", + "verifiable_builder_credentials", + "quality_documentation", + "realistic_scope" + ] + } + }, + "required":[ + "self_assessment_checklist" + ], + "title":"Self-Assessment", + "x-icon":"shield-check", + "x-order":[ + "self_assessment_checklist" + ] + }, + "setup":{ + "$ref":"#/definitions/segment", + "description":"Proposal title", + "properties":{ + "proposer":{ + "$ref":"#/definitions/section", + "description":"Proposer Information", + "properties":{ + "applicant":{ + "$ref":"#/definitions/singleLineTextEntry", + "description":"Name and surname of main applicant", + "maxLength":100, + "minLength":2, + "title":"Applicant name and surname", + "x-guidance":"The applicant is the individual or entity responsible for the proposed project.", + "x-placeholder":"Enter the full name of the applicant submitting the proposal" + }, + "type":{ + "$ref":"#/definitions/radioButtonSelect", + "description":"Are you submitting this proposal as an individual or as an entity (whether formally incorporated or not)", + "enum":[ + "Individual", + "Entity (Incorporated)", + "Entity (Not Incorporated)" + ], + "title":"Are you submitting this proposal as an individual or as an entity (whether formally incorporated or not)?", + "x-guidance":"Please select from one of the following:\n\n1. Individual\n2. Entity (Incorporated)\n3. Entity (Not Incorporated)" + } + }, + "required":[ + "applicant", + "type" + ], + "title":"Applicant", + "x-order":[ + "applicant", + "type" + ] + }, + "title":{ + "$ref":"#/definitions/section", + "description":"Proposal title", + "properties":{ + "title":{ + "$ref":"#/definitions/singleLineTextEntry", + "description":"**Proposal title**\n\nPlease note we suggest you use no more than 60 characters for your proposal title so that it can be easily viewed in the voting app.", + "maxLength":60, + "minLength":3, + "title":"Please provide your proposal title", + "x-guidance":"This is the first detail about your proposal that voters see so it should clearly express what the proposal is about. A clear, unambiguous, and concise title is very important.", + "x-placeholder":"Summarize your proposal in 60 characters or less" + } + }, + "required":[ + "title" + ], + "title":"Proposal title" + } + }, + "required":[ + "title", + "proposer" + ], + "title":"Proposal setup", + "x-icon":"view-grid", + "x-order":[ + "title", + "proposer" + ] + }, + "summary":{ + "$ref":"#/definitions/segment", + "description":"Key information about your proposal", + "properties":{ + "budget":{ + "$ref":"#/definitions/section", + "properties":{ + "requestedFunds":{ + "$ref":"#/definitions/currency", + "description":"Requested amount should be between $USDM 2,500 or $USDM 10,000", + "format":"token:usdm", + "maximum":10000, + "minimum":2500, + "title":"Enter the amount of funding you are requesting in $USDM", + "x-guidance":"Each funding category has a minimum and maximum amount of funding a single proposal can request.\n\n**Midnight: Compact DApps**\n\n- Minimum Funding Amount per proposal: **$USDM 2,500**\n- Maximum Funding Amount per proposal: **$USDM 10,000**", + "x-placeholder":"Requested amount should be between $USDM 2,500 or $USDM 10,000" + } + }, + "required":[ + "requestedFunds" + ], + "title":"Budget Information", + "x-order":[ + "requestedFunds" + ] + }, + "dependencies":{ + "$ref":"#/definitions/section", + "description":"External dependencies and requirements for project success", + "properties":{ + "dependencyDetail":{ + "$ref":"#/definitions/singleLineTextEntry", + "description":"Here you should list any dependencies and prerequisites for your project''s success. These are usually external factors (such as third-party suppliers, external resources, third-party software, etc.) that may cause a delay, since a project has less control over them. In case of third party software, indicate whether you have the necessary licenses and permission to use such software.", + "maxLength":10240, + "minLength":15, + "title":"Describe any dependencies or write ''No dependencies''", + "x-guidance":"If “YES”, please describe the dependencies and why you believe them essential to the project''s delivery. If “NO”, please write \"No dependencies\"." + }, + "hasDependency":{ + "$ref":"#/definitions/yesNoChoice", + "description":"Does your project have any dependencies on other organizations, technical or otherwise?", + "title":"Does your project have any dependencies on other organizations, technical or otherwise?", + "x-guidance":"List dependencies and prerequisites for your project’s success. These are usually external factors (such as third-party suppliers, external resources, third-party software, etc.) that may cause a delay or represent a risk due to less control over resources.\n\nIn the case of third-party software, indicate whether you have the necessary licenses and permission to use such software.", + "x-placeholder":"Select if your project has any dependencies" + } + }, + "required":[ + "hasDependency", + "dependencyDetail" + ], + "title":"Project Dependencies" + }, + "open_source":{ + "$ref":"#/definitions/section", + "description":"Will your project''s output be fully open source? Open source refers to something people can modify and share because its design is publicly accessible.", + "properties":{ + "isOpenSource":{ + "$ref":"#/definitions/yesNoChoice", + "description":"Select Yes if the project is open source, No if it is not.", + "title":"Will your project''s outputs be fully open source?", + "x-guidance":"If you answered “YES” to the question above:\n\nIf you declare that the project will be open source in the application form, it must remain open source throughout the entire lifecycle of the project, with a publicly accessible repository.\n\nPlease indicate the type of open source license you intend to use and provide any additional information relevant to the open source status of your project outputs.\n\nIf you answered “NO” to the question above:\n\nYou will not be eligible for this funding." + }, + "openSourceInformation":{ + "$ref":"#/definitions/multiLineTextEntry", + "description":"Please provide here more information on the open source status of your project outputs", + "maxLength":500, + "title":"Please provide here more information on the open source status of your project outputs", + "x-guidance":"Open source licenses ensure intellectual property (IP) (such as source code) remains publicly accessible and licensed in a way that allows anyone to use, modify, and share the IP freely, typically under licenses approved by the Open Source Initiative.\n\nProprietary IP (such as source code) is not publicly available and the rights to use, modify, or redistribute the proprietary IP are restricted and typically reserved by the IP''s owner.\n\nhttps://opensource.org/licenses", + "x-placeholder":"Describe the open source status of your project and the license type" + } + }, + "required":[ + "isOpenSource", + "openSourceInformation" + ], + "title":"Project Open Source", + "x-order":[ + "isOpenSource", + "openSourceInformation" + ] + }, + "problem":{ + "$ref":"#/definitions/section", + "description":"Define the problem your proposal aims to solve", + "properties":{ + "statement":{ + "$ref":"#/definitions/multiLineTextEntry", + "description":"Clearly define the problem you aim to solve. This will be visible in the Catalyst voting app.", + "maxLength":200, + "minLength":50, + "title":"What is the problem you want to solve?", + "x-guidance":"Ensure you present a well-defined problem. What is the core issue that you hope to fix? Remember: the reader might not recognize the problem unless you state it clearly.\n\nThis answer will be displayed on the Catalyst voting app, so voters will see it even if they do not open your proposal to read it in detail.", + "x-placeholder":"Describe the problem to be solved with your proposed project" + } + }, + "required":[ + "statement" + ], + "title":"Problem Statement" + }, + "solution":{ + "$ref":"#/definitions/section", + "description":"Describe your proposed solution to the problem", + "properties":{ + "summary":{ + "$ref":"#/definitions/multiLineTextEntry", + "description":"Briefly describe your solution. Focus on what you will do or create to solve the problem.", + "maxLength":200, + "minLength":50, + "title":"Summarize your solution to the problem", + "x-guidance":"Focus on what you are going to do, or change to solve the problem. Avoid “There should be a way to...” and ensure “We will build a...!”.\n\nClearly state how the solution addresses the problem you have identified. Make sure you connect the ''why'' and the ''how'' of your solution.\n\nThis answer will be displayed on the Catalyst voting app, so voters will see it even if they do not open your proposal and read it in detail.", + "x-placeholder":"Describe how you will solve the problem" + } + }, + "required":[ + "summary" + ], + "title":"Solution Overview" + }, + "supportingLinks":{ + "$ref":"#/definitions/section", + "description":"Additional resources and documentation for your proposal", + "properties":{ + "links":{ + "$ref":"#/definitions/singleLineHttpsURLEntryList", + "description":"Links to any relevant documentation, code repositories, or marketing materials. All links must use HTTPS. Please make sure that submitters own or have rights to share any linked content.", + "maxItems":5, + "minItems":0, + "title":"Supporting links" + } + }, + "title":"Supporting Documentation", + "x-guidance":"Provide **GitHub handles for all builders** and **1–3 representative repositories** that show your ability to ship code. Optionally include a link to an early PoC repo for this proposal and any **technical write-ups** (READMEs/docs).\n\n**Do not include** websites, social media, pitch decks, or marketing materials-this fund evaluates **code**, not marketing. All links must use HTTPS.", + "x-placeholder":"Links to any relevant documentation, code repositories, or marketing materials. All links must use HTTPS. Please make sure that submitters own or have rights to share any linked content." + }, + "time":{ + "$ref":"#/definitions/section", + "properties":{ + "duration":{ + "$ref":"#/definitions/durationInMonths", + "description":"Specify the expected duration of your project. Projects must be completable within 2-12 months.", + "maximum":3, + "minimum":3, + "title":"Please specify how many months you expect your project to last ", + "x-guidance":"Midnight projects must be completed within 3 months.\n\nProjects can be completed earlier if milestone [Proof-of-Achievements](https://docs.projectcatalyst.io/current-fund/project-onboarding/milestone-based-proposals) and [Project Completion](https://docs.projectcatalyst.io/current-fund/general-information/project-close-out-report-and-project-close-out-video-pcr-and-pcv) steps are submitted and approved ahead of the expected delivery due dates in compliance with the [Fund Rules](https://docs.projectcatalyst.io/current-fund/fund-basics/fund-rules).", + "x-placeholder":"Select the expected duration of your project (3 months)" + } + }, + "required":[ + "duration" + ], + "title":"Time" + }, + "translation":{ + "$ref":"#/definitions/section", + "description":"Information about the proposal''s language and translation status", + "properties":{ + "isTranslated":{ + "$ref":"#/definitions/yesNoChoice", + "description":"Indicate if your proposal has been auto-translated into English from another language", + "title":"Please indicate if your proposal has been auto-translated", + "x-guidance":"Tick “YES” to remind readers that your proposal has been automatically translated and that there may be translation inaccuracies.\n\nIf you wish, you can link a document with the proposal in your native language. \n\nTick “NO” if your proposal has not been automatically translated into English from another language.", + "x-placeholder":"Select if your proposal has been auto-translated into English" + }, + "originalDocumentLink":{ + "$ref":"#/definitions/singleLineHttpsURLEntry", + "description":"Provide a link to the original proposal document in its original language", + "title":"Original Document Link" + }, + "originalLanguage":{ + "$ref":"#/definitions/languageCode", + "description":"If auto-translated, specify the original language of your proposal", + "title":"Original Language" + } + }, + "required":[ + "isTranslated" + ], + "title":"Translation Information" + } + }, + "title":"Proposal Summary", + "x-icon":"light-bulb", + "x-order":[ + "budget", + "time", + "translation", + "problem", + "solution", + "supportingLinks", + "dependencies", + "open_source" + ] + }, + "theme":{ + "$ref":"#/definitions/segment", + "properties":{ + "theme":{ + "$ref":"#/definitions/section", + "description":"Long-term vision and categorization of your project", + "properties":{ + "grouped_tag":{ + "$ref":"#/definitions/singleGroupedTagSelector", + "oneOf":[ + { + "properties":{ + "group":{ + "$ref":"#/definitions/tagGroup", + "const":"Governance" + }, + "tag":{ + "$ref":"#/definitions/tagSelection", + "enum":[ + "Governance", + "DAO" + ] + } + } + }, + { + "properties":{ + "group":{ + "$ref":"#/definitions/tagGroup", + "const":"Education" + }, + "tag":{ + "$ref":"#/definitions/tagSelection", + "enum":[ + "Education", + "Learn to Earn", + "Training", + "Translation" + ] + } + } + }, + { + "properties":{ + "group":{ + "$ref":"#/definitions/tagGroup", + "const":"Community & Outreach" + }, + "tag":{ + "$ref":"#/definitions/tagSelection", + "enum":[ + "Connected Community", + "Community", + "Community Outreach", + "Social Media" + ] + } + } + }, + { + "properties":{ + "group":{ + "$ref":"#/definitions/tagGroup", + "const":"Development & Tools" + }, + "tag":{ + "$ref":"#/definitions/tagSelection", + "enum":[ + "Developer Tools", + "Infrastructure", + "Analytics", + "AI", + "Research", + "UTXO", + "P2P", + "Layer2" + ] + } + } + }, + { + "properties":{ + "group":{ + "$ref":"#/definitions/tagGroup", + "const":"Identity & Security" + }, + "tag":{ + "$ref":"#/definitions/tagSelection", + "enum":[ + "Identity & Verification", + "Cybersecurity", + "Security", + "Authentication", + "Privacy" + ] + } + } + }, + { + "properties":{ + "group":{ + "$ref":"#/definitions/tagGroup", + "const":"DeFi" + }, + "tag":{ + "$ref":"#/definitions/tagSelection", + "enum":[ + "DeFi", + "DEX", + "Payments", + "Stablecoin", + "Risk Management", + "Yield", + "Staking", + "Lending" + ] + } + } + }, + { + "properties":{ + "group":{ + "$ref":"#/definitions/tagGroup", + "const":"Real World Applications (RWA)" + }, + "tag":{ + "$ref":"#/definitions/tagSelection", + "enum":[ + "Wallet", + "Marketplace", + "Manufacturing", + "IoT", + "Financial Services", + "E-commerce", + "Business Services", + "Supply Chain", + "Real Estate", + "Healthcare", + "Tourism", + "Entertainment", + "RWA", + "Music", + "Tokenization" + ] + } + } + }, + { + "properties":{ + "group":{ + "$ref":"#/definitions/tagGroup", + "const":"Events & Marketing" + }, + "tag":{ + "$ref":"#/definitions/tagSelection", + "enum":[ + "Events", + "Marketing", + "Hackathons", + "Accelerator", + "Incubator" + ] + } + } + }, + { + "properties":{ + "group":{ + "$ref":"#/definitions/tagGroup", + "const":"Interoperability" + }, + "tag":{ + "$ref":"#/definitions/tagSelection", + "enum":[ + "Cross-chain", + "Interoperability", + "Off-chain", + "Legal", + "Policy", + "Advocacy", + "Standards" + ] + } + } + }, + { + "properties":{ + "group":{ + "$ref":"#/definitions/tagGroup", + "const":"Sustainability" + }, + "tag":{ + "$ref":"#/definitions/tagSelection", + "enum":[ + "Sustainability", + "Environment", + "Agriculture" + ] + } + } + }, + { + "properties":{ + "group":{ + "$ref":"#/definitions/tagGroup", + "const":"Smart Contracts" + }, + "tag":{ + "$ref":"#/definitions/tagSelection", + "enum":[ + "Smart Contracts", + "Audit", + "Oracles" + ] + } + } + }, + { + "properties":{ + "group":{ + "$ref":"#/definitions/tagGroup", + "const":"GameFi" + }, + "tag":{ + "$ref":"#/definitions/tagSelection", + "enum":[ + "Games", + "Gaming", + "GameFi", + "Entertainment", + "Metaverse" + ] + } + } + }, + { + "properties":{ + "group":{ + "$ref":"#/definitions/tagGroup", + "const":"NFT" + }, + "tag":{ + "$ref":"#/definitions/tagSelection", + "enum":[ + "NFT", + "CNFT", + "Collectibles", + "Digital Twin" + ] + } + } + } + ], + "title":"Please choose the most relevant theme and tag related to the outcomes of your proposal" + } + }, + "required":[ + "grouped_tag" + ], + "title":"Theme", + "x-order":[ + "theme" + ] + } + }, + "title":"Theme Selection", + "x-icon":"tag", + "x-order":[ + "theme" + ] + } + }, + "required":[ + "setup", + "summary", + "theme", + "details", + "milestones", + "pitch", + "self_assessment", + "agreements" + ], + "title":"F15 Midnight: Compact DApps", + "type":"object", + "x-changelog":{ + "2025-10-08":[ + "F15 Template Setup" + ], + "2025-11-05":[ + "Included two additional links in the Consent & Confirmation question" + ] + }, + "x-order":[ + "setup", + "summary", + "theme", + "campaign_category", + "details", + "milestones", + "pitch", + "self_assessment", + "agreements" + ] +} \ No newline at end of file diff --git a/signed_docs/dev/settings.json b/signed_docs/dev/settings.json index 8a6a6a945522..ba8fa0cf3d28 100644 --- a/signed_docs/dev/settings.json +++ b/signed_docs/dev/settings.json @@ -2,5 +2,55 @@ "url": "http://100.76.226.39:3030/api/v1/document", "timeout": 10, "network": "preprod", - "admin_private_key_env": "CAT_GATEWAY_ADMIN_PRIVATE_KEY" + "admin_private_key_env": "CAT_GATEWAY_ADMIN_PRIVATE_KEY", + "brand": { + "parameters_form_template": { + "id": "019aed47-c956-709d-a26d-acd4e9537988", + "ver": "019aed47-c956-709d-a26d-acd4e9537988", + "path": "brand_parameters_form_template.json" + }, + "parameters": { + "id": "019aed47-c956-7924-93f3-46015cc1306c", + "ver": "019aed47-c956-7924-93f3-46015cc1306c", + "path": "brand_parameters.json" + }, + "campaigns": [ + { + "parameters_form_template": { + "id": "019aed47-c956-7d9d-abfe-de80b2694db5", + "ver": "019aed47-c956-7d9d-abfe-de80b2694db5", + "path": "campaign_parameters_form_template.json" + }, + "parameters": { + "id": "019aed47-c956-790f-a053-139bf05e6475", + "ver": "019aed47-c956-790f-a053-139bf05e6475", + "path": "campaign_parameters.json" + }, + "categories": [ + { + "parameters_form_template": { + "id": "019aed47-c956-7438-9661-2c915705379c", + "ver": "019aed47-c956-7438-9661-2c915705379c", + "path": "categories/category_parameters_form_template_1.json" + }, + "parameters": { + "id": "019aed47-c956-70ae-ae73-6fd128b34508", + "ver": "019aed47-c956-70ae-ae73-6fd128b34508", + "path": "categories/category_parameters_1.json" + }, + "proposal_form_template": { + "id": "019aed47-c956-7470-87e9-848967bc21ca", + "ver": "019aed47-c956-7470-87e9-848967bc21ca", + "path": "categories/proposal_form_template_1.json" + }, + "proposal_comment_form_template": { + "id": "019aed47-c956-7630-8359-8b603c64b373", + "ver": "019aed47-c956-7630-8359-8b603c64b373", + "path": "categories/proposal_comment_form_template_1.json" + } + } + ] + } + ] + } } \ No newline at end of file diff --git a/signed_docs/pyproject.toml b/signed_docs/pyproject.toml index 30caa4fba599..4f080fbda0f6 100644 --- a/signed_docs/pyproject.toml +++ b/signed_docs/pyproject.toml @@ -12,4 +12,4 @@ dependencies = [ ] [tool.uv.sources] -catalyst-python = { git = "https://github.com/input-output-hk/catalyst-libs.git", subdirectory="catalyst-python", tag = "catalyst-python/v0.1.0" } +catalyst-python = { git = "https://github.com/input-output-hk/catalyst-libs.git", subdirectory="catalyst-python", branch = "feat/signed-doc-create_metadata" } diff --git a/signed_docs/setup_fund.py b/signed_docs/setup_fund.py index 1667af346592..b579e0fbb539 100644 --- a/signed_docs/setup_fund.py +++ b/signed_docs/setup_fund.py @@ -9,6 +9,7 @@ from catalyst_python.ed25519 import Ed25519Keys from catalyst_python.signed_doc import ( SignedDocument, + DocumentRef, brand_parameters_form_template_doc, brand_parameters_doc, campaign_parameters_form_template_doc, @@ -16,7 +17,7 @@ category_parameters_form_template_doc, category_parameters_doc, proposal_form_template_doc, - proposal_doc, + proposal_comment_form_template_doc ) @@ -33,7 +34,7 @@ def read_json_file(env_dir: Path, file_name: str) -> dict[str, str]: with Path(filepath).open("r") as f: json_f = json.load(f) - print(f"Loaded {filepath}:\n{json_f}") + print(f"Loaded {filepath}") return json_f @@ -56,7 +57,7 @@ def publish_document( resp.raise_for_status() break except requests.exceptions.RequestException as e: - errmsg = f"failed to send HTTP request: {e}" + errmsg = f"failed to send HTTP request: {e}, resp: {resp.text}" print(errmsg) if retry: @@ -80,53 +81,143 @@ def setup_fund(env: str, retry: bool): url = settings["url"] timeout = settings["timeout"] - brand_template = brand_parameters_form_template_doc( - read_json_file(env_dir, "brand_parameters_form_template.json"), - admin, + docs_to_publish = [] + + brand_parameters_form_template_settings = settings["brand"][ + "parameters_form_template" + ] + brand_parameters_form_template = brand_parameters_form_template_doc( + content=read_json_file( + env_dir, brand_parameters_form_template_settings["path"] + ), + admin_key=admin, + id=brand_parameters_form_template_settings["id"], + ver=brand_parameters_form_template_settings["ver"], ) - publish_document( - url=url, - timeout=timeout, - retry=retry, - doc=brand_template, - token=admin.auth_token(), - ) - - brand = brand_parameters_doc( - read_json_file(env_dir, "brand_parameters_form_template.json"), - brand_template, - admin, - ) - publish_document( - url=url, timeout=timeout, retry=retry, doc=brand, token=admin.auth_token() - ) - - campaign_template = campaign_parameters_form_template_doc( - read_json_file(env_dir, "campaign_parameters_form_template.json"), - brand, - admin, - ) - publish_document( - url=url, - timeout=timeout, - retry=retry, - doc=campaign_template, - token=admin.auth_token(), - ) - - campaign = campaign_parameters_doc( - read_json_file(env_dir, "campaign_parameters.json"), - campaign_template, - brand, - admin, - ) - publish_document( - url=url, - timeout=timeout, - retry=retry, - doc=campaign, - token=admin.auth_token(), + docs_to_publish.append(brand_parameters_form_template) + + brand_parameters_settings = settings["brand"]["parameters"] + brand_parameters = brand_parameters_doc( + content=read_json_file(env_dir, brand_parameters_settings["path"]), + brand_parameters_form_template_ref=DocumentRef( + brand_parameters_form_template_settings["id"], + brand_parameters_form_template_settings["ver"], + ), + admin_key=admin, + id=brand_parameters_settings["id"], + ver=brand_parameters_settings["ver"], ) + docs_to_publish.append(brand_parameters) + + + for campaing in settings["brand"]["campaigns"]: + campaing_parameters_form_template_settings = campaing["parameters_form_template"] + campaing_parameters_form_template = campaign_parameters_form_template_doc( + content=read_json_file( + env_dir, campaing_parameters_form_template_settings["path"] + ), + param_ref=DocumentRef( + brand_parameters_settings["id"], + brand_parameters_settings["ver"], + ), + admin_key=admin, + id=campaing_parameters_form_template_settings["id"], + ver=campaing_parameters_form_template_settings["ver"], + ) + docs_to_publish.append(campaing_parameters_form_template) + + + campaing_parameters_settings = campaing["parameters"] + campaing_parameters = campaign_parameters_doc( + content=read_json_file(env_dir, campaing_parameters_settings["path"]), + campaign_parameters_form_template_doc=DocumentRef( + campaing_parameters_form_template_settings["id"], + campaing_parameters_form_template_settings["ver"], + ), + param_ref=DocumentRef( + brand_parameters_settings["id"], + brand_parameters_settings["ver"], + ), + admin_key=admin, + id=campaing_parameters_settings["id"], + ver=campaing_parameters_settings["ver"], + ) + docs_to_publish.append(campaing_parameters) + + for category in campaing["categories"]: + category_parameters_form_template_settings = category["parameters_form_template"] + category_parameters_form_template = category_parameters_form_template_doc( + content=read_json_file( + env_dir, category_parameters_form_template_settings["path"] + ), + param_ref=DocumentRef( + campaing_parameters_settings["id"], + campaing_parameters_settings["ver"], + ), + admin_key=admin, + id=category_parameters_form_template_settings["id"], + ver=category_parameters_form_template_settings["ver"], + ) + docs_to_publish.append(category_parameters_form_template) + + category_parameters_settings = category["parameters"] + category_parameters = category_parameters_doc( + content=read_json_file(env_dir, category_parameters_settings["path"]), + category_parameters_form_template_doc=DocumentRef( + category_parameters_form_template_settings["id"], + category_parameters_form_template_settings["ver"], + ), + param_ref=DocumentRef( + campaing_parameters_settings["id"], + campaing_parameters_settings["ver"], + ), + admin_key=admin, + id=category_parameters_settings["id"], + ver=category_parameters_settings["ver"], + ) + docs_to_publish.append(category_parameters) + + proposal_form_template_settings = category["proposal_form_template"] + proposal_form_template = proposal_form_template_doc( + content=read_json_file( + env_dir, proposal_form_template_settings["path"] + ), + param_ref=DocumentRef( + category_parameters_settings["id"], + category_parameters_settings["ver"], + ), + admin_key=admin, + id=proposal_form_template_settings["id"], + ver=proposal_form_template_settings["ver"], + ) + docs_to_publish.append(proposal_form_template) + + proposal_comment_form_template_settings = category["proposal_comment_form_template"] + proposal_comment_form_template = proposal_comment_form_template_doc( + content=read_json_file( + env_dir, proposal_comment_form_template_settings["path"] + ), + param_ref=DocumentRef( + category_parameters_settings["id"], + category_parameters_settings["ver"], + ), + admin_key=admin, + id=proposal_comment_form_template_settings["id"], + ver=proposal_comment_form_template_settings["ver"], + ) + docs_to_publish.append(proposal_comment_form_template) + + + + + for doc in docs_to_publish: + publish_document( + url=url, + timeout=timeout, + retry=retry, + doc=doc, + token=admin.auth_token(), + ) parser = argparse.ArgumentParser(description="Catalyst Signed Document importer.") diff --git a/signed_docs/uv.lock b/signed_docs/uv.lock index 4c4d742d3f20..15d31a28c9e2 100644 --- a/signed_docs/uv.lock +++ b/signed_docs/uv.lock @@ -84,7 +84,7 @@ wheels = [ [[package]] name = "catalyst-python" version = "0.1.0" -source = { git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&tag=catalyst-python%2Fv0.1.0#b421ea75911124f8e3c193ebdd783cb2719eeca8" } +source = { git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&branch=feat%2Fsigned-doc-create_metadata#b8f775f55a861ba028074d902f7b36a0babbc50d" } dependencies = [ { name = "cryptography" }, { name = "pycardano" }, @@ -774,7 +774,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "argparse", specifier = ">=1.4.0" }, - { name = "catalyst-python", git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&tag=catalyst-python%2Fv0.1.0" }, + { name = "catalyst-python", git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&branch=feat%2Fsigned-doc-create_metadata" }, { name = "pathlib", specifier = ">=1.0.1" }, { name = "requests", specifier = ">=2.32.5" }, ] From e095d1b0b3f8f42851559cc1af0bd7b71a9cfa9e Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Fri, 5 Dec 2025 14:09:12 +0700 Subject: [PATCH 08/19] fix --- signed_docs/dev/settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/signed_docs/dev/settings.json b/signed_docs/dev/settings.json index ba8fa0cf3d28..fe57b36f9689 100644 --- a/signed_docs/dev/settings.json +++ b/signed_docs/dev/settings.json @@ -1,5 +1,5 @@ { - "url": "http://100.76.226.39:3030/api/v1/document", + "url": "https://app.dev.projectcatalyst.io/api/gateway/v1/document", "timeout": 10, "network": "preprod", "admin_private_key_env": "CAT_GATEWAY_ADMIN_PRIVATE_KEY", From 71a2c49bfca1505ac58be74a6a9363a51a9f709a Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Fri, 5 Dec 2025 15:22:59 +0700 Subject: [PATCH 09/19] fix --- signed_docs/dev/settings.json | 32 ++++++++++++++++---------------- signed_docs/setup_fund.py | 32 ++++++++++++++++---------------- signed_docs/uv.lock | 2 +- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/signed_docs/dev/settings.json b/signed_docs/dev/settings.json index fe57b36f9689..41b803f3dae7 100644 --- a/signed_docs/dev/settings.json +++ b/signed_docs/dev/settings.json @@ -5,47 +5,47 @@ "admin_private_key_env": "CAT_GATEWAY_ADMIN_PRIVATE_KEY", "brand": { "parameters_form_template": { - "id": "019aed47-c956-709d-a26d-acd4e9537988", - "ver": "019aed47-c956-709d-a26d-acd4e9537988", + "id": "019aed95-21db-72cf-844a-4b874410ee11", + "ver": "019aed95-21db-72cf-844a-4b874410ee11", "path": "brand_parameters_form_template.json" }, "parameters": { - "id": "019aed47-c956-7924-93f3-46015cc1306c", - "ver": "019aed47-c956-7924-93f3-46015cc1306c", + "id": "019aed95-21db-78fc-9947-34c629853f65", + "ver": "019aed95-21db-78fc-9947-34c629853f65", "path": "brand_parameters.json" }, "campaigns": [ { "parameters_form_template": { - "id": "019aed47-c956-7d9d-abfe-de80b2694db5", - "ver": "019aed47-c956-7d9d-abfe-de80b2694db5", + "id": "019aed95-21db-7c70-8e64-22b37a094749", + "ver": "019aed95-21db-7c70-8e64-22b37a094749", "path": "campaign_parameters_form_template.json" }, "parameters": { - "id": "019aed47-c956-790f-a053-139bf05e6475", - "ver": "019aed47-c956-790f-a053-139bf05e6475", + "id": "019aed95-21db-7d29-965a-d1ed9f608dd2", + "ver": "019aed95-21db-7d29-965a-d1ed9f608dd2", "path": "campaign_parameters.json" }, "categories": [ { "parameters_form_template": { - "id": "019aed47-c956-7438-9661-2c915705379c", - "ver": "019aed47-c956-7438-9661-2c915705379c", + "id": "019aed95-21db-741b-951e-64ff9f554cb0", + "ver": "019aed95-21db-741b-951e-64ff9f554cb0", "path": "categories/category_parameters_form_template_1.json" }, "parameters": { - "id": "019aed47-c956-70ae-ae73-6fd128b34508", - "ver": "019aed47-c956-70ae-ae73-6fd128b34508", + "id": "019aed95-21db-7451-8d0c-8225d42764e8", + "ver": "019aed95-21db-7451-8d0c-8225d42764e8", "path": "categories/category_parameters_1.json" }, "proposal_form_template": { - "id": "019aed47-c956-7470-87e9-848967bc21ca", - "ver": "019aed47-c956-7470-87e9-848967bc21ca", + "id": "019aed95-21db-78cb-a2c0-2eac3e757fdc", + "ver": "019aed95-21db-78cb-a2c0-2eac3e757fdc", "path": "categories/proposal_form_template_1.json" }, "proposal_comment_form_template": { - "id": "019aed47-c956-7630-8359-8b603c64b373", - "ver": "019aed47-c956-7630-8359-8b603c64b373", + "id": "019aed95-21db-7a0e-bfe0-92f006913095", + "ver": "019aed95-21db-7a0e-bfe0-92f006913095", "path": "categories/proposal_comment_form_template_1.json" } } diff --git a/signed_docs/setup_fund.py b/signed_docs/setup_fund.py index b579e0fbb539..8484576db1a2 100644 --- a/signed_docs/setup_fund.py +++ b/signed_docs/setup_fund.py @@ -91,8 +91,8 @@ def setup_fund(env: str, retry: bool): env_dir, brand_parameters_form_template_settings["path"] ), admin_key=admin, - id=brand_parameters_form_template_settings["id"], - ver=brand_parameters_form_template_settings["ver"], + doc_id=brand_parameters_form_template_settings["id"], + doc_ver=brand_parameters_form_template_settings["ver"], ) docs_to_publish.append(brand_parameters_form_template) @@ -104,8 +104,8 @@ def setup_fund(env: str, retry: bool): brand_parameters_form_template_settings["ver"], ), admin_key=admin, - id=brand_parameters_settings["id"], - ver=brand_parameters_settings["ver"], + doc_id=brand_parameters_settings["id"], + doc_ver=brand_parameters_settings["ver"], ) docs_to_publish.append(brand_parameters) @@ -121,8 +121,8 @@ def setup_fund(env: str, retry: bool): brand_parameters_settings["ver"], ), admin_key=admin, - id=campaing_parameters_form_template_settings["id"], - ver=campaing_parameters_form_template_settings["ver"], + doc_id=campaing_parameters_form_template_settings["id"], + doc_ver=campaing_parameters_form_template_settings["ver"], ) docs_to_publish.append(campaing_parameters_form_template) @@ -139,8 +139,8 @@ def setup_fund(env: str, retry: bool): brand_parameters_settings["ver"], ), admin_key=admin, - id=campaing_parameters_settings["id"], - ver=campaing_parameters_settings["ver"], + doc_id=campaing_parameters_settings["id"], + doc_ver=campaing_parameters_settings["ver"], ) docs_to_publish.append(campaing_parameters) @@ -155,8 +155,8 @@ def setup_fund(env: str, retry: bool): campaing_parameters_settings["ver"], ), admin_key=admin, - id=category_parameters_form_template_settings["id"], - ver=category_parameters_form_template_settings["ver"], + doc_id=category_parameters_form_template_settings["id"], + doc_ver=category_parameters_form_template_settings["ver"], ) docs_to_publish.append(category_parameters_form_template) @@ -172,8 +172,8 @@ def setup_fund(env: str, retry: bool): campaing_parameters_settings["ver"], ), admin_key=admin, - id=category_parameters_settings["id"], - ver=category_parameters_settings["ver"], + doc_id=category_parameters_settings["id"], + doc_ver=category_parameters_settings["ver"], ) docs_to_publish.append(category_parameters) @@ -187,8 +187,8 @@ def setup_fund(env: str, retry: bool): category_parameters_settings["ver"], ), admin_key=admin, - id=proposal_form_template_settings["id"], - ver=proposal_form_template_settings["ver"], + doc_id=proposal_form_template_settings["id"], + doc_ver=proposal_form_template_settings["ver"], ) docs_to_publish.append(proposal_form_template) @@ -202,8 +202,8 @@ def setup_fund(env: str, retry: bool): category_parameters_settings["ver"], ), admin_key=admin, - id=proposal_comment_form_template_settings["id"], - ver=proposal_comment_form_template_settings["ver"], + doc_id=proposal_comment_form_template_settings["id"], + doc_ver=proposal_comment_form_template_settings["ver"], ) docs_to_publish.append(proposal_comment_form_template) diff --git a/signed_docs/uv.lock b/signed_docs/uv.lock index 15d31a28c9e2..97f40d0ce8ef 100644 --- a/signed_docs/uv.lock +++ b/signed_docs/uv.lock @@ -84,7 +84,7 @@ wheels = [ [[package]] name = "catalyst-python" version = "0.1.0" -source = { git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&branch=feat%2Fsigned-doc-create_metadata#b8f775f55a861ba028074d902f7b36a0babbc50d" } +source = { git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&branch=feat%2Fsigned-doc-create_metadata#269a31a238bd5591020eef079ba9b897b8a9f5d4" } dependencies = [ { name = "cryptography" }, { name = "pycardano" }, From c152fcb96f23c8e44d8c10d1f0fd195559333255 Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Fri, 5 Dec 2025 16:14:20 +0700 Subject: [PATCH 10/19] add README.md description --- signed_docs/README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/signed_docs/README.md b/signed_docs/README.md index 45d8834409a1..26a0127aebcc 100644 --- a/signed_docs/README.md +++ b/signed_docs/README.md @@ -3,5 +3,17 @@ > A collection of scripts for inserting ["Catalyst Signed Documents"] like `Proposal`, `Comment`, `Proposal Form Template`, etc. via the `v1/document` PUT endpoint. +## Setup fund + +The tool will find the endpoint, and any other configuration +it needs to operate from the corresponding `settings.json` file to the provided ``. + +```sh +uv run setup_fund.py +``` + +You will need to ensure that the `MK_SIGNED_DOC_PATH` environment variable is set to the correct path to the +[`mk_signed_doc` cli tool](https://github.com/input-output-hk/catalyst-libs/tree/main/rust/signed_doc/bins) +and also that it is set environment variable from the `settings.json` `admin_private_key_env` property. ["Catalyst Signed Documents"]: https://docs.dev.projectcatalyst.io/libs/main/architecture/08_concepts/signed_doc/spec/ \ No newline at end of file From 739480c598e1f76d63d3e660f91dd1d48f47ca4f Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Fri, 5 Dec 2025 16:20:52 +0700 Subject: [PATCH 11/19] wip --- signed_docs/pyproject.toml | 2 +- signed_docs/uv.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/signed_docs/pyproject.toml b/signed_docs/pyproject.toml index 4f080fbda0f6..0e2e452b40ea 100644 --- a/signed_docs/pyproject.toml +++ b/signed_docs/pyproject.toml @@ -12,4 +12,4 @@ dependencies = [ ] [tool.uv.sources] -catalyst-python = { git = "https://github.com/input-output-hk/catalyst-libs.git", subdirectory="catalyst-python", branch = "feat/signed-doc-create_metadata" } +catalyst-python = { git = "https://github.com/input-output-hk/catalyst-libs.git", subdirectory="catalyst-python", tag = "catalyst-python/v0.1.1" } diff --git a/signed_docs/uv.lock b/signed_docs/uv.lock index 97f40d0ce8ef..bfa5bdca9b55 100644 --- a/signed_docs/uv.lock +++ b/signed_docs/uv.lock @@ -84,7 +84,7 @@ wheels = [ [[package]] name = "catalyst-python" version = "0.1.0" -source = { git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&branch=feat%2Fsigned-doc-create_metadata#269a31a238bd5591020eef079ba9b897b8a9f5d4" } +source = { git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&tag=catalyst-python%2Fv0.1.1#f3dea0f1a1f561d246d21d6393c9e30bb4ac5b41" } dependencies = [ { name = "cryptography" }, { name = "pycardano" }, @@ -774,7 +774,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "argparse", specifier = ">=1.4.0" }, - { name = "catalyst-python", git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&branch=feat%2Fsigned-doc-create_metadata" }, + { name = "catalyst-python", git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&tag=catalyst-python%2Fv0.1.1" }, { name = "pathlib", specifier = ">=1.0.1" }, { name = "requests", specifier = ">=2.32.5" }, ] From 9a12310d400775694d0e624527a0e8248d0b546e Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Mon, 8 Dec 2025 16:48:00 +0700 Subject: [PATCH 12/19] wip --- signed_docs/Earthfile | 31 +++++++++++ signed_docs/blueprint.cue | 3 ++ signed_docs/dev/settings.json | 18 +------ signed_docs/entrypoint.sh | 40 ++++++++++++++ signed_docs/setup_fund.py | 98 ++++++++++------------------------- 5 files changed, 103 insertions(+), 87 deletions(-) create mode 100644 signed_docs/Earthfile create mode 100644 signed_docs/blueprint.cue create mode 100644 signed_docs/entrypoint.sh diff --git a/signed_docs/Earthfile b/signed_docs/Earthfile new file mode 100644 index 000000000000..41c02492f221 --- /dev/null +++ b/signed_docs/Earthfile @@ -0,0 +1,31 @@ +VERSION 0.8 + +ARG --global REGISTRY="harbor.shared-services.projectcatalyst.io/ghcr" + +package: + FROM ${REGISTRY}/astral-sh/uv:python3.13-bookworm-slim + + WORKDIR /app + + ARG tag='latest' + + COPY pyproject.toml . + COPY uv.lock . + COPY set_config.py . + + COPY --dir dev . + + COPY entrypoint.sh . + RUN chmod +x entrypoint.sh + + ENTRYPOINT ["/app/entrypoint.sh"] + + SAVE IMAGE setup-fund-documents:${tag} + +docker: + FROM +package + + ARG container="setup-fund-documents" + ARG tag="latest" + + SAVE IMAGE ${container}:${tag} \ No newline at end of file diff --git a/signed_docs/blueprint.cue b/signed_docs/blueprint.cue new file mode 100644 index 000000000000..4c57c9f95e9b --- /dev/null +++ b/signed_docs/blueprint.cue @@ -0,0 +1,3 @@ +project: { + name: "setup-fund-documents" +} diff --git a/signed_docs/dev/settings.json b/signed_docs/dev/settings.json index 41b803f3dae7..f2ab2c22e752 100644 --- a/signed_docs/dev/settings.json +++ b/signed_docs/dev/settings.json @@ -1,51 +1,35 @@ { - "url": "https://app.dev.projectcatalyst.io/api/gateway/v1/document", + "url": "http://100.76.226.39:3030/api/v1/document", "timeout": 10, "network": "preprod", "admin_private_key_env": "CAT_GATEWAY_ADMIN_PRIVATE_KEY", "brand": { "parameters_form_template": { - "id": "019aed95-21db-72cf-844a-4b874410ee11", - "ver": "019aed95-21db-72cf-844a-4b874410ee11", "path": "brand_parameters_form_template.json" }, "parameters": { - "id": "019aed95-21db-78fc-9947-34c629853f65", - "ver": "019aed95-21db-78fc-9947-34c629853f65", "path": "brand_parameters.json" }, "campaigns": [ { "parameters_form_template": { - "id": "019aed95-21db-7c70-8e64-22b37a094749", - "ver": "019aed95-21db-7c70-8e64-22b37a094749", "path": "campaign_parameters_form_template.json" }, "parameters": { - "id": "019aed95-21db-7d29-965a-d1ed9f608dd2", - "ver": "019aed95-21db-7d29-965a-d1ed9f608dd2", "path": "campaign_parameters.json" }, "categories": [ { "parameters_form_template": { - "id": "019aed95-21db-741b-951e-64ff9f554cb0", - "ver": "019aed95-21db-741b-951e-64ff9f554cb0", "path": "categories/category_parameters_form_template_1.json" }, "parameters": { - "id": "019aed95-21db-7451-8d0c-8225d42764e8", - "ver": "019aed95-21db-7451-8d0c-8225d42764e8", "path": "categories/category_parameters_1.json" }, "proposal_form_template": { - "id": "019aed95-21db-78cb-a2c0-2eac3e757fdc", - "ver": "019aed95-21db-78cb-a2c0-2eac3e757fdc", "path": "categories/proposal_form_template_1.json" }, "proposal_comment_form_template": { - "id": "019aed95-21db-7a0e-bfe0-92f006913095", - "ver": "019aed95-21db-7a0e-bfe0-92f006913095", "path": "categories/proposal_comment_form_template_1.json" } } diff --git a/signed_docs/entrypoint.sh b/signed_docs/entrypoint.sh new file mode 100644 index 000000000000..5e89841fe962 --- /dev/null +++ b/signed_docs/entrypoint.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -euo pipefail + +MAX_RETRIES=${MAX_RETRIES:-3} +RETRY_DELAY=${RETRY_DELAY:-5} + +if [ -z "${ENVIRONMENT:-}" ]; then + echo "ENVIRONMENT is not set" + exit 1 +fi + +if [ -z "${CAT_GATEWAY_ADMIN_PRIVATE_KEY:-}" ]; then + echo "CAT_GATEWAY_ADMIN_PRIVATE_KEY is not set" + exit 1 +fi + +echo ">>> Running: uv run setup_fund.py ${ENVIRONMENT}" + +set +e +attempt=1 +while [ $attempt -le "${MAX_RETRIES}" ]; do + echo ">>> Attempt $attempt of ${MAX_RETRIES}" + + if uv run setup_fund.py "${ENVIRONMENT}"; then + echo ">>> Command succeeded on attempt $attempt" + exit 0 + else + echo ">>> Command failed on attempt $attempt" + + if [ $attempt -eq "${MAX_RETRIES}" ]; then + echo ">>> All ${MAX_RETRIES} attempts failed. Exiting with error code." + exit 1 + fi + + echo ">>> Waiting ${RETRY_DELAY} seconds before retry..." + sleep "${RETRY_DELAY}" + attempt=$((attempt + 1)) + fi +done \ No newline at end of file diff --git a/signed_docs/setup_fund.py b/signed_docs/setup_fund.py index 8484576db1a2..08563c010979 100644 --- a/signed_docs/setup_fund.py +++ b/signed_docs/setup_fund.py @@ -17,7 +17,7 @@ category_parameters_form_template_doc, category_parameters_doc, proposal_form_template_doc, - proposal_comment_form_template_doc + proposal_comment_form_template_doc, ) @@ -91,89 +91,58 @@ def setup_fund(env: str, retry: bool): env_dir, brand_parameters_form_template_settings["path"] ), admin_key=admin, - doc_id=brand_parameters_form_template_settings["id"], - doc_ver=brand_parameters_form_template_settings["ver"], ) docs_to_publish.append(brand_parameters_form_template) brand_parameters_settings = settings["brand"]["parameters"] brand_parameters = brand_parameters_doc( content=read_json_file(env_dir, brand_parameters_settings["path"]), - brand_parameters_form_template_ref=DocumentRef( - brand_parameters_form_template_settings["id"], - brand_parameters_form_template_settings["ver"], - ), + brand_parameters_form_template_ref=brand_parameters_form_template.doc_ref(), admin_key=admin, - doc_id=brand_parameters_settings["id"], - doc_ver=brand_parameters_settings["ver"], ) docs_to_publish.append(brand_parameters) - - for campaing in settings["brand"]["campaigns"]: - campaing_parameters_form_template_settings = campaing["parameters_form_template"] - campaing_parameters_form_template = campaign_parameters_form_template_doc( + for campaign in settings["brand"]["campaigns"]: + campaign_parameters_form_template_settings = campaign[ + "parameters_form_template" + ] + campaign_parameters_form_template = campaign_parameters_form_template_doc( content=read_json_file( - env_dir, campaing_parameters_form_template_settings["path"] - ), - param_ref=DocumentRef( - brand_parameters_settings["id"], - brand_parameters_settings["ver"], + env_dir, campaign_parameters_form_template_settings["path"] ), + param_ref=brand_parameters.doc_ref(), admin_key=admin, - doc_id=campaing_parameters_form_template_settings["id"], - doc_ver=campaing_parameters_form_template_settings["ver"], ) - docs_to_publish.append(campaing_parameters_form_template) - + docs_to_publish.append(campaign_parameters_form_template) - campaing_parameters_settings = campaing["parameters"] - campaing_parameters = campaign_parameters_doc( - content=read_json_file(env_dir, campaing_parameters_settings["path"]), - campaign_parameters_form_template_doc=DocumentRef( - campaing_parameters_form_template_settings["id"], - campaing_parameters_form_template_settings["ver"], - ), - param_ref=DocumentRef( - brand_parameters_settings["id"], - brand_parameters_settings["ver"], - ), + campaign_parameters_settings = campaign["parameters"] + campaign_parameters = campaign_parameters_doc( + content=read_json_file(env_dir, campaign_parameters_settings["path"]), + campaign_parameters_form_template_doc=campaign_parameters_form_template.doc_ref(), + param_ref=brand_parameters.doc_ref(), admin_key=admin, - doc_id=campaing_parameters_settings["id"], - doc_ver=campaing_parameters_settings["ver"], ) - docs_to_publish.append(campaing_parameters) + docs_to_publish.append(campaign_parameters) - for category in campaing["categories"]: - category_parameters_form_template_settings = category["parameters_form_template"] + for category in campaign["categories"]: + category_parameters_form_template_settings = category[ + "parameters_form_template" + ] category_parameters_form_template = category_parameters_form_template_doc( content=read_json_file( env_dir, category_parameters_form_template_settings["path"] ), - param_ref=DocumentRef( - campaing_parameters_settings["id"], - campaing_parameters_settings["ver"], - ), + param_ref=campaign_parameters.doc_ref(), admin_key=admin, - doc_id=category_parameters_form_template_settings["id"], - doc_ver=category_parameters_form_template_settings["ver"], ) docs_to_publish.append(category_parameters_form_template) category_parameters_settings = category["parameters"] category_parameters = category_parameters_doc( content=read_json_file(env_dir, category_parameters_settings["path"]), - category_parameters_form_template_doc=DocumentRef( - category_parameters_form_template_settings["id"], - category_parameters_form_template_settings["ver"], - ), - param_ref=DocumentRef( - campaing_parameters_settings["id"], - campaing_parameters_settings["ver"], - ), + category_parameters_form_template_doc=category_parameters_form_template.doc_ref(), + param_ref=campaign_parameters.doc_ref(), admin_key=admin, - doc_id=category_parameters_settings["id"], - doc_ver=category_parameters_settings["ver"], ) docs_to_publish.append(category_parameters) @@ -182,34 +151,23 @@ def setup_fund(env: str, retry: bool): content=read_json_file( env_dir, proposal_form_template_settings["path"] ), - param_ref=DocumentRef( - category_parameters_settings["id"], - category_parameters_settings["ver"], - ), + param_ref=category_parameters.doc_ref(), admin_key=admin, - doc_id=proposal_form_template_settings["id"], - doc_ver=proposal_form_template_settings["ver"], ) docs_to_publish.append(proposal_form_template) - proposal_comment_form_template_settings = category["proposal_comment_form_template"] + proposal_comment_form_template_settings = category[ + "proposal_comment_form_template" + ] proposal_comment_form_template = proposal_comment_form_template_doc( content=read_json_file( env_dir, proposal_comment_form_template_settings["path"] ), - param_ref=DocumentRef( - category_parameters_settings["id"], - category_parameters_settings["ver"], - ), + param_ref=category_parameters.doc_ref(), admin_key=admin, - doc_id=proposal_comment_form_template_settings["id"], - doc_ver=proposal_comment_form_template_settings["ver"], ) docs_to_publish.append(proposal_comment_form_template) - - - for doc in docs_to_publish: publish_document( url=url, From 036991679b53d99d0dfecb5ee7208b67dcb7aea6 Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Mon, 8 Dec 2025 17:01:04 +0700 Subject: [PATCH 13/19] fix --- .config/dictionaries/project.dic | 1 + signed_docs/README.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.config/dictionaries/project.dic b/.config/dictionaries/project.dic index 9ee9e2524a1a..4daa5e9bef74 100644 --- a/.config/dictionaries/project.dic +++ b/.config/dictionaries/project.dic @@ -263,6 +263,7 @@ openapi opentelemetry overprovisioned pageobject +pathlib Pbkdf2 pbxproj Pdart diff --git a/signed_docs/README.md b/signed_docs/README.md index 26a0127aebcc..23a98b5ffb5f 100644 --- a/signed_docs/README.md +++ b/signed_docs/README.md @@ -16,4 +16,4 @@ You will need to ensure that the `MK_SIGNED_DOC_PATH` environment variable is se [`mk_signed_doc` cli tool](https://github.com/input-output-hk/catalyst-libs/tree/main/rust/signed_doc/bins) and also that it is set environment variable from the `settings.json` `admin_private_key_env` property. -["Catalyst Signed Documents"]: https://docs.dev.projectcatalyst.io/libs/main/architecture/08_concepts/signed_doc/spec/ \ No newline at end of file +["Catalyst Signed Documents"]: https://docs.dev.projectcatalyst.io/libs/main/architecture/08_concepts/signed_doc/spec/ From fbe4ea2dcfabae8ebe3d0468df56118044f7af16 Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Mon, 8 Dec 2025 17:02:08 +0700 Subject: [PATCH 14/19] fix --- signed_docs/Earthfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/signed_docs/Earthfile b/signed_docs/Earthfile index 41c02492f221..a555e9ff1ea5 100644 --- a/signed_docs/Earthfile +++ b/signed_docs/Earthfile @@ -11,7 +11,7 @@ package: COPY pyproject.toml . COPY uv.lock . - COPY set_config.py . + COPY setup_fund.py . COPY --dir dev . From 1a1066c0c034594b215a45ceff0ac3eb57c4bdb8 Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Mon, 8 Dec 2025 17:26:19 +0700 Subject: [PATCH 15/19] wip --- signed_docs/uv.lock | 70 ++++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/signed_docs/uv.lock b/signed_docs/uv.lock index bfa5bdca9b55..37742cf06171 100644 --- a/signed_docs/uv.lock +++ b/signed_docs/uv.lock @@ -84,7 +84,7 @@ wheels = [ [[package]] name = "catalyst-python" version = "0.1.0" -source = { git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&tag=catalyst-python%2Fv0.1.1#f3dea0f1a1f561d246d21d6393c9e30bb4ac5b41" } +source = { git = "https://github.com/input-output-hk/catalyst-libs.git?subdirectory=catalyst-python&tag=catalyst-python%2Fv0.1.1#812c9a8d4df443c24306a410c6d103def613395f" } dependencies = [ { name = "cryptography" }, { name = "pycardano" }, @@ -476,40 +476,40 @@ wheels = [ [[package]] name = "orjson" -version = "3.11.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c6/fe/ed708782d6709cc60eb4c2d8a361a440661f74134675c72990f2c48c785f/orjson-3.11.4.tar.gz", hash = "sha256:39485f4ab4c9b30a3943cfe99e1a213c4776fb69e8abd68f66b83d5a0b0fdc6d", size = 5945188, upload-time = "2025-10-24T15:50:38.027Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/23/15/c52aa7112006b0f3d6180386c3a46ae057f932ab3425bc6f6ac50431cca1/orjson-3.11.4-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2d6737d0e616a6e053c8b4acc9eccea6b6cce078533666f32d140e4f85002534", size = 243525, upload-time = "2025-10-24T15:49:29.737Z" }, - { url = "https://files.pythonhosted.org/packages/ec/38/05340734c33b933fd114f161f25a04e651b0c7c33ab95e9416ade5cb44b8/orjson-3.11.4-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:afb14052690aa328cc118a8e09f07c651d301a72e44920b887c519b313d892ff", size = 128871, upload-time = "2025-10-24T15:49:31.109Z" }, - { url = "https://files.pythonhosted.org/packages/55/b9/ae8d34899ff0c012039b5a7cb96a389b2476e917733294e498586b45472d/orjson-3.11.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38aa9e65c591febb1b0aed8da4d469eba239d434c218562df179885c94e1a3ad", size = 130055, upload-time = "2025-10-24T15:49:33.382Z" }, - { url = "https://files.pythonhosted.org/packages/33/aa/6346dd5073730451bee3681d901e3c337e7ec17342fb79659ec9794fc023/orjson-3.11.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f2cf4dfaf9163b0728d061bebc1e08631875c51cd30bf47cb9e3293bfbd7dcd5", size = 129061, upload-time = "2025-10-24T15:49:34.935Z" }, - { url = "https://files.pythonhosted.org/packages/39/e4/8eea51598f66a6c853c380979912d17ec510e8e66b280d968602e680b942/orjson-3.11.4-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89216ff3dfdde0e4070932e126320a1752c9d9a758d6a32ec54b3b9334991a6a", size = 136541, upload-time = "2025-10-24T15:49:36.923Z" }, - { url = "https://files.pythonhosted.org/packages/9a/47/cb8c654fa9adcc60e99580e17c32b9e633290e6239a99efa6b885aba9dbc/orjson-3.11.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9daa26ca8e97fae0ce8aa5d80606ef8f7914e9b129b6b5df9104266f764ce436", size = 137535, upload-time = "2025-10-24T15:49:38.307Z" }, - { url = "https://files.pythonhosted.org/packages/43/92/04b8cc5c2b729f3437ee013ce14a60ab3d3001465d95c184758f19362f23/orjson-3.11.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c8b2769dc31883c44a9cd126560327767f848eb95f99c36c9932f51090bfce9", size = 136703, upload-time = "2025-10-24T15:49:40.795Z" }, - { url = "https://files.pythonhosted.org/packages/aa/fd/d0733fcb9086b8be4ebcfcda2d0312865d17d0d9884378b7cffb29d0763f/orjson-3.11.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1469d254b9884f984026bd9b0fa5bbab477a4bfe558bba6848086f6d43eb5e73", size = 136293, upload-time = "2025-10-24T15:49:42.347Z" }, - { url = "https://files.pythonhosted.org/packages/c2/d7/3c5514e806837c210492d72ae30ccf050ce3f940f45bf085bab272699ef4/orjson-3.11.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:68e44722541983614e37117209a194e8c3ad07838ccb3127d96863c95ec7f1e0", size = 140131, upload-time = "2025-10-24T15:49:43.638Z" }, - { url = "https://files.pythonhosted.org/packages/9c/dd/ba9d32a53207babf65bd510ac4d0faaa818bd0df9a9c6f472fe7c254f2e3/orjson-3.11.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:8e7805fda9672c12be2f22ae124dcd7b03928d6c197544fe12174b86553f3196", size = 406164, upload-time = "2025-10-24T15:49:45.498Z" }, - { url = "https://files.pythonhosted.org/packages/8e/f9/f68ad68f4af7c7bde57cd514eaa2c785e500477a8bc8f834838eb696a685/orjson-3.11.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:04b69c14615fb4434ab867bf6f38b2d649f6f300af30a6705397e895f7aec67a", size = 149859, upload-time = "2025-10-24T15:49:46.981Z" }, - { url = "https://files.pythonhosted.org/packages/b6/d2/7f847761d0c26818395b3d6b21fb6bc2305d94612a35b0a30eae65a22728/orjson-3.11.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:639c3735b8ae7f970066930e58cf0ed39a852d417c24acd4a25fc0b3da3c39a6", size = 139926, upload-time = "2025-10-24T15:49:48.321Z" }, - { url = "https://files.pythonhosted.org/packages/9f/37/acd14b12dc62db9a0e1d12386271b8661faae270b22492580d5258808975/orjson-3.11.4-cp313-cp313-win32.whl", hash = "sha256:6c13879c0d2964335491463302a6ca5ad98105fc5db3565499dcb80b1b4bd839", size = 136007, upload-time = "2025-10-24T15:49:49.938Z" }, - { url = "https://files.pythonhosted.org/packages/c0/a9/967be009ddf0a1fffd7a67de9c36656b28c763659ef91352acc02cbe364c/orjson-3.11.4-cp313-cp313-win_amd64.whl", hash = "sha256:09bf242a4af98732db9f9a1ec57ca2604848e16f132e3f72edfd3c5c96de009a", size = 131314, upload-time = "2025-10-24T15:49:51.248Z" }, - { url = "https://files.pythonhosted.org/packages/cb/db/399abd6950fbd94ce125cb8cd1a968def95174792e127b0642781e040ed4/orjson-3.11.4-cp313-cp313-win_arm64.whl", hash = "sha256:a85f0adf63319d6c1ba06fb0dbf997fced64a01179cf17939a6caca662bf92de", size = 126152, upload-time = "2025-10-24T15:49:52.922Z" }, - { url = "https://files.pythonhosted.org/packages/25/e3/54ff63c093cc1697e758e4fceb53164dd2661a7d1bcd522260ba09f54533/orjson-3.11.4-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:42d43a1f552be1a112af0b21c10a5f553983c2a0938d2bbb8ecd8bc9fb572803", size = 243501, upload-time = "2025-10-24T15:49:54.288Z" }, - { url = "https://files.pythonhosted.org/packages/ac/7d/e2d1076ed2e8e0ae9badca65bf7ef22710f93887b29eaa37f09850604e09/orjson-3.11.4-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:26a20f3fbc6c7ff2cb8e89c4c5897762c9d88cf37330c6a117312365d6781d54", size = 128862, upload-time = "2025-10-24T15:49:55.961Z" }, - { url = "https://files.pythonhosted.org/packages/9f/37/ca2eb40b90621faddfa9517dfe96e25f5ae4d8057a7c0cdd613c17e07b2c/orjson-3.11.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e3f20be9048941c7ffa8fc523ccbd17f82e24df1549d1d1fe9317712d19938e", size = 130047, upload-time = "2025-10-24T15:49:57.406Z" }, - { url = "https://files.pythonhosted.org/packages/c7/62/1021ed35a1f2bad9040f05fa4cc4f9893410df0ba3eaa323ccf899b1c90a/orjson-3.11.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aac364c758dc87a52e68e349924d7e4ded348dedff553889e4d9f22f74785316", size = 129073, upload-time = "2025-10-24T15:49:58.782Z" }, - { url = "https://files.pythonhosted.org/packages/e8/3f/f84d966ec2a6fd5f73b1a707e7cd876813422ae4bf9f0145c55c9c6a0f57/orjson-3.11.4-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d5c54a6d76e3d741dcc3f2707f8eeb9ba2a791d3adbf18f900219b62942803b1", size = 136597, upload-time = "2025-10-24T15:50:00.12Z" }, - { url = "https://files.pythonhosted.org/packages/32/78/4fa0aeca65ee82bbabb49e055bd03fa4edea33f7c080c5c7b9601661ef72/orjson-3.11.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f28485bdca8617b79d44627f5fb04336897041dfd9fa66d383a49d09d86798bc", size = 137515, upload-time = "2025-10-24T15:50:01.57Z" }, - { url = "https://files.pythonhosted.org/packages/c1/9d/0c102e26e7fde40c4c98470796d050a2ec1953897e2c8ab0cb95b0759fa2/orjson-3.11.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bfc2a484cad3585e4ba61985a6062a4c2ed5c7925db6d39f1fa267c9d166487f", size = 136703, upload-time = "2025-10-24T15:50:02.944Z" }, - { url = "https://files.pythonhosted.org/packages/df/ac/2de7188705b4cdfaf0b6c97d2f7849c17d2003232f6e70df98602173f788/orjson-3.11.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e34dbd508cb91c54f9c9788923daca129fe5b55c5b4eebe713bf5ed3791280cf", size = 136311, upload-time = "2025-10-24T15:50:04.441Z" }, - { url = "https://files.pythonhosted.org/packages/e0/52/847fcd1a98407154e944feeb12e3b4d487a0e264c40191fb44d1269cbaa1/orjson-3.11.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b13c478fa413d4b4ee606ec8e11c3b2e52683a640b006bb586b3041c2ca5f606", size = 140127, upload-time = "2025-10-24T15:50:07.398Z" }, - { url = "https://files.pythonhosted.org/packages/c1/ae/21d208f58bdb847dd4d0d9407e2929862561841baa22bdab7aea10ca088e/orjson-3.11.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:724ca721ecc8a831b319dcd72cfa370cc380db0bf94537f08f7edd0a7d4e1780", size = 406201, upload-time = "2025-10-24T15:50:08.796Z" }, - { url = "https://files.pythonhosted.org/packages/8d/55/0789d6de386c8366059db098a628e2ad8798069e94409b0d8935934cbcb9/orjson-3.11.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:977c393f2e44845ce1b540e19a786e9643221b3323dae190668a98672d43fb23", size = 149872, upload-time = "2025-10-24T15:50:10.234Z" }, - { url = "https://files.pythonhosted.org/packages/cc/1d/7ff81ea23310e086c17b41d78a72270d9de04481e6113dbe2ac19118f7fb/orjson-3.11.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1e539e382cf46edec157ad66b0b0872a90d829a6b71f17cb633d6c160a223155", size = 139931, upload-time = "2025-10-24T15:50:11.623Z" }, - { url = "https://files.pythonhosted.org/packages/77/92/25b886252c50ed64be68c937b562b2f2333b45afe72d53d719e46a565a50/orjson-3.11.4-cp314-cp314-win32.whl", hash = "sha256:d63076d625babab9db5e7836118bdfa086e60f37d8a174194ae720161eb12394", size = 136065, upload-time = "2025-10-24T15:50:13.025Z" }, - { url = "https://files.pythonhosted.org/packages/63/b8/718eecf0bb7e9d64e4956afaafd23db9f04c776d445f59fe94f54bdae8f0/orjson-3.11.4-cp314-cp314-win_amd64.whl", hash = "sha256:0a54d6635fa3aaa438ae32e8570b9f0de36f3f6562c308d2a2a452e8b0592db1", size = 131310, upload-time = "2025-10-24T15:50:14.46Z" }, - { url = "https://files.pythonhosted.org/packages/1a/bf/def5e25d4d8bfce296a9a7c8248109bf58622c21618b590678f945a2c59c/orjson-3.11.4-cp314-cp314-win_arm64.whl", hash = "sha256:78b999999039db3cf58f6d230f524f04f75f129ba3d1ca2ed121f8657e575d3d", size = 126151, upload-time = "2025-10-24T15:50:15.878Z" }, +version = "3.11.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/b8/333fdb27840f3bf04022d21b654a35f58e15407183aeb16f3b41aa053446/orjson-3.11.5.tar.gz", hash = "sha256:82393ab47b4fe44ffd0a7659fa9cfaacc717eb617c93cde83795f14af5c2e9d5", size = 5972347, upload-time = "2025-12-06T15:55:39.458Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/43/61a77040ce59f1569edf38f0b9faadc90c8cf7e9bec2e0df51d0132c6bb7/orjson-3.11.5-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:3b01799262081a4c47c035dd77c1301d40f568f77cc7ec1bb7db5d63b0a01629", size = 245271, upload-time = "2025-12-06T15:54:40.878Z" }, + { url = "https://files.pythonhosted.org/packages/55/f9/0f79be617388227866d50edd2fd320cb8fb94dc1501184bb1620981a0aba/orjson-3.11.5-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:61de247948108484779f57a9f406e4c84d636fa5a59e411e6352484985e8a7c3", size = 129422, upload-time = "2025-12-06T15:54:42.403Z" }, + { url = "https://files.pythonhosted.org/packages/77/42/f1bf1549b432d4a78bfa95735b79b5dac75b65b5bb815bba86ad406ead0a/orjson-3.11.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:894aea2e63d4f24a7f04a1908307c738d0dce992e9249e744b8f4e8dd9197f39", size = 132060, upload-time = "2025-12-06T15:54:43.531Z" }, + { url = "https://files.pythonhosted.org/packages/25/49/825aa6b929f1a6ed244c78acd7b22c1481fd7e5fda047dc8bf4c1a807eb6/orjson-3.11.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ddc21521598dbe369d83d4d40338e23d4101dad21dae0e79fa20465dbace019f", size = 130391, upload-time = "2025-12-06T15:54:45.059Z" }, + { url = "https://files.pythonhosted.org/packages/42/ec/de55391858b49e16e1aa8f0bbbb7e5997b7345d8e984a2dec3746d13065b/orjson-3.11.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7cce16ae2f5fb2c53c3eafdd1706cb7b6530a67cc1c17abe8ec747f5cd7c0c51", size = 135964, upload-time = "2025-12-06T15:54:46.576Z" }, + { url = "https://files.pythonhosted.org/packages/1c/40/820bc63121d2d28818556a2d0a09384a9f0262407cf9fa305e091a8048df/orjson-3.11.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e46c762d9f0e1cfb4ccc8515de7f349abbc95b59cb5a2bd68df5973fdef913f8", size = 139817, upload-time = "2025-12-06T15:54:48.084Z" }, + { url = "https://files.pythonhosted.org/packages/09/c7/3a445ca9a84a0d59d26365fd8898ff52bdfcdcb825bcc6519830371d2364/orjson-3.11.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d7345c759276b798ccd6d77a87136029e71e66a8bbf2d2755cbdde1d82e78706", size = 137336, upload-time = "2025-12-06T15:54:49.426Z" }, + { url = "https://files.pythonhosted.org/packages/9a/b3/dc0d3771f2e5d1f13368f56b339c6782f955c6a20b50465a91acb79fe961/orjson-3.11.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75bc2e59e6a2ac1dd28901d07115abdebc4563b5b07dd612bf64260a201b1c7f", size = 138993, upload-time = "2025-12-06T15:54:50.939Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a2/65267e959de6abe23444659b6e19c888f242bf7725ff927e2292776f6b89/orjson-3.11.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:54aae9b654554c3b4edd61896b978568c6daa16af96fa4681c9b5babd469f863", size = 141070, upload-time = "2025-12-06T15:54:52.414Z" }, + { url = "https://files.pythonhosted.org/packages/63/c9/da44a321b288727a322c6ab17e1754195708786a04f4f9d2220a5076a649/orjson-3.11.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4bdd8d164a871c4ec773f9de0f6fe8769c2d6727879c37a9666ba4183b7f8228", size = 413505, upload-time = "2025-12-06T15:54:53.67Z" }, + { url = "https://files.pythonhosted.org/packages/7f/17/68dc14fa7000eefb3d4d6d7326a190c99bb65e319f02747ef3ebf2452f12/orjson-3.11.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a261fef929bcf98a60713bf5e95ad067cea16ae345d9a35034e73c3990e927d2", size = 151342, upload-time = "2025-12-06T15:54:55.113Z" }, + { url = "https://files.pythonhosted.org/packages/c4/c5/ccee774b67225bed630a57478529fc026eda33d94fe4c0eac8fe58d4aa52/orjson-3.11.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c028a394c766693c5c9909dec76b24f37e6a1b91999e8d0c0d5feecbe93c3e05", size = 141823, upload-time = "2025-12-06T15:54:56.331Z" }, + { url = "https://files.pythonhosted.org/packages/67/80/5d00e4155d0cd7390ae2087130637671da713959bb558db9bac5e6f6b042/orjson-3.11.5-cp313-cp313-win32.whl", hash = "sha256:2cc79aaad1dfabe1bd2d50ee09814a1253164b3da4c00a78c458d82d04b3bdef", size = 135236, upload-time = "2025-12-06T15:54:57.507Z" }, + { url = "https://files.pythonhosted.org/packages/95/fe/792cc06a84808dbdc20ac6eab6811c53091b42f8e51ecebf14b540e9cfe4/orjson-3.11.5-cp313-cp313-win_amd64.whl", hash = "sha256:ff7877d376add4e16b274e35a3f58b7f37b362abf4aa31863dadacdd20e3a583", size = 133167, upload-time = "2025-12-06T15:54:58.71Z" }, + { url = "https://files.pythonhosted.org/packages/46/2c/d158bd8b50e3b1cfdcf406a7e463f6ffe3f0d167b99634717acdaf5e299f/orjson-3.11.5-cp313-cp313-win_arm64.whl", hash = "sha256:59ac72ea775c88b163ba8d21b0177628bd015c5dd060647bbab6e22da3aad287", size = 126712, upload-time = "2025-12-06T15:54:59.892Z" }, + { url = "https://files.pythonhosted.org/packages/c2/60/77d7b839e317ead7bb225d55bb50f7ea75f47afc489c81199befc5435b50/orjson-3.11.5-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e446a8ea0a4c366ceafc7d97067bfd55292969143b57e3c846d87fc701e797a0", size = 245252, upload-time = "2025-12-06T15:55:01.127Z" }, + { url = "https://files.pythonhosted.org/packages/f1/aa/d4639163b400f8044cef0fb9aa51b0337be0da3a27187a20d1166e742370/orjson-3.11.5-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:53deb5addae9c22bbe3739298f5f2196afa881ea75944e7720681c7080909a81", size = 129419, upload-time = "2025-12-06T15:55:02.723Z" }, + { url = "https://files.pythonhosted.org/packages/30/94/9eabf94f2e11c671111139edf5ec410d2f21e6feee717804f7e8872d883f/orjson-3.11.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82cd00d49d6063d2b8791da5d4f9d20539c5951f965e45ccf4e96d33505ce68f", size = 132050, upload-time = "2025-12-06T15:55:03.918Z" }, + { url = "https://files.pythonhosted.org/packages/3d/c8/ca10f5c5322f341ea9a9f1097e140be17a88f88d1cfdd29df522970d9744/orjson-3.11.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3fd15f9fc8c203aeceff4fda211157fad114dde66e92e24097b3647a08f4ee9e", size = 130370, upload-time = "2025-12-06T15:55:05.173Z" }, + { url = "https://files.pythonhosted.org/packages/25/d4/e96824476d361ee2edd5c6290ceb8d7edf88d81148a6ce172fc00278ca7f/orjson-3.11.5-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df95000fbe6777bf9820ae82ab7578e8662051bb5f83d71a28992f539d2cda7", size = 136012, upload-time = "2025-12-06T15:55:06.402Z" }, + { url = "https://files.pythonhosted.org/packages/85/8e/9bc3423308c425c588903f2d103cfcfe2539e07a25d6522900645a6f257f/orjson-3.11.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92a8d676748fca47ade5bc3da7430ed7767afe51b2f8100e3cd65e151c0eaceb", size = 139809, upload-time = "2025-12-06T15:55:07.656Z" }, + { url = "https://files.pythonhosted.org/packages/e9/3c/b404e94e0b02a232b957c54643ce68d0268dacb67ac33ffdee24008c8b27/orjson-3.11.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa0f513be38b40234c77975e68805506cad5d57b3dfd8fe3baa7f4f4051e15b4", size = 137332, upload-time = "2025-12-06T15:55:08.961Z" }, + { url = "https://files.pythonhosted.org/packages/51/30/cc2d69d5ce0ad9b84811cdf4a0cd5362ac27205a921da524ff42f26d65e0/orjson-3.11.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1863e75b92891f553b7922ce4ee10ed06db061e104f2b7815de80cdcb135ad", size = 138983, upload-time = "2025-12-06T15:55:10.595Z" }, + { url = "https://files.pythonhosted.org/packages/0e/87/de3223944a3e297d4707d2fe3b1ffb71437550e165eaf0ca8bbe43ccbcb1/orjson-3.11.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d4be86b58e9ea262617b8ca6251a2f0d63cc132a6da4b5fcc8e0a4128782c829", size = 141069, upload-time = "2025-12-06T15:55:11.832Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/81d5087ae74be33bcae3ff2d80f5ccaa4a8fedc6d39bf65a427a95b8977f/orjson-3.11.5-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:b923c1c13fa02084eb38c9c065afd860a5cff58026813319a06949c3af5732ac", size = 413491, upload-time = "2025-12-06T15:55:13.314Z" }, + { url = "https://files.pythonhosted.org/packages/d0/6f/f6058c21e2fc1efaf918986dbc2da5cd38044f1a2d4b7b91ad17c4acf786/orjson-3.11.5-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:1b6bd351202b2cd987f35a13b5e16471cf4d952b42a73c391cc537974c43ef6d", size = 151375, upload-time = "2025-12-06T15:55:14.715Z" }, + { url = "https://files.pythonhosted.org/packages/54/92/c6921f17d45e110892899a7a563a925b2273d929959ce2ad89e2525b885b/orjson-3.11.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:bb150d529637d541e6af06bbe3d02f5498d628b7f98267ff87647584293ab439", size = 141850, upload-time = "2025-12-06T15:55:15.94Z" }, + { url = "https://files.pythonhosted.org/packages/88/86/cdecb0140a05e1a477b81f24739da93b25070ee01ce7f7242f44a6437594/orjson-3.11.5-cp314-cp314-win32.whl", hash = "sha256:9cc1e55c884921434a84a0c3dd2699eb9f92e7b441d7f53f3941079ec6ce7499", size = 135278, upload-time = "2025-12-06T15:55:17.202Z" }, + { url = "https://files.pythonhosted.org/packages/e4/97/b638d69b1e947d24f6109216997e38922d54dcdcdb1b11c18d7efd2d3c59/orjson-3.11.5-cp314-cp314-win_amd64.whl", hash = "sha256:a4f3cb2d874e03bc7767c8f88adaa1a9a05cecea3712649c3b58589ec7317310", size = 133170, upload-time = "2025-12-06T15:55:18.468Z" }, + { url = "https://files.pythonhosted.org/packages/8f/dd/f4fff4a6fe601b4f8f3ba3aa6da8ac33d17d124491a3b804c662a70e1636/orjson-3.11.5-cp314-cp314-win_arm64.whl", hash = "sha256:38b22f476c351f9a1c43e5b07d8b5a02eb24a6ab8e75f700f7d479d4568346a5", size = 126713, upload-time = "2025-12-06T15:55:19.738Z" }, ] [[package]] From 9e22c06c1e8a4639f4389a9c180d3b9e12b9b694 Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Mon, 8 Dec 2025 19:06:56 +0700 Subject: [PATCH 16/19] add mk_signed_doc tool --- signed_docs/Earthfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/signed_docs/Earthfile b/signed_docs/Earthfile index a555e9ff1ea5..62af1c335494 100644 --- a/signed_docs/Earthfile +++ b/signed_docs/Earthfile @@ -1,5 +1,7 @@ VERSION 0.8 +IMPORT github.com/input-output-hk/catalyst-libs/rust:catalyst-signed-doc/v0.0.10-mk-signed-docs-key-type AS cat-libs-rust + ARG --global REGISTRY="harbor.shared-services.projectcatalyst.io/ghcr" package: @@ -9,6 +11,9 @@ package: ARG tag='latest' + COPY cat-libs-rust+build/mk_signed_doc . + ENV MK_SIGNED_DOC_PATH="./mk_signed_doc" + COPY pyproject.toml . COPY uv.lock . COPY setup_fund.py . From 644d73892c727268e005bc25dd6ba37d640b2258 Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Mon, 8 Dec 2025 19:47:34 +0700 Subject: [PATCH 17/19] update blueprint.cue --- signed_docs/blueprint.cue | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/signed_docs/blueprint.cue b/signed_docs/blueprint.cue index 4c57c9f95e9b..b29b26a965cf 100644 --- a/signed_docs/blueprint.cue +++ b/signed_docs/blueprint.cue @@ -1,3 +1,15 @@ project: { name: "setup-fund-documents" + + release: { + docker: { + on: { + merge: {} + tag: {} + } + config: { + tag: _ @forge(name="GIT_HASH_OR_TAG") + } + } + } } From 56898bae74fdbe8edb008d48f5184065697f27c1 Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Mon, 8 Dec 2025 20:56:29 +0700 Subject: [PATCH 18/19] fix --- signed_docs/blueprint.cue | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/signed_docs/blueprint.cue b/signed_docs/blueprint.cue index b29b26a965cf..26fcffd6eb60 100644 --- a/signed_docs/blueprint.cue +++ b/signed_docs/blueprint.cue @@ -1,6 +1,44 @@ project: { name: "setup-fund-documents" + deployment: { + on: { + tag: {} + } + bundle: { + env: string | *"dev" + modules: main: { + name: "app" + version: "0.11.1" + values: { + deployment: { + replicas: 1 + containers: main: { + image: { + name: _ @forge(name="CONTAINER_IMAGE") + tag: _ @forge(name="GIT_HASH_OR_TAG") + } + env: { + "ENVIRONMENT": { + value: string | *"dev" + } + "CAT_GATEWAY_ADMIN_PRIVATE_KEY": { + secret: { + name: "setup-fund-documents" + key: "cat-gateway-admin-private-key" + } + } + } + resources: requests: { + cpu: string | *"256m" + memory: string | *"256Mi" + } + } + } + } + } + } + } release: { docker: { on: { From 921fb9f2faa8f32d18a89f4a9659a75e9603b285 Mon Sep 17 00:00:00 2001 From: Mr-Leshiy Date: Wed, 10 Dec 2025 22:55:46 +0700 Subject: [PATCH 19/19] cleanup --- signed_docs/blueprint.cue | 38 -------------------------------------- 1 file changed, 38 deletions(-) diff --git a/signed_docs/blueprint.cue b/signed_docs/blueprint.cue index 26fcffd6eb60..b29b26a965cf 100644 --- a/signed_docs/blueprint.cue +++ b/signed_docs/blueprint.cue @@ -1,44 +1,6 @@ project: { name: "setup-fund-documents" - deployment: { - on: { - tag: {} - } - bundle: { - env: string | *"dev" - modules: main: { - name: "app" - version: "0.11.1" - values: { - deployment: { - replicas: 1 - containers: main: { - image: { - name: _ @forge(name="CONTAINER_IMAGE") - tag: _ @forge(name="GIT_HASH_OR_TAG") - } - env: { - "ENVIRONMENT": { - value: string | *"dev" - } - "CAT_GATEWAY_ADMIN_PRIVATE_KEY": { - secret: { - name: "setup-fund-documents" - key: "cat-gateway-admin-private-key" - } - } - } - resources: requests: { - cpu: string | *"256m" - memory: string | *"256Mi" - } - } - } - } - } - } - } release: { docker: { on: {