No project description provided
Project description
Rysk Client
Installation
Dev
dependencies are managed with poetry.
For dev build.
!poetry install && poetry run pip install -e .
[34mInstalling dependencies from lock file[39m
No dependencies to install or update
[39;1mInstalling[39;22m the current project: [36mrysk_client[39m ([39;1m0.1.0[39;22m)[1G[2K[39;1mInstalling[39;22m the current project: [36mrysk_client[39m ([32m0.1.0[39m)
Obtaining file:///home/tom/Desktop/Fun/rysk_examples
Installing build dependencies ... [?25ldone
[?25h Checking if build backend supports build_editable ... [?25ldone
[?25h Getting requirements to build editable ... [?25ldone
[?25h Preparing editable metadata (pyproject.toml) ... [?25ldone
[?25hRequirement already satisfied: web3<6.0.0,>=5.4.0 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from rysk-client==0.1.0) (5.31.4)
Requirement already satisfied: ccxt<4.0.0,>=3.1.15 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from rysk-client==0.1.0) (3.1.15)
Requirement already satisfied: certifi>=2018.1.18 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (2023.5.7)
Requirement already satisfied: aiohttp>=3.8 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (3.8.4)
Requirement already satisfied: yarl>=1.7.2 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (1.9.2)
Requirement already satisfied: aiodns>=1.1.1 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (3.0.0)
Requirement already satisfied: requests>=2.18.4 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (2.31.0)
Requirement already satisfied: cryptography>=2.6.1 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (40.0.2)
Requirement already satisfied: setuptools>=60.9.0 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (67.8.0)
Requirement already satisfied: lru-dict<2.0.0,>=1.1.6 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (1.2.0)
Requirement already satisfied: eth-utils<2.0.0,>=1.9.5 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (1.10.0)
Requirement already satisfied: jsonschema<5,>=3.2.0 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (4.17.3)
Requirement already satisfied: protobuf==3.19.5 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (3.19.5)
Requirement already satisfied: websockets<10,>=9.1 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (9.1)
Requirement already satisfied: ipfshttpclient==0.8.0a2 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (0.8.0a2)
Requirement already satisfied: hexbytes<1.0.0,>=0.1.0 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (0.3.0)
Requirement already satisfied: eth-typing<3.0.0,>=2.0.0 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (2.3.0)
Requirement already satisfied: eth-abi<3.0.0,>=2.2.0 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (2.2.0)
Requirement already satisfied: eth-hash[pycryptodome]<1.0.0,>=0.2.0 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (0.3.3)
Requirement already satisfied: eth-rlp<0.3 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (0.2.1)
Requirement already satisfied: eth-account<0.6.0,>=0.5.9 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (0.5.9)
Requirement already satisfied: multiaddr>=0.0.7 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from ipfshttpclient==0.8.0a2->web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (0.0.9)
Requirement already satisfied: pycares>=4.0.0 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from aiodns>=1.1.1->ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (4.3.0)
Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from aiohttp>=3.8->ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (4.0.2)
Requirement already satisfied: attrs>=17.3.0 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from aiohttp>=3.8->ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (23.1.0)
Requirement already satisfied: aiosignal>=1.1.2 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from aiohttp>=3.8->ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (1.3.1)
Requirement already satisfied: frozenlist>=1.1.1 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from aiohttp>=3.8->ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (1.3.3)
Requirement already satisfied: charset-normalizer<4.0,>=2.0 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from aiohttp>=3.8->ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (3.1.0)
Requirement already satisfied: multidict<7.0,>=4.5 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from aiohttp>=3.8->ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (6.0.4)
Requirement already satisfied: cffi>=1.12 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from cryptography>=2.6.1->ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (1.15.1)
Requirement already satisfied: parsimonious<0.9.0,>=0.8.0 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from eth-abi<3.0.0,>=2.2.0->web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (0.8.1)
Requirement already satisfied: rlp<3,>=1.0.0 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from eth-account<0.6.0,>=0.5.9->web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (2.0.1)
Requirement already satisfied: eth-keys<0.4.0,>=0.3.4 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from eth-account<0.6.0,>=0.5.9->web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (0.3.4)
Requirement already satisfied: eth-keyfile<0.6.0,>=0.5.0 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from eth-account<0.6.0,>=0.5.9->web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (0.5.1)
Requirement already satisfied: bitarray<3,>=1.2.1 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from eth-account<0.6.0,>=0.5.9->web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (2.7.3)
Requirement already satisfied: pycryptodome<4,>=3.6.6 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from eth-hash[pycryptodome]<1.0.0,>=0.2.0->web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (3.18.0)
Requirement already satisfied: cytoolz<1.0.0,>=0.10.1 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from eth-utils<2.0.0,>=1.9.5->web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (0.12.1)
Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from jsonschema<5,>=3.2.0->web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (0.19.3)
Requirement already satisfied: urllib3<3,>=1.21.1 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from requests>=2.18.4->ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (2.0.2)
Requirement already satisfied: idna<4,>=2.5 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from requests>=2.18.4->ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (3.4)
Requirement already satisfied: pycparser in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from cffi>=1.12->cryptography>=2.6.1->ccxt<4.0.0,>=3.1.15->rysk-client==0.1.0) (2.21)
Requirement already satisfied: toolz>=0.8.0 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from cytoolz<1.0.0,>=0.10.1->eth-utils<2.0.0,>=1.9.5->web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (0.12.0)
Requirement already satisfied: netaddr in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from multiaddr>=0.0.7->ipfshttpclient==0.8.0a2->web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (0.8.0)
Requirement already satisfied: six in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from multiaddr>=0.0.7->ipfshttpclient==0.8.0a2->web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (1.16.0)
Requirement already satisfied: base58 in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from multiaddr>=0.0.7->ipfshttpclient==0.8.0a2->web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (2.1.1)
Requirement already satisfied: varint in /home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages (from multiaddr>=0.0.7->ipfshttpclient==0.8.0a2->web3<6.0.0,>=5.4.0->rysk-client==0.1.0) (1.0.2)
Building wheels for collected packages: rysk-client
Building editable for rysk-client (pyproject.toml) ... [?25ldone
[?25h Created wheel for rysk-client: filename=rysk_client-0.1.0-py3-none-any.whl size=1115 sha256=302ea12484ef8ca6e503f752bea324ec0937cfed1189ddf795bd971f6ea5953e
Stored in directory: /tmp/pip-ephem-wheel-cache-iidmqn1u/wheels/d0/5d/c5/06071ec2d9be7dfabf83e13d497e7bd4b06d0041d896c67705
Successfully built rysk-client
Installing collected packages: rysk-client
Attempting uninstall: rysk-client
Found existing installation: rysk-client 0.1.0
Uninstalling rysk-client-0.1.0:
Successfully uninstalled rysk-client-0.1.0
Successfully installed rysk-client-0.1.0
[1m[[0m[34;49mnotice[0m[1;39;49m][0m[39;49m A new release of pip available: [0m[31;49m22.2.2[0m[39;49m -> [0m[32;49m23.1.2[0m
[1m[[0m[34;49mnotice[0m[1;39;49m][0m[39;49m To update, run: [0m[32;49mpip install --upgrade pip[0m
Usage
from rysk_client.src.utils import get_web3
web3 = get_web3()
web3.isConnected()
True
Creating a Client
Clients can be created from the rysk client module.
from rysk_client.client import RyskClient
client = RyskClient()
client
RyskClient(_markets=[])
Fetching Markets
The client can fetch markets as so;
markets = client.fetch_markets()
markets[0]
{'base': 'ETH',
'baseId': 'ETH',
'contract': True,
'contractSize': 0.1,
'spot': False,
'swap': False,
'future': False,
'type': 'option',
'linear': False,
'inverse': True,
'active': True,
'id': 'ETH-30JUN23-1700-P',
'strike': 1700.0,
'optionType': 'put',
'expiry': 1688112000000,
'expiryDatetime': '2023-06-30T09:00:00.000000Z',
'info': {'id': '0x01f460be7389b109cc3599941166ea851d0b7c787badf04b1f276d3ce9269a34',
'expiration': '1688112000',
'netDHVExposure': '-302750000000000000000',
'strike': '1700000000000000000000',
'isPut': True,
'isBuyable': True,
'isSellable': True,
'expiration_datetime': datetime.datetime(2023, 6, 30, 9, 0)},
'symbol': 'ETH-30JUN23-1700-P',
'maker': 0.0003,
'taker': 0.0003}
Fetching Tickers
Tickers can be fetched from the client as so;
tickers = client.fetch_tickers()
tickers[0]
{'ask': 79.375856,
'bid': 75.910889,
'info': {'base': 'ETH',
'baseId': 'ETH',
'contract': True,
'contractSize': 0.1,
'spot': False,
'swap': False,
'future': False,
'type': 'option',
'linear': False,
'inverse': True,
'active': True,
'id': 'ETH-30JUN23-1700-P',
'strike': 1700.0,
'optionType': 'put',
'expiry': 1688112000000,
'expiryDatetime': '2023-06-30T09:00:00.000000Z',
'info': {'id': '0x01f460be7389b109cc3599941166ea851d0b7c787badf04b1f276d3ce9269a34',
'expiration': '1688112000',
'netDHVExposure': '-302750000000000000000',
'strike': '1700000000000000000000',
'isPut': True,
'isBuyable': True,
'isSellable': True,
'expiration_datetime': datetime.datetime(2023, 6, 30, 9, 0)},
'symbol': 'ETH-30JUN23-1700-P',
'maker': 0.0003,
'taker': 0.0003}}
Fetching Positions
Positions are fetched from the client such that a user can retrieve their positions.
Positions are indicated by a vault id.
The vaultid iterates when a new position is created.
Vaultid can be retrieved from;
#TODO
positions = client.fetch_positions()
positions
[]
Tests
!make test
poetry run adev test -v -p tests
Testing Open Autonomy Packages
[2K[2;36m[10:34:59][0m[2;36m [0m[34mINFO [0m [1m[[0m[33m1m[0m============================= test ]8;id=171191;file:///home/tom/.cache/pypoetry/virtualenvs/rysk-client-O72xupT4-py3.10/lib/python3.10/site-packages/auto_dev/cli_executor.py\[2mcli_executor.py[0m]8;;\[2m:[0m]8;id=497266;file:///home/tom/.cache/pypoetry/virtualenvs/rysk-client-O72xupT4-py3.10/lib/python3.10/site-packages/auto_dev/cli_executor.py#36\[2m36[0m]8;;\
[2;36m [0m session starts [2m [0m
[2;36m [0m ==============================[1m[[0m0m [2m [0m
[2;36m [0m platform linux -- Python [1;36m3.10[0m.[1;36m4[0m, [2m [0m
[2;36m [0m pytest-[1;36m7.3[0m.[1;36m1[0m, pluggy-[1;36m1.0[0m.[1;36m0[0m [2m [0m
[2;36m [0m rootdir: [2m [0m
[2;36m [0m [35m/home/tom/Desktop/Fun/[0m[95mrysk_explorations[0m [2m [0m
[2;36m [0m configfile: pytest.ini [2m [0m
[2;36m [0m plugins: cov-[1;36m3.0[0m.[1;36m0[0m, pylama-[1;36m8.4[0m.[1;36m1[0m, [2m [0m
[2;36m [0m web3-[1;36m5.31[0m.[1;36m4[0m, anyio-[1;36m3.7[0m.[1;36m0[0m [2m [0m
[2;36m [0m collected [1;36m21[0m items [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m tests/test_client.py [2m [0m
[2;36m [0m [1m[[0m32m.[1m[[0m0m[1m[[0m32m.[1m[[0m0m[1m[[0m31mF[1m[[0m0m[1m[[0m31m [2m [0m
[2;36m [0m [1m[[0m [1;36m14[0m%[1m][0m[1m[[0m0m [2m [0m
[2;36m [0m tests/test_collateral.py [2m [0m
[2;36m [0m [1m[[0m32m.[1m[[0m0m[1m[[0m32m.[1m[[0m0m[1m[[0m32m.[1m[[0m0m[1m[[0m32m.[1m[[0m0m [2m [0m
[2;36m [0m [1m[[0m32m.[1m[[0m0m[1m[[0m32m.[1m[[0m0m[1m[[0m31m [2m [0m
[2;36m [0m [1m[[0m [1;36m42[0m%[1m][0m[1m[[0m0m [2m [0m
[2;36m [0m tests/test_rysk_option_market.py [2m [0m
[2;36m [0m [1m[[0m32m.[1m[[0m0m[1m[[0m32m.[1m[[0m0m[1m[[0m31m [2m [0m
[2;36m [0m [1m[[0m [1;36m52[0m%[1m][0m[1m[[0m0m [2m [0m
[2;36m [0m tests/test_subgraph.py [1m[[0m32m.[1m[[0m0m[1m[[0m31m [2m [0m
[2;36m [0m [1m[[0m [1;36m57[0m%[1m][0m[1m[[0m0m [2m [0m
[2;36m [0m tests/test_utils.py [2m [0m
[2;36m [0m [1m[[0m31mF[1m[[0m0m[1m[[0m32m.[1m[[0m0m[1m[[0m32m.[1m[[0m0m[1m[[0m31mF[1m[[0m0m [2m [0m
[2;36m [0m [1m[[0m32m.[1m[[0m0m[1m[[0m32m.[1m[[0m0m[1m[[0m32m.[1m[[0m0m[1m[[0m32m.[1m[[0m0m[1m[[0m32m.[1m[[0m0m [2m [0m
[2;36m [0m [1m[[0m31m [2m [0m
[2;36m [0m [1m[[0m[1;36m100[0m%[1m][0m[1m[[0m0m [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m =================================== [2m [0m
[2;36m [0m FAILURES [2m [0m
[2;36m [0m =================================== [2m [0m
[2;36m [0m [1m[[0m31m[1m[[0m1m_____________________________ [2m [0m
[2;36m [0m test_fetch_positions [2m [0m
[2;36m [0m _____________________________[1m[[0m0m [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m client = [1;35mRyskClient[0m[1m([0m[33m_markets[0m=[1m[[0m[1m][0m[1m)[0m [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m [1m[[0m94mdef[1m[[0m[1;36m39[0m;[1;36m49[0m;00m [2m [0m
[2;36m [0m [1m[[0m92mtest_fetch_positions[1m[[0m[1;36m39[0m;[1;36m49[0m;[1;35m00m[0m[1m([0mclient [2m [0m
[2;36m [0m :[1m[[0m90m[1m[[0m[1;36m39[0m;[1;36m49[0m;00m [2m [0m
[2;36m [0m [1m[[0m90m [1m[[0m[1;36m39[0m;[1;36m49[0m;00m[1m[[0m33m"[32m""[0mTest [2m [0m
[2;36m [0m fetching [2m [0m
[2;36m [0m positions.[32m""[0m"[1m[[0m[1;36m39[0m;[1;36m49[0m;00m[1m[[0m90m[1m[[0m[1;36m39[0m;[1;36m49[0m;00m [2m [0m
[2;36m [0m positions = [2m [0m
[2;36m [0m [1;35mclient.fetch_positions[0m[1m([0m[1m)[0m[1m[[0m90m[1m[[0m[1;36m39[0m;[1;36m49[0m;00m [2m [0m
[2;36m [0m > [1m[[0m94massert[1m[[0m[1;36m39[0m;[1;36m49[0m;00m [2m [0m
[2;36m [0m [1m[[0m96mlen[1m[[0m[1;36m39[0m;[1;36m49[0m;[1;35m00m[0m[1m([0mpositions[1m)[0m > [2m [0m
[2;36m [0m [1m[[0m94m0[1m[[0m[1;36m39[0m;[1;36m49[0m;00m[1m[[0m90m[1m[[0m[1;36m39[0m;[1;36m49[0m;00m [2m [0m
[2;36m [0m [1m[[0m1m[1m[[0m31mE assert [1;36m0[0m > [1;36m0[0m[1m[[0m0m [2m [0m
[2;36m [0m [1m[[0m1m[1m[[0m31mE + where [1;36m0[0m = [1;35mlen[0m[1m([0m[1m[[0m[1m][0m[1m)[0m[1m[[0m0m [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m [1m[[0m1m[1m[[0m31mtests/test_client.py[1m[[0m0m:[1;36m34[0m: [2m [0m
[2;36m [0m AssertionError [2m [0m
[2;36m [0m [1m[[0m31m[1m[[0m1m______________________________ [2m [0m
[2;36m [0m test_get_contract [2m [0m
[2;36m [0m _______________________________[1m[[0m0m [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m web3 = [1m<[0m[1;95mweb3.main.Web3[0m[39m object at [0m [2m [0m
[2;36m [0m [1;36m0x7f189d5c16f0[0m[39m>[0m [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m [39m [0m[1;39m[[0m[39m94mdef[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m [0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m92mtest_get_contract[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;[0m[1;35m00m[0m[1;39m([0m[39mweb3[0m[1;39m)[0m[39m:[0m[1;39m[[0m[39m90[0m [2m [0m
[2;36m [0m [39mm[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m [2m [0m
[2;36m [0m [39m [0m[1;39m[[0m[39m90m [0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m33m"[0m[32m""[0m[39mTest whether[0m [2m [0m
[2;36m [0m [39mwe can get a contract [0m [2m [0m
[2;36m [0m [39minstance.[0m[32m""[0m[39m"[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m90m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m [2m [0m
[2;36m [0m [39m> contract = [0m [2m [0m
[2;36m [0m [1;35mget_contract[0m[1;39m([0m[39m[0m[1;39m[[0m[39m33m"[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m33mopyn_cont[0m [2m [0m
[2;36m [0m [39mroller[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m33m"[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m, [0m [2m [0m
[2;36m [0m [39mweb3[0m[1;39m)[0m[39m[0m[1;39m[[0m[39m90m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m1m[0m[1;39m[[0m[39m31mtests/test_utils.py[0m[1;39m[[0m[39m0m:[0m[1;36m19[0m[39m: [0m [2m [0m
[2;36m [0m [39m_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _[0m [2m [0m
[2;36m [0m [39m_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [0m [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m [39mname = [0m[32m'opyn_controller'[0m[39m, w3 = [0m [2m [0m
[2;36m [0m [39m<web3.main.Web3 object at [0m[1;36m0x7f189d5c16f0[0m[39m>[0m [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m [39m [0m[1;39m[[0m[39m94mdef[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m [0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m92mget_contract[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;[0m[1;35m00m[0m[1;39m([0m[39mname, [0m [2m [0m
[2;36m [0m [39mw3[0m[1;39m)[0m[39m:[0m[1;39m[[0m[39m90m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m [2m [0m
[2;36m [0m [39m [0m[1;39m[[0m[39m90m [0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m33m"[0m[32m""[0m[39mReturns a[0m [2m [0m
[2;36m [0m [39mweb3 contract instance for the given [0m [2m [0m
[2;36m [0m [39mcontract name"[0m[32m""[0m[39m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m90m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m [2m [0m
[2;36m [0m [39m spec = ADDRESSES[0m[39m[0m[1;39m[[0m[39m90m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m [2m [0m
[2;36m [0m [39m> [0m[1;39m[[0m[39m94mwith[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m [0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m96mopen[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;[0m[1;35m00m[0m[1;39m([0m[39mspec[0m[1;39m[[0m[39m[0m[1;39m[[0m[39m33m"[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m [2m [0m
[2;36m [0m [39m33mpath[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m33m"[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m][0m[39m, [0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m33m"[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m33mr[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m33m"[0m[1;39m[[0m[1;36m39[0m[39m;[0m [2m [0m
[2;36m [0m [1;36m49[0m[39m;00m[0m[1;39m)[0m[39m [0m[1;39m[[0m[39m94mas[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m abi:[0m[1;39m[[0m[39m90m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;0[0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m1m[0m[1;39m[[0m[39m31mE FileNotFoundError: [0m[1;39m[[0m[39mErrno[0m [2m [0m
[2;36m [0m [1;36m2[0m[1;39m][0m[39m No such file or directory: [0m [2m [0m
[2;36m [0m [32m'contracts/tmp_controller.json'[0m[39m[0m[1;39m[[0m[39m0m[0m [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m1m[0m[1;39m[[0m[39m31mrysk_client/src/utils.py[0m[1;39m[[0m[39m0m:[0m[1;36m12[0m[39m:[0m [2m [0m
[2;36m [0m [39mFileNotFoundError[0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m31m[0m[1;39m[[0m[39m1m__________________ [0m [2m [0m
[2;36m [0m [39mtest_get_contract_address[0m[39m [0m [2m [0m
[2;36m [0m [39m__________________[0m[1;39m[[0m[39m0m[0m [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m [39maddress = [0m[32m'opyn_controller'[0m[39m, web3 = [0m [2m [0m
[2;36m [0m [39m<web3.main.Web3 object at [0m[1;36m0x7f189d5c16f0[0m[39m>[0m [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m [39m [0m[1;39m[[0m[39m37m@pytest[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;[0m[1;35m00m.mark.parametriz[0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m33m"[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m33maddress[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m33[0m [2m [0m
[2;36m [0m [39mm"[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m, [0m [2m [0m
[2;36m [0m [1;35mADDRESSES.keys[0m[1;39m([0m[1;39m)[0m[1;39m)[0m[39m[0m[1;39m[[0m[39m90m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m [2m [0m
[2;36m [0m [39m [0m[1;39m[[0m[39m94mdef[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m [0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m92mtest_get_contract_address[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;[0m[1;35m00m[0m[1;39m([0m [2m [0m
[2;36m [0m [39maddress, web3[0m[1;39m)[0m[39m:[0m[1;39m[[0m[39m90m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m [2m [0m
[2;36m [0m [39m [0m[1;39m[[0m[39m90m [0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m33m"[0m[32m""[0m[39mTest whether[0m [2m [0m
[2;36m [0m [39mwe can get the contract address for a [0m [2m [0m
[2;36m [0m [39mgiven contract [0m [2m [0m
[2;36m [0m [39mname"[0m[32m""[0m[39m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m90m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m [2m [0m
[2;36m [0m [39m> contract = [0m[1;35mget_contract[0m[1;39m([0m[39maddress, [0m [2m [0m
[2;36m [0m [39mweb3[0m[1;39m)[0m[39m[0m[1;39m[[0m[39m90m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m1m[0m[1;39m[[0m[39m31mtests/test_utils.py[0m[1;39m[[0m[39m0m:[0m[1;36m31[0m[39m: [0m [2m [0m
[2;36m [0m [39m_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _[0m [2m [0m
[2;36m [0m [39m_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [0m [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m [39mname = [0m[32m'opyn_controller'[0m[39m, w3 = [0m [2m [0m
[2;36m [0m [39m<web3.main.Web3 object at [0m[1;36m0x7f189d5c16f0[0m[39m>[0m [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m [39m [0m[1;39m[[0m[39m94mdef[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m [0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m92mget_contract[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;[0m[1;35m00m[0m[1;39m([0m[39mname, [0m [2m [0m
[2;36m [0m [39mw3[0m[1;39m)[0m[39m:[0m[1;39m[[0m[39m90m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m [2m [0m
[2;36m [0m [39m [0m[1;39m[[0m[39m90m [0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m33m"[0m[32m""[0m[39mReturns a[0m [2m [0m
[2;36m [0m [39mweb3 contract instance for the given [0m [2m [0m
[2;36m [0m [39mcontract name"[0m[32m""[0m[39m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m90m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m [2m [0m
[2;36m [0m [39m spec = ADDRESSES[0m[39m[0m[1;39m[[0m[39m90m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m [2m [0m
[2;36m [0m [39m> [0m[1;39m[[0m[39m94mwith[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m [0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m96mopen[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;[0m[1;35m00m[0m[1;39m([0m[39mspec[0m[1;39m[[0m[39m[0m[1;39m[[0m[39m33m"[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m [2m [0m
[2;36m [0m [39m33mpath[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m33m"[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m][0m[39m, [0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m33m"[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m33mr[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m[0m[1;39m[[0m[39m33m"[0m[1;39m[[0m[1;36m39[0m[39m;[0m [2m [0m
[2;36m [0m [1;36m49[0m[39m;00m[0m[1;39m)[0m[39m [0m[1;39m[[0m[39m94mas[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;00m abi:[0m[1;39m[[0m[39m90m[0m[1;39m[[0m[1;36m39[0m[39m;[0m[1;36m49[0m[39m;0[0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m1m[0m[1;39m[[0m[39m31mE FileNotFoundError: [0m[1;39m[[0m[39mErrno[0m [2m [0m
[2;36m [0m [1;36m2[0m[1;39m][0m[39m No such file or directory: [0m [2m [0m
[2;36m [0m [32m'contracts/tmp_controller.json'[0m[39m[0m[1;39m[[0m[39m0m[0m [2m [0m
[2;36m [0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m1m[0m[1;39m[[0m[39m31mrysk_client/src/utils.py[0m[1;39m[[0m[39m0m:[0m[1;36m12[0m[39m:[0m [2m [0m
[2;36m [0m [39mFileNotFoundError[0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m36m[0m[1;39m[[0m[33m1m[0m[39m=========================== short[0m [2m [0m
[2;36m [0m [39mtest summary info [0m [2m [0m
[2;36m [0m [39m============================[0m[1;39m[[0m[39m0m[0m [2m [0m
[2;36m [0m [39m[0m[1;39m[[0m[39m31mFAILED[0m[1;39m[[0m[39m0m [0m [2m [0m
[2;36m [0m [39mtests/test_client.py::[0m[1;39m[[0m[39m1mtest_fetch_posit[0m [2m [0m
[2;36m [0m [39mons[0m[1;39m[[0m[39m0m - assert [0m[1;36m0[0m[39m [0m[1m>[0m [1;36m0[0m [2m [0m
[2;36m [0m [1m[[0m31mFAILED[1m[[0m0m [2m [0m
[2;36m [0m tests/test_utils.py::[1m[[0m1mtest_get_contract [2m [0m
[2;36m [0m [1m[[0m0m - FileNotFoundError: [1m[[0mErrno [1;36m2[0m[1m][0m No [2m [0m
[2;36m [0m such file or directory: [2m [0m
[2;36m [0m 'contracts/tmp_cont[33m...[0m [2m [0m
[2;36m [0m [1m[[0m31mFAILED[1m[[0m0m [2m [0m
[2;36m [0m tests/test_utils.py::[1m[[0m1mtest_get_contract [2m [0m
[2;36m [0m address[1m[[0m0m - FileNotFoundError: [1m[[0mErrno [2m [0m
[2;36m [0m [1;36m2[0m[1m][0m No such file or directory: [2m [0m
[2;36m [0m 'contracts/tmp_cont[33m...[0m [2m [0m
[2;36m [0m [1m[[0m[33m31m[0m======================== [1m[[0m31m[1m[[0m1m3 [2m [0m
[2;36m [0m failed[1m[[0m0m, [1m[[0m32m18 passed[1m[[0m0m[1m[[0m31m in [2m [0m
[2;36m [0m [1;36m12.[0m59s[1m[[0m0m[1m[[0m31m [2m [0m
[2;36m [0m =========================[1m[[0m0m [2m [0m
[2;36m [0m [2m [0m
[2K[2;36m [0m[2;36m [0m[1;31mERROR [0m Command failed with return code: [1;36m1[0m ]8;id=829203;file:///home/tom/.cache/pypoetry/virtualenvs/rysk-client-O72xupT4-py3.10/lib/python3.10/site-packages/auto_dev/cli_executor.py\[2mcli_executor.py[0m]8;;\[2m:[0m]8;id=73972;file:///home/tom/.cache/pypoetry/virtualenvs/rysk-client-O72xupT4-py3.10/lib/python3.10/site-packages/auto_dev/cli_executor.py#42\[2m42[0m]8;;\
[2KTesting... [38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[0m [35m100%[0m [33m0:00:14[0m
[?25h[31m╭─[0m[31m Error [0m[31m─────────────────────────────────────────────────────────────────────[0m[31m─╮[0m
[31m│[0m Testing failed! [31m│[0m
[31m╰──────────────────────────────────────────────────────────────────────────────╯[0m
make: *** [Makefile:48: test] Error 1
!make fmt lint
poetry run isort tests rysk_client && poetry run black tests rysk_client
Fixing /home/tom/Desktop/Fun/rysk_examples/rysk_client/src/rysk_option_market.py
[1mreformatted rysk_client/src/rysk_option_market.py[0m
[1mAll done! ✨ 🍰 ✨[0m
[34m[1m1 file [0m[1mreformatted[0m, [34m15 files [0mleft unchanged.
poetry run adev lint -v -p tests
[2;36m[23:54:34][0m[2;36m [0m[34mINFO [0m Linting Open Autonomy Packages ]8;id=796249;file:///home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages/auto_dev/cli.py\[2mcli.py[0m]8;;\[2m:[0m]8;id=193368;file:///home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages/auto_dev/cli.py#47\[2m47[0m]8;;\
[2KLinting... [38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[0m [35m100%[0m [33m0:00:14[0m
[?25h[2;36m[23:54:48][0m[2;36m [0m[34mINFO [0m Linting completed successfully! ]8;id=997455;file:///home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages/auto_dev/cli.py\[2mcli.py[0m]8;;\[2m:[0m]8;id=911636;file:///home/tom/.cache/pypoetry/virtualenvs/rysk-client-O5czFfvY-py3.10/lib/python3.10/site-packages/auto_dev/cli.py#66\[2m66[0m]8;;\
!make build
poetry run isort tests rysk_client && poetry run black tests rysk_client
Fixing /home/tom/Desktop/Fun/rysk_examples/rysk_client/src/rysk_option_market.py
[1mreformatted rysk_client/src/rysk_option_market.py[0m
[1mAll done! ✨ 🍰 ✨[0m
[34m[1m1 file [0m[1mreformatted[0m, [34m15 files [0mleft unchanged.
poetry run jupyter-nbconvert README.ipynb --to markdown && poetry run jupyter-nbconvert README.ipynb --to python
[NbConvertApp] Converting notebook README.ipynb to markdown
[NbConvertApp] Writing 53191 bytes to README.md
[NbConvertApp] Converting notebook README.ipynb to python
[NbConvertApp] Writing 1179 bytes to README.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
rysk_client-0.1.2.tar.gz
(366.6 kB
view details)
Built Distribution
rysk_client-0.1.2-py3-none-any.whl
(491.9 kB
view details)
File details
Details for the file rysk_client-0.1.2.tar.gz
.
File metadata
- Download URL: rysk_client-0.1.2.tar.gz
- Upload date:
- Size: 366.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 91e27df5a154e942495a00c515d868b2b9fe07f7a8d42f8571b0693753cea862 |
|
MD5 | adf9205eb933ad014a144294c7062d79 |
|
BLAKE2b-256 | 334e2a1860dca26423dc5b894fe33acb943d53f3859e38e80ad5d6cdeb1b2ae3 |
Provenance
File details
Details for the file rysk_client-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: rysk_client-0.1.2-py3-none-any.whl
- Upload date:
- Size: 491.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e960e03ac61cb0105aa63f090db574dca6bc47fe4e5674464f6979c5188551dc |
|
MD5 | 3333765dfed4dc2b0d9f7434360e7ffa |
|
BLAKE2b-256 | 05bd709c8bc90c90b452e6e09635e5295ccdd35466a855f160c9778424aae114 |