From 65d06c923d37105b619d27d8ff5a9ef891982856 Mon Sep 17 00:00:00 2001 From: GitBolt Date: Sat, 16 Nov 2024 22:19:47 +0530 Subject: [PATCH] fix: type issues, update: dependencies --- .gitignore | 2 +- .../pages/models/transaction/instructions.mdx | 2 +- docs/pages/utility/functions.mdx | 4 +- poetry.lock | 199 ++++-------------- pyproject.toml | 4 +- solathon/__init__.py | 2 +- solathon/async_client.py | 8 +- solathon/client.py | 10 +- solathon/core/http.py | 14 +- solathon/core/instructions.py | 10 +- solathon/core/message.py | 6 +- solathon/core/types/__init__.py | 2 +- solathon/core/types/account_info.py | 4 +- solathon/core/types/block.py | 4 +- solathon/publickey.py | 4 +- solathon/transaction.py | 34 +-- solathon/utils.py | 4 +- 17 files changed, 101 insertions(+), 212 deletions(-) diff --git a/.gitignore b/.gitignore index 712aabe..6018046 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,7 @@ env/ venv/ env3/ .ipynb_checkpoints - +package_test/ .history/* diff --git a/docs/pages/models/transaction/instructions.mdx b/docs/pages/models/transaction/instructions.mdx index 5abc6d6..54bc55f 100644 --- a/docs/pages/models/transaction/instructions.mdx +++ b/docs/pages/models/transaction/instructions.mdx @@ -230,7 +230,7 @@ This is a named tuple representing an instruction object. Here keys are `Account ```python class Instruction(NamedTuple): - keys: list[AccountMeta] + keys: List[AccountMeta] program_id: PublicKey data: bytes = bytes(0) ``` diff --git a/docs/pages/utility/functions.mdx b/docs/pages/utility/functions.mdx index 1587ed4..c0922a6 100644 --- a/docs/pages/utility/functions.mdx +++ b/docs/pages/utility/functions.mdx @@ -35,7 +35,7 @@ The message argument is optional, when not provided the public key itself is use ```python def verify_signature( public_key: PublicKey | str, - signature: list[int], + signature: List[int], message: str | bytes | None = None ) ``` @@ -50,7 +50,7 @@ from nacl.exceptions import BadSignatureError # Getting the public key and the signature array public_key: str = request.headers.get("public_key") -signature_array: list[int] = request.headers.get("signature") +signature_array: List[int] = request.headers.get("signature") try: verify_signature(public_key, signature_array) diff --git a/poetry.lock b/poetry.lock index eb3f7f8..a6e8661 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,25 +1,26 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. [[package]] name = "anyio" -version = "3.7.1" +version = "4.5.2" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"}, - {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"}, + {file = "anyio-4.5.2-py3-none-any.whl", hash = "sha256:c011ee36bc1e8ba40e5a81cb9df91925c218fe9b778554e0b56a21e1b5d4716f"}, + {file = "anyio-4.5.2.tar.gz", hash = "sha256:23009af4ed04ce05991845451e11ef02fc7c5ed29179ac9a420e5ad0ac7ddc5b"}, ] [package.dependencies] -exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] -doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"] -test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (<0.22)"] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] [[package]] name = "base58" @@ -37,13 +38,13 @@ tests = ["PyHamcrest (>=2.0.2)", "mypy", "pytest (>=4.6)", "pytest-benchmark", " [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, ] [[package]] @@ -110,105 +111,6 @@ files = [ [package.dependencies] pycparser = "*" -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - [[package]] name = "colorama" version = "0.4.6" @@ -321,71 +223,75 @@ test = ["objgraph", "psutil"] [[package]] name = "h11" -version = "0.12.0" +version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "h11-0.12.0-py3-none-any.whl", hash = "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6"}, - {file = "h11-0.12.0.tar.gz", hash = "sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042"}, + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, ] [[package]] name = "httpcore" -version = "0.14.7" +version = "1.0.7" description = "A minimal low-level HTTP client." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "httpcore-0.14.7-py3-none-any.whl", hash = "sha256:47d772f754359e56dd9d892d9593b6f9870a37aeb8ba51e9a88b09b3d68cfade"}, - {file = "httpcore-0.14.7.tar.gz", hash = "sha256:7503ec1c0f559066e7e39bc4003fd2ce023d01cf51793e3c173b864eb456ead1"}, + {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, + {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, ] [package.dependencies] -anyio = "==3.*" certifi = "*" -h11 = ">=0.11,<0.13" -sniffio = "==1.*" +h11 = ">=0.13,<0.15" [package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" -version = "0.22.0" +version = "0.27.2" description = "The next generation HTTP client." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "httpx-0.22.0-py3-none-any.whl", hash = "sha256:e35e83d1d2b9b2a609ef367cc4c1e66fd80b750348b20cc9e19d1952fc2ca3f6"}, - {file = "httpx-0.22.0.tar.gz", hash = "sha256:d8e778f76d9bbd46af49e7f062467e3157a5a3d2ae4876a4bbfd8a51ed9c9cb4"}, + {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, + {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, ] [package.dependencies] +anyio = "*" certifi = "*" -charset-normalizer = "*" -httpcore = ">=0.14.5,<0.15.0" -rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} +httpcore = "==1.*" +idna = "*" sniffio = "*" [package.extras] brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (==10.*)"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] [[package]] name = "idna" -version = "3.6" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, - {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "iniconfig" version = "2.0.0" @@ -732,32 +638,15 @@ maintainer = ["zest.releaser[recommended]"] pil = ["pillow (>=9.1.0)"] test = ["coverage", "pytest"] -[[package]] -name = "rfc3986" -version = "1.5.0" -description = "Validating URI References per RFC 3986" -optional = false -python-versions = "*" -files = [ - {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, - {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, -] - -[package.dependencies] -idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} - -[package.extras] -idna2008 = ["idna"] - [[package]] name = "sniffio" -version = "1.3.0" +version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" files = [ - {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, - {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, ] [[package]] @@ -785,4 +674,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "b20d9b8e1467e7966b5ca6a7cfa5daf8acbd02fe2d2050ec18dad3bcdf9bc90d" +content-hash = "785dbdf1e5e04fd98bfbfada3d53b325b751e4157c4eaa28cb97fc821c28e79d" diff --git a/pyproject.toml b/pyproject.toml index c7d3f47..5458ae0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "solathon" -version = "1.0.4" +version = "1.0.5" description = "High performance, easy to use and feature-rich Solana SDK for Python." license = "MIT" authors = ["GitBolt"] @@ -22,13 +22,13 @@ classifiers = [ [tool.poetry.dependencies] python = "^3.8" -httpx = "^0.22.0" PyNaCl = "^1.5.0" base58 = "^2.1.1" construct = "^2.10.67" typing-extensions = { version = "^4.1.1", python = "3.10" } qrcode = "^7.4.2" pillow = "^10.2.0" +httpx = "^0.27.2" [tool.poetry.dev-dependencies] jedi = "^0.18.1" diff --git a/solathon/__init__.py b/solathon/__init__.py index 730f976..a665e5d 100644 --- a/solathon/__init__.py +++ b/solathon/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.0.4" +__version__ = "1.0.5" from .client import Client from .async_client import AsyncClient diff --git a/solathon/async_client.py b/solathon/async_client.py index 5b4d52a..a21f136 100644 --- a/solathon/async_client.py +++ b/solathon/async_client.py @@ -250,7 +250,7 @@ async def get_inflation_reward(self, addresses: List[Text]) -> RPCResponse: Get the inflation reward for a list of addresses. Args: - addresses (list[Text]): A list of addresses to get the inflation reward for. + addresses (List[Text]): A list of addresses to get the inflation reward for. Returns: RPCResponse: The response from the RPC server. @@ -362,12 +362,12 @@ async def get_signatures_for_address(self, acct_address: Text) -> RPCResponse: "getSignaturesForAddress", [acct_address] ) - async def get_signature_statuses(self, transaction_sigs: list[Text]) -> RPCResponse: + async def get_signature_statuses(self, transaction_sigs: List[Text]) -> RPCResponse: """ Returns the current status of a list of signatures. Args: - transaction_sigs (list[str]): List of transaction signatures to check status for. + transaction_sigs (List[str]): List of transaction signatures to check status for. Returns: RPCResponse: Response object containing the status of the signatures. @@ -518,6 +518,6 @@ async def build_and_send_request_async( Returns: RPCResponse: The response from the server. """ - data: dict[Text, Any] = self.http.build_data(method=method, params=params) + data: Dict[Text, Any] = self.http.build_data(method=method, params=params) res: RPCResponse = await self.http.send(data) return res diff --git a/solathon/client.py b/solathon/client.py index d3c85a4..33ed309 100644 --- a/solathon/client.py +++ b/solathon/client.py @@ -389,7 +389,7 @@ def get_inflation_reward( Returns the inflation reward for the specified addresses. Args: - addresses (list[str]): The addresses. + addresses (List[str]): The addresses. commitment (Commitment, optional): The level of commitment desired when querying state. Returns: @@ -419,7 +419,7 @@ def get_largest_accounts( def get_leader_schedule( self, ) -> ( - RPCResponse[dict[str, Union[List[int], Any]]] | dict[str, Union[List[int], Any]] + RPCResponse[Dict[str, Union[List[int], Any]]] | Dict[str, Union[List[int], Any]] ): """ Returns the leader schedule. @@ -580,7 +580,7 @@ def get_signature_statuses( Returns the signature statuses for the specified transaction signatures. Args: - transaction_sigs (list[str]): The transaction signatures. + transaction_sigs (List[str]): The transaction signatures. Returns: RPCResponse: The response from the RPC endpoint. @@ -715,7 +715,7 @@ def get_transaction( def build_and_send_request( self, method, params: List[Any] - ) -> RPCResponse | dict[str, Any] | List[dict[str, Any]]: + ) -> RPCResponse | Dict[str, Any] | List[Dict[str, Any]]: """ Builds and sends an RPC request to the server. @@ -726,7 +726,7 @@ def build_and_send_request( Returns: RPCResponse: The response from the server. """ - data: dict[str, Any] = self.http.build_data(method=method, params=params) + data: Dict[str, Any] = self.http.build_data(method=method, params=params) res: RPCResponse = self.http.send(data) if self.clean_response: if "error" in res: diff --git a/solathon/core/http.py b/solathon/core/http.py index e70792d..7096fd8 100644 --- a/solathon/core/http.py +++ b/solathon/core/http.py @@ -4,7 +4,7 @@ import asyncio import base64 import httpx -from typing import Any +from typing import Any, List, Dict from .. import __version__ @@ -27,14 +27,14 @@ def __init__(self, endpoint: str): self.request_id = 0 self.client = httpx.Client() - def send(self, data: dict[str, Any]) -> RPCResponse: + def send(self, data: Dict[str, Any]) -> RPCResponse: res = self.client.post( url=self.endpoint, headers=self.headers, json=data) return res.json() - def build_data(self, method: str, params: list[Any]) -> dict[str, Any]: + def build_data(self, method: str, params: List[Any]) -> Dict[str, Any]: self.request_id += 1 - params: list[Any] = [ + params: List[Any] = [ str(i) if isinstance(i, PublicKey) else i for i in params ] @@ -72,14 +72,14 @@ def __init__(self, endpoint: str): self.client = httpx.AsyncClient() - async def send(self, data: dict[str, Any]) -> RPCResponse: + async def send(self, data: Dict[str, Any]) -> RPCResponse: res = await self.client.post( url=self.endpoint, headers=self.headers, json=data) return res.json() - def build_data(self, method: str, params: list[Any]) -> dict[str, Any]: + def build_data(self, method: str, params: List[Any]) -> Dict[str, Any]: self.request_id += 1 - params: list[Any] = [ + params: List[Any] = [ str(i) if isinstance(i, PublicKey) else i for i in params ] diff --git a/solathon/core/instructions.py b/solathon/core/instructions.py index b7d0ab7..efc8622 100644 --- a/solathon/core/instructions.py +++ b/solathon/core/instructions.py @@ -1,7 +1,7 @@ # Developer reference: https://github.com/solana-labs/solana/blob/master/sdk/program/src/system_instruction.rs from __future__ import annotations -from typing import NamedTuple +from typing import NamedTuple, List from dataclasses import dataclass from ..publickey import PublicKey from ..core.layouts import ( @@ -19,7 +19,7 @@ class AccountMeta: class Instruction(NamedTuple): - keys: list[AccountMeta] + keys: List[AccountMeta] program_id: PublicKey data: bytes = bytes(0) @@ -31,7 +31,7 @@ def create_account( space: int, program_id: PublicKey ) -> Instruction: - account_metas: list[AccountMeta] = [ + account_metas: List[AccountMeta] = [ AccountMeta( public_key=from_public_key, is_signer=True, @@ -68,7 +68,7 @@ def create_account_with_seed( space: int, program_id: PublicKey ) -> Instruction: - account_metas: list[AccountMeta] = [ + account_metas: List[AccountMeta] = [ AccountMeta( public_key=from_public_key, is_signer=True, @@ -136,7 +136,7 @@ def transfer( to_public_key: PublicKey | str, lamports: int ) -> Instruction: - account_metas: list[AccountMeta] = [ + account_metas: List[AccountMeta] = [ AccountMeta( public_key=from_public_key, is_signer=True, diff --git a/solathon/core/message.py b/solathon/core/message.py index a75a15a..4ab3074 100644 --- a/solathon/core/message.py +++ b/solathon/core/message.py @@ -37,7 +37,7 @@ def to_uint8_bytes(val: int) -> bytes: class CompiledInstruction(NamedTuple): - accounts: bytes | list[int] + accounts: bytes | List[int] program_id_index: int data: bytes @@ -52,8 +52,8 @@ class Message: def __init__( self, header: MessageHeader, - account_keys: list[str], - instructions: list[CompiledInstruction], + account_keys: List[str], + instructions: List[CompiledInstruction], recent_blockhash: str ): self.header = header diff --git a/solathon/core/types/__init__.py b/solathon/core/types/__init__.py index d4d131f..85b96cc 100644 --- a/solathon/core/types/__init__.py +++ b/solathon/core/types/__init__.py @@ -35,7 +35,7 @@ class Result(TypedDict): class RPCResponse(TypedDict): jsonrpc: Literal["2.0"] id: int - result: Union[Result[T], T] + result: Any error: RPCErrorType Commitment = Literal["processed", "confirmed", "finalized", "recent", "single", "singleGossip", "root", "max"] diff --git a/solathon/core/types/account_info.py b/solathon/core/types/account_info.py index fc651ba..ff82684 100644 --- a/solathon/core/types/account_info.py +++ b/solathon/core/types/account_info.py @@ -1,4 +1,4 @@ -from typing import Any, TypedDict, Union +from typing import Any, TypedDict, Union, Dict class AccountInfoType(TypedDict): ''' @@ -9,7 +9,7 @@ class AccountInfoType(TypedDict): executable: bool rentEpoch: int size: Union[int, None] - data: Union[str, dict[str, Any]] + data: Union[str, Dict[str, Any]] def __repr__(self) -> str: return f"AccountInfoType(owner={self.owner!r})" diff --git a/solathon/core/types/block.py b/solathon/core/types/block.py index 72b4996..b540fbb 100644 --- a/solathon/core/types/block.py +++ b/solathon/core/types/block.py @@ -1,5 +1,5 @@ from solathon.core.message import Message as CoreMessage, MessageHeader -from typing import Any, List, TypedDict, Union +from typing import Any, List, TypedDict, Union, Dict class HeaderType(TypedDict): @@ -214,7 +214,7 @@ class BlockProductionType(TypedDict): ''' JSON Response type of Block Production Information received by RPC ''' - byIdentity: dict[str, Any] + byIdentity: Dict[str, Any] range: RangeType diff --git a/solathon/publickey.py b/solathon/publickey.py index 882c3da..0ad24cc 100644 --- a/solathon/publickey.py +++ b/solathon/publickey.py @@ -1,12 +1,12 @@ from __future__ import annotations import base58 - +from typing import List class PublicKey: LENGTH = 32 - def __init__(self, value: bytes | int | str | list[int] | bytearray): + def __init__(self, value: bytes | int | str | List[int] | bytearray): if isinstance(value, str): try: self.byte_value = base58.b58decode(value) diff --git a/solathon/transaction.py b/solathon/transaction.py index dd97848..6c6eaa1 100644 --- a/solathon/transaction.py +++ b/solathon/transaction.py @@ -1,7 +1,7 @@ from __future__ import annotations from dataclasses import dataclass -from typing import List, Tuple +from typing import List, Tuple, Dict from base58 import b58decode, b58encode from .keypair import Keypair from .publickey import PublicKey @@ -31,9 +31,9 @@ def __init__(self, **config): self.fee_payer: PublicKey = config.get("fee_payer") self.nonce_info = config.get("nonce_info") self.recent_blockhash = config.get("recent_blockhash") - self.signers: list[PublicKey] | list[Keypair] = config.get("signers") - self.instructions: list[Instruction] = [] - self.signatures: list[PKSigPair] = [] + self.signers: List[PublicKey] | List[Keypair] = config.get("signers") + self.instructions: List[Instruction] = [] + self.signatures: List[PKSigPair] = [] if "instructions" in config: instructions: Instruction = config.get("instructions") if ( @@ -56,7 +56,7 @@ def to_public_key(signer: PublicKey | Keypair) -> PublicKey: raise TypeError(("The argument must be either " "PublicKey or Keypair object.")) - pk_sig_pairs: list[PKSigPair] = [PKSigPair( + pk_sig_pairs: List[PKSigPair] = [PKSigPair( public_key=to_public_key(signer) ) for signer in self.signers] @@ -78,8 +78,8 @@ def compile_transaction(self) -> bytes: if not self.fee_payer: self.fee_payer = self.signatures[0].public_key - account_metas: list[AccountMeta] = [] - program_ids: list[str] = [] + account_metas: List[AccountMeta] = [] + program_ids: List[str] = [] for instruction in self.instructions: if not instruction.program_id: @@ -102,8 +102,8 @@ def compile_transaction(self) -> bytes: not account.is_signer, not account.is_writable)) fee_payer_idx = 0 - seen: dict[str, int] = {} - uniq_metas: list[AccountMeta] = [] + seen: Dict[str, int] = {} + uniq_metas: List[AccountMeta] = [] for sig in self.signatures: public_key = str(sig.public_key) @@ -134,8 +134,8 @@ def compile_transaction(self) -> bytes: uniq_metas[fee_payer_idx + 1:] ) - signed_keys: list[str] = [] - unsigned_keys: list[str] = [] + signed_keys: List[str] = [] + unsigned_keys: List[str] = [] num_required_signatures = num_readonly_signed_accounts = num_readonly_unsigned_accounts = 0 for a_m in uniq_metas: if a_m.is_signer: @@ -149,10 +149,10 @@ def compile_transaction(self) -> bytes: self.signatures = [PKSigPair(public_key=PublicKey( key), signature=None) for key in signed_keys] - account_keys: list[str] = signed_keys + unsigned_keys - account_indices: dict[str, int] = { + account_keys: List[str] = signed_keys + unsigned_keys + account_indices: Dict[str, int] = { str(key): i for i, key in enumerate(account_keys)} - compiled_instructions: list[CompiledInstruction] = [ + compiled_instructions: List[CompiledInstruction] = [ CompiledInstruction( accounts=[account_indices[str(a_m.public_key)] for a_m in instr.keys], @@ -174,7 +174,7 @@ def compile_transaction(self) -> bytes: serialized_message: bytes = message.serialize() return serialized_message - def sign(self, signatures: list[bytes] = None) -> None: + def sign(self, signatures: List[bytes] = None) -> None: sign_data: bytes = self.compile_transaction() if signatures: if len(signatures) != len(self.signers): @@ -255,7 +255,7 @@ def add_instructions(self, *instructions: Instruction) -> None: self.instructions.append(instr) @classmethod - def populate(self, message: Message, signatures: List[bytes], signers: list[Keypair]) -> Transaction: + def populate(self, message: Message, signatures: List[bytes], signers: List[Keypair]) -> Transaction: decoded_signatures = list(map(lambda x: PKSigPair( public_key=message.account_keys[x[0]], signature=None if x[1] == b58encode( @@ -291,7 +291,7 @@ def populate(self, message: Message, signatures: List[bytes], signers: list[Keyp ) @classmethod - def from_buffer(self, buffer: bytes, signers: list[Keypair]) -> Transaction: + def from_buffer(self, buffer: bytes, signers: List[Keypair]) -> Transaction: # Reference: https://github.com/solana-labs/solana-web3.js/blob/a1fafee/packages/library-legacy/src/transaction/legacy.ts#L878 if not isinstance(buffer, bytes): raise TypeError("Buffer must be a bytes object.") diff --git a/solathon/utils.py b/solathon/utils.py index 08977ec..e8f2ffe 100644 --- a/solathon/utils.py +++ b/solathon/utils.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Any +from typing import Any, Dict from .publickey import PublicKey from nacl.signing import VerifyKey from solathon.core.types import Commitment, RPCErrorType, RPCResponse @@ -63,7 +63,7 @@ def verify_signature( vk.verify(message, bytes(signature)) -def clean_response(response: RPCResponse) -> dict[str, Any] | RPCErrorType: +def clean_response(response: RPCResponse) -> Dict[str, Any] | RPCErrorType: if "error" in response: return response["error"]