From 898d5f6593548761c9c1a746496eccd227d96018 Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Tue, 18 Oct 2022 10:50:12 +0200 Subject: [PATCH 01/30] init in new python monorepo --- README.md | 1 + misc/VScode_OpenWorkspaceFromFile.png | Bin 0 -> 276527 bytes 2 files changed, 1 insertion(+) create mode 100644 misc/VScode_OpenWorkspaceFromFile.png diff --git a/README.md b/README.md index 3e9c2322..0316fbd3 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ If you use VSCode, open this setup using the workspace file python-monorepo.code ``` File -> Open Workspace from File... ``` +![File -> Open Workspace from File](misc/VScode_OpenWorkspaceFromFile.png) Each folder is now a project to VSCode. For the Python virtual environments to be picked up automatically, you need to create .vscode/settings.json file in each folder, pointing to the in-project virtual environment created by the poetry. diff --git a/misc/VScode_OpenWorkspaceFromFile.png b/misc/VScode_OpenWorkspaceFromFile.png new file mode 100644 index 0000000000000000000000000000000000000000..a9b4c6d5e910b6a4c9568ae7e3a49feb882a3537 GIT binary patch literal 276527 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ǎjqc^4=k=xZcy7A; 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 z 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\PyQ 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%0D1}|Kem+7o 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 QCCW=vRp({Jiw|G^4_jcRkpKVy literal 0 HcmV?d00001 From 8b077862ade10a1b815869eeec8d443dce232a90 Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Tue, 18 Oct 2022 11:40:20 +0200 Subject: [PATCH 02/30] wip readme --- README.md | 170 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 154 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 0316fbd3..eee9a681 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,118 @@ -# Polywrap python client +![Public Release Announcement](https://user-images.githubusercontent.com/5522128/177473887-2689cf25-7937-4620-8ca5-17620729a65d.png) -[Polywrap](https://polywrap.io/#/) is a developer tool that enables easy integration of Web3 protocols into any application. It makes it possible for applications on any platform, written in any language, to read and write data to Web3 protocols. +# Polywrap Python Client + +## [Polywrap](https://polywrap.io) is a developer tool that enables easy integration of Web3 protocols into any application. It makes it possible for applications on any platform, written in any language, to read and write data to Web3 protocols. + + +# Working Features + +This MVP Python client enables the execution of **[WebAssembly](https://en.wikipedia.org/wiki/WebAssembly) Polywrappers** *(or just "wrappers")* on a python environment. It's built following the functionality of the [JavaScript Polywrap Client](https://github.com/polywrap/toolchain), which is currently more robust out and battle tested, as it has additional capabilities than this MVP. + +In the future, the Polywrap DAO will continue improving this Python capabilities to reach feature parity with the JS stack, as well as the possibiity of creating WASM wrappers with Python code. + +Here you can see which features have been implemented on each language, and make the decision of which one to use for your project. + +| Feature | [Python](https://github.com/polywrap/python-client) | [Javascript](https://github.com/polywrap/toolchain) | +| -- | -- | -- | +| Invoke wrappers | yes | yes | +| polywrap-asyncify | replaced with wasmtime | yes | +| polywrap-uri-resolvers | legacy | refactored | +| polywrap-msgpack| yes, tested 100% | yes | +| Subinvoke | wip | yes | +| Wrap Manifest | WIP | yes | +| Client Config Builder Package | wip | yes | +| Interfaces | pending | yes | +| e2e Tests | tbd | no | +| Creating Plugins | tbd | yes | +| Creating Python Wrappers | in a future version | yes | +> TODO: Update table above according to test harness and maybe mention other wip clients + + +# Getting Started: + +Have questions or want to get involved? Join our community [Discord](https://discord.polywrap.io) or [open an issue](https://github.com/polywrap/toolchain/issues) on Github. + +For detailed information about Polywrap and the WRAP standard, visit our [developer documentation](https://docs.polywrap.io/). + +## Pre-requisites -## Setup for building and testing -- Requirement: Python ^3.10, Poetry ^1.1.14 -- If you are using a linux system or WSL, which comes with Python3.8, then you will need to upgrade Python3.8 to Python3.10 and also fix the pip and distutil as upgrading to Python3.10 will break them. You may follow [this guide](https://cloudbytes.dev/snippets/upgrade-python-to-latest-version-on-ubuntu-linux) to upgrade. -- To install poetry follow [this guide](https://python-poetry.org/docs/#installation). If you are on macos then you can install poetry simply with the following homebrew command -``` -brew install poetry -``` - Clone the repo. ``` git clone https://github.com/polywrap/python-client ``` -- We will be using [Poetry](https://python-poetry.org) for building and testing our packages. -- Each of the package folders consists the pyproject.toml file and the poetry.lock file. In pyproject.toml file, one can find out all the project dependencies and configs related to the package. These files will be utilized by Poetry to install correct dependencies, build, lint and test the package. +> ### `python ˆ3.10` +> - Make sure you're running the correct version of python by running: +> ``` +> which python3 +> ``` +> - If you are using a Linux system or WSL, which comes with Python3.8, then you will need to upgrade from Python3.8 to Python3.10 and also fix the `pip` and `distutil` as upgrading to Python3.10 will break them. You may follow [this guide](https://cloudbytes.dev/snippets/upgrade-python-to-latest-version-on-ubuntu-linux) to upgrade. -- For example, we can install deps, build and test the polywrap-msgpack package using Poetry. +> ### `poetry ^1.1.14` +> - To install poetry follow [this guide](https://python-poetry.org/docs/#installation). If you are on MacOS then you can install poetry simply with the following homebrew command +> ``` +> brew install poetry +> ``` +> - To make sure you're it's installed properly, run `poetry` +> - Learn more [here](https://python-poetry.org/docs/) + + + +## Building and Testing + +### Poetry + +- We will be using [Poetry](https://python-poetry.org) for building and testing our packages. + Each of the package folders consists the `pyproject.toml` file and the `poetry.lock` file. In `pyproject.toml` file, one can find out all the project dependencies and configs related to the package. These files will be utilized by Poetry to install correct dependencies, build, lint and test the package. + +- For example, we can **install** deps, **build** and **test** the `polywrap-msgpack` package using Poetry. - Install dependencies using Poetry. ``` poetry install ``` > Make sure your cwd is `polywrap-msgpack` package. -- As we can see in the pyproject.toml file, we installed [PyTest](https://docs.pytest.org) package. We will be using the same as our testing framework. +- As we can see in the `pyproject.toml` file, we installed [PyTest](https://docs.pytest.org) package. We will be using the same as our testing framework. - Now we are ready to build and test the core package using Poetry and PyTest. - To build the package run the following command ``` poetry build ``` - You need to activate the venv with poetry using `poetry shell` command before running any other command -- We are using tox to run lint and tests easily. You can list all the testenv defined in the -tox config with following command + +### Pytest + +In order to assure the integrity of the modules Polywrap Python Client uses [pytest 7.1.3](https://docs.pytest.org/en/7.1.x/contents.html) as a testing framework. + +To run the tests locally, from the terminal `cd` into the appropriate module, for example `./toolchain/packages/py/polywrap-wasm` or `./toolchain/packages/py/polywrap-client`, and run this command: + - `poetry shell` to start env + - `poetry install` to have all dependencies locally + - `poetry run pytest` to test your module + +This last command will run a series of scripts that verify that the specific module of the client is performing as expected in your local machine. The output on your console should look something like this: + +```c +$ poetry run pytest +>> +================================= test session starts ================================= +platform darwin -- Python 3.10.0, pytest-7.1.3, pluggy-1.0.0 +rootdir: /Users/robertohenriquez/pycode/polywrap/toolchain/packages/py, configfile: pytest.ini +collected 26 items + +tests/test_msgpack.py .......................... [100%] +``` + +You should expect to see the tests passing with a 100% accuracy. To better understand and read these outputs, check [this quick guide](https://docs.pytest.org/en/7.1.x/how-to/output.html) + +If anything fails (F), or if there are any Warnings raised, you can debug them by running a verbose version of the test suite: +- `poetry run pytests -v` or `poetry run pytests -vv` for even more detail +- Reach out to the devs on the Discord explaining your situation, and what configuration you're using on your machine. + + +### TOX +- We are using `tox` to run lint and tests easily. +- You can list all the testenv defined in the tox config with following command ``` tox -a ``` @@ -42,7 +122,7 @@ tox -a - As we see the mentioned tests passing, we are ready to update and test the package. ## For VSCode users -If you use VSCode, open this setup using the workspace file python-monorepo.code-workspace: +If you use VSCode, open this setup using the workspace file `python-monorepo.code-workspace`: ``` File -> Open Workspace from File... @@ -74,3 +154,61 @@ Here's the `settings.json` file we are using for configuring the vscode: You need to put your virtual env path you got from the poetry under: `python.defaultInterpreterPath` Once you configure this you should be good to go. + + + + +## What WASM wrappers can you execute today? + +Check these resources to browse a variety available wrappers, for DeFi, decentralised storage, and other development utilites: + +- [Wrappers.io](https://wrappers.io/) +- [Polywrap Integrations Repository](https://github.com/polywrap/integrations) + +# Example call + +Calling a function of a wrapper from the python client is as simple as creating a file in the `xxx TBD` directory, importing the Polywrap Python Client, calling the Uri where the WASM wrapper is hosted, and specifying any required arguments. + +```python +# get_eth_txns.py +from polywrap_client import PolywrapClient +from polywrap_core import Uri, InvokerOptions + +async def get_eth_transactions(accountAddress): + client = PolywrapClient() + #uri = Uri("wrap://ens/defiwrapper.polywrap.eth") + uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "wrap.wasm").absolute()}') + args = { + "accountAddress": "'0x123EtherumAddress12312'" + } + options = InvokerOptions(uri=uri, method="simpleMethod", args=args, encode_result=False) + result = await client.invoke(options) + return result.result + +if __name__ == "__main__": + return get_eth_transactions(portfolio_address) +``` + + +## Creating your own tests + + TODO: It is suggested to follow a [TDD](https://en.wikipedia.org/wiki/Test-driven_development) approach to build your own implementations. + +# Contributing + +The Polywrap project is completely open-source and we welcome contributors of all levels. Learn more about how you can contribute [here](https://github.com/polywrap/toolchain#contributing). + + + +# Contact Us: + +[Join our discord](https://discord.polywrap.io) and ask your questions right away! + + +# Resources + +- [Polywrap Documentation](https://docs.polywrap.io) +- [Polywrap Integrations Repository](https://github.com/polywrap/integrations) +- [Building tests with Pytest](https://realpython.com/pytest-python-testing/) +- [Running operations concurrently with python's asyncio](https://realpython.com/async-io-python/#the-10000-foot-view-of-async-io) +- [Intro Video](TODO) From 30089f3615172d8a25fd3dd752fefb7a0fa839ba Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Tue, 18 Oct 2022 11:47:49 +0200 Subject: [PATCH 03/30] readme improvements --- README.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index eee9a681..a6827587 100644 --- a/README.md +++ b/README.md @@ -85,9 +85,11 @@ poetry build In order to assure the integrity of the modules Polywrap Python Client uses [pytest 7.1.3](https://docs.pytest.org/en/7.1.x/contents.html) as a testing framework. -To run the tests locally, from the terminal `cd` into the appropriate module, for example `./toolchain/packages/py/polywrap-wasm` or `./toolchain/packages/py/polywrap-client`, and run this command: +To run the tests locally, make sure your `cwd` is the appropriate module, for example `polywrap-wasm` or `polywrap-client`, and run these commands if you haven't already: - `poetry shell` to start env - `poetry install` to have all dependencies locally + +Finally, to execute the test suite: - `poetry run pytest` to test your module This last command will run a series of scripts that verify that the specific module of the client is performing as expected in your local machine. The output on your console should look something like this: @@ -105,13 +107,13 @@ tests/test_msgpack.py .......................... You should expect to see the tests passing with a 100% accuracy. To better understand and read these outputs, check [this quick guide](https://docs.pytest.org/en/7.1.x/how-to/output.html) -If anything fails (F), or if there are any Warnings raised, you can debug them by running a verbose version of the test suite: +If anything fails (marked with an 'F'), or if there are any Warnings raised, you can debug them by running a verbose version of the test suite: - `poetry run pytests -v` or `poetry run pytests -vv` for even more detail -- Reach out to the devs on the Discord explaining your situation, and what configuration you're using on your machine. +- Reach out to the devs on the [Discord](https://discord.polywrap.io) explaining your situation, and what configuration you're using on your machine. ### TOX -- We are using `tox` to run lint and tests easily. +- We are using `tox` to run lint and tests even more easily. - You can list all the testenv defined in the tox config with following command ``` tox -a @@ -121,7 +123,7 @@ tox -a - While developing, you can run `tox -e dev` and apply lint fixes and style formatting. - As we see the mentioned tests passing, we are ready to update and test the package. -## For VSCode users +## VSCode users: Improved experience If you use VSCode, open this setup using the workspace file `python-monorepo.code-workspace`: ``` @@ -158,7 +160,7 @@ Once you configure this you should be good to go. -## What WASM wrappers can you execute today? +# What WASM wrappers can you execute today? Check these resources to browse a variety available wrappers, for DeFi, decentralised storage, and other development utilites: @@ -167,7 +169,7 @@ Check these resources to browse a variety available wrappers, for DeFi, decentra # Example call -Calling a function of a wrapper from the python client is as simple as creating a file in the `xxx TBD` directory, importing the Polywrap Python Client, calling the Uri where the WASM wrapper is hosted, and specifying any required arguments. +Calling a function of a wrapper from the python client is as simple as creating a file in the `xxx TODO` directory, importing the Polywrap Python Client, calling the Uri where the WASM wrapper is hosted, and specifying any required arguments. ```python # get_eth_txns.py From 19dae6147a05c4b2b9eef8deb8faff62ddd7f30e Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Tue, 18 Oct 2022 12:45:56 +0200 Subject: [PATCH 04/30] improved readme! --- README.md | 131 +++++++++++++++++++++++--------------- misc/VScode_workspace.png | Bin 0 -> 15324 bytes 2 files changed, 79 insertions(+), 52 deletions(-) create mode 100644 misc/VScode_workspace.png diff --git a/README.md b/README.md index a6827587..b06e42f0 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ This MVP Python client enables the execution of **[WebAssembly](https://en.wikipedia.org/wiki/WebAssembly) Polywrappers** *(or just "wrappers")* on a python environment. It's built following the functionality of the [JavaScript Polywrap Client](https://github.com/polywrap/toolchain), which is currently more robust out and battle tested, as it has additional capabilities than this MVP. -In the future, the Polywrap DAO will continue improving this Python capabilities to reach feature parity with the JS stack, as well as the possibiity of creating WASM wrappers with Python code. +In the future, the Polywrap DAO will continue improving this Python capabilities to reach feature parity with the JS stack, including the possibiity of creating WASM wrappers with Python code. Here you can see which features have been implemented on each language, and make the decision of which one to use for your project. @@ -26,7 +26,7 @@ Here you can see which features have been implemented on each language, and make | e2e Tests | tbd | no | | Creating Plugins | tbd | yes | | Creating Python Wrappers | in a future version | yes | -> TODO: Update table above according to test harness and maybe mention other wip clients +> TODO: Update table above according to test harness and maybe mention other wip clients (go, rust) # Getting Started: @@ -37,15 +37,15 @@ For detailed information about Polywrap and the WRAP standard, visit our [develo ## Pre-requisites -- Clone the repo. -``` -git clone https://github.com/polywrap/python-client -``` +>### Clone the repo. +>``` +>git clone https://github.com/polywrap/python-client +>``` > ### `python ˆ3.10` > - Make sure you're running the correct version of python by running: > ``` -> which python3 +> python3 --version > ``` > - If you are using a Linux system or WSL, which comes with Python3.8, then you will need to upgrade from Python3.8 to Python3.10 and also fix the `pip` and `distutil` as upgrading to Python3.10 will break them. You may follow [this guide](https://cloudbytes.dev/snippets/upgrade-python-to-latest-version-on-ubuntu-linux) to upgrade. @@ -54,14 +54,13 @@ git clone https://github.com/polywrap/python-client > ``` > brew install poetry > ``` -> - To make sure you're it's installed properly, run `poetry` -> - Learn more [here](https://python-poetry.org/docs/) +> - To make sure you're it's installed properly, run `poetry`. Learn more [here](https://python-poetry.org/docs/) -## Building and Testing +# Building and Testing -### Poetry +## Poetry - We will be using [Poetry](https://python-poetry.org) for building and testing our packages. Each of the package folders consists the `pyproject.toml` file and the `poetry.lock` file. In `pyproject.toml` file, one can find out all the project dependencies and configs related to the package. These files will be utilized by Poetry to install correct dependencies, build, lint and test the package. @@ -72,25 +71,29 @@ git clone https://github.com/polywrap/python-client ``` poetry install ``` -> Make sure your cwd is `polywrap-msgpack` package. -- As we can see in the `pyproject.toml` file, we installed [PyTest](https://docs.pytest.org) package. We will be using the same as our testing framework. -- Now we are ready to build and test the core package using Poetry and PyTest. +> Make sure your cwd is the appropriate module, for example `polywrap-msgpack`, `polywrap-wasm` or `polywrap-client`. + +## Pytest + +In order to assure the integrity of the modules Polywrap Python Client uses [pytest 7.1.3](https://docs.pytest.org/en/7.1.x/contents.html) as a testing framework. + +- As we can see in the `pyproject.toml` files, we installed the [PyTest](https://docs.pytest.org) package. We will be using it as our testing framework. +- Now we are ready to **build** and **test** the core package using Poetry and PyTest. - To build the package run the following command ``` poetry build ``` -- You need to activate the venv with poetry using `poetry shell` command before running any other command - -### Pytest - -In order to assure the integrity of the modules Polywrap Python Client uses [pytest 7.1.3](https://docs.pytest.org/en/7.1.x/contents.html) as a testing framework. +- You need to activate the venv with poetry using the `shell` command before running any other command + +``` +poetry shell +``` -To run the tests locally, make sure your `cwd` is the appropriate module, for example `polywrap-wasm` or `polywrap-client`, and run these commands if you haven't already: - - `poetry shell` to start env - - `poetry install` to have all dependencies locally +Finally, to test your module to execute the test suite: +``` +poetry run pytest +``` -Finally, to execute the test suite: - - `poetry run pytest` to test your module This last command will run a series of scripts that verify that the specific module of the client is performing as expected in your local machine. The output on your console should look something like this: @@ -99,52 +102,79 @@ $ poetry run pytest >> ================================= test session starts ================================= platform darwin -- Python 3.10.0, pytest-7.1.3, pluggy-1.0.0 -rootdir: /Users/robertohenriquez/pycode/polywrap/toolchain/packages/py, configfile: pytest.ini +rootdir: /Users/polywrap/pycode/polywrap/toolchain/packages/py, configfile: pytest.ini collected 26 items tests/test_msgpack.py .......................... [100%] ``` -You should expect to see the tests passing with a 100% accuracy. To better understand and read these outputs, check [this quick guide](https://docs.pytest.org/en/7.1.x/how-to/output.html) +> ### Debugging with Pytets: +> +> You should expect to see the tests passing with a 100% accuracy. To better understand and read these outputs, check [this quick guide](https://docs.pytest.org/en/7.1.x/how-to/output.html). If anything fails (marked with an 'F'), or if there are any Warnings raised, you can debug them by running a verbose version of the test suite: +> - `poetry run pytests -v` or `poetry run pytests -vv` for even more detail +> - Reach out to the devs on the [Discord](https://discord.polywrap.io) explaining your situation, and what configuration you're using on your machine. -If anything fails (marked with an 'F'), or if there are any Warnings raised, you can debug them by running a verbose version of the test suite: -- `poetry run pytests -v` or `poetry run pytests -vv` for even more detail -- Reach out to the devs on the [Discord](https://discord.polywrap.io) explaining your situation, and what configuration you're using on your machine. +## TOX + We are using [`tox`](https://tox.wiki/en) to run lint and tests even more easily. Below are some basic commands to get you running. -### TOX -- We are using `tox` to run lint and tests even more easily. -- You can list all the testenv defined in the tox config with following command +### List all the testenv defined in the tox config ``` tox -a ``` -- To run tests using tox simply run `tox` -- You can run linters with the `tox -e lint` and check type with `tox -e typecheck`. By running `tox -e secure`, you can find security vulnerability if any. -- While developing, you can run `tox -e dev` and apply lint fixes and style formatting. -- As we see the mentioned tests passing, we are ready to update and test the package. +### Run tests +``` +tox +``` -## VSCode users: Improved experience -If you use VSCode, open this setup using the workspace file `python-monorepo.code-workspace`: +### Linting +``` +tox -e lint +``` +### Check types +``` +tox -e typecheck +``` + +### Find security vulnerabilities, if any +``` +tox -e secure +``` + +### Dev environment +Use this command to only apply lint fixes and style formatting. +``` +tox -e dev +``` + +- After running these commands we should see all the tests passing and commands executing successfully, which means that we are ready to update and test the package. +- To create your own tox scripts, modify the `tox.ini` file in the respective module. + +## VSCode users: Improved venv experience +If you use VSCode, we have prepared a pre-configured workspace, so to open the workspace file `python-monorepo.code-workspace`, go to: ``` File -> Open Workspace from File... ``` ![File -> Open Workspace from File](misc/VScode_OpenWorkspaceFromFile.png) -Each folder is now a project to VSCode. For the Python virtual environments to be picked up automatically, you need to create .vscode/settings.json file in each folder, pointing to the in-project virtual environment created by the poetry. +Each folder is now a project to VSCode. This action does not change the underlying code, but facilitates the development process. So our file directory should look like this now: + +![all modules have their respective folder, along with a root folder](misc/VScode_workspace.png) -You can easily find the correct virtual env by running following command in the package for which you want to find it +### Picking up the virtual environments automatically +We will need to create a `.vscode/settings.json` file in each module's folder, pointing to the in-project virtual environment created by the poetry. + +- You can easily find the path to the virtual env by running following command in the package for which you want to find it for: ``` poetry shell ``` -Once you get the virtual env, you need to create the following `settings.json` file under the .vscode folder of the given package. -Ex: in case of polywrap-client package, it would be under: -``` -polywrap-client -> .vscode -> settings.json -``` +- Once you get the path virtual env, you need to create the following `settings.json` file under the `.vscode/` folder of the given package. For example, in case of `polywrap-client` package, it would be under +`./polywrap-client/.vscode/settings.json` + -Here's the `settings.json` file we are using for configuring the vscode: +Here's the structure `settings.json` file we are using for configuring the vscode. Make sure you need to put your virtual env path you got from the poetry as the `python.defaultInterpreterPath` argument: ```json { "python.formatting.provider": "black", @@ -153,11 +183,8 @@ Here's the `settings.json` file we are using for configuring the vscode: "python.defaultInterpreterPath": "/Users/polywrap/Library/Caches/pypoetry/virtualenvs/polywrap-client-abcdef-py3.10" } ``` -You need to put your virtual env path you got from the poetry under: `python.defaultInterpreterPath` - -Once you configure this you should be good to go. - +Once you configure this you should be good to go! # What WASM wrappers can you execute today? @@ -169,7 +196,7 @@ Check these resources to browse a variety available wrappers, for DeFi, decentra # Example call -Calling a function of a wrapper from the python client is as simple as creating a file in the `xxx TODO` directory, importing the Polywrap Python Client, calling the Uri where the WASM wrapper is hosted, and specifying any required arguments. +Calling a function of a wrapper from the python client is as simple as creating a file in the `TODO (?polywrap-client)` directory, importing the Polywrap Python Client, calling the Uri where the WASM wrapper is hosted, and specifying any required arguments. ```python # get_eth_txns.py @@ -194,7 +221,7 @@ if __name__ == "__main__": ## Creating your own tests - TODO: It is suggested to follow a [TDD](https://en.wikipedia.org/wiki/Test-driven_development) approach to build your own implementations. +TODO: It is suggested to follow a [TDD](https://en.wikipedia.org/wiki/Test-driven_development) approach to build your own implementations. # Contributing diff --git a/misc/VScode_workspace.png b/misc/VScode_workspace.png new file mode 100644 index 0000000000000000000000000000000000000000..830aef91c6b87b80003520810dd2c2a7a0759dbe GIT binary patch literal 15324 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 WuaF^0&;S0BKulO#s9HeR|Nj7)WNfhj literal 0 HcmV?d00001 From 749df0dc118da201e92818e8acf1936d886900b1 Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Tue, 18 Oct 2022 12:53:01 +0200 Subject: [PATCH 05/30] readme improvements --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b06e42f0..0bc33dd5 100644 --- a/README.md +++ b/README.md @@ -174,7 +174,7 @@ poetry shell `./polywrap-client/.vscode/settings.json` -Here's the structure `settings.json` file we are using for configuring the vscode. Make sure you need to put your virtual env path you got from the poetry as the `python.defaultInterpreterPath` argument: +Here's the structure `settings.json` file we are using for configuring the vscode. Make sure you update your virtual env path you got from poetry as the `python.defaultInterpreterPath` argument: ```json { "python.formatting.provider": "black", @@ -184,7 +184,7 @@ Here's the structure `settings.json` file we are using for configuring the vscod } ``` -Once you configure this you should be good to go! +Keep in mind that these venv paths will vary for each module you run `poetry shell` on. Once you configure these `setting.json` files correctly on each module you should be good to go! # What WASM wrappers can you execute today? From cb8574197ed56bad3a79ba078c80f8e471d1041e Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Tue, 18 Oct 2022 13:21:59 +0200 Subject: [PATCH 06/30] wip: adding big number tests --- .../cases/simple-invoke/wrapperBigNumber.wasm | Bin 0 -> 55810 bytes packages/polywrap-client/tests/test_client.py | 17 +++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 packages/polywrap-client/tests/cases/simple-invoke/wrapperBigNumber.wasm diff --git a/packages/polywrap-client/tests/cases/simple-invoke/wrapperBigNumber.wasm b/packages/polywrap-client/tests/cases/simple-invoke/wrapperBigNumber.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e12d75ce0f811701e3eb8322c58d3090a1bc99b4 GIT binary patch literal 55810 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 D)L!h7 literal 0 HcmV?d00001 diff --git a/packages/polywrap-client/tests/test_client.py b/packages/polywrap-client/tests/test_client.py index 99d78abc..91a6fed4 100644 --- a/packages/polywrap-client/tests/test_client.py +++ b/packages/polywrap-client/tests/test_client.py @@ -45,3 +45,20 @@ async def test_subinvoke(): assert result.result == "1 + 2 = 3" + +async def test_invoke_bignumber_1arg_and_1prop(): + client = PolywrapClient() + # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD + uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') + print(Uri) + args = { + "arg1": "123", # The base number + "obj": { + "prop1": "1000", # multiply the base number by this factor + } + } + options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == "123000" + From c7b2cd65e4be24404556fba19d7b300d7c7bfdf8 Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Tue, 18 Oct 2022 13:24:02 +0200 Subject: [PATCH 07/30] more bignumber tests passing --- packages/polywrap-client/tests/test_client.py | 52 +++++++++++++++++-- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/packages/polywrap-client/tests/test_client.py b/packages/polywrap-client/tests/test_client.py index 91a6fed4..7b871f77 100644 --- a/packages/polywrap-client/tests/test_client.py +++ b/packages/polywrap-client/tests/test_client.py @@ -50,9 +50,7 @@ async def test_invoke_bignumber_1arg_and_1prop(): client = PolywrapClient() # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') - print(Uri) - args = { - "arg1": "123", # The base number + args = { "arg1": "123", # The base number "obj": { "prop1": "1000", # multiply the base number by this factor } @@ -62,3 +60,51 @@ async def test_invoke_bignumber_1arg_and_1prop(): print(result) assert result.result == "123000" +async def test_invoke_bignumber_with_1arg_and_2props(): + client = PolywrapClient() + # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD + uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') + args = { + "arg1": "123123", + "obj": { + "prop1": "1000", + "prop2": "4" + } + } + options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == str(123123*1000*4) + +async def test_invoke_bignumber_with_2args_and_1prop(): + client = PolywrapClient() + # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD + uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') + args = { + "arg1": "123123", + "obj": { + "prop1": "1000", + "prop2": "444" + } + } + options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == str(123123*1000*444) + +async def test_invoke_bignumber_with_2args_and_2props(): + client = PolywrapClient() + # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD + uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') + args = { + "arg1": "123123", + "arg2": "555", + "obj": { + "prop1": "1000", + "prop2": "4" + } + } + options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == str(123123*555*1000*4) From 2d1add7f76687d9b2fa7694091ed277592d855ec Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Tue, 18 Oct 2022 13:26:46 +0200 Subject: [PATCH 08/30] more bignumber tests --- packages/polywrap-client/tests/test_client.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/packages/polywrap-client/tests/test_client.py b/packages/polywrap-client/tests/test_client.py index 7b871f77..b7828f90 100644 --- a/packages/polywrap-client/tests/test_client.py +++ b/packages/polywrap-client/tests/test_client.py @@ -108,3 +108,42 @@ async def test_invoke_bignumber_with_2args_and_2props(): result = await client.invoke(options) print(result) assert result.result == str(123123*555*1000*4) + +async def test_invoke_bignumber_with_2args_and_2props_floats(): + client = PolywrapClient() + # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD + uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') + print(Uri) + args = { + "arg1": "123.123", + "arg2": "55.5", + "obj": { + "prop1": "10.001", + "prop2": "4" + } + } + options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == str(123.123*55.5*10.001*4) + + +# async def test_invoke_bignumber_with_2args_and_2props_complex_numbers(): +# client = PolywrapClient() +# # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD +# uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') +# print(Uri) +# args = { +# # Question: Should bignumber work with complex numbers? +# "arg1": "3j", +# "arg2": "5", +# "obj": { +# "prop1": "2", +# "prop2": "4" +# } +# } +# options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) +# result = await client.invoke(options) +# print(result) +# # Question: Should bignumber work with complex numbers? +# assert result.result == str(3j*55*2*4) \ No newline at end of file From 860e7cd2b8b213f40852f4c73a7cb852762c9df4 Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Tue, 18 Oct 2022 13:43:10 +0200 Subject: [PATCH 09/30] more test cases for sha3 and big number --- .../polywrap-client/tests/test_bignumber.py | 108 ++++++++++++++++++ packages/polywrap-client/tests/test_client.py | 102 ----------------- packages/polywrap-client/tests/test_sha3.py | 19 +++ 3 files changed, 127 insertions(+), 102 deletions(-) create mode 100644 packages/polywrap-client/tests/test_bignumber.py create mode 100644 packages/polywrap-client/tests/test_sha3.py diff --git a/packages/polywrap-client/tests/test_bignumber.py b/packages/polywrap-client/tests/test_bignumber.py new file mode 100644 index 00000000..35352f28 --- /dev/null +++ b/packages/polywrap-client/tests/test_bignumber.py @@ -0,0 +1,108 @@ +from pathlib import Path + +from polywrap_client import PolywrapClient +from polywrap_core import Uri, InvokerOptions + + +async def test_invoke_bignumber_1arg_and_1prop(): + client = PolywrapClient() + # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD + uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') + args = { "arg1": "123", # The base number + "obj": { + "prop1": "1000", # multiply the base number by this factor + } + } + options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == "123000" + +async def test_invoke_bignumber_with_1arg_and_2props(): + client = PolywrapClient() + # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD + uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') + args = { + "arg1": "123123", + "obj": { + "prop1": "1000", + "prop2": "4" + } + } + options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == str(123123*1000*4) + +async def test_invoke_bignumber_with_2args_and_1prop(): + client = PolywrapClient() + # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD + uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') + args = { + "arg1": "123123", + "obj": { + "prop1": "1000", + "prop2": "444" + } + } + options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == str(123123*1000*444) + +async def test_invoke_bignumber_with_2args_and_2props(): + client = PolywrapClient() + # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD + uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') + args = { + "arg1": "123123", + "arg2": "555", + "obj": { + "prop1": "1000", + "prop2": "4" + } + } + options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == str(123123*555*1000*4) + +async def test_invoke_bignumber_with_2args_and_2props_floats(): + client = PolywrapClient() + # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD + uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') + print(Uri) + args = { + "arg1": "123.123", + "arg2": "55.5", + "obj": { + "prop1": "10.001", + "prop2": "4" + } + } + options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == str(123.123*55.5*10.001*4) + + +# async def test_invoke_bignumber_with_2args_and_2props_complex_numbers(): +# client = PolywrapClient() +# # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD +# uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') +# print(Uri) +# args = { +# # Question: Should bignumber work with complex numbers? +# "arg1": "3j", +# "arg2": "5", +# "obj": { +# "prop1": "2", +# "prop2": "4" +# } +# } +# options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) +# result = await client.invoke(options) +# print(result) +# # Question: Should bignumber work with complex numbers? +# assert result.result == str(3j*55*2*4) + diff --git a/packages/polywrap-client/tests/test_client.py b/packages/polywrap-client/tests/test_client.py index b7828f90..99d78abc 100644 --- a/packages/polywrap-client/tests/test_client.py +++ b/packages/polywrap-client/tests/test_client.py @@ -45,105 +45,3 @@ async def test_subinvoke(): assert result.result == "1 + 2 = 3" - -async def test_invoke_bignumber_1arg_and_1prop(): - client = PolywrapClient() - # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD - uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') - args = { "arg1": "123", # The base number - "obj": { - "prop1": "1000", # multiply the base number by this factor - } - } - options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) - result = await client.invoke(options) - print(result) - assert result.result == "123000" - -async def test_invoke_bignumber_with_1arg_and_2props(): - client = PolywrapClient() - # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD - uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') - args = { - "arg1": "123123", - "obj": { - "prop1": "1000", - "prop2": "4" - } - } - options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) - result = await client.invoke(options) - print(result) - assert result.result == str(123123*1000*4) - -async def test_invoke_bignumber_with_2args_and_1prop(): - client = PolywrapClient() - # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD - uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') - args = { - "arg1": "123123", - "obj": { - "prop1": "1000", - "prop2": "444" - } - } - options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) - result = await client.invoke(options) - print(result) - assert result.result == str(123123*1000*444) - -async def test_invoke_bignumber_with_2args_and_2props(): - client = PolywrapClient() - # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD - uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') - args = { - "arg1": "123123", - "arg2": "555", - "obj": { - "prop1": "1000", - "prop2": "4" - } - } - options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) - result = await client.invoke(options) - print(result) - assert result.result == str(123123*555*1000*4) - -async def test_invoke_bignumber_with_2args_and_2props_floats(): - client = PolywrapClient() - # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD - uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') - print(Uri) - args = { - "arg1": "123.123", - "arg2": "55.5", - "obj": { - "prop1": "10.001", - "prop2": "4" - } - } - options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) - result = await client.invoke(options) - print(result) - assert result.result == str(123.123*55.5*10.001*4) - - -# async def test_invoke_bignumber_with_2args_and_2props_complex_numbers(): -# client = PolywrapClient() -# # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD -# uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') -# print(Uri) -# args = { -# # Question: Should bignumber work with complex numbers? -# "arg1": "3j", -# "arg2": "5", -# "obj": { -# "prop1": "2", -# "prop2": "4" -# } -# } -# options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) -# result = await client.invoke(options) -# print(result) -# # Question: Should bignumber work with complex numbers? -# assert result.result == str(3j*55*2*4) \ No newline at end of file diff --git a/packages/polywrap-client/tests/test_sha3.py b/packages/polywrap-client/tests/test_sha3.py new file mode 100644 index 00000000..645377f9 --- /dev/null +++ b/packages/polywrap-client/tests/test_sha3.py @@ -0,0 +1,19 @@ +from pathlib import Path + +from polywrap_client import PolywrapClient +from polywrap_core import Uri, InvokerOptions + + + +async def test_invoke_sha3(): + client = PolywrapClient() + # SHA3 Schema - https://wrappers.io/v/ipfs/QmbYw6XfEmNdR3Uoa7u2U1WRqJEXbseiSoBNBt3yPFnKvi + uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke", "wrapperSHA3.wasm").absolute()}') + print(Uri) + args = { + "message": "hello world!" + } + options = InvokerOptions(uri=uri, method="sha3_512", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == str(3*55*2*4) \ No newline at end of file From 560c6f66b6d04b1559ec878aa32abb2b64568864 Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Tue, 18 Oct 2022 13:43:31 +0200 Subject: [PATCH 10/30] including sha3 wrapper in the simple-invoke test cases --- .../tests/cases/simple-invoke/wrapperSHA3.wasm | Bin 0 -> 140755 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 packages/polywrap-client/tests/cases/simple-invoke/wrapperSHA3.wasm diff --git a/packages/polywrap-client/tests/cases/simple-invoke/wrapperSHA3.wasm b/packages/polywrap-client/tests/cases/simple-invoke/wrapperSHA3.wasm new file mode 100644 index 0000000000000000000000000000000000000000..004b76f729762ef4e91c983f349819b03c6283ac GIT binary patch literal 140755 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 J$DZ}w|3A~=(+&Ut literal 0 HcmV?d00001 From 17d6dabe91b6e6435e0fb16f37e8e32a7be825d1 Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Tue, 18 Oct 2022 14:27:24 +0200 Subject: [PATCH 11/30] created tests for SHA3, KECCAK, and SHAKE --- packages/polywrap-client/tests/test_sha3.py | 87 ++++++++++++++++++--- 1 file changed, 76 insertions(+), 11 deletions(-) diff --git a/packages/polywrap-client/tests/test_sha3.py b/packages/polywrap-client/tests/test_sha3.py index 645377f9..3d412521 100644 --- a/packages/polywrap-client/tests/test_sha3.py +++ b/packages/polywrap-client/tests/test_sha3.py @@ -1,19 +1,84 @@ -from pathlib import Path +# Polywrap Python Client - https://polywrap.io +# SHA3 Wrapper Schema - https://wrappers.io/v/ipfs/QmbYw6XfEmNdR3Uoa7u2U1WRqJEXbseiSoBNBt3yPFnKvi +from pathlib import Path from polywrap_client import PolywrapClient from polywrap_core import Uri, InvokerOptions +client = PolywrapClient() +uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke", "wrapperSHA3.wasm").absolute()}') +args = {"message": "hello polywrap!"} - -async def test_invoke_sha3(): - client = PolywrapClient() - # SHA3 Schema - https://wrappers.io/v/ipfs/QmbYw6XfEmNdR3Uoa7u2U1WRqJEXbseiSoBNBt3yPFnKvi - uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke", "wrapperSHA3.wasm").absolute()}') - print(Uri) - args = { - "message": "hello world!" - } +async def test_invoke_sha3_512(): options = InvokerOptions(uri=uri, method="sha3_512", args=args, encode_result=False) result = await client.invoke(options) print(result) - assert result.result == str(3*55*2*4) \ No newline at end of file + assert result.result == False + +async def test_invoke_sha3_384(): + options = InvokerOptions(uri=uri, method="sha3_384", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == False + +async def test_invoke_sha3_256(): + options = InvokerOptions(uri=uri, method="sha3_256", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == False + +async def test_invoke_sha3_224(): + options = InvokerOptions(uri=uri, method="sha3_224", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == False + +# async def test_invoke_ keccak_512( + options = InvokerOptions(uri=uri, method="keccak_512", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == False + +async def test_invoke_keccak_384(): + options = InvokerOptions(uri=uri, method="keccak_384", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == False + +async def test_invoke_keccak_256(): + options = InvokerOptions(uri=uri, method="keccak_256", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == False + +async def test_invoke_keccak_224(): + options = InvokerOptions(uri=uri, method="keccak_224", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == False + +async def test_invoke_hex_keccak_256(): + options = InvokerOptions(uri=uri, method="hex_keccak_256", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == False + +async def test_invoke_buffer_keccak_256(): + options = InvokerOptions(uri=uri, method="buffer_keccak_256", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == False + +async def test_invoke_shake_256(): + args = {"message": "hello polywrap!", "outputBits":2022} + options = InvokerOptions(uri=uri, method="shake_256", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == False + +async def test_invoke_shake_128(): + args = {"message": "hello polywrap!", "outputBits":2022} + options = InvokerOptions(uri=uri, method="shake_128", args=args, encode_result=False) + result = await client.invoke(options) + print(result) + assert result.result == False \ No newline at end of file From ed3462ad9e97b2be04105dfc10fe099d902cd641 Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Tue, 18 Oct 2022 14:40:17 +0200 Subject: [PATCH 12/30] linting improvements on client module --- packages/polywrap-client/polywrap_client/client.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/polywrap-client/polywrap_client/client.py b/packages/polywrap-client/polywrap_client/client.py index fd5f3ee6..ec575f45 100644 --- a/packages/polywrap-client/polywrap_client/client.py +++ b/packages/polywrap-client/polywrap_client/client.py @@ -40,7 +40,7 @@ def __init__(self, config: Optional[PolywrapClientConfig] = None): resolver=FsUriResolver(file_reader=SimpleFileReader()) ) - def getConfig(self): + def get_config(self): return self._config def get_uri_resolver( @@ -107,15 +107,14 @@ async def invoke(self, options: InvokerOptions) -> InvokeResult: if options.encode_result and not result.encoded: encoded = msgpack_encode(result.result) return InvokeResult(result=encoded, error=None) - elif ( + if ( not options.encode_result and result.encoded and isinstance(result.result, (bytes, bytearray)) ): decoded: Any = msgpack_decode(result.result) return InvokeResult(result=decoded, error=None) - else: - return result + return result - except Exception as e: - return InvokeResult(result=None, error=e) + except Exception as error: + return InvokeResult(result=None, error=error) From 4a135fa66d8b4bbf4569c94472714883ebafe6bb Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Tue, 18 Oct 2022 14:49:08 +0200 Subject: [PATCH 13/30] linting --- .../polywrap-core/polywrap_core/utils/init_wrapper.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/polywrap-core/polywrap_core/utils/init_wrapper.py b/packages/polywrap-core/polywrap_core/utils/init_wrapper.py index 6ca200dc..311b2308 100644 --- a/packages/polywrap-core/polywrap_core/utils/init_wrapper.py +++ b/packages/polywrap-core/polywrap_core/utils/init_wrapper.py @@ -3,7 +3,7 @@ from ..types import Wrapper -async def init_wrapper(packageOrWrapper: Any) -> Wrapper: - if hasattr(packageOrWrapper, "create_wrapper"): - return await packageOrWrapper.createWrapper() - return packageOrWrapper +async def init_wrapper(package_or_wrapper: Any) -> Wrapper: + if hasattr(package_or_wrapper, "create_wrapper"): + return await package_or_wrapper.createWrapper() + return package_or_wrapper From 45fced9f504cb9d783c936a8a0b653bcbd3fd821 Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Tue, 18 Oct 2022 14:52:45 +0200 Subject: [PATCH 14/30] linting --- packages/polywrap-core/polywrap_core/types/uri.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/polywrap-core/polywrap_core/types/uri.py b/packages/polywrap-core/polywrap_core/types/uri.py index 33fad52a..51093a11 100644 --- a/packages/polywrap-core/polywrap_core/types/uri.py +++ b/packages/polywrap-core/polywrap_core/types/uri.py @@ -26,7 +26,8 @@ class Uri: Breaking down the various parts of the URI, as it applies to [the URI standard](https://tools.ietf.org/html/rfc3986#section-3): **wrap://** - URI Scheme: differentiates Polywrap URIs. - **ipfs/** - URI Authority: allows the Polywrap URI resolution algorithm to determine an authoritative URI resolver. + **ipfs/** - URI Authority: allows the Polywrap URI resolution algorithm to determine + an authoritative URI resolver. **sub.domain.eth** - URI Path: tells the Authority where the API resides. """ From f468a0812d5107091e2ad355301809008b9fe8ee Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Tue, 18 Oct 2022 14:53:58 +0200 Subject: [PATCH 15/30] linting --- .../polywrap_core/uri_resolution/uri_resolution_result.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/polywrap-core/polywrap_core/uri_resolution/uri_resolution_result.py b/packages/polywrap-core/polywrap_core/uri_resolution/uri_resolution_result.py index 2479eb1f..0769efff 100644 --- a/packages/polywrap-core/polywrap_core/uri_resolution/uri_resolution_result.py +++ b/packages/polywrap-core/polywrap_core/uri_resolution/uri_resolution_result.py @@ -25,10 +25,9 @@ def ok( ) -> Result[UriPackageOrWrapper, Exception]: if wrapper: return Ok(UriWrapper(uri=uri, wrapper=wrapper)) - elif package: + if package: return Ok(UriPackage(uri=uri, package=package)) - else: - return Ok(uri) + return Ok(uri) @staticmethod def err(error: Exception) -> Result[UriPackageOrWrapper, Exception]: From 775cfd40cb480a981020475eb2bba00423cc653b Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Thu, 20 Oct 2022 15:04:43 +0200 Subject: [PATCH 16/30] rollback_readme --- README.md | 244 +++++++++--------------------------------------------- 1 file changed, 38 insertions(+), 206 deletions(-) diff --git a/README.md b/README.md index 0bc33dd5..3e9c2322 100644 --- a/README.md +++ b/README.md @@ -1,180 +1,67 @@ -![Public Release Announcement](https://user-images.githubusercontent.com/5522128/177473887-2689cf25-7937-4620-8ca5-17620729a65d.png) +# Polywrap python client -# Polywrap Python Client - -## [Polywrap](https://polywrap.io) is a developer tool that enables easy integration of Web3 protocols into any application. It makes it possible for applications on any platform, written in any language, to read and write data to Web3 protocols. - - -# Working Features - -This MVP Python client enables the execution of **[WebAssembly](https://en.wikipedia.org/wiki/WebAssembly) Polywrappers** *(or just "wrappers")* on a python environment. It's built following the functionality of the [JavaScript Polywrap Client](https://github.com/polywrap/toolchain), which is currently more robust out and battle tested, as it has additional capabilities than this MVP. - -In the future, the Polywrap DAO will continue improving this Python capabilities to reach feature parity with the JS stack, including the possibiity of creating WASM wrappers with Python code. - -Here you can see which features have been implemented on each language, and make the decision of which one to use for your project. - -| Feature | [Python](https://github.com/polywrap/python-client) | [Javascript](https://github.com/polywrap/toolchain) | -| -- | -- | -- | -| Invoke wrappers | yes | yes | -| polywrap-asyncify | replaced with wasmtime | yes | -| polywrap-uri-resolvers | legacy | refactored | -| polywrap-msgpack| yes, tested 100% | yes | -| Subinvoke | wip | yes | -| Wrap Manifest | WIP | yes | -| Client Config Builder Package | wip | yes | -| Interfaces | pending | yes | -| e2e Tests | tbd | no | -| Creating Plugins | tbd | yes | -| Creating Python Wrappers | in a future version | yes | -> TODO: Update table above according to test harness and maybe mention other wip clients (go, rust) - - -# Getting Started: - -Have questions or want to get involved? Join our community [Discord](https://discord.polywrap.io) or [open an issue](https://github.com/polywrap/toolchain/issues) on Github. - -For detailed information about Polywrap and the WRAP standard, visit our [developer documentation](https://docs.polywrap.io/). - -## Pre-requisites - ->### Clone the repo. ->``` ->git clone https://github.com/polywrap/python-client ->``` - -> ### `python ˆ3.10` -> - Make sure you're running the correct version of python by running: -> ``` -> python3 --version -> ``` -> - If you are using a Linux system or WSL, which comes with Python3.8, then you will need to upgrade from Python3.8 to Python3.10 and also fix the `pip` and `distutil` as upgrading to Python3.10 will break them. You may follow [this guide](https://cloudbytes.dev/snippets/upgrade-python-to-latest-version-on-ubuntu-linux) to upgrade. - -> ### `poetry ^1.1.14` -> - To install poetry follow [this guide](https://python-poetry.org/docs/#installation). If you are on MacOS then you can install poetry simply with the following homebrew command -> ``` -> brew install poetry -> ``` -> - To make sure you're it's installed properly, run `poetry`. Learn more [here](https://python-poetry.org/docs/) - - - -# Building and Testing - -## Poetry +[Polywrap](https://polywrap.io/#/) is a developer tool that enables easy integration of Web3 protocols into any application. It makes it possible for applications on any platform, written in any language, to read and write data to Web3 protocols. +## Setup for building and testing +- Requirement: Python ^3.10, Poetry ^1.1.14 +- If you are using a linux system or WSL, which comes with Python3.8, then you will need to upgrade Python3.8 to Python3.10 and also fix the pip and distutil as upgrading to Python3.10 will break them. You may follow [this guide](https://cloudbytes.dev/snippets/upgrade-python-to-latest-version-on-ubuntu-linux) to upgrade. +- To install poetry follow [this guide](https://python-poetry.org/docs/#installation). If you are on macos then you can install poetry simply with the following homebrew command +``` +brew install poetry +``` +- Clone the repo. +``` +git clone https://github.com/polywrap/python-client +``` - We will be using [Poetry](https://python-poetry.org) for building and testing our packages. - Each of the package folders consists the `pyproject.toml` file and the `poetry.lock` file. In `pyproject.toml` file, one can find out all the project dependencies and configs related to the package. These files will be utilized by Poetry to install correct dependencies, build, lint and test the package. -- For example, we can **install** deps, **build** and **test** the `polywrap-msgpack` package using Poetry. +- Each of the package folders consists the pyproject.toml file and the poetry.lock file. In pyproject.toml file, one can find out all the project dependencies and configs related to the package. These files will be utilized by Poetry to install correct dependencies, build, lint and test the package. + +- For example, we can install deps, build and test the polywrap-msgpack package using Poetry. - Install dependencies using Poetry. ``` poetry install ``` -> Make sure your cwd is the appropriate module, for example `polywrap-msgpack`, `polywrap-wasm` or `polywrap-client`. - -## Pytest - -In order to assure the integrity of the modules Polywrap Python Client uses [pytest 7.1.3](https://docs.pytest.org/en/7.1.x/contents.html) as a testing framework. - -- As we can see in the `pyproject.toml` files, we installed the [PyTest](https://docs.pytest.org) package. We will be using it as our testing framework. -- Now we are ready to **build** and **test** the core package using Poetry and PyTest. +> Make sure your cwd is `polywrap-msgpack` package. +- As we can see in the pyproject.toml file, we installed [PyTest](https://docs.pytest.org) package. We will be using the same as our testing framework. +- Now we are ready to build and test the core package using Poetry and PyTest. - To build the package run the following command ``` poetry build ``` -- You need to activate the venv with poetry using the `shell` command before running any other command - -``` -poetry shell -``` - -Finally, to test your module to execute the test suite: -``` -poetry run pytest -``` - - -This last command will run a series of scripts that verify that the specific module of the client is performing as expected in your local machine. The output on your console should look something like this: - -```c -$ poetry run pytest ->> -================================= test session starts ================================= -platform darwin -- Python 3.10.0, pytest-7.1.3, pluggy-1.0.0 -rootdir: /Users/polywrap/pycode/polywrap/toolchain/packages/py, configfile: pytest.ini -collected 26 items - -tests/test_msgpack.py .......................... [100%] -``` - -> ### Debugging with Pytets: -> -> You should expect to see the tests passing with a 100% accuracy. To better understand and read these outputs, check [this quick guide](https://docs.pytest.org/en/7.1.x/how-to/output.html). If anything fails (marked with an 'F'), or if there are any Warnings raised, you can debug them by running a verbose version of the test suite: -> - `poetry run pytests -v` or `poetry run pytests -vv` for even more detail -> - Reach out to the devs on the [Discord](https://discord.polywrap.io) explaining your situation, and what configuration you're using on your machine. - - -## TOX - We are using [`tox`](https://tox.wiki/en) to run lint and tests even more easily. Below are some basic commands to get you running. - -### List all the testenv defined in the tox config +- You need to activate the venv with poetry using `poetry shell` command before running any other command +- We are using tox to run lint and tests easily. You can list all the testenv defined in the +tox config with following command ``` tox -a ``` -### Run tests -``` -tox -``` +- To run tests using tox simply run `tox` +- You can run linters with the `tox -e lint` and check type with `tox -e typecheck`. By running `tox -e secure`, you can find security vulnerability if any. +- While developing, you can run `tox -e dev` and apply lint fixes and style formatting. +- As we see the mentioned tests passing, we are ready to update and test the package. -### Linting -``` -tox -e lint -``` -### Check types -``` -tox -e typecheck -``` - -### Find security vulnerabilities, if any -``` -tox -e secure -``` - -### Dev environment -Use this command to only apply lint fixes and style formatting. -``` -tox -e dev -``` - -- After running these commands we should see all the tests passing and commands executing successfully, which means that we are ready to update and test the package. -- To create your own tox scripts, modify the `tox.ini` file in the respective module. - -## VSCode users: Improved venv experience -If you use VSCode, we have prepared a pre-configured workspace, so to open the workspace file `python-monorepo.code-workspace`, go to: +## For VSCode users +If you use VSCode, open this setup using the workspace file python-monorepo.code-workspace: ``` File -> Open Workspace from File... ``` -![File -> Open Workspace from File](misc/VScode_OpenWorkspaceFromFile.png) - -Each folder is now a project to VSCode. This action does not change the underlying code, but facilitates the development process. So our file directory should look like this now: - -![all modules have their respective folder, along with a root folder](misc/VScode_workspace.png) -### Picking up the virtual environments automatically -We will need to create a `.vscode/settings.json` file in each module's folder, pointing to the in-project virtual environment created by the poetry. +Each folder is now a project to VSCode. For the Python virtual environments to be picked up automatically, you need to create .vscode/settings.json file in each folder, pointing to the in-project virtual environment created by the poetry. -- You can easily find the path to the virtual env by running following command in the package for which you want to find it for: +You can easily find the correct virtual env by running following command in the package for which you want to find it ``` poetry shell ``` -- Once you get the path virtual env, you need to create the following `settings.json` file under the `.vscode/` folder of the given package. For example, in case of `polywrap-client` package, it would be under -`./polywrap-client/.vscode/settings.json` - +Once you get the virtual env, you need to create the following `settings.json` file under the .vscode folder of the given package. +Ex: in case of polywrap-client package, it would be under: +``` +polywrap-client -> .vscode -> settings.json +``` -Here's the structure `settings.json` file we are using for configuring the vscode. Make sure you update your virtual env path you got from poetry as the `python.defaultInterpreterPath` argument: +Here's the `settings.json` file we are using for configuring the vscode: ```json { "python.formatting.provider": "black", @@ -183,61 +70,6 @@ Here's the structure `settings.json` file we are using for configuring the vscod "python.defaultInterpreterPath": "/Users/polywrap/Library/Caches/pypoetry/virtualenvs/polywrap-client-abcdef-py3.10" } ``` +You need to put your virtual env path you got from the poetry under: `python.defaultInterpreterPath` -Keep in mind that these venv paths will vary for each module you run `poetry shell` on. Once you configure these `setting.json` files correctly on each module you should be good to go! - - -# What WASM wrappers can you execute today? - -Check these resources to browse a variety available wrappers, for DeFi, decentralised storage, and other development utilites: - -- [Wrappers.io](https://wrappers.io/) -- [Polywrap Integrations Repository](https://github.com/polywrap/integrations) - -# Example call - -Calling a function of a wrapper from the python client is as simple as creating a file in the `TODO (?polywrap-client)` directory, importing the Polywrap Python Client, calling the Uri where the WASM wrapper is hosted, and specifying any required arguments. - -```python -# get_eth_txns.py -from polywrap_client import PolywrapClient -from polywrap_core import Uri, InvokerOptions - -async def get_eth_transactions(accountAddress): - client = PolywrapClient() - #uri = Uri("wrap://ens/defiwrapper.polywrap.eth") - uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "wrap.wasm").absolute()}') - args = { - "accountAddress": "'0x123EtherumAddress12312'" - } - options = InvokerOptions(uri=uri, method="simpleMethod", args=args, encode_result=False) - result = await client.invoke(options) - return result.result - -if __name__ == "__main__": - return get_eth_transactions(portfolio_address) -``` - - -## Creating your own tests - -TODO: It is suggested to follow a [TDD](https://en.wikipedia.org/wiki/Test-driven_development) approach to build your own implementations. - -# Contributing - -The Polywrap project is completely open-source and we welcome contributors of all levels. Learn more about how you can contribute [here](https://github.com/polywrap/toolchain#contributing). - - - -# Contact Us: - -[Join our discord](https://discord.polywrap.io) and ask your questions right away! - - -# Resources - -- [Polywrap Documentation](https://docs.polywrap.io) -- [Polywrap Integrations Repository](https://github.com/polywrap/integrations) -- [Building tests with Pytest](https://realpython.com/pytest-python-testing/) -- [Running operations concurrently with python's asyncio](https://realpython.com/async-io-python/#the-10000-foot-view-of-async-io) -- [Intro Video](TODO) +Once you configure this you should be good to go. From 581bf982693bc1d8bf3beb396a9925e478d70204 Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Thu, 20 Oct 2022 15:05:33 +0200 Subject: [PATCH 17/30] rollback_readme --- misc/VScode_OpenWorkspaceFromFile.png | Bin 276527 -> 0 bytes misc/VScode_workspace.png | Bin 15324 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 misc/VScode_OpenWorkspaceFromFile.png delete mode 100644 misc/VScode_workspace.png diff --git a/misc/VScode_OpenWorkspaceFromFile.png b/misc/VScode_OpenWorkspaceFromFile.png deleted file mode 100644 index a9b4c6d5e910b6a4c9568ae7e3a49feb882a3537..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276527 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ǎjqc^4=k=xZcy7A; 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 z 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\PyQ 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%0D1}|Kem+7o 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 QCCW=vRp({Jiw|G^4_jcRkpKVy diff --git a/misc/VScode_workspace.png b/misc/VScode_workspace.png deleted file mode 100644 index 830aef91c6b87b80003520810dd2c2a7a0759dbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15324 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 WuaF^0&;S0BKulO#s9HeR|Nj7)WNfhj From a030781d16ca487ea449b3905261c82dce8cb63b Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Thu, 20 Oct 2022 15:09:38 +0200 Subject: [PATCH 18/30] cleanup bignumber tests file --- .../polywrap-client/tests/test_bignumber.py | 34 ++----------------- 1 file changed, 3 insertions(+), 31 deletions(-) diff --git a/packages/polywrap-client/tests/test_bignumber.py b/packages/polywrap-client/tests/test_bignumber.py index 35352f28..feb8450f 100644 --- a/packages/polywrap-client/tests/test_bignumber.py +++ b/packages/polywrap-client/tests/test_bignumber.py @@ -1,12 +1,13 @@ -from pathlib import Path +# Polywrap Python Client - https://polywrap.io +# BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD +from pathlib import Path from polywrap_client import PolywrapClient from polywrap_core import Uri, InvokerOptions async def test_invoke_bignumber_1arg_and_1prop(): client = PolywrapClient() - # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') args = { "arg1": "123", # The base number "obj": { @@ -15,12 +16,10 @@ async def test_invoke_bignumber_1arg_and_1prop(): } options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) result = await client.invoke(options) - print(result) assert result.result == "123000" async def test_invoke_bignumber_with_1arg_and_2props(): client = PolywrapClient() - # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') args = { "arg1": "123123", @@ -31,12 +30,10 @@ async def test_invoke_bignumber_with_1arg_and_2props(): } options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) result = await client.invoke(options) - print(result) assert result.result == str(123123*1000*4) async def test_invoke_bignumber_with_2args_and_1prop(): client = PolywrapClient() - # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') args = { "arg1": "123123", @@ -47,12 +44,10 @@ async def test_invoke_bignumber_with_2args_and_1prop(): } options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) result = await client.invoke(options) - print(result) assert result.result == str(123123*1000*444) async def test_invoke_bignumber_with_2args_and_2props(): client = PolywrapClient() - # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') args = { "arg1": "123123", @@ -64,14 +59,11 @@ async def test_invoke_bignumber_with_2args_and_2props(): } options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) result = await client.invoke(options) - print(result) assert result.result == str(123123*555*1000*4) async def test_invoke_bignumber_with_2args_and_2props_floats(): client = PolywrapClient() - # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') - print(Uri) args = { "arg1": "123.123", "arg2": "55.5", @@ -86,23 +78,3 @@ async def test_invoke_bignumber_with_2args_and_2props_floats(): assert result.result == str(123.123*55.5*10.001*4) -# async def test_invoke_bignumber_with_2args_and_2props_complex_numbers(): -# client = PolywrapClient() -# # BigNumber wrapper schema - https://wrappers.io/v/ipfs/Qme2YXThmsqtfpiUPHJUEzZSBiqX3woQxxdXbDJZvXrvAD -# uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') -# print(Uri) -# args = { -# # Question: Should bignumber work with complex numbers? -# "arg1": "3j", -# "arg2": "5", -# "obj": { -# "prop1": "2", -# "prop2": "4" -# } -# } -# options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) -# result = await client.invoke(options) -# print(result) -# # Question: Should bignumber work with complex numbers? -# assert result.result == str(3j*55*2*4) - From 28ae10341f1d54ec5de703fe5b3ca65122c4c35f Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Thu, 20 Oct 2022 15:10:00 +0200 Subject: [PATCH 19/30] cleanup bignumber tests file --- packages/polywrap-client/tests/test_bignumber.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/polywrap-client/tests/test_bignumber.py b/packages/polywrap-client/tests/test_bignumber.py index feb8450f..eeab9596 100644 --- a/packages/polywrap-client/tests/test_bignumber.py +++ b/packages/polywrap-client/tests/test_bignumber.py @@ -5,7 +5,6 @@ from polywrap_client import PolywrapClient from polywrap_core import Uri, InvokerOptions - async def test_invoke_bignumber_1arg_and_1prop(): client = PolywrapClient() uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke" ,"wrapperBigNumber.wasm").absolute()}') @@ -75,6 +74,4 @@ async def test_invoke_bignumber_with_2args_and_2props_floats(): options = InvokerOptions(uri=uri, method="method", args=args, encode_result=False) result = await client.invoke(options) print(result) - assert result.result == str(123.123*55.5*10.001*4) - - + assert result.result == str(123.123*55.5*10.001*4) \ No newline at end of file From 585e32fdd7fb23fc33a08599df9e08b5607a810b Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Thu, 20 Oct 2022 15:33:31 +0200 Subject: [PATCH 20/30] feat: sha512 implemented --- packages/polywrap-client/tests/test_sha3.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/polywrap-client/tests/test_sha3.py b/packages/polywrap-client/tests/test_sha3.py index 3d412521..68b73982 100644 --- a/packages/polywrap-client/tests/test_sha3.py +++ b/packages/polywrap-client/tests/test_sha3.py @@ -1,19 +1,24 @@ # Polywrap Python Client - https://polywrap.io # SHA3 Wrapper Schema - https://wrappers.io/v/ipfs/QmbYw6XfEmNdR3Uoa7u2U1WRqJEXbseiSoBNBt3yPFnKvi +from mailbox import _mboxMMDFMessage from pathlib import Path from polywrap_client import PolywrapClient from polywrap_core import Uri, InvokerOptions +import hashlib +import sha3 client = PolywrapClient() uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke", "wrapperSHA3.wasm").absolute()}') + args = {"message": "hello polywrap!"} async def test_invoke_sha3_512(): options = InvokerOptions(uri=uri, method="sha3_512", args=args, encode_result=False) result = await client.invoke(options) - print(result) - assert result.result == False + s = hashlib.sha512() + s.update(b"hello polywrap!") + assert result.result == s.hexdigest() async def test_invoke_sha3_384(): options = InvokerOptions(uri=uri, method="sha3_384", args=args, encode_result=False) From 14e1ae5f12b83394623459082b0555d93000dd5c Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Thu, 20 Oct 2022 15:36:12 +0200 Subject: [PATCH 21/30] feat: sha384, sha256, sha224 --- packages/polywrap-client/tests/test_sha3.py | 24 ++++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/packages/polywrap-client/tests/test_sha3.py b/packages/polywrap-client/tests/test_sha3.py index 68b73982..b0d68019 100644 --- a/packages/polywrap-client/tests/test_sha3.py +++ b/packages/polywrap-client/tests/test_sha3.py @@ -23,27 +23,35 @@ async def test_invoke_sha3_512(): async def test_invoke_sha3_384(): options = InvokerOptions(uri=uri, method="sha3_384", args=args, encode_result=False) result = await client.invoke(options) - print(result) - assert result.result == False + s = hashlib.sha384() + s.update(b"hello polywrap!") + assert result.result == s.hexdigest() + async def test_invoke_sha3_256(): options = InvokerOptions(uri=uri, method="sha3_256", args=args, encode_result=False) result = await client.invoke(options) - print(result) - assert result.result == False + s = hashlib.sha256() + s.update(b"hello polywrap!") + assert result.result == s.hexdigest() + async def test_invoke_sha3_224(): options = InvokerOptions(uri=uri, method="sha3_224", args=args, encode_result=False) result = await client.invoke(options) - print(result) - assert result.result == False + s = hashlib.sha224() + s.update(b"hello polywrap!") + assert result.result == s.hexdigest() + -# async def test_invoke_ keccak_512( +async def test_invoke_keccak_512(): options = InvokerOptions(uri=uri, method="keccak_512", args=args, encode_result=False) result = await client.invoke(options) - print(result) + k = hashlib.sha512() + k.update(b"hello polywrap!") assert result.result == False + async def test_invoke_keccak_384(): options = InvokerOptions(uri=uri, method="keccak_384", args=args, encode_result=False) result = await client.invoke(options) From 44258e25dbdf187cf8f06e0bc8e794bb2191ea4b Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Thu, 20 Oct 2022 16:23:19 +0200 Subject: [PATCH 22/30] adding assertions for sha3 test cases --- packages/polywrap-client/poetry.lock | 148 ++++++++++++++++---- packages/polywrap-client/pyproject.toml | 3 + packages/polywrap-client/tests/test_sha3.py | 49 ++++--- 3 files changed, 154 insertions(+), 46 deletions(-) diff --git a/packages/polywrap-client/poetry.lock b/packages/polywrap-client/poetry.lock index d7fc4889..f941e5c4 100644 --- a/packages/polywrap-client/poetry.lock +++ b/packages/polywrap-client/poetry.lock @@ -22,10 +22,10 @@ optional = false python-versions = ">=3.5" [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] -docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"] +dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] +docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] +tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] +tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] [[package]] name = "backoff" @@ -51,9 +51,9 @@ stevedore = ">=1.20.0" toml = {version = "*", optional = true, markers = "extra == \"toml\""} [package.extras] -yaml = ["pyyaml"] +test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "toml"] toml = ["toml"] -test = ["pylint (==1.9.4)", "beautifulsoup4 (>=4.8.0)", "toml", "testtools (>=2.3.0)", "testscenarios (>=0.5.0)", "stestr (>=2.5.0)", "flake8 (>=4.0.0)", "fixtures (>=3.0.0)", "coverage (>=4.5.4)"] +yaml = ["PyYAML"] [[package]] name = "black" @@ -162,14 +162,14 @@ graphql-core = ">=3.2,<3.3" yarl = ">=1.6,<2.0" [package.extras] -websockets = ["websockets (>=10,<11)", "websockets (>=9,<10)"] -test_no_transport = ["aiofiles", "vcrpy (==4.0.2)", "mock (==4.0.2)", "pytest-cov (==3.0.0)", "pytest-console-scripts (==1.3.1)", "pytest-asyncio (==0.16.0)", "pytest (==6.2.5)", "parse (==1.15.0)"] -test = ["websockets (>=10,<11)", "websockets (>=9,<10)", "aiofiles", "vcrpy (==4.0.2)", "mock (==4.0.2)", "pytest-cov (==3.0.0)", "pytest-console-scripts (==1.3.1)", "pytest-asyncio (==0.16.0)", "pytest (==6.2.5)", "parse (==1.15.0)", "botocore (>=1.21,<2)", "urllib3 (>=1.26)", "requests-toolbelt (>=0.9.1,<1)", "requests (>=2.26,<3)", "aiohttp (>=3.7.1,<3.9.0)"] -requests = ["urllib3 (>=1.26)", "requests-toolbelt (>=0.9.1,<1)", "requests (>=2.26,<3)"] -dev = ["websockets (>=10,<11)", "websockets (>=9,<10)", "aiofiles", "vcrpy (==4.0.2)", "mock (==4.0.2)", "pytest-cov (==3.0.0)", "pytest-console-scripts (==1.3.1)", "pytest-asyncio (==0.16.0)", "pytest (==6.2.5)", "parse (==1.15.0)", "types-requests", "types-mock", "types-aiofiles", "sphinx-argparse (==0.2.5)", "sphinx-rtd-theme (>=0.4,<1)", "sphinx (>=3.0.0,<4)", "mypy (==0.910)", "isort (==4.3.21)", "flake8 (==3.8.1)", "check-manifest (>=0.42,<1)", "black (==22.3.0)", "botocore (>=1.21,<2)", "urllib3 (>=1.26)", "requests-toolbelt (>=0.9.1,<1)", "requests (>=2.26,<3)", "aiohttp (>=3.7.1,<3.9.0)"] -botocore = ["botocore (>=1.21,<2)"] -all = ["websockets (>=10,<11)", "websockets (>=9,<10)", "botocore (>=1.21,<2)", "urllib3 (>=1.26)", "requests-toolbelt (>=0.9.1,<1)", "requests (>=2.26,<3)", "aiohttp (>=3.7.1,<3.9.0)"] aiohttp = ["aiohttp (>=3.7.1,<3.9.0)"] +all = ["aiohttp (>=3.7.1,<3.9.0)", "botocore (>=1.21,<2)", "requests (>=2.26,<3)", "requests-toolbelt (>=0.9.1,<1)", "urllib3 (>=1.26)", "websockets (>=10,<11)", "websockets (>=9,<10)"] +botocore = ["botocore (>=1.21,<2)"] +dev = ["aiofiles", "aiohttp (>=3.7.1,<3.9.0)", "black (==22.3.0)", "botocore (>=1.21,<2)", "check-manifest (>=0.42,<1)", "flake8 (==3.8.1)", "isort (==4.3.21)", "mock (==4.0.2)", "mypy (==0.910)", "parse (==1.15.0)", "pytest (==6.2.5)", "pytest-asyncio (==0.16.0)", "pytest-console-scripts (==1.3.1)", "pytest-cov (==3.0.0)", "requests (>=2.26,<3)", "requests-toolbelt (>=0.9.1,<1)", "sphinx (>=3.0.0,<4)", "sphinx-argparse (==0.2.5)", "sphinx-rtd-theme (>=0.4,<1)", "types-aiofiles", "types-mock", "types-requests", "urllib3 (>=1.26)", "vcrpy (==4.0.2)", "websockets (>=10,<11)", "websockets (>=9,<10)"] +requests = ["requests (>=2.26,<3)", "requests-toolbelt (>=0.9.1,<1)", "urllib3 (>=1.26)"] +test = ["aiofiles", "aiohttp (>=3.7.1,<3.9.0)", "botocore (>=1.21,<2)", "mock (==4.0.2)", "parse (==1.15.0)", "pytest (==6.2.5)", "pytest-asyncio (==0.16.0)", "pytest-console-scripts (==1.3.1)", "pytest-cov (==3.0.0)", "requests (>=2.26,<3)", "requests-toolbelt (>=0.9.1,<1)", "urllib3 (>=1.26)", "vcrpy (==4.0.2)", "websockets (>=10,<11)", "websockets (>=9,<10)"] +test_no_transport = ["aiofiles", "mock (==4.0.2)", "parse (==1.15.0)", "pytest (==6.2.5)", "pytest-asyncio (==0.16.0)", "pytest-console-scripts (==1.3.1)", "pytest-cov (==3.0.0)", "vcrpy (==4.0.2)"] +websockets = ["websockets (>=10,<11)", "websockets (>=9,<10)"] [[package]] name = "graphql-core" @@ -204,10 +204,10 @@ optional = false python-versions = ">=3.6.1,<4.0" [package.extras] -pipfile_deprecated_finder = ["pipreqs", "requirementslib"] -requirements_deprecated_finder = ["pipreqs", "pip-api"] colors = ["colorama (>=0.4.3,<0.5.0)"] +pipfile_deprecated_finder = ["pipreqs", "requirementslib"] plugins = ["setuptools"] +requirements_deprecated_finder = ["pip-api", "pipreqs"] [[package]] name = "lazy-object-proxy" @@ -257,6 +257,9 @@ category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" +[package.dependencies] +setuptools = "*" + [[package]] name = "packaging" version = "21.3" @@ -293,8 +296,8 @@ optional = false python-versions = ">=3.7" [package.extras] -test = ["pytest (>=6)", "pytest-mock (>=3.6)", "pytest-cov (>=2.7)", "appdirs (==1.4.4)"] -docs = ["sphinx (>=4)", "sphinx-autodoc-typehints (>=1.12)", "proselint (>=0.10.2)", "furo (>=2021.7.5b38)"] +docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx (>=4)", "sphinx-autodoc-typehints (>=1.12)"] +test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] [[package]] name = "pluggy" @@ -305,8 +308,8 @@ optional = false python-versions = ">=3.6" [package.extras] -testing = ["pytest-benchmark", "pytest"] -dev = ["tox", "pre-commit"] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] [[package]] name = "polywrap-core" @@ -388,6 +391,14 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "pycryptodome" +version = "3.15.0" +description = "Cryptographic library for Python" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + [[package]] name = "pydocstyle" version = "6.1.1" @@ -433,7 +444,7 @@ optional = false python-versions = ">=3.6.8" [package.extras] -diagrams = ["railroad-diagrams", "jinja2"] +diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pyright" @@ -450,6 +461,14 @@ nodeenv = ">=1.6.0" all = ["twine (>=3.4.1)"] dev = ["twine (>=3.4.1)"] +[[package]] +name = "pysha3" +version = "1.0.2" +description = "SHA-3 (Keccak) for Python 2.7 - 3.5" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "pytest" version = "7.1.3" @@ -482,7 +501,7 @@ python-versions = ">=3.7" pytest = ">=6.1.0" [package.extras] -testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)", "flaky (>=3.5.0)", "mypy (>=0.931)", "pytest-trio (>=0.7.0)"] +testing = ["coverage (>=6.2)", "flaky (>=3.5.0)", "hypothesis (>=5.7.1)", "mypy (>=0.931)", "pytest-trio (>=0.7.0)"] [[package]] name = "pyyaml" @@ -500,6 +519,19 @@ category = "main" optional = false python-versions = ">=3.7" +[[package]] +name = "setuptools" +version = "65.5.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mock", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + [[package]] name = "six" version = "1.16.0" @@ -579,7 +611,7 @@ virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2, [package.extras] docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-autoprogram (>=0.1.5)", "towncrier (>=18.5.0)"] -testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)", "psutil (>=5.6.1)", "pathlib2 (>=2.3.3)"] +testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psutil (>=5.6.1)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)"] [[package]] name = "tox-poetry" @@ -595,7 +627,7 @@ toml = "*" tox = {version = ">=3.7.0", markers = "python_version >= \"3\""} [package.extras] -test = ["pylint", "pycodestyle", "pytest", "coverage"] +test = ["coverage", "pycodestyle", "pylint", "pytest"] [[package]] name = "unsync" @@ -631,7 +663,7 @@ optional = false python-versions = ">=3.6" [package.extras] -testing = ["pytest-mypy", "pytest-flake8", "pycparser", "pytest", "flake8 (==4.0.1)", "coverage"] +testing = ["coverage", "flake8 (==4.0.1)", "pycparser", "pytest", "pytest-flake8", "pytest-mypy"] [[package]] name = "wrapt" @@ -656,7 +688,7 @@ multidict = ">=4.0" [metadata] lock-version = "1.1" python-versions = "^3.10" -content-hash = "fbede2eb1178e36229e0cdb6a0d7a963d7e630893adc4bbf4e93c0268784b3fe" +content-hash = "f3d5128c0cd427d36c15c5993c26d0ccd1a2e1bdcc7ee644c2c643162bb7aee3" [metadata.files] astroid = [ @@ -940,6 +972,38 @@ py = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] +pycryptodome = [ + {file = "pycryptodome-3.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff7ae90e36c1715a54446e7872b76102baa5c63aa980917f4aa45e8c78d1a3ec"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2ffd8b31561455453ca9f62cb4c24e6b8d119d6d531087af5f14b64bee2c23e6"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:2ea63d46157386c5053cfebcdd9bd8e0c8b7b0ac4a0507a027f5174929403884"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:7c9ed8aa31c146bef65d89a1b655f5f4eab5e1120f55fc297713c89c9e56ff0b"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:5099c9ca345b2f252f0c28e96904643153bae9258647585e5e6f649bb7a1844a"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:2ec709b0a58b539a4f9d33fb8508264c3678d7edb33a68b8906ba914f71e8c13"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-win32.whl", hash = "sha256:fd2184aae6ee2a944aaa49113e6f5787cdc5e4db1eb8edb1aea914bd75f33a0c"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:7e3a8f6ee405b3bd1c4da371b93c31f7027944b2bcce0697022801db93120d83"}, + {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:b9c5b1a1977491533dfd31e01550ee36ae0249d78aae7f632590db833a5012b8"}, + {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:0926f7cc3735033061ef3cf27ed16faad6544b14666410727b31fea85a5b16eb"}, + {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:2aa55aae81f935a08d5a3c2042eb81741a43e044bd8a81ea7239448ad751f763"}, + {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:c3640deff4197fa064295aaac10ab49a0d55ef3d6a54ae1499c40d646655c89f"}, + {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:045d75527241d17e6ef13636d845a12e54660aa82e823b3b3341bcf5af03fa79"}, + {file = "pycryptodome-3.15.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9ee40e2168f1348ae476676a2e938ca80a2f57b14a249d8fe0d3cdf803e5a676"}, + {file = "pycryptodome-3.15.0-cp35-abi3-manylinux1_i686.whl", hash = "sha256:4c3ccad74eeb7b001f3538643c4225eac398c77d617ebb3e57571a897943c667"}, + {file = "pycryptodome-3.15.0-cp35-abi3-manylinux1_x86_64.whl", hash = "sha256:1b22bcd9ec55e9c74927f6b1f69843cb256fb5a465088ce62837f793d9ffea88"}, + {file = "pycryptodome-3.15.0-cp35-abi3-manylinux2010_i686.whl", hash = "sha256:57f565acd2f0cf6fb3e1ba553d0cb1f33405ec1f9c5ded9b9a0a5320f2c0bd3d"}, + {file = "pycryptodome-3.15.0-cp35-abi3-manylinux2010_x86_64.whl", hash = "sha256:4b52cb18b0ad46087caeb37a15e08040f3b4c2d444d58371b6f5d786d95534c2"}, + {file = "pycryptodome-3.15.0-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:092a26e78b73f2530b8bd6b3898e7453ab2f36e42fd85097d705d6aba2ec3e5e"}, + {file = "pycryptodome-3.15.0-cp35-abi3-win32.whl", hash = "sha256:e244ab85c422260de91cda6379e8e986405b4f13dc97d2876497178707f87fc1"}, + {file = "pycryptodome-3.15.0-cp35-abi3-win_amd64.whl", hash = "sha256:c77126899c4b9c9827ddf50565e93955cb3996813c18900c16b2ea0474e130e9"}, + {file = "pycryptodome-3.15.0-pp27-pypy_73-macosx_10_9_x86_64.whl", hash = "sha256:9eaadc058106344a566dc51d3d3a758ab07f8edde013712bc8d22032a86b264f"}, + {file = "pycryptodome-3.15.0-pp27-pypy_73-manylinux1_x86_64.whl", hash = "sha256:ff287bcba9fbeb4f1cccc1f2e90a08d691480735a611ee83c80a7d74ad72b9d9"}, + {file = "pycryptodome-3.15.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:60b4faae330c3624cc5a546ba9cfd7b8273995a15de94ee4538130d74953ec2e"}, + {file = "pycryptodome-3.15.0-pp27-pypy_73-win32.whl", hash = "sha256:a8f06611e691c2ce45ca09bbf983e2ff2f8f4f87313609d80c125aff9fad6e7f"}, + {file = "pycryptodome-3.15.0-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b9cc96e274b253e47ad33ae1fccc36ea386f5251a823ccb50593a935db47fdd2"}, + {file = "pycryptodome-3.15.0-pp36-pypy36_pp73-manylinux1_x86_64.whl", hash = "sha256:ecaaef2d21b365d9c5ca8427ffc10cebed9d9102749fd502218c23cb9a05feb5"}, + {file = "pycryptodome-3.15.0-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:d2a39a66057ab191e5c27211a7daf8f0737f23acbf6b3562b25a62df65ffcb7b"}, + {file = "pycryptodome-3.15.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:9c772c485b27967514d0df1458b56875f4b6d025566bf27399d0c239ff1b369f"}, + {file = "pycryptodome-3.15.0.tar.gz", hash = "sha256:9135dddad504592bcc18b0d2d95ce86c3a5ea87ec6447ef25cfedea12d6018b8"}, +] pydocstyle = [ {file = "pydocstyle-6.1.1-py3-none-any.whl", hash = "sha256:6987826d6775056839940041beef5c08cc7e3d71d63149b48e36727f70144dc4"}, {file = "pydocstyle-6.1.1.tar.gz", hash = "sha256:1d41b7c459ba0ee6c345f2eb9ae827cab14a7533a88c5c6f7e94923f72df92dc"}, @@ -956,6 +1020,29 @@ pyright = [ {file = "pyright-1.1.275-py3-none-any.whl", hash = "sha256:83072f509e18160f2661a2276ac85f471112dbcfc1dadf0cbb0393a4d56db72a"}, {file = "pyright-1.1.275.tar.gz", hash = "sha256:f0061ce47c785b9b64745b7648ff9732a99811ef7c7f3f88642aa2cb7868c81e"}, ] +pysha3 = [ + {file = "pysha3-1.0.2-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:6e6a84efb7856f5d760ee55cd2b446972cb7b835676065f6c4f694913ea8f8d9"}, + {file = "pysha3-1.0.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:f9046d59b3e72aa84f6dae83a040bd1184ebd7fef4e822d38186a8158c89e3cf"}, + {file = "pysha3-1.0.2-cp27-cp27m-win32.whl", hash = "sha256:9fdd28884c5d0b4edfed269b12badfa07f1c89dbc5c9c66dd279833894a9896b"}, + {file = "pysha3-1.0.2-cp27-cp27m-win_amd64.whl", hash = "sha256:41be70b06c8775a9e4d4eeb52f2f6a3f356f17539a54eac61f43a29e42fd453d"}, + {file = "pysha3-1.0.2-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:68c3a60a39f9179b263d29e221c1bd6e01353178b14323c39cc70593c30f21c5"}, + {file = "pysha3-1.0.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:59111c08b8f34495575d12e5f2ce3bafb98bea470bc81e70c8b6df99aef0dd2f"}, + {file = "pysha3-1.0.2-cp33-cp33m-win32.whl", hash = "sha256:571a246308a7b63f15f5aa9651f99cf30f2a6acba18eddf28f1510935968b603"}, + {file = "pysha3-1.0.2-cp33-cp33m-win_amd64.whl", hash = "sha256:93abd775dac570cb9951c4e423bcb2bc6303a9d1dc0dc2b7afa2dd401d195b24"}, + {file = "pysha3-1.0.2-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:11a2ba7a2e1d9669d0052fc8fb30f5661caed5512586ecbeeaf6bf9478ab5c48"}, + {file = "pysha3-1.0.2-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:5ec8da7c5c70a53b5fa99094af3ba8d343955b212bc346a0d25f6ff75853999f"}, + {file = "pysha3-1.0.2-cp34-cp34m-win32.whl", hash = "sha256:9c778fa8b161dc9348dc5cc361e94d54aa5ff18413788f4641f6600d4893a608"}, + {file = "pysha3-1.0.2-cp34-cp34m-win_amd64.whl", hash = "sha256:fd7e66999060d079e9c0e8893e78d8017dad4f59721f6fe0be6307cd32127a07"}, + {file = "pysha3-1.0.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:827b308dc025efe9b6b7bae36c2e09ed0118a81f792d888548188e97b9bf9a3d"}, + {file = "pysha3-1.0.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:4416f16b0f1605c25f627966f76873e432971824778b369bd9ce1bb63d6566d9"}, + {file = "pysha3-1.0.2-cp35-cp35m-win32.whl", hash = "sha256:c93a2676e6588abcfaecb73eb14485c81c63b94fca2000a811a7b4fb5937b8e8"}, + {file = "pysha3-1.0.2-cp35-cp35m-win_amd64.whl", hash = "sha256:684cb01d87ed6ff466c135f1c83e7e4042d0fc668fa20619f581e6add1d38d77"}, + {file = "pysha3-1.0.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:386998ee83e313b6911327174e088021f9f2061cbfa1651b97629b761e9ef5c4"}, + {file = "pysha3-1.0.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:c7c2adcc43836223680ebdf91f1d3373543dc32747c182c8ca2e02d1b69ce030"}, + {file = "pysha3-1.0.2-cp36-cp36m-win32.whl", hash = "sha256:cd5c961b603bd2e6c2b5ef9976f3238a561c58569945d4165efb9b9383b050ef"}, + {file = "pysha3-1.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:0060a66be16665d90c432f55a0ba1f6480590cfb7d2ad389e688a399183474f0"}, + {file = "pysha3-1.0.2.tar.gz", hash = "sha256:fe988e73f2ce6d947220624f04d467faf05f1bbdbc64b0a201296bb3af92739e"}, +] pytest = [ {file = "pytest-7.1.3-py3-none-any.whl", hash = "sha256:1377bda3466d70b55e3f5cecfa55bb7cfcf219c7964629b967c37cf0bda818b7"}, {file = "pytest-7.1.3.tar.gz", hash = "sha256:4f365fec2dff9c1162f834d9f18af1ba13062db0c708bf7b946f8a5c76180c39"}, @@ -972,6 +1059,13 @@ pyyaml = [ {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, + {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, + {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, @@ -1003,6 +1097,10 @@ result = [ {file = "result-0.8.0-py3-none-any.whl", hash = "sha256:d6a6258f32c057a4e0478999c6ce43dcadaf8ea435f58ac601ae2768f93ef243"}, {file = "result-0.8.0.tar.gz", hash = "sha256:c48c909e92181a075ba358228a3fe161e26d205dad416ad81f27f23515a5626d"}, ] +setuptools = [ + {file = "setuptools-65.5.0-py3-none-any.whl", hash = "sha256:f62ea9da9ed6289bfe868cd6845968a2c854d1427f8548d52cae02a42b4f0356"}, + {file = "setuptools-65.5.0.tar.gz", hash = "sha256:512e5536220e38146176efb833d4a62aa726b7bbff82cfbc8ba9eaa3996e0b17"}, +] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, diff --git a/packages/polywrap-client/pyproject.toml b/packages/polywrap-client/pyproject.toml index 8bbed82b..0ebf946c 100644 --- a/packages/polywrap-client/pyproject.toml +++ b/packages/polywrap-client/pyproject.toml @@ -16,10 +16,13 @@ unsync = "^1.4.0" polywrap-core = { path = "../polywrap-core", develop = true } polywrap-uri-resolvers = { path = "../polywrap-uri-resolvers", develop = true } result = "^0.8.0" +pysha3 = "^1.0.2" +pycryptodome = "^3.15.0" [tool.poetry.dev-dependencies] pytest = "^7.1.2" pytest-asyncio = "^0.19.0" +pysha3 = "1.0.2" pylint = "^2.15.4" black = "^22.10.0" bandit = { version = "^1.7.4", extras = ["toml"]} diff --git a/packages/polywrap-client/tests/test_sha3.py b/packages/polywrap-client/tests/test_sha3.py index b0d68019..580bd7a8 100644 --- a/packages/polywrap-client/tests/test_sha3.py +++ b/packages/polywrap-client/tests/test_sha3.py @@ -7,6 +7,7 @@ from polywrap_core import Uri, InvokerOptions import hashlib import sha3 +from Crypto.Hash import keccak, SHAKE128, SHAKE256 client = PolywrapClient() uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-invoke", "wrapperSHA3.wasm").absolute()}') @@ -18,14 +19,14 @@ async def test_invoke_sha3_512(): result = await client.invoke(options) s = hashlib.sha512() s.update(b"hello polywrap!") - assert result.result == s.hexdigest() + assert result.result == s.digest() async def test_invoke_sha3_384(): options = InvokerOptions(uri=uri, method="sha3_384", args=args, encode_result=False) result = await client.invoke(options) s = hashlib.sha384() s.update(b"hello polywrap!") - assert result.result == s.hexdigest() + assert result.result == s.digest() async def test_invoke_sha3_256(): @@ -33,7 +34,7 @@ async def test_invoke_sha3_256(): result = await client.invoke(options) s = hashlib.sha256() s.update(b"hello polywrap!") - assert result.result == s.hexdigest() + assert result.result == s.digest() async def test_invoke_sha3_224(): @@ -41,40 +42,44 @@ async def test_invoke_sha3_224(): result = await client.invoke(options) s = hashlib.sha224() s.update(b"hello polywrap!") - assert result.result == s.hexdigest() + assert result.result == s.digest() async def test_invoke_keccak_512(): options = InvokerOptions(uri=uri, method="keccak_512", args=args, encode_result=False) result = await client.invoke(options) - k = hashlib.sha512() - k.update(b"hello polywrap!") - assert result.result == False + k = keccak.new(digest_bits=512) + k.update(b'Some data') + assert result.result == k.digest() async def test_invoke_keccak_384(): options = InvokerOptions(uri=uri, method="keccak_384", args=args, encode_result=False) result = await client.invoke(options) - print(result) - assert result.result == False + k = keccak.new(digest_bits=384) + k.update(b'Some data') + assert result.result == k.digest() async def test_invoke_keccak_256(): options = InvokerOptions(uri=uri, method="keccak_256", args=args, encode_result=False) result = await client.invoke(options) - print(result) - assert result.result == False + k = keccak.new(digest_bits=256) + k.update(b'Some data') + assert result.result == k.digest() async def test_invoke_keccak_224(): options = InvokerOptions(uri=uri, method="keccak_224", args=args, encode_result=False) result = await client.invoke(options) - print(result) - assert result.result == False + k = keccak.new(digest_bits=224) + k.update(b'Some data') + assert result.result == k.digest() async def test_invoke_hex_keccak_256(): options = InvokerOptions(uri=uri, method="hex_keccak_256", args=args, encode_result=False) result = await client.invoke(options) - print(result) - assert result.result == False + k = keccak.new(digest_bits=256) + k.update(b'Some data') + assert result.result == k.hexdigest() async def test_invoke_buffer_keccak_256(): options = InvokerOptions(uri=uri, method="buffer_keccak_256", args=args, encode_result=False) @@ -83,15 +88,17 @@ async def test_invoke_buffer_keccak_256(): assert result.result == False async def test_invoke_shake_256(): - args = {"message": "hello polywrap!", "outputBits":2022} + args = {"message": "hello polywrap!", "outputBits":8} options = InvokerOptions(uri=uri, method="shake_256", args=args, encode_result=False) result = await client.invoke(options) - print(result) - assert result.result == False + s = SHAKE256(8) + s.update(b"hello polywrap!") + assert result.result == s.hexdigest() async def test_invoke_shake_128(): - args = {"message": "hello polywrap!", "outputBits":2022} + args = {"message": "hello polywrap!", "outputBits":8} options = InvokerOptions(uri=uri, method="shake_128", args=args, encode_result=False) result = await client.invoke(options) - print(result) - assert result.result == False \ No newline at end of file + s = hashlib.shake128(8) + s.update(b"hello polywrap!") + assert result.result == s.hexdigest() \ No newline at end of file From db420ef0f3b3c471d5f20b471a9e5964551150a7 Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Thu, 20 Oct 2022 16:25:49 +0200 Subject: [PATCH 23/30] adding assertions for sha3 test cases --- packages/polywrap-client/tests/test_sha3.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/polywrap-client/tests/test_sha3.py b/packages/polywrap-client/tests/test_sha3.py index 580bd7a8..df545c00 100644 --- a/packages/polywrap-client/tests/test_sha3.py +++ b/packages/polywrap-client/tests/test_sha3.py @@ -91,14 +91,14 @@ async def test_invoke_shake_256(): args = {"message": "hello polywrap!", "outputBits":8} options = InvokerOptions(uri=uri, method="shake_256", args=args, encode_result=False) result = await client.invoke(options) - s = SHAKE256(8) + s = SHAKE256.new() s.update(b"hello polywrap!") - assert result.result == s.hexdigest() + assert result.result == s.read(8).hex() async def test_invoke_shake_128(): args = {"message": "hello polywrap!", "outputBits":8} options = InvokerOptions(uri=uri, method="shake_128", args=args, encode_result=False) result = await client.invoke(options) - s = hashlib.shake128(8) + s = SHAKE128.new() s.update(b"hello polywrap!") - assert result.result == s.hexdigest() \ No newline at end of file + assert result.result == s.read(8).hex() \ No newline at end of file From d4cddcd7b247d2530f076dd37e5bcf4565cc8600 Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Thu, 20 Oct 2022 16:30:46 +0200 Subject: [PATCH 24/30] sha3 tests --- packages/polywrap-client/tests/test_sha3.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/polywrap-client/tests/test_sha3.py b/packages/polywrap-client/tests/test_sha3.py index df545c00..7d24350e 100644 --- a/packages/polywrap-client/tests/test_sha3.py +++ b/packages/polywrap-client/tests/test_sha3.py @@ -85,6 +85,7 @@ async def test_invoke_buffer_keccak_256(): options = InvokerOptions(uri=uri, method="buffer_keccak_256", args=args, encode_result=False) result = await client.invoke(options) print(result) + # TODO: Not sure exactly what this function `buffer_keccak_256` is doing in order to assert it properly assert result.result == False async def test_invoke_shake_256(): From 2a0c0e41dbf24c700d289bc557bee03b5dfa889a Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Thu, 20 Oct 2022 17:58:47 +0200 Subject: [PATCH 25/30] init scaffolding --- .../polywrap-client-config-builder/README.md | 57 + .../poetry.lock | 1304 +++++++++++++++++ .../__init__.py | 1 + .../client_config_builder.py | 40 + .../pyproject.toml | 60 + .../tests/test_client_config_builder.py | 11 + .../polywrap-client-config-builder/tox.ini | 30 + .../typings/polywrap_core/__init__.pyi | 8 + .../typings/polywrap_core/types/__init__.pyi | 19 + .../typings/polywrap_core/types/client.pyi | 59 + .../typings/polywrap_core/types/env.pyi | 21 + .../polywrap_core/types/file_reader.pyi | 13 + .../typings/polywrap_core/types/invoke.pyi | 66 + .../typings/polywrap_core/types/uri.pyi | 80 + .../polywrap_core/types/uri_package.pyi | 15 + .../types/uri_package_wrapper.pyi | 10 + .../types/uri_resolution_context.pyi | 44 + .../types/uri_resolution_step.pyi | 20 + .../polywrap_core/types/uri_resolver.pyi | 35 + .../types/uri_resolver_handler.pyi | 19 + .../polywrap_core/types/uri_wrapper.pyi | 15 + .../polywrap_core/types/wasm_package.pyi | 14 + .../typings/polywrap_core/types/wrapper.pyi | 28 + .../polywrap_core/uri_resolution/__init__.pyi | 7 + .../uri_resolution/uri_resolution_context.pyi | 41 + .../uri_resolution/uri_resolution_result.pyi | 21 + .../typings/polywrap_core/utils/__init__.pyi | 9 + .../utils/get_env_from_uri_history.pyi | 10 + .../polywrap_core/utils/init_wrapper.pyi | 10 + .../polywrap_core/utils/instance_of.pyi | 9 + .../polywrap_core/utils/maybe_async.pyi | 12 + python-monorepo.code-workspace | 4 + 32 files changed, 2092 insertions(+) create mode 100644 packages/polywrap-client-config-builder/README.md create mode 100644 packages/polywrap-client-config-builder/poetry.lock create mode 100644 packages/polywrap-client-config-builder/polywrap_client_config_builder/__init__.py create mode 100644 packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py create mode 100644 packages/polywrap-client-config-builder/pyproject.toml create mode 100644 packages/polywrap-client-config-builder/tests/test_client_config_builder.py create mode 100644 packages/polywrap-client-config-builder/tox.ini create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/__init__.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/types/__init__.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/types/client.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/types/env.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/types/file_reader.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/types/invoke.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/types/uri.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_package.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_package_wrapper.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_resolution_context.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_resolution_step.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_resolver.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_resolver_handler.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_wrapper.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/types/wasm_package.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/types/wrapper.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/uri_resolution/__init__.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/uri_resolution/uri_resolution_context.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/uri_resolution/uri_resolution_result.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/utils/__init__.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/utils/get_env_from_uri_history.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/utils/init_wrapper.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/utils/instance_of.pyi create mode 100644 packages/polywrap-client-config-builder/typings/polywrap_core/utils/maybe_async.pyi diff --git a/packages/polywrap-client-config-builder/README.md b/packages/polywrap-client-config-builder/README.md new file mode 100644 index 00000000..5778eefa --- /dev/null +++ b/packages/polywrap-client-config-builder/README.md @@ -0,0 +1,57 @@ +# TODO: update from JS client readme + +# PolywrapClient Config Builder + +A DSL for building the PolywrapClient config object. + +Supports building configs using method chaining or imperatively. + +```typescript= +import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; +import { PolywrapClient } from "@polywrap/client-js"; + +const config = new ClientConfigBuilder() + .add({ + envs: [/*...*/], + interfaces: [/*...*/], + plugins: [/*...*/], + redirects: [/*...*/], + uriResolvers: [/*...*/], + }) + .add({/*...*/}) + .build(); + +// ... + +const builder = new ClientConfigBuilder(); + +builder.addDefaults(); + +builder.add({ + plugins: [/*...*/] +}); + +builder.add({ + envs: [/*...*/] +}); + +const config = builder.build(); + + +// ... + +let client = new PolywrapClient(config); +``` + +## Methods + +The config builder currently supports 3 methods: + +#### `add(config: Partial)` +Appends each property of the supplied config object to the corresponding array of the builder's config. + +#### `addDefaults()` +Adds the `defaultClientConfig` object. + +#### `build()` +Returns a sanitized config object from the builder's config. diff --git a/packages/polywrap-client-config-builder/poetry.lock b/packages/polywrap-client-config-builder/poetry.lock new file mode 100644 index 00000000..49b6d404 --- /dev/null +++ b/packages/polywrap-client-config-builder/poetry.lock @@ -0,0 +1,1304 @@ +[[package]] +name = "astroid" +version = "2.12.12" +description = "An abstract syntax tree for Python with inference support." +category = "dev" +optional = false +python-versions = ">=3.7.2" + +[package.dependencies] +lazy-object-proxy = ">=1.4.0" +wrapt = [ + {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, + {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, +] + +[[package]] +name = "attrs" +version = "22.1.0" +description = "Classes Without Boilerplate" +category = "dev" +optional = false +python-versions = ">=3.5" + +[package.extras] +dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] +docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] +tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] +tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] + +[[package]] +name = "backoff" +version = "2.2.1" +description = "Function decoration for backoff and retry" +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[[package]] +name = "bandit" +version = "1.7.4" +description = "Security oriented static analyser for python code." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""} +GitPython = ">=1.0.1" +PyYAML = ">=5.3.1" +stevedore = ">=1.20.0" +toml = {version = "*", optional = true, markers = "extra == \"toml\""} + +[package.extras] +test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "toml"] +toml = ["toml"] +yaml = ["PyYAML"] + +[[package]] +name = "black" +version = "22.10.0" +description = "The uncompromising code formatter." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "click" +version = "8.1.3" +description = "Composable command line interface toolkit" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.5" +description = "Cross-platform colored terminal text." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "dill" +version = "0.3.5.1" +description = "serialize all of python" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" + +[package.extras] +graph = ["objgraph (>=1.7.2)"] + +[[package]] +name = "distlib" +version = "0.3.6" +description = "Distribution utilities" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "filelock" +version = "3.8.0" +description = "A platform independent file lock." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo (>=2022.6.21)", "sphinx (>=5.1.1)", "sphinx-autodoc-typehints (>=1.19.1)"] +testing = ["covdefaults (>=2.2)", "coverage (>=6.4.2)", "pytest (>=7.1.2)", "pytest-cov (>=3)", "pytest-timeout (>=2.1)"] + +[[package]] +name = "gitdb" +version = "4.0.9" +description = "Git Object Database" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "GitPython" +version = "3.1.29" +description = "GitPython is a python library used to interact with Git repositories" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[[package]] +name = "gql" +version = "3.4.0" +description = "GraphQL client for Python" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +backoff = ">=1.11.1,<3.0" +graphql-core = ">=3.2,<3.3" +yarl = ">=1.6,<2.0" + +[package.extras] +aiohttp = ["aiohttp (>=3.7.1,<3.9.0)"] +all = ["aiohttp (>=3.7.1,<3.9.0)", "botocore (>=1.21,<2)", "requests (>=2.26,<3)", "requests-toolbelt (>=0.9.1,<1)", "urllib3 (>=1.26)", "websockets (>=10,<11)", "websockets (>=9,<10)"] +botocore = ["botocore (>=1.21,<2)"] +dev = ["aiofiles", "aiohttp (>=3.7.1,<3.9.0)", "black (==22.3.0)", "botocore (>=1.21,<2)", "check-manifest (>=0.42,<1)", "flake8 (==3.8.1)", "isort (==4.3.21)", "mock (==4.0.2)", "mypy (==0.910)", "parse (==1.15.0)", "pytest (==6.2.5)", "pytest-asyncio (==0.16.0)", "pytest-console-scripts (==1.3.1)", "pytest-cov (==3.0.0)", "requests (>=2.26,<3)", "requests-toolbelt (>=0.9.1,<1)", "sphinx (>=3.0.0,<4)", "sphinx-argparse (==0.2.5)", "sphinx-rtd-theme (>=0.4,<1)", "types-aiofiles", "types-mock", "types-requests", "urllib3 (>=1.26)", "vcrpy (==4.0.2)", "websockets (>=10,<11)", "websockets (>=9,<10)"] +requests = ["requests (>=2.26,<3)", "requests-toolbelt (>=0.9.1,<1)", "urllib3 (>=1.26)"] +test = ["aiofiles", "aiohttp (>=3.7.1,<3.9.0)", "botocore (>=1.21,<2)", "mock (==4.0.2)", "parse (==1.15.0)", "pytest (==6.2.5)", "pytest-asyncio (==0.16.0)", "pytest-console-scripts (==1.3.1)", "pytest-cov (==3.0.0)", "requests (>=2.26,<3)", "requests-toolbelt (>=0.9.1,<1)", "urllib3 (>=1.26)", "vcrpy (==4.0.2)", "websockets (>=10,<11)", "websockets (>=9,<10)"] +test_no_transport = ["aiofiles", "mock (==4.0.2)", "parse (==1.15.0)", "pytest (==6.2.5)", "pytest-asyncio (==0.16.0)", "pytest-console-scripts (==1.3.1)", "pytest-cov (==3.0.0)", "vcrpy (==4.0.2)"] +websockets = ["websockets (>=10,<11)", "websockets (>=9,<10)"] + +[[package]] +name = "graphql-core" +version = "3.2.3" +description = "GraphQL implementation for Python, a port of GraphQL.js, the JavaScript reference implementation for GraphQL." +category = "main" +optional = false +python-versions = ">=3.6,<4" + +[[package]] +name = "idna" +version = "3.4" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "iniconfig" +version = "1.1.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "isort" +version = "5.10.1" +description = "A Python utility / library to sort Python imports." +category = "dev" +optional = false +python-versions = ">=3.6.1,<4.0" + +[package.extras] +colors = ["colorama (>=0.4.3,<0.5.0)"] +pipfile_deprecated_finder = ["pipreqs", "requirementslib"] +plugins = ["setuptools"] +requirements_deprecated_finder = ["pip-api", "pipreqs"] + +[[package]] +name = "lazy-object-proxy" +version = "1.7.1" +description = "A fast and thorough lazy object proxy." +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "mccabe" +version = "0.7.0" +description = "McCabe checker, plugin for flake8" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "msgpack" +version = "1.0.4" +description = "MessagePack serializer" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "multidict" +version = "6.0.2" +description = "multidict implementation" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "mypy-extensions" +version = "0.4.3" +description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "nodeenv" +version = "1.7.0" +description = "Node.js virtual environment builder" +category = "dev" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" + +[package.dependencies] +setuptools = "*" + +[[package]] +name = "packaging" +version = "21.3" +description = "Core utilities for Python packages" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + +[[package]] +name = "pathspec" +version = "0.10.1" +description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "pbr" +version = "5.11.0" +description = "Python Build Reasonableness" +category = "dev" +optional = false +python-versions = ">=2.6" + +[[package]] +name = "platformdirs" +version = "2.5.2" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx (>=4)", "sphinx-autodoc-typehints (>=1.12)"] +test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] + +[[package]] +name = "pluggy" +version = "1.0.0" +description = "plugin and hook calling mechanisms for python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "polywrap-client" +version = "0.1.0" +description = "" +category = "main" +optional = false +python-versions = "^3.10" +develop = true + +[package.dependencies] +polywrap-core = {path = "../polywrap-core", develop = true} +polywrap-uri-resolvers = {path = "../polywrap-uri-resolvers", develop = true} +pycryptodome = "^3.15.0" +pysha3 = "^1.0.2" +result = "^0.8.0" +unsync = "^1.4.0" +wasmtime = "^1.0.1" + +[package.source] +type = "directory" +url = "../polywrap-client" + +[[package]] +name = "polywrap-core" +version = "0.1.0" +description = "" +category = "main" +optional = false +python-versions = "^3.10" +develop = true + +[package.dependencies] +gql = "3.4.0" +graphql-core = "^3.2.1" +result = "^0.8.0" + +[package.source] +type = "directory" +url = "../polywrap-core" + +[[package]] +name = "polywrap-msgpack" +version = "0.1.0" +description = "WRAP msgpack encoding" +category = "main" +optional = false +python-versions = "^3.10" +develop = true + +[package.dependencies] +msgpack = "^1.0.4" + +[package.source] +type = "directory" +url = "../polywrap-msgpack" + +[[package]] +name = "polywrap-uri-resolvers" +version = "0.1.0" +description = "" +category = "main" +optional = false +python-versions = "^3.10" +develop = true + +[package.dependencies] +polywrap-core = {path = "../polywrap-core", develop = true} +polywrap-wasm = {path = "../polywrap-wasm", develop = true} +result = "^0.8.0" +wasmtime = "^1.0.1" + +[package.source] +type = "directory" +url = "../polywrap-uri-resolvers" + +[[package]] +name = "polywrap-wasm" +version = "0.1.0" +description = "" +category = "main" +optional = false +python-versions = "^3.10" +develop = true + +[package.dependencies] +polywrap-core = {path = "../polywrap-core", develop = true} +polywrap-msgpack = {path = "../polywrap-msgpack", develop = true} +unsync = "^1.4.0" +wasmtime = "^1.0.1" + +[package.source] +type = "directory" +url = "../polywrap-wasm" + +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "pycryptodome" +version = "3.15.0" +description = "Cryptographic library for Python" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "pydocstyle" +version = "6.1.1" +description = "Python docstring style checker" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +snowballstemmer = "*" + +[package.extras] +toml = ["toml"] + +[[package]] +name = "pylint" +version = "2.15.4" +description = "python code static checker" +category = "dev" +optional = false +python-versions = ">=3.7.2" + +[package.dependencies] +astroid = ">=2.12.11,<=2.14.0-dev0" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +dill = ">=0.2" +isort = ">=4.2.5,<6" +mccabe = ">=0.6,<0.8" +platformdirs = ">=2.2.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomlkit = ">=0.10.1" + +[package.extras] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] + +[[package]] +name = "pyparsing" +version = "3.0.9" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "dev" +optional = false +python-versions = ">=3.6.8" + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pyright" +version = "1.1.276" +description = "Command line wrapper for pyright" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +nodeenv = ">=1.6.0" + +[package.extras] +all = ["twine (>=3.4.1)"] +dev = ["twine (>=3.4.1)"] + +[[package]] +name = "pysha3" +version = "1.0.2" +description = "SHA-3 (Keccak) for Python 2.7 - 3.5" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "pytest" +version = "7.1.3" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +attrs = ">=19.2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +py = ">=1.8.2" +tomli = ">=1.0.0" + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] + +[[package]] +name = "pytest-asyncio" +version = "0.19.0" +description = "Pytest support for asyncio" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +pytest = ">=6.1.0" + +[package.extras] +testing = ["coverage (>=6.2)", "flaky (>=3.5.0)", "hypothesis (>=5.7.1)", "mypy (>=0.931)", "pytest-trio (>=0.7.0)"] + +[[package]] +name = "PyYAML" +version = "6.0" +description = "YAML parser and emitter for Python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "result" +version = "0.8.0" +description = "A Rust-like result type for Python" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "setuptools" +version = "65.5.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mock", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "smmap" +version = "5.0.0" +description = "A pure Python implementation of a sliding window memory map manager" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "stevedore" +version = "4.1.0" +description = "Manage dynamic plugins for Python applications" +category = "dev" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +pbr = ">=2.0.0,<2.1.0 || >2.1.0" + +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +category = "dev" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "dev" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "tomlkit" +version = "0.11.5" +description = "Style preserving TOML library" +category = "dev" +optional = false +python-versions = ">=3.6,<4.0" + +[[package]] +name = "tox" +version = "3.26.0" +description = "tox is a generic virtualenv management and test command line tool" +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[package.dependencies] +colorama = {version = ">=0.4.1", markers = "platform_system == \"Windows\""} +filelock = ">=3.0.0" +packaging = ">=14" +pluggy = ">=0.12.0" +py = ">=1.4.17" +six = ">=1.14.0" +tomli = {version = ">=2.0.1", markers = "python_version >= \"3.7\" and python_version < \"3.11\""} +virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2,<20.0.3 || >20.0.3,<20.0.4 || >20.0.4,<20.0.5 || >20.0.5,<20.0.6 || >20.0.6,<20.0.7 || >20.0.7" + +[package.extras] +docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-autoprogram (>=0.1.5)", "towncrier (>=18.5.0)"] +testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psutil (>=5.6.1)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)"] + +[[package]] +name = "tox-poetry" +version = "0.4.1" +description = "Tox poetry plugin" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +pluggy = "*" +toml = "*" +tox = {version = ">=3.7.0", markers = "python_version >= \"3\""} + +[package.extras] +test = ["coverage", "pycodestyle", "pylint", "pytest"] + +[[package]] +name = "unsync" +version = "1.4.0" +description = "Unsynchronize asyncio" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "virtualenv" +version = "20.16.5" +description = "Virtual Python Environment builder" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +distlib = ">=0.3.5,<1" +filelock = ">=3.4.1,<4" +platformdirs = ">=2.4,<3" + +[package.extras] +docs = ["proselint (>=0.13)", "sphinx (>=5.1.1)", "sphinx-argparse (>=0.3.1)", "sphinx-rtd-theme (>=1)", "towncrier (>=21.9)"] +testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=21.3)", "pytest (>=7.0.1)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.6.1)", "pytest-randomly (>=3.10.3)", "pytest-timeout (>=2.1)"] + +[[package]] +name = "wasmtime" +version = "1.0.1" +description = "A WebAssembly runtime powered by Wasmtime" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +testing = ["coverage", "flake8 (==4.0.1)", "pycparser", "pytest", "pytest-flake8", "pytest-mypy"] + +[[package]] +name = "wrapt" +version = "1.14.1" +description = "Module for decorators, wrappers and monkey patching." +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[[package]] +name = "yarl" +version = "1.8.1" +description = "Yet another URL library" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" + +[metadata] +lock-version = "1.1" +python-versions = "^3.10" +content-hash = "622bd70194dbb37cffab77cd1907c23f174f6628f85ccda69f2e41df2977c791" + +[metadata.files] +astroid = [ + {file = "astroid-2.12.12-py3-none-any.whl", hash = "sha256:72702205200b2a638358369d90c222d74ebc376787af8fb2f7f2a86f7b5cc85f"}, + {file = "astroid-2.12.12.tar.gz", hash = "sha256:1c00a14f5a3ed0339d38d2e2e5b74ea2591df5861c0936bb292b84ccf3a78d83"}, +] +attrs = [ + {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, + {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, +] +backoff = [ + {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, + {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, +] +bandit = [ + {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"}, + {file = "bandit-1.7.4.tar.gz", hash = "sha256:2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"}, +] +black = [ + {file = "black-22.10.0-1fixedarch-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:5cc42ca67989e9c3cf859e84c2bf014f6633db63d1cbdf8fdb666dcd9e77e3fa"}, + {file = "black-22.10.0-1fixedarch-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5d8f74030e67087b219b032aa33a919fae8806d49c867846bfacde57f43972ef"}, + {file = "black-22.10.0-1fixedarch-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:197df8509263b0b8614e1df1756b1dd41be6738eed2ba9e9769f3880c2b9d7b6"}, + {file = "black-22.10.0-1fixedarch-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:2644b5d63633702bc2c5f3754b1b475378fbbfb481f62319388235d0cd104c2d"}, + {file = "black-22.10.0-1fixedarch-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:e41a86c6c650bcecc6633ee3180d80a025db041a8e2398dcc059b3afa8382cd4"}, + {file = "black-22.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2039230db3c6c639bd84efe3292ec7b06e9214a2992cd9beb293d639c6402edb"}, + {file = "black-22.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ff67aec0a47c424bc99b71005202045dc09270da44a27848d534600ac64fc7"}, + {file = "black-22.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:819dc789f4498ecc91438a7de64427c73b45035e2e3680c92e18795a839ebb66"}, + {file = "black-22.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5b9b29da4f564ba8787c119f37d174f2b69cdfdf9015b7d8c5c16121ddc054ae"}, + {file = "black-22.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b49776299fece66bffaafe357d929ca9451450f5466e997a7285ab0fe28e3b"}, + {file = "black-22.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:21199526696b8f09c3997e2b4db8d0b108d801a348414264d2eb8eb2532e540d"}, + {file = "black-22.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e464456d24e23d11fced2bc8c47ef66d471f845c7b7a42f3bd77bf3d1789650"}, + {file = "black-22.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9311e99228ae10023300ecac05be5a296f60d2fd10fff31cf5c1fa4ca4b1988d"}, + {file = "black-22.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fba8a281e570adafb79f7755ac8721b6cf1bbf691186a287e990c7929c7692ff"}, + {file = "black-22.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:915ace4ff03fdfff953962fa672d44be269deb2eaf88499a0f8805221bc68c87"}, + {file = "black-22.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:444ebfb4e441254e87bad00c661fe32df9969b2bf224373a448d8aca2132b395"}, + {file = "black-22.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:974308c58d057a651d182208a484ce80a26dac0caef2895836a92dd6ebd725e0"}, + {file = "black-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ef3925f30e12a184889aac03d77d031056860ccae8a1e519f6cbb742736383"}, + {file = "black-22.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:432247333090c8c5366e69627ccb363bc58514ae3e63f7fc75c54b1ea80fa7de"}, + {file = "black-22.10.0-py3-none-any.whl", hash = "sha256:c957b2b4ea88587b46cf49d1dc17681c1e672864fd7af32fc1e9664d572b3458"}, + {file = "black-22.10.0.tar.gz", hash = "sha256:f513588da599943e0cde4e32cc9879e825d58720d6557062d1098c5ad80080e1"}, +] +click = [ + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, +] +colorama = [ + {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, + {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, +] +dill = [ + {file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"}, + {file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"}, +] +distlib = [ + {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, + {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, +] +filelock = [ + {file = "filelock-3.8.0-py3-none-any.whl", hash = "sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4"}, + {file = "filelock-3.8.0.tar.gz", hash = "sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc"}, +] +gitdb = [ + {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, + {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"}, +] +GitPython = [ + {file = "GitPython-3.1.29-py3-none-any.whl", hash = "sha256:41eea0deec2deea139b459ac03656f0dd28fc4a3387240ec1d3c259a2c47850f"}, + {file = "GitPython-3.1.29.tar.gz", hash = "sha256:cc36bfc4a3f913e66805a28e84703e419d9c264c1077e537b54f0e1af85dbefd"}, +] +gql = [ + {file = "gql-3.4.0-py2.py3-none-any.whl", hash = "sha256:59c8a0b8f0a2f3b0b2ff970c94de86f82f65cb1da3340bfe57143e5f7ea82f71"}, + {file = "gql-3.4.0.tar.gz", hash = "sha256:ca81aa8314fa88a8c57dd1ce34941278e0c352d762eb721edcba0387829ea7c0"}, +] +graphql-core = [ + {file = "graphql-core-3.2.3.tar.gz", hash = "sha256:06d2aad0ac723e35b1cb47885d3e5c45e956a53bc1b209a9fc5369007fe46676"}, + {file = "graphql_core-3.2.3-py3-none-any.whl", hash = "sha256:5766780452bd5ec8ba133f8bf287dc92713e3868ddd83aee4faab9fc3e303dc3"}, +] +idna = [ + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] +iniconfig = [ + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, +] +isort = [ + {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, + {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, +] +lazy-object-proxy = [ + {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a57d51ed2997e97f3b8e3500c984db50a554bb5db56c50b5dab1b41339b37e36"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd45683c3caddf83abbb1249b653a266e7069a09f486daa8863fb0e7496a9fdb"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8561da8b3dd22d696244d6d0d5330618c993a215070f473b699e00cf1f3f6443"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fccdf7c2c5821a8cbd0a9440a456f5050492f2270bd54e94360cac663398739b"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-win32.whl", hash = "sha256:898322f8d078f2654d275124a8dd19b079080ae977033b713f677afcfc88e2b9"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:85b232e791f2229a4f55840ed54706110c80c0a210d076eee093f2b2e33e1bfd"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:46ff647e76f106bb444b4533bb4153c7370cdf52efc62ccfc1a28bdb3cc95442"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12f3bb77efe1367b2515f8cb4790a11cffae889148ad33adad07b9b55e0ab22c"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c19814163728941bb871240d45c4c30d33b8a2e85972c44d4e63dd7107faba44"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e40f2013d96d30217a51eeb1db28c9ac41e9d0ee915ef9d00da639c5b63f01a1"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2052837718516a94940867e16b1bb10edb069ab475c3ad84fd1e1a6dd2c0fcfc"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win32.whl", hash = "sha256:6a24357267aa976abab660b1d47a34aaf07259a0c3859a34e536f1ee6e76b5bb"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6aff3fe5de0831867092e017cf67e2750c6a1c7d88d84d2481bd84a2e019ec35"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6a6e94c7b02641d1311228a102607ecd576f70734dc3d5e22610111aeacba8a0"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ce15276a1a14549d7e81c243b887293904ad2d94ad767f42df91e75fd7b5b6"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e368b7f7eac182a59ff1f81d5f3802161932a41dc1b1cc45c1f757dc876b5d2c"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6ecbb350991d6434e1388bee761ece3260e5228952b1f0c46ffc800eb313ff42"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:553b0f0d8dbf21890dd66edd771f9b1b5f51bd912fa5f26de4449bfc5af5e029"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win32.whl", hash = "sha256:c7a683c37a8a24f6428c28c561c80d5f4fd316ddcf0c7cab999b15ab3f5c5c69"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:df2631f9d67259dc9620d831384ed7732a198eb434eadf69aea95ad18c587a28"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07fa44286cda977bd4803b656ffc1c9b7e3bc7dff7d34263446aec8f8c96f88a"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dca6244e4121c74cc20542c2ca39e5c4a5027c81d112bfb893cf0790f96f57e"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91ba172fc5b03978764d1df5144b4ba4ab13290d7bab7a50f12d8117f8630c38"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b9e89b87c707dd769c4ea91f7a31538888aad05c116a59820f28d59b3ebfe25a"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-win32.whl", hash = "sha256:9d166602b525bf54ac994cf833c385bfcc341b364e3ee71e3bf5a1336e677b55"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:8f3953eb575b45480db6568306893f0bd9d8dfeeebd46812aa09ca9579595148"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dd7ed7429dbb6c494aa9bc4e09d94b778a3579be699f9d67da7e6804c422d3de"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70ed0c2b380eb6248abdef3cd425fc52f0abd92d2b07ce26359fcbc399f636ad"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7096a5e0c1115ec82641afbdd70451a144558ea5cf564a896294e346eb611be1"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f769457a639403073968d118bc70110e7dce294688009f5c24ab78800ae56dc8"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:39b0e26725c5023757fc1ab2a89ef9d7ab23b84f9251e28f9cc114d5b59c1b09"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-win32.whl", hash = "sha256:2130db8ed69a48a3440103d4a520b89d8a9405f1b06e2cc81640509e8bf6548f"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61"}, + {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, +] +mccabe = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] +msgpack = [ + {file = "msgpack-1.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4ab251d229d10498e9a2f3b1e68ef64cb393394ec477e3370c457f9430ce9250"}, + {file = "msgpack-1.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:112b0f93202d7c0fef0b7810d465fde23c746a2d482e1e2de2aafd2ce1492c88"}, + {file = "msgpack-1.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:002b5c72b6cd9b4bafd790f364b8480e859b4712e91f43014fe01e4f957b8467"}, + {file = "msgpack-1.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35bc0faa494b0f1d851fd29129b2575b2e26d41d177caacd4206d81502d4c6a6"}, + {file = "msgpack-1.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4733359808c56d5d7756628736061c432ded018e7a1dff2d35a02439043321aa"}, + {file = "msgpack-1.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb514ad14edf07a1dbe63761fd30f89ae79b42625731e1ccf5e1f1092950eaa6"}, + {file = "msgpack-1.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c23080fdeec4716aede32b4e0ef7e213c7b1093eede9ee010949f2a418ced6ba"}, + {file = "msgpack-1.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:49565b0e3d7896d9ea71d9095df15b7f75a035c49be733051c34762ca95bbf7e"}, + {file = "msgpack-1.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:aca0f1644d6b5a73eb3e74d4d64d5d8c6c3d577e753a04c9e9c87d07692c58db"}, + {file = "msgpack-1.0.4-cp310-cp310-win32.whl", hash = "sha256:0dfe3947db5fb9ce52aaea6ca28112a170db9eae75adf9339a1aec434dc954ef"}, + {file = "msgpack-1.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dea20515f660aa6b7e964433b1808d098dcfcabbebeaaad240d11f909298075"}, + {file = "msgpack-1.0.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e83f80a7fec1a62cf4e6c9a660e39c7f878f603737a0cdac8c13131d11d97f52"}, + {file = "msgpack-1.0.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c11a48cf5e59026ad7cb0dc29e29a01b5a66a3e333dc11c04f7e991fc5510a9"}, + {file = "msgpack-1.0.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1276e8f34e139aeff1c77a3cefb295598b504ac5314d32c8c3d54d24fadb94c9"}, + {file = "msgpack-1.0.4-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c9566f2c39ccced0a38d37c26cc3570983b97833c365a6044edef3574a00c08"}, + {file = "msgpack-1.0.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:fcb8a47f43acc113e24e910399376f7277cf8508b27e5b88499f053de6b115a8"}, + {file = "msgpack-1.0.4-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:76ee788122de3a68a02ed6f3a16bbcd97bc7c2e39bd4d94be2f1821e7c4a64e6"}, + {file = "msgpack-1.0.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0a68d3ac0104e2d3510de90a1091720157c319ceeb90d74f7b5295a6bee51bae"}, + {file = "msgpack-1.0.4-cp36-cp36m-win32.whl", hash = "sha256:85f279d88d8e833ec015650fd15ae5eddce0791e1e8a59165318f371158efec6"}, + {file = "msgpack-1.0.4-cp36-cp36m-win_amd64.whl", hash = "sha256:c1683841cd4fa45ac427c18854c3ec3cd9b681694caf5bff04edb9387602d661"}, + {file = "msgpack-1.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a75dfb03f8b06f4ab093dafe3ddcc2d633259e6c3f74bb1b01996f5d8aa5868c"}, + {file = "msgpack-1.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9667bdfdf523c40d2511f0e98a6c9d3603be6b371ae9a238b7ef2dc4e7a427b0"}, + {file = "msgpack-1.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11184bc7e56fd74c00ead4f9cc9a3091d62ecb96e97653add7a879a14b003227"}, + {file = "msgpack-1.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac5bd7901487c4a1dd51a8c58f2632b15d838d07ceedaa5e4c080f7190925bff"}, + {file = "msgpack-1.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1e91d641d2bfe91ba4c52039adc5bccf27c335356055825c7f88742c8bb900dd"}, + {file = "msgpack-1.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2a2df1b55a78eb5f5b7d2a4bb221cd8363913830145fad05374a80bf0877cb1e"}, + {file = "msgpack-1.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:545e3cf0cf74f3e48b470f68ed19551ae6f9722814ea969305794645da091236"}, + {file = "msgpack-1.0.4-cp37-cp37m-win32.whl", hash = "sha256:2cc5ca2712ac0003bcb625c96368fd08a0f86bbc1a5578802512d87bc592fe44"}, + {file = "msgpack-1.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:eba96145051ccec0ec86611fe9cf693ce55f2a3ce89c06ed307de0e085730ec1"}, + {file = "msgpack-1.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:7760f85956c415578c17edb39eed99f9181a48375b0d4a94076d84148cf67b2d"}, + {file = "msgpack-1.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:449e57cc1ff18d3b444eb554e44613cffcccb32805d16726a5494038c3b93dab"}, + {file = "msgpack-1.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d603de2b8d2ea3f3bcb2efe286849aa7a81531abc52d8454da12f46235092bcb"}, + {file = "msgpack-1.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f5d88c99f64c456413d74a975bd605a9b0526293218a3b77220a2c15458ba9"}, + {file = "msgpack-1.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6916c78f33602ecf0509cc40379271ba0f9ab572b066bd4bdafd7434dee4bc6e"}, + {file = "msgpack-1.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81fc7ba725464651190b196f3cd848e8553d4d510114a954681fd0b9c479d7e1"}, + {file = "msgpack-1.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d5b5b962221fa2c5d3a7f8133f9abffc114fe218eb4365e40f17732ade576c8e"}, + {file = "msgpack-1.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:77ccd2af37f3db0ea59fb280fa2165bf1b096510ba9fe0cc2bf8fa92a22fdb43"}, + {file = "msgpack-1.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b17be2478b622939e39b816e0aa8242611cc8d3583d1cd8ec31b249f04623243"}, + {file = "msgpack-1.0.4-cp38-cp38-win32.whl", hash = "sha256:2bb8cdf50dd623392fa75525cce44a65a12a00c98e1e37bf0fb08ddce2ff60d2"}, + {file = "msgpack-1.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:26b8feaca40a90cbe031b03d82b2898bf560027160d3eae1423f4a67654ec5d6"}, + {file = "msgpack-1.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:462497af5fd4e0edbb1559c352ad84f6c577ffbbb708566a0abaaa84acd9f3ae"}, + {file = "msgpack-1.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2999623886c5c02deefe156e8f869c3b0aaeba14bfc50aa2486a0415178fce55"}, + {file = "msgpack-1.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f0029245c51fd9473dc1aede1160b0a29f4a912e6b1dd353fa6d317085b219da"}, + {file = "msgpack-1.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed6f7b854a823ea44cf94919ba3f727e230da29feb4a99711433f25800cf747f"}, + {file = "msgpack-1.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0df96d6eaf45ceca04b3f3b4b111b86b33785683d682c655063ef8057d61fd92"}, + {file = "msgpack-1.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a4192b1ab40f8dca3f2877b70e63799d95c62c068c84dc028b40a6cb03ccd0f"}, + {file = "msgpack-1.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e3590f9fb9f7fbc36df366267870e77269c03172d086fa76bb4eba8b2b46624"}, + {file = "msgpack-1.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1576bd97527a93c44fa856770197dec00d223b0b9f36ef03f65bac60197cedf8"}, + {file = "msgpack-1.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:63e29d6e8c9ca22b21846234913c3466b7e4ee6e422f205a2988083de3b08cae"}, + {file = "msgpack-1.0.4-cp39-cp39-win32.whl", hash = "sha256:fb62ea4b62bfcb0b380d5680f9a4b3f9a2d166d9394e9bbd9666c0ee09a3645c"}, + {file = "msgpack-1.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:4d5834a2a48965a349da1c5a79760d94a1a0172fbb5ab6b5b33cbf8447e109ce"}, + {file = "msgpack-1.0.4.tar.gz", hash = "sha256:f5d869c18f030202eb412f08b28d2afeea553d6613aee89e200d7aca7ef01f5f"}, +] +multidict = [ + {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2"}, + {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3"}, + {file = "multidict-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389"}, + {file = "multidict-6.0.2-cp310-cp310-win32.whl", hash = "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293"}, + {file = "multidict-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658"}, + {file = "multidict-6.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15"}, + {file = "multidict-6.0.2-cp37-cp37m-win32.whl", hash = "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc"}, + {file = "multidict-6.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a"}, + {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60"}, + {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86"}, + {file = "multidict-6.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d"}, + {file = "multidict-6.0.2-cp38-cp38-win32.whl", hash = "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57"}, + {file = "multidict-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96"}, + {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c"}, + {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e"}, + {file = "multidict-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937"}, + {file = "multidict-6.0.2-cp39-cp39-win32.whl", hash = "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a"}, + {file = "multidict-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae"}, + {file = "multidict-6.0.2.tar.gz", hash = "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013"}, +] +mypy-extensions = [ + {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, + {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, +] +nodeenv = [ + {file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"}, + {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"}, +] +packaging = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] +pathspec = [ + {file = "pathspec-0.10.1-py3-none-any.whl", hash = "sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93"}, + {file = "pathspec-0.10.1.tar.gz", hash = "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d"}, +] +pbr = [ + {file = "pbr-5.11.0-py2.py3-none-any.whl", hash = "sha256:db2317ff07c84c4c63648c9064a79fe9d9f5c7ce85a9099d4b6258b3db83225a"}, + {file = "pbr-5.11.0.tar.gz", hash = "sha256:b97bc6695b2aff02144133c2e7399d5885223d42b7912ffaec2ca3898e673bfe"}, +] +platformdirs = [ + {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, + {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, +] +pluggy = [ + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] +polywrap-client = [] +polywrap-core = [] +polywrap-msgpack = [] +polywrap-uri-resolvers = [] +polywrap-wasm = [] +py = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] +pycryptodome = [ + {file = "pycryptodome-3.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff7ae90e36c1715a54446e7872b76102baa5c63aa980917f4aa45e8c78d1a3ec"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2ffd8b31561455453ca9f62cb4c24e6b8d119d6d531087af5f14b64bee2c23e6"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:2ea63d46157386c5053cfebcdd9bd8e0c8b7b0ac4a0507a027f5174929403884"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:7c9ed8aa31c146bef65d89a1b655f5f4eab5e1120f55fc297713c89c9e56ff0b"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:5099c9ca345b2f252f0c28e96904643153bae9258647585e5e6f649bb7a1844a"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:2ec709b0a58b539a4f9d33fb8508264c3678d7edb33a68b8906ba914f71e8c13"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-win32.whl", hash = "sha256:fd2184aae6ee2a944aaa49113e6f5787cdc5e4db1eb8edb1aea914bd75f33a0c"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:7e3a8f6ee405b3bd1c4da371b93c31f7027944b2bcce0697022801db93120d83"}, + {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:b9c5b1a1977491533dfd31e01550ee36ae0249d78aae7f632590db833a5012b8"}, + {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:0926f7cc3735033061ef3cf27ed16faad6544b14666410727b31fea85a5b16eb"}, + {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:2aa55aae81f935a08d5a3c2042eb81741a43e044bd8a81ea7239448ad751f763"}, + {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:c3640deff4197fa064295aaac10ab49a0d55ef3d6a54ae1499c40d646655c89f"}, + {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:045d75527241d17e6ef13636d845a12e54660aa82e823b3b3341bcf5af03fa79"}, + {file = "pycryptodome-3.15.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9ee40e2168f1348ae476676a2e938ca80a2f57b14a249d8fe0d3cdf803e5a676"}, + {file = "pycryptodome-3.15.0-cp35-abi3-manylinux1_i686.whl", hash = "sha256:4c3ccad74eeb7b001f3538643c4225eac398c77d617ebb3e57571a897943c667"}, + {file = "pycryptodome-3.15.0-cp35-abi3-manylinux1_x86_64.whl", hash = "sha256:1b22bcd9ec55e9c74927f6b1f69843cb256fb5a465088ce62837f793d9ffea88"}, + {file = "pycryptodome-3.15.0-cp35-abi3-manylinux2010_i686.whl", hash = "sha256:57f565acd2f0cf6fb3e1ba553d0cb1f33405ec1f9c5ded9b9a0a5320f2c0bd3d"}, + {file = "pycryptodome-3.15.0-cp35-abi3-manylinux2010_x86_64.whl", hash = "sha256:4b52cb18b0ad46087caeb37a15e08040f3b4c2d444d58371b6f5d786d95534c2"}, + {file = "pycryptodome-3.15.0-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:092a26e78b73f2530b8bd6b3898e7453ab2f36e42fd85097d705d6aba2ec3e5e"}, + {file = "pycryptodome-3.15.0-cp35-abi3-win32.whl", hash = "sha256:e244ab85c422260de91cda6379e8e986405b4f13dc97d2876497178707f87fc1"}, + {file = "pycryptodome-3.15.0-cp35-abi3-win_amd64.whl", hash = "sha256:c77126899c4b9c9827ddf50565e93955cb3996813c18900c16b2ea0474e130e9"}, + {file = "pycryptodome-3.15.0-pp27-pypy_73-macosx_10_9_x86_64.whl", hash = "sha256:9eaadc058106344a566dc51d3d3a758ab07f8edde013712bc8d22032a86b264f"}, + {file = "pycryptodome-3.15.0-pp27-pypy_73-manylinux1_x86_64.whl", hash = "sha256:ff287bcba9fbeb4f1cccc1f2e90a08d691480735a611ee83c80a7d74ad72b9d9"}, + {file = "pycryptodome-3.15.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:60b4faae330c3624cc5a546ba9cfd7b8273995a15de94ee4538130d74953ec2e"}, + {file = "pycryptodome-3.15.0-pp27-pypy_73-win32.whl", hash = "sha256:a8f06611e691c2ce45ca09bbf983e2ff2f8f4f87313609d80c125aff9fad6e7f"}, + {file = "pycryptodome-3.15.0-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b9cc96e274b253e47ad33ae1fccc36ea386f5251a823ccb50593a935db47fdd2"}, + {file = "pycryptodome-3.15.0-pp36-pypy36_pp73-manylinux1_x86_64.whl", hash = "sha256:ecaaef2d21b365d9c5ca8427ffc10cebed9d9102749fd502218c23cb9a05feb5"}, + {file = "pycryptodome-3.15.0-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:d2a39a66057ab191e5c27211a7daf8f0737f23acbf6b3562b25a62df65ffcb7b"}, + {file = "pycryptodome-3.15.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:9c772c485b27967514d0df1458b56875f4b6d025566bf27399d0c239ff1b369f"}, + {file = "pycryptodome-3.15.0.tar.gz", hash = "sha256:9135dddad504592bcc18b0d2d95ce86c3a5ea87ec6447ef25cfedea12d6018b8"}, +] +pydocstyle = [ + {file = "pydocstyle-6.1.1-py3-none-any.whl", hash = "sha256:6987826d6775056839940041beef5c08cc7e3d71d63149b48e36727f70144dc4"}, + {file = "pydocstyle-6.1.1.tar.gz", hash = "sha256:1d41b7c459ba0ee6c345f2eb9ae827cab14a7533a88c5c6f7e94923f72df92dc"}, +] +pylint = [ + {file = "pylint-2.15.4-py3-none-any.whl", hash = "sha256:629cf1dbdfb6609d7e7a45815a8bb59300e34aa35783b5ac563acaca2c4022e9"}, + {file = "pylint-2.15.4.tar.gz", hash = "sha256:5441e9294335d354b7bad57c1044e5bd7cce25c433475d76b440e53452fa5cb8"}, +] +pyparsing = [ + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, +] +pyright = [ + {file = "pyright-1.1.276-py3-none-any.whl", hash = "sha256:d9388405ea20a55446cb7809b1746158bdf557f9162b476f5aed71173f4ffd2b"}, + {file = "pyright-1.1.276.tar.gz", hash = "sha256:debaa08f6975dd381b9408880e36bb781ba7a1a6cf24b7868e83be41b6c8cb75"}, +] +pysha3 = [ + {file = "pysha3-1.0.2-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:6e6a84efb7856f5d760ee55cd2b446972cb7b835676065f6c4f694913ea8f8d9"}, + {file = "pysha3-1.0.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:f9046d59b3e72aa84f6dae83a040bd1184ebd7fef4e822d38186a8158c89e3cf"}, + {file = "pysha3-1.0.2-cp27-cp27m-win32.whl", hash = "sha256:9fdd28884c5d0b4edfed269b12badfa07f1c89dbc5c9c66dd279833894a9896b"}, + {file = "pysha3-1.0.2-cp27-cp27m-win_amd64.whl", hash = "sha256:41be70b06c8775a9e4d4eeb52f2f6a3f356f17539a54eac61f43a29e42fd453d"}, + {file = "pysha3-1.0.2-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:68c3a60a39f9179b263d29e221c1bd6e01353178b14323c39cc70593c30f21c5"}, + {file = "pysha3-1.0.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:59111c08b8f34495575d12e5f2ce3bafb98bea470bc81e70c8b6df99aef0dd2f"}, + {file = "pysha3-1.0.2-cp33-cp33m-win32.whl", hash = "sha256:571a246308a7b63f15f5aa9651f99cf30f2a6acba18eddf28f1510935968b603"}, + {file = "pysha3-1.0.2-cp33-cp33m-win_amd64.whl", hash = "sha256:93abd775dac570cb9951c4e423bcb2bc6303a9d1dc0dc2b7afa2dd401d195b24"}, + {file = "pysha3-1.0.2-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:11a2ba7a2e1d9669d0052fc8fb30f5661caed5512586ecbeeaf6bf9478ab5c48"}, + {file = "pysha3-1.0.2-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:5ec8da7c5c70a53b5fa99094af3ba8d343955b212bc346a0d25f6ff75853999f"}, + {file = "pysha3-1.0.2-cp34-cp34m-win32.whl", hash = "sha256:9c778fa8b161dc9348dc5cc361e94d54aa5ff18413788f4641f6600d4893a608"}, + {file = "pysha3-1.0.2-cp34-cp34m-win_amd64.whl", hash = "sha256:fd7e66999060d079e9c0e8893e78d8017dad4f59721f6fe0be6307cd32127a07"}, + {file = "pysha3-1.0.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:827b308dc025efe9b6b7bae36c2e09ed0118a81f792d888548188e97b9bf9a3d"}, + {file = "pysha3-1.0.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:4416f16b0f1605c25f627966f76873e432971824778b369bd9ce1bb63d6566d9"}, + {file = "pysha3-1.0.2-cp35-cp35m-win32.whl", hash = "sha256:c93a2676e6588abcfaecb73eb14485c81c63b94fca2000a811a7b4fb5937b8e8"}, + {file = "pysha3-1.0.2-cp35-cp35m-win_amd64.whl", hash = "sha256:684cb01d87ed6ff466c135f1c83e7e4042d0fc668fa20619f581e6add1d38d77"}, + {file = "pysha3-1.0.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:386998ee83e313b6911327174e088021f9f2061cbfa1651b97629b761e9ef5c4"}, + {file = "pysha3-1.0.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:c7c2adcc43836223680ebdf91f1d3373543dc32747c182c8ca2e02d1b69ce030"}, + {file = "pysha3-1.0.2-cp36-cp36m-win32.whl", hash = "sha256:cd5c961b603bd2e6c2b5ef9976f3238a561c58569945d4165efb9b9383b050ef"}, + {file = "pysha3-1.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:0060a66be16665d90c432f55a0ba1f6480590cfb7d2ad389e688a399183474f0"}, + {file = "pysha3-1.0.2.tar.gz", hash = "sha256:fe988e73f2ce6d947220624f04d467faf05f1bbdbc64b0a201296bb3af92739e"}, +] +pytest = [ + {file = "pytest-7.1.3-py3-none-any.whl", hash = "sha256:1377bda3466d70b55e3f5cecfa55bb7cfcf219c7964629b967c37cf0bda818b7"}, + {file = "pytest-7.1.3.tar.gz", hash = "sha256:4f365fec2dff9c1162f834d9f18af1ba13062db0c708bf7b946f8a5c76180c39"}, +] +pytest-asyncio = [ + {file = "pytest-asyncio-0.19.0.tar.gz", hash = "sha256:ac4ebf3b6207259750bc32f4c1d8fcd7e79739edbc67ad0c58dd150b1d072fed"}, + {file = "pytest_asyncio-0.19.0-py3-none-any.whl", hash = "sha256:7a97e37cfe1ed296e2e84941384bdd37c376453912d397ed39293e0916f521fa"}, +] +PyYAML = [ + {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, + {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, + {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, + {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, + {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, + {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, + {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, + {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, + {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, + {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, + {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, + {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, + {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, + {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, + {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, + {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, + {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, + {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, +] +result = [ + {file = "result-0.8.0-py3-none-any.whl", hash = "sha256:d6a6258f32c057a4e0478999c6ce43dcadaf8ea435f58ac601ae2768f93ef243"}, + {file = "result-0.8.0.tar.gz", hash = "sha256:c48c909e92181a075ba358228a3fe161e26d205dad416ad81f27f23515a5626d"}, +] +setuptools = [ + {file = "setuptools-65.5.0-py3-none-any.whl", hash = "sha256:f62ea9da9ed6289bfe868cd6845968a2c854d1427f8548d52cae02a42b4f0356"}, + {file = "setuptools-65.5.0.tar.gz", hash = "sha256:512e5536220e38146176efb833d4a62aa726b7bbff82cfbc8ba9eaa3996e0b17"}, +] +six = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] +smmap = [ + {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, + {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, +] +snowballstemmer = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] +stevedore = [ + {file = "stevedore-4.1.0-py3-none-any.whl", hash = "sha256:3b1cbd592a87315f000d05164941ee5e164899f8fc0ce9a00bb0f321f40ef93e"}, + {file = "stevedore-4.1.0.tar.gz", hash = "sha256:02518a8f0d6d29be8a445b7f2ac63753ff29e8f2a2faa01777568d5500d777a6"}, +] +toml = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] +tomli = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] +tomlkit = [ + {file = "tomlkit-0.11.5-py3-none-any.whl", hash = "sha256:f2ef9da9cef846ee027947dc99a45d6b68a63b0ebc21944649505bf2e8bc5fe7"}, + {file = "tomlkit-0.11.5.tar.gz", hash = "sha256:571854ebbb5eac89abcb4a2e47d7ea27b89bf29e09c35395da6f03dd4ae23d1c"}, +] +tox = [ + {file = "tox-3.26.0-py2.py3-none-any.whl", hash = "sha256:bf037662d7c740d15c9924ba23bb3e587df20598697bb985ac2b49bdc2d847f6"}, + {file = "tox-3.26.0.tar.gz", hash = "sha256:44f3c347c68c2c68799d7d44f1808f9d396fc8a1a500cbc624253375c7ae107e"}, +] +tox-poetry = [ + {file = "tox-poetry-0.4.1.tar.gz", hash = "sha256:2395808e1ce487b5894c10f2202e14702bfa6d6909c0d1e525170d14809ac7ef"}, + {file = "tox_poetry-0.4.1-py2.py3-none-any.whl", hash = "sha256:11d9cd4e51d4cd9484b3ba63f2650ab4cfb4096e5f0682ecf561ddfc3c8e8c92"}, +] +unsync = [ + {file = "unsync-1.4.0.tar.gz", hash = "sha256:a29e0f8952ffb0b3a0453ce436819a5a1ba2febbb5caa707c319f6f98d35f3c5"}, +] +virtualenv = [ + {file = "virtualenv-20.16.5-py3-none-any.whl", hash = "sha256:d07dfc5df5e4e0dbc92862350ad87a36ed505b978f6c39609dc489eadd5b0d27"}, + {file = "virtualenv-20.16.5.tar.gz", hash = "sha256:227ea1b9994fdc5ea31977ba3383ef296d7472ea85be9d6732e42a91c04e80da"}, +] +wasmtime = [ + {file = "wasmtime-1.0.1-py3-none-any.whl", hash = "sha256:20c1df95a3506408dcf2116502720e7cb248f1e98122b868932dbc9bbacb4ebd"}, + {file = "wasmtime-1.0.1-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:9ccb42db2511b49c805b23a87e7c191d34112a9568292d475ec966204ac42bc3"}, + {file = "wasmtime-1.0.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:439960f6fb2a48482c8f7beaa2b491ce684f1599d9bfdd519b5320305edc2f39"}, + {file = "wasmtime-1.0.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:b257ec11ba6d39e3cd9eed4f90c4633bcf3b964219948254244347236fe45172"}, + {file = "wasmtime-1.0.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:f34ac6db5f91ab359566f531dca7c53d2e63f657d5b10ec9cf53d1c29ac718c0"}, + {file = "wasmtime-1.0.1-py3-none-win_amd64.whl", hash = "sha256:0ae7e2d43a5d9da72a884a695049d7b1773717ba059bdb0ad0369e5c1e03a388"}, +] +wrapt = [ + {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, + {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, + {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, + {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, + {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, + {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, + {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, + {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, + {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, + {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, + {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, + {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, + {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, + {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, + {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, + {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, +] +yarl = [ + {file = "yarl-1.8.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:abc06b97407868ef38f3d172762f4069323de52f2b70d133d096a48d72215d28"}, + {file = "yarl-1.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:07b21e274de4c637f3e3b7104694e53260b5fc10d51fb3ec5fed1da8e0f754e3"}, + {file = "yarl-1.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9de955d98e02fab288c7718662afb33aab64212ecb368c5dc866d9a57bf48880"}, + {file = "yarl-1.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ec362167e2c9fd178f82f252b6d97669d7245695dc057ee182118042026da40"}, + {file = "yarl-1.8.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:20df6ff4089bc86e4a66e3b1380460f864df3dd9dccaf88d6b3385d24405893b"}, + {file = "yarl-1.8.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5999c4662631cb798496535afbd837a102859568adc67d75d2045e31ec3ac497"}, + {file = "yarl-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed19b74e81b10b592084a5ad1e70f845f0aacb57577018d31de064e71ffa267a"}, + {file = "yarl-1.8.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e4808f996ca39a6463f45182e2af2fae55e2560be586d447ce8016f389f626f"}, + {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2d800b9c2eaf0684c08be5f50e52bfa2aa920e7163c2ea43f4f431e829b4f0fd"}, + {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6628d750041550c5d9da50bb40b5cf28a2e63b9388bac10fedd4f19236ef4957"}, + {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f5af52738e225fcc526ae64071b7e5342abe03f42e0e8918227b38c9aa711e28"}, + {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:76577f13333b4fe345c3704811ac7509b31499132ff0181f25ee26619de2c843"}, + {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0c03f456522d1ec815893d85fccb5def01ffaa74c1b16ff30f8aaa03eb21e453"}, + {file = "yarl-1.8.1-cp310-cp310-win32.whl", hash = "sha256:ea30a42dc94d42f2ba4d0f7c0ffb4f4f9baa1b23045910c0c32df9c9902cb272"}, + {file = "yarl-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:9130ddf1ae9978abe63808b6b60a897e41fccb834408cde79522feb37fb72fb0"}, + {file = "yarl-1.8.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0ab5a138211c1c366404d912824bdcf5545ccba5b3ff52c42c4af4cbdc2c5035"}, + {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0fb2cb4204ddb456a8e32381f9a90000429489a25f64e817e6ff94879d432fc"}, + {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:85cba594433915d5c9a0d14b24cfba0339f57a2fff203a5d4fd070e593307d0b"}, + {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ca7e596c55bd675432b11320b4eacc62310c2145d6801a1f8e9ad160685a231"}, + {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0f77539733e0ec2475ddcd4e26777d08996f8cd55d2aef82ec4d3896687abda"}, + {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29e256649f42771829974e742061c3501cc50cf16e63f91ed8d1bf98242e5507"}, + {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7fce6cbc6c170ede0221cc8c91b285f7f3c8b9fe28283b51885ff621bbe0f8ee"}, + {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:59ddd85a1214862ce7c7c66457f05543b6a275b70a65de366030d56159a979f0"}, + {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:12768232751689c1a89b0376a96a32bc7633c08da45ad985d0c49ede691f5c0d"}, + {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:b19255dde4b4f4c32e012038f2c169bb72e7f081552bea4641cab4d88bc409dd"}, + {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6c8148e0b52bf9535c40c48faebb00cb294ee577ca069d21bd5c48d302a83780"}, + {file = "yarl-1.8.1-cp37-cp37m-win32.whl", hash = "sha256:de839c3a1826a909fdbfe05f6fe2167c4ab033f1133757b5936efe2f84904c07"}, + {file = "yarl-1.8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:dd032e8422a52e5a4860e062eb84ac94ea08861d334a4bcaf142a63ce8ad4802"}, + {file = "yarl-1.8.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:19cd801d6f983918a3f3a39f3a45b553c015c5aac92ccd1fac619bd74beece4a"}, + {file = "yarl-1.8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6347f1a58e658b97b0a0d1ff7658a03cb79bdbda0331603bed24dd7054a6dea1"}, + {file = "yarl-1.8.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c0da7e44d0c9108d8b98469338705e07f4bb7dab96dbd8fa4e91b337db42548"}, + {file = "yarl-1.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5587bba41399854703212b87071c6d8638fa6e61656385875f8c6dff92b2e461"}, + {file = "yarl-1.8.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31a9a04ecccd6b03e2b0e12e82131f1488dea5555a13a4d32f064e22a6003cfe"}, + {file = "yarl-1.8.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:205904cffd69ae972a1707a1bd3ea7cded594b1d773a0ce66714edf17833cdae"}, + {file = "yarl-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea513a25976d21733bff523e0ca836ef1679630ef4ad22d46987d04b372d57fc"}, + {file = "yarl-1.8.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0b51530877d3ad7a8d47b2fff0c8df3b8f3b8deddf057379ba50b13df2a5eae"}, + {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d2b8f245dad9e331540c350285910b20dd913dc86d4ee410c11d48523c4fd546"}, + {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ab2a60d57ca88e1d4ca34a10e9fb4ab2ac5ad315543351de3a612bbb0560bead"}, + {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:449c957ffc6bc2309e1fbe67ab7d2c1efca89d3f4912baeb8ead207bb3cc1cd4"}, + {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a165442348c211b5dea67c0206fc61366212d7082ba8118c8c5c1c853ea4d82e"}, + {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b3ded839a5c5608eec8b6f9ae9a62cb22cd037ea97c627f38ae0841a48f09eae"}, + {file = "yarl-1.8.1-cp38-cp38-win32.whl", hash = "sha256:c1445a0c562ed561d06d8cbc5c8916c6008a31c60bc3655cdd2de1d3bf5174a0"}, + {file = "yarl-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:56c11efb0a89700987d05597b08a1efcd78d74c52febe530126785e1b1a285f4"}, + {file = "yarl-1.8.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e80ed5a9939ceb6fda42811542f31c8602be336b1fb977bccb012e83da7e4936"}, + {file = "yarl-1.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6afb336e23a793cd3b6476c30f030a0d4c7539cd81649683b5e0c1b0ab0bf350"}, + {file = "yarl-1.8.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4c322cbaa4ed78a8aac89b2174a6df398faf50e5fc12c4c191c40c59d5e28357"}, + {file = "yarl-1.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fae37373155f5ef9b403ab48af5136ae9851151f7aacd9926251ab26b953118b"}, + {file = "yarl-1.8.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5395da939ffa959974577eff2cbfc24b004a2fb6c346918f39966a5786874e54"}, + {file = "yarl-1.8.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:076eede537ab978b605f41db79a56cad2e7efeea2aa6e0fa8f05a26c24a034fb"}, + {file = "yarl-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d1a50e461615747dd93c099f297c1994d472b0f4d2db8a64e55b1edf704ec1c"}, + {file = "yarl-1.8.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7de89c8456525650ffa2bb56a3eee6af891e98f498babd43ae307bd42dca98f6"}, + {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4a88510731cd8d4befaba5fbd734a7dd914de5ab8132a5b3dde0bbd6c9476c64"}, + {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2d93a049d29df172f48bcb09acf9226318e712ce67374f893b460b42cc1380ae"}, + {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:21ac44b763e0eec15746a3d440f5e09ad2ecc8b5f6dcd3ea8cb4773d6d4703e3"}, + {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:d0272228fabe78ce00a3365ffffd6f643f57a91043e119c289aaba202f4095b0"}, + {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:99449cd5366fe4608e7226c6cae80873296dfa0cde45d9b498fefa1de315a09e"}, + {file = "yarl-1.8.1-cp39-cp39-win32.whl", hash = "sha256:8b0af1cf36b93cee99a31a545fe91d08223e64390c5ecc5e94c39511832a4bb6"}, + {file = "yarl-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:de49d77e968de6626ba7ef4472323f9d2e5a56c1d85b7c0e2a190b2173d3b9be"}, + {file = "yarl-1.8.1.tar.gz", hash = "sha256:af887845b8c2e060eb5605ff72b6f2dd2aab7a761379373fd89d314f4752abbf"}, +] diff --git a/packages/polywrap-client-config-builder/polywrap_client_config_builder/__init__.py b/packages/polywrap-client-config-builder/polywrap_client_config_builder/__init__.py new file mode 100644 index 00000000..3238b04f --- /dev/null +++ b/packages/polywrap-client-config-builder/polywrap_client_config_builder/__init__.py @@ -0,0 +1 @@ +from .client_config_builder import * \ No newline at end of file diff --git a/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py b/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py new file mode 100644 index 00000000..e8343ca1 --- /dev/null +++ b/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py @@ -0,0 +1,40 @@ +from polywrap_core import Uri +from dataclasses import dataclass + +from polywrap_core.types.env import Env +from typing import List + +from polywrap_core.types.uri_resolver import IUriResolver + +# from "./bundles" import get_default_client_config + +# Replicate this file +# https://github.com/polywrap/toolchain/blob/origin/packages/js/client-config-builder/src/ClientConfigBuilder.ts + +@dataclass(slots=True, kw_only=True) +class ClientConfigBuilder(): + envs: List[Env] + resolver: IUriResolver + # plugins: + # interfaces + # redirects + + + def add(self): + """ + Appends each property of the supplied config object to the corresponding array of the builder's config. + """ + pass + + def add_defaults(self): + """ + Adds the defaultClientConfig object. + + """ + pass + + def build(self): + """ + Returns a sanitized config object from the builder's config. + """ + pass \ No newline at end of file diff --git a/packages/polywrap-client-config-builder/pyproject.toml b/packages/polywrap-client-config-builder/pyproject.toml new file mode 100644 index 00000000..f6fc249a --- /dev/null +++ b/packages/polywrap-client-config-builder/pyproject.toml @@ -0,0 +1,60 @@ +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" + +[tool.poetry] +name = "polywrap-client-config-builder" +version = "0.1.0" +description = "" +authors = ["Cesar ", "Niraj "] + +[tool.poetry.dependencies] +python = "^3.10" +gql = "3.4.0" +graphql-core = "^3.2.1" +result = "^0.8.0" +polywrap-core = { path = "../polywrap-core", develop = true } +polywrap-client = { path = "../polywrap-client", develop = true } +polywrap-uri-resolvers = { path = "../polywrap-uri-resolvers", develop = true } + +[tool.poetry.dev-dependencies] +pytest = "^7.1.2" +pytest-asyncio = "^0.19.0" +pylint = "^2.15.4" +black = "^22.10.0" +bandit = { version = "^1.7.4", extras = ["toml"]} +tox = "^3.26.0" +tox-poetry = "^0.4.1" +isort = "^5.10.1" +pyright = "^1.1.275" +pydocstyle = "^6.1.1" + +[tool.bandit] +exclude_dirs = ["tests"] + +[tool.black] +target-version = ["py310"] + +[tool.pyright] +# default + +[tool.pytest.ini_options] +asyncio_mode = "auto" +testpaths = [ + "tests" +] + +[tool.pylint] +disable = [ + "too-many-return-statements", +] +ignore = [ + "tests/" +] + +[tool.isort] +profile = "black" +multi_line_output = 3 + +[tool.pydocstyle] +# default \ No newline at end of file diff --git a/packages/polywrap-client-config-builder/tests/test_client_config_builder.py b/packages/polywrap-client-config-builder/tests/test_client_config_builder.py new file mode 100644 index 00000000..81792f4c --- /dev/null +++ b/packages/polywrap-client-config-builder/tests/test_client_config_builder.py @@ -0,0 +1,11 @@ +from ..python_client_config_builder import ClientConfigBuilder + +print(ClientConfigBuilder) + +def test_client_config_builder_adds_default_config(): + ClientConfigBuilder.add_defaults() + pass + +def test_client_config_builder(): + config = ClientConfigBuilder().add({}) + pass diff --git a/packages/polywrap-client-config-builder/tox.ini b/packages/polywrap-client-config-builder/tox.ini new file mode 100644 index 00000000..f3cb0f4e --- /dev/null +++ b/packages/polywrap-client-config-builder/tox.ini @@ -0,0 +1,30 @@ +[tox] +isolated_build = True +envlist = py310 + +[testenv] +commands = + pytest tests/ + +[testenv:lint] +commands = + isort --check-only client_config_builder + black --check client_config_builder + pylint client_config_builder + pydocstyle client_config_builder + +[testenv:typecheck] +commands = + pyright client_config_builder + +[testenv:secure] +commands = + bandit -r client_config_builder -c pyproject.toml + +[testenv:dev] +basepython = python3.10 +usedevelop = True +commands = + isort client_config_builder + black client_config_builder + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/__init__.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/__init__.pyi new file mode 100644 index 00000000..0f0cde3d --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/__init__.pyi @@ -0,0 +1,8 @@ +""" +This type stub file was generated by pyright. +""" + +from .types import * +from .uri_resolution import * +from .utils import * + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/types/__init__.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/types/__init__.pyi new file mode 100644 index 00000000..2ecd9cdf --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/types/__init__.pyi @@ -0,0 +1,19 @@ +""" +This type stub file was generated by pyright. +""" + +from .client import * +from .env import * +from .file_reader import * +from .invoke import * +from .uri import * +from .uri_package import * +from .uri_package_wrapper import * +from .uri_resolution_context import * +from .uri_resolution_step import * +from .uri_resolver import * +from .uri_resolver_handler import * +from .uri_wrapper import * +from .wasm_package import * +from .wrapper import * + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/types/client.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/types/client.pyi new file mode 100644 index 00000000..112e5c60 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/types/client.pyi @@ -0,0 +1,59 @@ +""" +This type stub file was generated by pyright. +""" + +from abc import abstractmethod +from dataclasses import dataclass +from typing import List, Optional, Union +from .env import Env +from .invoke import Invoker +from .uri import Uri +from .uri_resolver import IUriResolver +from .uri_resolver_handler import UriResolverHandler + +@dataclass(slots=True, kw_only=True) +class ClientConfig: + envs: List[Env] = ... + resolver: IUriResolver + + +@dataclass(slots=True, kw_only=True) +class Contextualized: + context_id: Optional[str] = ... + + +@dataclass(slots=True, kw_only=True) +class GetEnvsOptions(Contextualized): + ... + + +@dataclass(slots=True, kw_only=True) +class GetUriResolversOptions(Contextualized): + ... + + +@dataclass(slots=True, kw_only=True) +class GetFileOptions(Contextualized): + path: str + encoding: Optional[str] = ... + + +class Client(Invoker, UriResolverHandler): + @abstractmethod + def get_envs(self, options: Optional[GetEnvsOptions] = ...) -> List[Env]: + ... + + @abstractmethod + def get_env_by_uri(self, uri: Uri, options: Optional[GetEnvsOptions] = ...) -> Union[Env, None]: + ... + + @abstractmethod + def get_uri_resolver(self, options: Optional[GetUriResolversOptions] = ...) -> List[IUriResolver]: + ... + + @abstractmethod + async def get_file(self, uri: Uri, options: GetFileOptions) -> Union[bytes, str]: + ... + + + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/types/env.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/types/env.pyi new file mode 100644 index 00000000..ac0c9ca1 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/types/env.pyi @@ -0,0 +1,21 @@ +""" +This type stub file was generated by pyright. +""" + +from dataclasses import dataclass +from typing import Any, Dict +from .uri import Uri + +@dataclass(slots=True, kw_only=True) +class Env: + """ + this type can be used to set env for a wrapper in the client + + Args: + uri: Uri of wrapper + env: env variables used by the module + """ + uri: Uri + env: Dict[str, Any] = ... + + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/types/file_reader.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/types/file_reader.pyi new file mode 100644 index 00000000..98153c81 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/types/file_reader.pyi @@ -0,0 +1,13 @@ +""" +This type stub file was generated by pyright. +""" + +from abc import ABC, abstractmethod + +class IFileReader(ABC): + @abstractmethod + async def read_file(self, file_path: str) -> bytearray: + ... + + + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/types/invoke.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/types/invoke.pyi new file mode 100644 index 00000000..8f424ca6 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/types/invoke.pyi @@ -0,0 +1,66 @@ +""" +This type stub file was generated by pyright. +""" + +from abc import ABC, abstractmethod +from dataclasses import dataclass +from typing import Any, Dict, Optional, Union +from .uri import Uri +from .uri_resolution_context import IUriResolutionContext + +@dataclass(slots=True, kw_only=True) +class InvokeOptions: + """ + Options required for a wrapper invocation. + + Args: + uri: Uri of the wrapper + method: Method to be executed + args: Arguments for the method, structured as a dictionary + config: Override the client's config for all invokes within this invoke. + context_id: Invoke id used to track query context data set internally. + """ + uri: Uri + method: str + args: Optional[Union[Dict[str, Any], bytes]] = ... + env: Optional[Dict[str, Any]] = ... + resolution_context: Optional[IUriResolutionContext] = ... + + +@dataclass(slots=True, kw_only=True) +class InvokeResult: + """ + Result of a wrapper invocation + + Args: + data: Invoke result data. The type of this value is the return type of the method. + error: Error encountered during the invocation. + """ + result: Optional[Any] = ... + error: Optional[Exception] = ... + + +@dataclass(slots=True, kw_only=True) +class InvokerOptions(InvokeOptions): + encode_result: Optional[bool] = ... + + +@dataclass(slots=True, kw_only=True) +class InvocableResult(InvokeResult): + encoded: Optional[bool] = ... + + +class Invoker(ABC): + @abstractmethod + async def invoke(self, options: InvokerOptions) -> InvokeResult: + ... + + + +class Invocable(ABC): + @abstractmethod + async def invoke(self, invoker: Invoker, options: InvokeOptions) -> InvocableResult: + ... + + + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri.pyi new file mode 100644 index 00000000..9af488b7 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri.pyi @@ -0,0 +1,80 @@ +""" +This type stub file was generated by pyright. +""" + +from dataclasses import dataclass +from typing import Any, Optional, Tuple, Union + +@dataclass(slots=True, kw_only=True) +class UriConfig: + """URI configuration.""" + authority: str + path: str + uri: str + ... + + +class Uri: + """ + A Polywrap URI. + + Some examples of valid URIs are: + wrap://ipfs/QmHASH + wrap://ens/sub.dimain.eth + wrap://fs/directory/file.txt + wrap://uns/domain.crypto + Breaking down the various parts of the URI, as it applies + to [the URI standard](https://tools.ietf.org/html/rfc3986#section-3): + **wrap://** - URI Scheme: differentiates Polywrap URIs. + **ipfs/** - URI Authority: allows the Polywrap URI resolution algorithm to determine + an authoritative URI resolver. + **sub.domain.eth** - URI Path: tells the Authority where the API resides. + """ + def __init__(self, uri: str) -> None: + ... + + def __str__(self) -> str: + ... + + def __repr__(self) -> str: + ... + + def __hash__(self) -> int: + ... + + def __eq__(self, b: object) -> bool: + ... + + def __lt__(self, b: Uri) -> bool: + ... + + @property + def authority(self) -> str: + ... + + @property + def path(self) -> str: + ... + + @property + def uri(self) -> str: + ... + + @staticmethod + def equals(a: Uri, b: Uri) -> bool: + ... + + @staticmethod + def is_uri(value: Any) -> bool: + ... + + @staticmethod + def is_valid_uri(uri: str, parsed: Optional[UriConfig] = ...) -> Tuple[Union[UriConfig, None], bool]: + ... + + @staticmethod + def parse_uri(uri: str) -> UriConfig: + ... + + + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_package.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_package.pyi new file mode 100644 index 00000000..02e512a6 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_package.pyi @@ -0,0 +1,15 @@ +""" +This type stub file was generated by pyright. +""" + +from dataclasses import dataclass +from .uri import Uri +from .wasm_package import IWasmPackage + +@dataclass(slots=True, kw_only=True) +class UriPackage: + uri: Uri + package: IWasmPackage + ... + + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_package_wrapper.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_package_wrapper.pyi new file mode 100644 index 00000000..ef3413de --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_package_wrapper.pyi @@ -0,0 +1,10 @@ +""" +This type stub file was generated by pyright. +""" + +from typing import Union +from .uri import Uri +from .uri_package import UriPackage +from .uri_wrapper import UriWrapper + +UriPackageOrWrapper = Union[Uri, UriWrapper, UriPackage] diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_resolution_context.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_resolution_context.pyi new file mode 100644 index 00000000..90cb7ff4 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_resolution_context.pyi @@ -0,0 +1,44 @@ +""" +This type stub file was generated by pyright. +""" + +from abc import ABC, abstractmethod +from typing import List +from .uri import Uri +from .uri_resolution_step import IUriResolutionStep + +class IUriResolutionContext(ABC): + @abstractmethod + def is_resolving(self, uri: Uri) -> bool: + ... + + @abstractmethod + def start_resolving(self, uri: Uri) -> None: + ... + + @abstractmethod + def stop_resolving(self, uri: Uri) -> None: + ... + + @abstractmethod + def track_step(self, step: IUriResolutionStep) -> None: + ... + + @abstractmethod + def get_history(self) -> List[IUriResolutionStep]: + ... + + @abstractmethod + def get_resolution_path(self) -> List[Uri]: + ... + + @abstractmethod + def create_sub_history_context(self) -> IUriResolutionContext: + ... + + @abstractmethod + def create_sub_context(self) -> IUriResolutionContext: + ... + + + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_resolution_step.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_resolution_step.pyi new file mode 100644 index 00000000..19acdd39 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_resolution_step.pyi @@ -0,0 +1,20 @@ +""" +This type stub file was generated by pyright. +""" + +from dataclasses import dataclass +from typing import Optional, TYPE_CHECKING +from result import Result +from .uri import Uri +from .uri_package_wrapper import UriPackageOrWrapper + +if TYPE_CHECKING: + ... +@dataclass(slots=True, kw_only=True) +class IUriResolutionStep: + source_uri: Uri + result: Result[UriPackageOrWrapper, Exception] + description: Optional[str] = ... + sub_history: Optional[IUriResolutionStep] = ... + + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_resolver.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_resolver.pyi new file mode 100644 index 00000000..82ed244e --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_resolver.pyi @@ -0,0 +1,35 @@ +""" +This type stub file was generated by pyright. +""" + +from abc import ABC, abstractmethod +from dataclasses import dataclass +from typing import Optional, TYPE_CHECKING +from result import Result +from .uri import Uri +from .uri_resolution_context import IUriResolutionContext +from .client import Client +from .uri_package_wrapper import UriPackageOrWrapper + +if TYPE_CHECKING: + ... +@dataclass(slots=True, kw_only=True) +class TryResolveUriOptions: + """ + Args: + no_cache_read: If set to true, the resolveUri function will not use the cache to resolve the uri. + no_cache_write: If set to true, the resolveUri function will not cache the results + config: Override the client's config for all resolutions. + context_id: Id used to track context data set internally. + """ + uri: Uri + resolution_context: Optional[IUriResolutionContext] = ... + + +class IUriResolver(ABC): + @abstractmethod + async def try_resolve_uri(self, uri: Uri, client: Client, resolution_context: IUriResolutionContext) -> Result[UriPackageOrWrapper, Exception]: + ... + + + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_resolver_handler.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_resolver_handler.pyi new file mode 100644 index 00000000..e3171cdc --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_resolver_handler.pyi @@ -0,0 +1,19 @@ +""" +This type stub file was generated by pyright. +""" + +from abc import ABC, abstractmethod +from typing import TYPE_CHECKING +from result import Result +from .uri_resolver import TryResolveUriOptions +from .uri_package_wrapper import UriPackageOrWrapper + +if TYPE_CHECKING: + ... +class UriResolverHandler(ABC): + @abstractmethod + async def try_resolve_uri(self, options: TryResolveUriOptions) -> Result[UriPackageOrWrapper, Exception]: + ... + + + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_wrapper.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_wrapper.pyi new file mode 100644 index 00000000..408529a8 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/types/uri_wrapper.pyi @@ -0,0 +1,15 @@ +""" +This type stub file was generated by pyright. +""" + +from dataclasses import dataclass +from .uri import Uri +from .wrapper import Wrapper + +@dataclass(slots=True, kw_only=True) +class UriWrapper: + uri: Uri + wrapper: Wrapper + ... + + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/types/wasm_package.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/types/wasm_package.pyi new file mode 100644 index 00000000..5e92e511 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/types/wasm_package.pyi @@ -0,0 +1,14 @@ +""" +This type stub file was generated by pyright. +""" + +from abc import ABC, abstractmethod +from .wrapper import Wrapper + +class IWasmPackage(ABC): + @abstractmethod + def create_wrapper(self) -> Wrapper: + ... + + + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/types/wrapper.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/types/wrapper.pyi new file mode 100644 index 00000000..34573312 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/types/wrapper.pyi @@ -0,0 +1,28 @@ +""" +This type stub file was generated by pyright. +""" + +from abc import abstractmethod +from typing import Dict, Union +from .client import Client, GetFileOptions +from .invoke import Invocable, InvocableResult, InvokeOptions, Invoker + +class Wrapper(Invocable): + """ + Invoke the Wrapper based on the provided [[InvokeOptions]] + + Args: + options: Options for this invocation. + client: The client instance requesting this invocation. This client will be used for any sub-invokes that occur. + """ + @abstractmethod + async def invoke(self, options: InvokeOptions, invoker: Invoker) -> InvocableResult: + ... + + @abstractmethod + async def get_file(self, options: GetFileOptions, client: Client) -> Union[str, bytes]: + ... + + + +WrapperCache = Dict[str, Wrapper] diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/uri_resolution/__init__.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/uri_resolution/__init__.pyi new file mode 100644 index 00000000..a4101f84 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/uri_resolution/__init__.pyi @@ -0,0 +1,7 @@ +""" +This type stub file was generated by pyright. +""" + +from .uri_resolution_context import * +from .uri_resolution_result import * + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/uri_resolution/uri_resolution_context.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/uri_resolution/uri_resolution_context.pyi new file mode 100644 index 00000000..bd999afc --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/uri_resolution/uri_resolution_context.pyi @@ -0,0 +1,41 @@ +""" +This type stub file was generated by pyright. +""" + +from typing import List, Optional, Set +from ..types import IUriResolutionContext, IUriResolutionStep, Uri + +class UriResolutionContext(IUriResolutionContext): + resolving_uri_set: Set[Uri] + resolution_path: List[Uri] + history: List[IUriResolutionStep] + __slots__ = ... + def __init__(self, resolving_uri_set: Optional[Set[Uri]] = ..., resolution_path: Optional[List[Uri]] = ..., history: Optional[List[IUriResolutionStep]] = ...) -> None: + ... + + def is_resolving(self, uri: Uri) -> bool: + ... + + def start_resolving(self, uri: Uri) -> None: + ... + + def stop_resolving(self, uri: Uri) -> None: + ... + + def track_step(self, step: IUriResolutionStep) -> None: + ... + + def get_history(self) -> List[IUriResolutionStep]: + ... + + def get_resolution_path(self) -> List[Uri]: + ... + + def create_sub_history_context(self) -> UriResolutionContext: + ... + + def create_sub_context(self) -> UriResolutionContext: + ... + + + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/uri_resolution/uri_resolution_result.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/uri_resolution/uri_resolution_result.pyi new file mode 100644 index 00000000..e0d4c9e0 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/uri_resolution/uri_resolution_result.pyi @@ -0,0 +1,21 @@ +""" +This type stub file was generated by pyright. +""" + +from typing import List, Optional +from result import Result +from ..types import IUriResolutionStep, IWasmPackage, Uri, UriPackageOrWrapper, Wrapper + +class UriResolutionResult: + result: Result[UriPackageOrWrapper, Exception] + history: Optional[List[IUriResolutionStep]] + @staticmethod + def ok(uri: Uri, package: Optional[IWasmPackage] = ..., wrapper: Optional[Wrapper] = ...) -> Result[UriPackageOrWrapper, Exception]: + ... + + @staticmethod + def err(error: Exception) -> Result[UriPackageOrWrapper, Exception]: + ... + + + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/utils/__init__.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/utils/__init__.pyi new file mode 100644 index 00000000..b2a379f8 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/utils/__init__.pyi @@ -0,0 +1,9 @@ +""" +This type stub file was generated by pyright. +""" + +from .get_env_from_uri_history import * +from .init_wrapper import * +from .instance_of import * +from .maybe_async import * + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/utils/get_env_from_uri_history.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/utils/get_env_from_uri_history.pyi new file mode 100644 index 00000000..09366f78 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/utils/get_env_from_uri_history.pyi @@ -0,0 +1,10 @@ +""" +This type stub file was generated by pyright. +""" + +from typing import List, Union +from ..types import Client, Env, Uri + +def get_env_from_uri_history(uri_history: List[Uri], client: Client) -> Union[Env, None]: + ... + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/utils/init_wrapper.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/utils/init_wrapper.pyi new file mode 100644 index 00000000..e235f6b0 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/utils/init_wrapper.pyi @@ -0,0 +1,10 @@ +""" +This type stub file was generated by pyright. +""" + +from typing import Any +from ..types import Wrapper + +async def init_wrapper(package_or_wrapper: Any) -> Wrapper: + ... + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/utils/instance_of.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/utils/instance_of.pyi new file mode 100644 index 00000000..84ac59e0 --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/utils/instance_of.pyi @@ -0,0 +1,9 @@ +""" +This type stub file was generated by pyright. +""" + +from typing import Any + +def instance_of(obj: Any, cls: Any): # -> bool: + ... + diff --git a/packages/polywrap-client-config-builder/typings/polywrap_core/utils/maybe_async.pyi b/packages/polywrap-client-config-builder/typings/polywrap_core/utils/maybe_async.pyi new file mode 100644 index 00000000..e6e6f0be --- /dev/null +++ b/packages/polywrap-client-config-builder/typings/polywrap_core/utils/maybe_async.pyi @@ -0,0 +1,12 @@ +""" +This type stub file was generated by pyright. +""" + +from typing import Any, Awaitable, Callable, Optional, Union + +def is_coroutine(test: Optional[Union[Awaitable[Any], Any]] = ...) -> bool: + ... + +async def execute_maybe_async_function(func: Callable[..., Any], *args: Any) -> Any: + ... + diff --git a/python-monorepo.code-workspace b/python-monorepo.code-workspace index 533cf086..a0000b80 100644 --- a/python-monorepo.code-workspace +++ b/python-monorepo.code-workspace @@ -23,6 +23,10 @@ { "name": "polywrap-wasm", "path": "packages/polywrap-wasm" + }, + { + "name": "polywrap-client-config-builder", + "path": "packages/polywrap-client-config-builder" } ], "settings": { From 25f434c7c6d8cb87485a4b7882d61b9c3ef2c15b Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Thu, 20 Oct 2022 18:07:27 +0200 Subject: [PATCH 26/30] imports fix --- .../client_config_builder.py | 3 +++ .../tests/test_client_config_builder.py | 8 +++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py b/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py index e8343ca1..107331c7 100644 --- a/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py +++ b/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py @@ -11,6 +11,9 @@ # Replicate this file # https://github.com/polywrap/toolchain/blob/origin/packages/js/client-config-builder/src/ClientConfigBuilder.ts +def just_a_function(): + return "Yes" + @dataclass(slots=True, kw_only=True) class ClientConfigBuilder(): envs: List[Env] diff --git a/packages/polywrap-client-config-builder/tests/test_client_config_builder.py b/packages/polywrap-client-config-builder/tests/test_client_config_builder.py index 81792f4c..0e6736d0 100644 --- a/packages/polywrap-client-config-builder/tests/test_client_config_builder.py +++ b/packages/polywrap-client-config-builder/tests/test_client_config_builder.py @@ -1,11 +1,9 @@ -from ..python_client_config_builder import ClientConfigBuilder - -print(ClientConfigBuilder) +from polywrap_client_config_builder import ClientConfigBuilder, just_a_function def test_client_config_builder_adds_default_config(): ClientConfigBuilder.add_defaults() pass -def test_client_config_builder(): +def test_client_config_builder_adds_config(): config = ClientConfigBuilder().add({}) - pass + pass \ No newline at end of file From adac433621693d96b0a9cc24d4fd3e3a5d5b0e09 Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Thu, 20 Oct 2022 18:24:06 +0200 Subject: [PATCH 27/30] adding types for clientconfigbuilder --- .../client_config_builder.py | 42 ++++++++++--------- .../tests/test_client_config_builder.py | 8 +++- 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py b/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py index 107331c7..f61f9320 100644 --- a/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py +++ b/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py @@ -1,19 +1,17 @@ -from polywrap_core import Uri +from polywrap_core import Uri, ClientConfig from dataclasses import dataclass from polywrap_core.types.env import Env from typing import List from polywrap_core.types.uri_resolver import IUriResolver +from polywrap_core.types.wrapper import WrapperCache # from "./bundles" import get_default_client_config # Replicate this file # https://github.com/polywrap/toolchain/blob/origin/packages/js/client-config-builder/src/ClientConfigBuilder.ts -def just_a_function(): - return "Yes" - @dataclass(slots=True, kw_only=True) class ClientConfigBuilder(): envs: List[Env] @@ -23,21 +21,27 @@ class ClientConfigBuilder(): # redirects - def add(self): - """ - Appends each property of the supplied config object to the corresponding array of the builder's config. - """ - pass +def add(self, config: ClientConfigBuilder) -> ClientConfigBuilder: + """ + Appends each property of the supplied config object to the corresponding array of the builder's config. + """ + pass + +def add_defaults(self, wrapper_cache: WrapperCache=None) -> ClientConfigBuilder: + """ + Adds the defaultClientConfig object. + + """ + pass - def add_defaults(self): - """ - Adds the defaultClientConfig object. +def add_env(self, uri: Uri | str, env ) -> ClientConfigBuilder: + pass - """ - pass +def remove_env(self, uri: Uri | str ) -> ClientConfigBuilder: + pass - def build(self): - """ - Returns a sanitized config object from the builder's config. - """ - pass \ No newline at end of file +def build(self): + """ + Returns a sanitized config object from the builder's config. + """ + pass \ No newline at end of file diff --git a/packages/polywrap-client-config-builder/tests/test_client_config_builder.py b/packages/polywrap-client-config-builder/tests/test_client_config_builder.py index 0e6736d0..ea5d34e1 100644 --- a/packages/polywrap-client-config-builder/tests/test_client_config_builder.py +++ b/packages/polywrap-client-config-builder/tests/test_client_config_builder.py @@ -1,9 +1,15 @@ -from polywrap_client_config_builder import ClientConfigBuilder, just_a_function +from polywrap_client_config_builder import ClientConfigBuilder + def test_client_config_builder_adds_default_config(): ClientConfigBuilder.add_defaults() pass + + def test_client_config_builder_adds_config(): config = ClientConfigBuilder().add({}) + pass + +def test_client_config_builder_adds_uri_resolver(): pass \ No newline at end of file From dba9ba51f33ec85a142777e32ec4378c719fbd54 Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Fri, 21 Oct 2022 17:53:31 +0200 Subject: [PATCH 28/30] wip: clientconfigbuilder.add_env function --- .../client_config_builder.py | 64 +++++++++++++------ 1 file changed, 43 insertions(+), 21 deletions(-) diff --git a/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py b/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py index f61f9320..d38babb1 100644 --- a/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py +++ b/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py @@ -2,18 +2,24 @@ from dataclasses import dataclass from polywrap_core.types.env import Env -from typing import List +from typing import Any, Dict, List from polywrap_core.types.uri_resolver import IUriResolver -from polywrap_core.types.wrapper import WrapperCache +from polywrap_core.types.wrapper import Wrapper, WrapperCache # from "./bundles" import get_default_client_config # Replicate this file # https://github.com/polywrap/toolchain/blob/origin/packages/js/client-config-builder/src/ClientConfigBuilder.ts +print(ClientConfig) + @dataclass(slots=True, kw_only=True) class ClientConfigBuilder(): + """ + Used to create the `ClientConfig` object necessary to invoke any wrapper. + """ + envs: List[Env] resolver: IUriResolver # plugins: @@ -21,27 +27,43 @@ class ClientConfigBuilder(): # redirects -def add(self, config: ClientConfigBuilder) -> ClientConfigBuilder: - """ - Appends each property of the supplied config object to the corresponding array of the builder's config. - """ - pass + def add(self, config: ClientConfig): + """ + Appends each property of the supplied config object to the corresponding array of the builder's config. + """ + if config.envs: + for env in config.envs: + self.envs = self.add_env(env.uri, env.env) + return self.envs -def add_defaults(self, wrapper_cache: WrapperCache=None) -> ClientConfigBuilder: - """ - Adds the defaultClientConfig object. + def add_defaults(self, wrapper_cache: WrapperCache | Any ={'blank': Wrapper}): + """ + Adds the defaultClientConfig object. + """ + pass - """ - pass + def add_env(self, uri: Uri | str, env: Dict[str, Any] ): + """ + Function that takes in an environment and an Uri; + - If the env is already defined, its values are updated + - If the env is not defined, the values are added to the Env array + """ + env_uri = Uri.parse_uri(uri) + + Uri.equals(x.uri, env_uri) -def add_env(self, uri: Uri | str, env ) -> ClientConfigBuilder: - pass + idx = self.envs.index() + + if idx >= 0: + self.envs[idx].env = {**self.envs[idx].env, **env,} -def remove_env(self, uri: Uri | str ) -> ClientConfigBuilder: - pass + return self -def build(self): - """ - Returns a sanitized config object from the builder's config. - """ - pass \ No newline at end of file + def remove_env(self, uri: Uri | str ): + pass + + def build(self): + """ + Returns a sanitized config object from the builder's config. + """ + pass \ No newline at end of file From 5cd99594973cc0eaa4d5a34c107cce01f45b628d Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Fri, 21 Oct 2022 18:43:41 +0200 Subject: [PATCH 29/30] wip: add_env --- .../client_config_builder.py | 23 ++++++++++++++----- .../tests/test_client_config_builder.py | 17 +++++++++++--- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py b/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py index d38babb1..b3cfcb53 100644 --- a/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py +++ b/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py @@ -10,6 +10,7 @@ # from "./bundles" import get_default_client_config # Replicate this file +# except for plugins, interface, and redirects as they are not yet impl in python # https://github.com/polywrap/toolchain/blob/origin/packages/js/client-config-builder/src/ClientConfigBuilder.ts print(ClientConfig) @@ -17,24 +18,26 @@ @dataclass(slots=True, kw_only=True) class ClientConfigBuilder(): """ - Used to create the `ClientConfig` object necessary to invoke any wrapper. + Used to instantiate the `ClientConfig` object necessary to invoke any wrapper. """ - envs: List[Env] resolver: IUriResolver # plugins: # interfaces # redirects - def add(self, config: ClientConfig): """ Appends each property of the supplied config object to the corresponding array of the builder's config. """ if config.envs: for env in config.envs: - self.envs = self.add_env(env.uri, env.env) - return self.envs + self.add_env(env.uri, env.env) + + if config.resolver: + self.set_resolver(config.resolver) + + return self def add_defaults(self, wrapper_cache: WrapperCache | Any ={'blank': Wrapper}): """ @@ -56,12 +59,20 @@ def add_env(self, uri: Uri | str, env: Dict[str, Any] ): if idx >= 0: self.envs[idx].env = {**self.envs[idx].env, **env,} - + else: + self.envs.append(Env(uri=env_uri, env=env)) return self def remove_env(self, uri: Uri | str ): pass + def set_env(self, uri: Uri | str, env: Dict[str, Any] ): + pass + + def set_resolver(self, resolver: IUriResolver): + pass + + def build(self): """ Returns a sanitized config object from the builder's config. diff --git a/packages/polywrap-client-config-builder/tests/test_client_config_builder.py b/packages/polywrap-client-config-builder/tests/test_client_config_builder.py index ea5d34e1..f7af5f6b 100644 --- a/packages/polywrap-client-config-builder/tests/test_client_config_builder.py +++ b/packages/polywrap-client-config-builder/tests/test_client_config_builder.py @@ -1,15 +1,26 @@ +from typing import List +from polywrap_core.types.env import Env +from polywrap_core.types.uri import Uri +from polywrap_core.types.uri_resolver import IUriResolver from polywrap_client_config_builder import ClientConfigBuilder +test_envs: List[Env] = [ + Env(uri = Uri("wrap://ens/test.plugin.one"), env = { 'test': "value" }), + Env(uri= Uri("wrap://ens/test.plugin.two"), env= { 'test': "value" }), + ] def test_client_config_builder_adds_default_config(): ClientConfigBuilder.add_defaults() pass +def test_client_config_builder_adds_config(): + envs: List[Env] = [] + resolver: IUriResolver = IUriResolver() -def test_client_config_builder_adds_config(): - config = ClientConfigBuilder().add({}) + config = ClientConfigBuilder(env).add({}) pass def test_client_config_builder_adds_uri_resolver(): - pass \ No newline at end of file + pass + From c462d794422b217002f5f1b0a9b14750c01cd3f5 Mon Sep 17 00:00:00 2001 From: DaoAdvocate <12145726+rihp@users.noreply.github.com> Date: Tue, 25 Oct 2022 13:03:13 +0200 Subject: [PATCH 30/30] wip --- .../client_config_builder.py | 9 +++++++-- packages/polywrap-core/polywrap_core/types/client.py | 10 ++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py b/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py index b3cfcb53..aed9fc81 100644 --- a/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py +++ b/packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py @@ -70,11 +70,16 @@ def set_env(self, uri: Uri | str, env: Dict[str, Any] ): pass def set_resolver(self, resolver: IUriResolver): - pass + self.resolver = resolver + return self - def build(self): + def build(self) -> ClientConfig: """ Returns a sanitized config object from the builder's config. """ + + if not self.resolver: + raise Exception('No Uri Resolver provided') + pass \ No newline at end of file diff --git a/packages/polywrap-core/polywrap_core/types/client.py b/packages/polywrap-core/polywrap_core/types/client.py index aea397cd..4b48ef4b 100644 --- a/packages/polywrap-core/polywrap_core/types/client.py +++ b/packages/polywrap-core/polywrap_core/types/client.py @@ -13,8 +13,18 @@ @dataclass(slots=True, kw_only=True) class ClientConfig: + """ + This object is used to configure the polywrap client before it executes a call + The ClientConfig class is created and modified with the ClientConfigBuilder module + + Defined initially here: + https://github.com/polywrap/toolchain/blob/origin/packages/js/core/src/types/Client.ts + """ envs: List[Env] = field(default_factory=list) resolver: IUriResolver + #interfaces: InterfaceImplementations + #plugins: PluginRegistration + #redirects: UriRedirect @dataclass(slots=True, kw_only=True)