From 850b4d89c31ed0143f02432143edd7cc3d9fdcd2 Mon Sep 17 00:00:00 2001 From: Oleg Nikonychev Date: Wed, 18 Jan 2023 19:01:49 +0400 Subject: [PATCH 1/2] chore: upgrades for chain 0.17.0 version --- .github/workflows/pytests.yml | 2 - CHANGELOG.md | 7 + HACKING.md | 2 - docs-md/msg/index.md | 1 - docs-md/msg/msg.md | 7 - docs-md/msg/pricefeed.md | 66 ------- docs-md/pytypes/common.md | 1 - docs-md/query_clients/index.md | 1 - docs-md/query_clients/pricefeed.md | 32 ---- docs-md/query_clients/util.md | 1 - docs-md/sdk.md | 2 +- docs/source/nibiru.msg.rst | 8 - docs/source/nibiru.query_clients.rst | 8 - docs/source/perpetual.rst | 14 -- nibiru/event_specs.py | 31 ++-- nibiru/grpc_client.py | 1 - nibiru/msg/msg.py | 3 - nibiru/msg/pricefeed.py | 81 --------- nibiru/query_clients/__init__.py | 1 - nibiru/query_clients/pricefeed.py | 44 ----- nibiru/query_clients/util.py | 5 +- nibiru/sdk.py | 2 +- nibiru/utils.py | 6 + poetry.lock | 254 ++++++++++++++------------- pyproject.toml | 4 +- tests/conftest.py | 13 -- tests/event_test.py | 51 ------ tests/pricefeed_test.py | 157 ----------------- tests/websocket_test.py | 29 +-- 29 files changed, 168 insertions(+), 666 deletions(-) delete mode 100644 docs-md/msg/pricefeed.md delete mode 100644 docs-md/query_clients/pricefeed.md delete mode 100644 nibiru/msg/pricefeed.py delete mode 100644 nibiru/query_clients/pricefeed.py delete mode 100644 tests/pricefeed_test.py diff --git a/.github/workflows/pytests.yml b/.github/workflows/pytests.yml index 2e634898..441f6e5f 100644 --- a/.github/workflows/pytests.yml +++ b/.github/workflows/pytests.yml @@ -23,8 +23,6 @@ jobs: WEBSOCKET_ENDPOINT: ${{ secrets.WEBSOCKET_ENDPOINT }} CHAIN_ID: ${{ secrets.CHAIN_ID }} VALIDATOR_MNEMONIC: ${{ secrets.VALIDATOR_MNEMONIC }} - ORACLE_MNEMONIC: ${{ secrets.ORACLE_MNEMONIC }} - NETWORK_INSECURE: ${{ secrets.NETWORK_INSECURE }} DEVNET_NUMBER: ${{ secrets.DEVNET_NUMBER }} steps: # ---------------------------------------------- diff --git a/CHANGELOG.md b/CHANGELOG.md index 65f148c9..c558a2a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. ## Unreleased +## v0.17.0 + +Compatible with NibiruChain/nibiru v0.17 + +- [[#204]](https://github.com/NibiruChain/py-sdk/pull/204) chore: update protos to v0.17.0 + + ## v0.16.4-dev.1 Compatible with NibiruChain/nibiru v0.16 diff --git a/HACKING.md b/HACKING.md index 742cfdd6..27e38741 100644 --- a/HACKING.md +++ b/HACKING.md @@ -128,13 +128,11 @@ You'll need to set up a `.env` configuration file to set environment variables f # Example configuration for the Nibiry Python SDK HOST="..." VALIDATOR_MNEMONIC="..." -ORACLE_MNEMONIC="..." TENDERMINT_RPC_ENDPOINT="http://...:26657" LCD_ENDPOINT="http://...:1317" GRPC_ENDPOINT="...:9090" WEBSOCKET_ENDPOINT="ws://...:26657/websocket" CHAIN_ID="..." -NETWORK_INSECURE=true ``` #### Environment variables in GitHub Actions diff --git a/docs-md/msg/index.md b/docs-md/msg/index.md index 0a78ff80..58cd8f1a 100644 --- a/docs-md/msg/index.md +++ b/docs-md/msg/index.md @@ -7,5 +7,4 @@ Sub-modules * nibiru.msg.dex * nibiru.msg.msg * nibiru.msg.perp -* nibiru.msg.pricefeed * nibiru.msg.staking diff --git a/docs-md/msg/msg.md b/docs-md/msg/msg.md index 3c374caa..4fd139c5 100644 --- a/docs-md/msg/msg.md +++ b/docs-md/msg/msg.md @@ -12,7 +12,6 @@ Classes bank: Methods for the Cosmos x/bank module. dex: Methods for the Nibiru Chain x/dex module. perp: Methods for the Nibiru Chain x/perp module - pricefeed: Methods for the Nibiru Chain x/perp module staking: Methods for the Cosmos x/staking and x/distribution modules. ### Class variables @@ -41,12 +40,6 @@ Classes - add_margin: Deleverages a position by adding margin to back it. - remove_margin: Increases the leverage of the position by removing margin. - `pricefeed` - : Messages for the x/pricefeed module. - - Methods: - - post_price - `staking` : Messages for the x/staking and x/distribution modules. diff --git a/docs-md/msg/pricefeed.md b/docs-md/msg/pricefeed.md deleted file mode 100644 index dca329a6..00000000 --- a/docs-md/msg/pricefeed.md +++ /dev/null @@ -1,66 +0,0 @@ -Module nibiru.msg.pricefeed -=========================== - -Classes -------- - -`MsgPostPrice(oracle: str, token0: str, token1: str, price: float, expiry: datetime.datetime)` -: PythonMsg corresponding to 'nibiru.pricefeed.v1.MsgPostPrice'. - - Attributes: - oracle (str): address of the msg sender - token0 (str): base asset denomination, e.g. ATOM - token1 (str): quote asset denomination, e.g. USD - price (float): price in units token1 / token0, e.g. price of ATOM in USD. - expiry (datetime): - - ### Ancestors (in MRO) - - * nibiru.pytypes.common.PythonMsg - * abc.ABC - - ### Class variables - - `expiry: datetime.datetime` - : - - `oracle: str` - : - - `price: float` - : - - `token0: str` - : - - `token1: str` - : - - ### Methods - - `to_pb(self) ‑> pricefeed.tx_pb2.MsgPostPrice` - : Returns the Message as protobuf object. - - Returns: - pb.MsgPostPrice: The proto object. - -`MsgsPricefeed()` -: Messages for the x/pricefeed module. - - Methods: - - post_price - - ### Methods - - `post_price(oracle: str, token0: str, token1: str, price: float, expiry: datetime.datetime) ‑> nibiru.msg.pricefeed.MsgPostPrice` - : Submits a price from 'oracle' on the specified token pair. - - Attributes: - oracle (str): address of the msg sender - token0 (str): base asset denomination, e.g. ATOM - token1 (str): quote asset denomination, e.g. USD - price (float): price in units token1 / token0, e.g. price of ATOM in USD. - expiry (datetime): - - Returns: - MsgPostPrice: PythonMsg corresponding to 'nibiru.pricefeed.v1.MsgPostPrice'. diff --git a/docs-md/pytypes/common.md b/docs-md/pytypes/common.md index 8ca7e12e..9c2de68a 100644 --- a/docs-md/pytypes/common.md +++ b/docs-md/pytypes/common.md @@ -61,7 +61,6 @@ Classes * nibiru.msg.perp.MsgLiquidate * nibiru.msg.perp.MsgOpenPosition * nibiru.msg.perp.MsgRemoveMargin - * nibiru.msg.pricefeed.MsgPostPrice * nibiru.msg.staking.MsgDelegate * nibiru.msg.staking.MsgUndelegate * nibiru.msg.staking.MsgWithdrawDelegatorReward diff --git a/docs-md/query_clients/index.md b/docs-md/query_clients/index.md index a41a78dd..9ee45757 100644 --- a/docs-md/query_clients/index.md +++ b/docs-md/query_clients/index.md @@ -7,7 +7,6 @@ Sub-modules * nibiru.query_clients.dex * nibiru.query_clients.epoch * nibiru.query_clients.perp -* nibiru.query_clients.pricefeed * nibiru.query_clients.staking * nibiru.query_clients.util * nibiru.query_clients.vpool diff --git a/docs-md/query_clients/pricefeed.md b/docs-md/query_clients/pricefeed.md deleted file mode 100644 index e98e4109..00000000 --- a/docs-md/query_clients/pricefeed.md +++ /dev/null @@ -1,32 +0,0 @@ -Module nibiru.query_clients.pricefeed -===================================== - -Classes -------- - -`PricefeedQueryClient(channel: grpc.Channel)` -: Pricefeed allows to query the endpoints made available by the Nibiru Chain's Pricefeed module. - - ### Ancestors (in MRO) - - * nibiru.query_clients.util.QueryClient - - ### Methods - - `markets(self)` - : - - `oracles(self, pair_id: str)` - : - - `params(self)` - : - - `price(self, pair_id: str)` - : - - `prices(self)` - : - - `raw_prices(self, pair_id: str)` - : diff --git a/docs-md/query_clients/util.md b/docs-md/query_clients/util.md index 693765a3..898433c0 100644 --- a/docs-md/query_clients/util.md +++ b/docs-md/query_clients/util.md @@ -80,7 +80,6 @@ Classes * nibiru.query_clients.dex.DexQueryClient * nibiru.query_clients.epoch.EpochQueryClient * nibiru.query_clients.perp.PerpQueryClient - * nibiru.query_clients.pricefeed.PricefeedQueryClient * nibiru.query_clients.staking.StakingQueryClient * nibiru.query_clients.vpool.VpoolQueryClient diff --git a/docs-md/sdk.md b/docs-md/sdk.md index 66e4d379..a6dbc8cb 100644 --- a/docs-md/sdk.md +++ b/docs-md/sdk.md @@ -41,7 +41,7 @@ Classes sdk = ( Sdk.authorize(val_mnemonic) .with_config(tx_config) - .with_network(network, network_insecure) + .with_network(network) ) ``` diff --git a/docs/source/nibiru.msg.rst b/docs/source/nibiru.msg.rst index 17edf497..190ab73d 100644 --- a/docs/source/nibiru.msg.rst +++ b/docs/source/nibiru.msg.rst @@ -28,14 +28,6 @@ nibiru.msg.perp module :undoc-members: :show-inheritance: -nibiru.msg.pricefeed module ---------------------------- - -.. automodule:: nibiru.msg.pricefeed - :members: - :undoc-members: - :show-inheritance: - Module contents --------------- diff --git a/docs/source/nibiru.query_clients.rst b/docs/source/nibiru.query_clients.rst index bf58cbbd..53f0144f 100644 --- a/docs/source/nibiru.query_clients.rst +++ b/docs/source/nibiru.query_clients.rst @@ -20,14 +20,6 @@ nibiru.query\_clients.perp module :undoc-members: :show-inheritance: -nibiru.query\_clients.pricefeed module --------------------------------------- - -.. automodule:: nibiru.query_clients.pricefeed - :members: - :undoc-members: - :show-inheritance: - nibiru.query\_clients.util module --------------------------------- diff --git a/docs/source/perpetual.rst b/docs/source/perpetual.rst index 20af973b..a45238e0 100644 --- a/docs/source/perpetual.rst +++ b/docs/source/perpetual.rst @@ -69,20 +69,6 @@ dollar value of BTC on spot exchanges is the index price of the BTC:USD perp. Thus we’d call BTC **“the underlying”**. Usually, the index price is taken as the average of spot prices across major exchanges. -.. code:: python - - trader.query.pricefeed.price("ubtc:unusd") - - ''' - Output: - { - "price": { - "pair_id": "ubtc:unusd", - "price": 20776.0 - } - } - ''' - Some trading strategies can be built on the difference between mark price and index price. diff --git a/nibiru/event_specs.py b/nibiru/event_specs.py index aaa4cf13..aa1c562d 100644 --- a/nibiru/event_specs.py +++ b/nibiru/event_specs.py @@ -2,10 +2,9 @@ from enum import Enum import google.protobuf.message -from nibiru_proto.proto.dex.v1 import tx_pb2 as dex_events # noqa +from nibiru_proto.proto.dex.v1 import event_pb2 as dex_events from nibiru_proto.proto.lockup.v1 import tx_pb2 as lockup_events # noqa from nibiru_proto.proto.perp.v1 import event_pb2 as perp_events -from nibiru_proto.proto.pricefeed import tx_pb2 as pricefeed_events from nibiru_proto.proto.stablecoin import events_pb2 as stablecoin_events # noqa from nibiru_proto.proto.vpool.v1 import event_pb2 as vpool_events @@ -26,29 +25,25 @@ class EventType(Enum): SwapOnVpoolEvent = vpool_events.SwapOnVpoolEvent MarkPriceChanged = vpool_events.MarkPriceChangedEvent - # # Dex event - # PoolJoinedEvent = dex_events.EventPoolJoined - # PoolCreatedEvent = dex_events.EventPoolCreated - # PoolExitedEvent = dex_events.EventPoolExited - # AssetsSwappedEvent = dex_events.EventAssetsSwapped + # Dex event + PoolJoinedEvent = dex_events.EventPoolJoined + PoolCreatedEvent = dex_events.EventPoolCreated + PoolExitedEvent = dex_events.EventPoolExited + AssetsSwappedEvent = dex_events.EventAssetsSwapped # Lockup event # LockEvent = lockup_events.EventLock # UnlockInitiatedEvent = lockup_events.EventUnlockInitiated # UnlockEvent = lockup_events.EventUnlock - # Pricefeed events - OracleUpdatePriceEvent = pricefeed_events.EventOracleUpdatePrice - PairPriceUpdatedEvent = pricefeed_events.EventPairPriceUpdated - # Stablecoin events - # TransferEvent = stablecoin_events.EventTransfer - # MintStableEvent = stablecoin_events.EventMintStable - # BurnStableEvent = stablecoin_events.EventBurnStable - # MintNIBIEvent = stablecoin_events.EventMintNIBI - # BurnNIBIEvent = stablecoin_events.EventBurnNIBI - # RecollateralizeEvent = stablecoin_events.EventRecollateralize - # BuybackEvent = stablecoin_events.EventBuyback + TransferEvent = stablecoin_events.EventTransfer + MintStableEvent = stablecoin_events.EventMintStable + BurnStableEvent = stablecoin_events.EventBurnStable + MintNIBIEvent = stablecoin_events.EventMintNIBI + BurnNIBIEvent = stablecoin_events.EventBurnNIBI + RecollateralizeEvent = stablecoin_events.EventRecollateralize + BuybackEvent = stablecoin_events.EventBuyback # Bank Transfer = "transfer" diff --git a/nibiru/grpc_client.py b/nibiru/grpc_client.py index 4392ba9f..c464c931 100644 --- a/nibiru/grpc_client.py +++ b/nibiru/grpc_client.py @@ -69,7 +69,6 @@ def __init__( # Query services self.dex = query_clients.DexQueryClient(self.chain_channel) - self.pricefeed = query_clients.PricefeedQueryClient(self.chain_channel) self.perp = query_clients.PerpQueryClient(self.chain_channel) self.vpool = query_clients.VpoolQueryClient(self.chain_channel) self.epoch = query_clients.EpochQueryClient(self.chain_channel) diff --git a/nibiru/msg/msg.py b/nibiru/msg/msg.py index ec5b4c53..fa7f5d9e 100644 --- a/nibiru/msg/msg.py +++ b/nibiru/msg/msg.py @@ -3,7 +3,6 @@ from nibiru.msg.bank import MsgsBank from nibiru.msg.dex import MsgsDex from nibiru.msg.perp import MsgsPerp -from nibiru.msg.pricefeed import MsgsPricefeed from nibiru.msg.staking import MsgsStaking @@ -17,14 +16,12 @@ class MsgClient: bank: Methods for the Cosmos x/bank module. dex: Methods for the Nibiru Chain x/dex module. perp: Methods for the Nibiru Chain x/perp module - pricefeed: Methods for the Nibiru Chain x/perp module staking: Methods for the Cosmos x/staking and x/distribution modules. """ bank = MsgsBank dex = MsgsDex perp = MsgsPerp - pricefeed = MsgsPricefeed staking = MsgsStaking diff --git a/nibiru/msg/pricefeed.py b/nibiru/msg/pricefeed.py deleted file mode 100644 index fafe3bb1..00000000 --- a/nibiru/msg/pricefeed.py +++ /dev/null @@ -1,81 +0,0 @@ -import dataclasses -from datetime import datetime - -from nibiru_proto.proto.pricefeed import tx_pb2 as pb - -from nibiru.pytypes import PythonMsg -from nibiru.utils import to_sdk_dec, toPbTimestamp - - -class MsgsPricefeed: - """ - Messages for the x/pricefeed module. - - Methods: - - post_price - """ - - @staticmethod - def post_price( - oracle: str, - token0: str, - token1: str, - price: float, - expiry: datetime, - ) -> 'MsgPostPrice': - """ - Submits a price from 'oracle' on the specified token pair. - - Attributes: - oracle (str): address of the msg sender - token0 (str): base asset denomination, e.g. ATOM - token1 (str): quote asset denomination, e.g. USD - price (float): price in units token1 / token0, e.g. price of ATOM in USD. - expiry (datetime): - - Returns: - MsgPostPrice: PythonMsg corresponding to 'nibiru.pricefeed.v1.MsgPostPrice'. - """ - return MsgPostPrice( - oracle=oracle, - token0=token0, - token1=token1, - price=price, - expiry=expiry, - ) - - -@dataclasses.dataclass -class MsgPostPrice(PythonMsg): - """ - PythonMsg corresponding to 'nibiru.pricefeed.v1.MsgPostPrice'. - - Attributes: - oracle (str): address of the msg sender - token0 (str): base asset denomination, e.g. ATOM - token1 (str): quote asset denomination, e.g. USD - price (float): price in units token1 / token0, e.g. price of ATOM in USD. - expiry (datetime): - """ - - oracle: str - token0: str - token1: str - price: float - expiry: datetime - - def to_pb(self) -> pb.MsgPostPrice: - """ - Returns the Message as protobuf object. - - Returns: - pb.MsgPostPrice: The proto object. - - """ - return pb.MsgPostPrice( - oracle=self.oracle, - token0=self.token0, - token1=self.token1, - price=to_sdk_dec(self.price), - expiry=toPbTimestamp(self.expiry), - ) diff --git a/nibiru/query_clients/__init__.py b/nibiru/query_clients/__init__.py index a6c4a8d8..b8efe6db 100644 --- a/nibiru/query_clients/__init__.py +++ b/nibiru/query_clients/__init__.py @@ -2,7 +2,6 @@ from nibiru.query_clients.dex import DexQueryClient # noqa from nibiru.query_clients.epoch import EpochQueryClient # noqa from nibiru.query_clients.perp import PerpQueryClient # noqa -from nibiru.query_clients.pricefeed import PricefeedQueryClient # noqa from nibiru.query_clients.staking import StakingQueryClient # noqa from nibiru.query_clients.util import * # noqa from nibiru.query_clients.vpool import VpoolQueryClient # noqa diff --git a/nibiru/query_clients/pricefeed.py b/nibiru/query_clients/pricefeed.py deleted file mode 100644 index 3d8d7f86..00000000 --- a/nibiru/query_clients/pricefeed.py +++ /dev/null @@ -1,44 +0,0 @@ -from grpc import Channel -from nibiru_proto.proto.pricefeed import query_pb2 as pf_type -from nibiru_proto.proto.pricefeed import query_pb2_grpc as pf_query - -from nibiru.query_clients.util import QueryClient - - -class PricefeedQueryClient(QueryClient): - """ - Pricefeed allows to query the endpoints made available by the Nibiru Chain's Pricefeed module. - """ - - def __init__(self, channel: Channel): - self.api = pf_query.QueryStub(channel) - - def params(self): - req = pf_type.QueryParamsRequest() - return self.query(self.api.QueryParams, req) - - def price(self, pair_id: str): - req = pf_type.QueryPriceRequest( - pair_id=pair_id, - ) - return self.query(self.api.QueryPrice, req) - - def prices(self): - req = pf_type.QueryPricesRequest() - return self.query(self.api.QueryPrices, req) - - def raw_prices(self, pair_id: str): - req = pf_type.QueryRawPricesRequest( - pair_id=pair_id, - ) - return self.query(self.api.QueryRawPrices, req) - - def oracles(self, pair_id: str): - req = pf_type.QueryOraclesRequest( - pair_id=pair_id, - ) - return self.query(self.api.QueryOracles, req) - - def markets(self): - req = pf_type.QueryMarketsRequest() - return self.query(self.api.QueryMarkets, req) diff --git a/nibiru/query_clients/util.py b/nibiru/query_clients/util.py index 867b2804..acbb5940 100644 --- a/nibiru/query_clients/util.py +++ b/nibiru/query_clients/util.py @@ -106,7 +106,10 @@ def deserialize(pb_msg: message.Message, no_sdk_transformation: bool = False) -> else: serialized_output[str(attr)] = deserialize(val) elif custom_dtype is None and not attr_search: - serialized_output[str(attr)] = attr_search + if str(attr_search) == "[]": + serialized_output[str(attr)] = [] + else: + serialized_output[str(attr)] = attr_search else: serialized_output[str(attr)] = deserialize(pb_msg.__getattribute__(attr)) diff --git a/nibiru/sdk.py b/nibiru/sdk.py index d7bd42ba..28663e55 100644 --- a/nibiru/sdk.py +++ b/nibiru/sdk.py @@ -45,7 +45,7 @@ class Sdk: sdk = ( Sdk.authorize(val_mnemonic) .with_config(tx_config) - .with_network(network, network_insecure) + .with_network(network) ) ``` """ diff --git a/nibiru/utils.py b/nibiru/utils.py index a37be79b..cf4e59dd 100644 --- a/nibiru/utils.py +++ b/nibiru/utils.py @@ -267,6 +267,12 @@ def clean_nested_dict(dictionary: Union[List, Dict, str]) -> Dict: if isinstance(value, str): if value[0] == "{" and value[-1] == "}": dictionary[key] = clean_nested_dict(value) + elif value[0] == "[" and value[-1] == "]": + try: + values_list = json.loads(value) + dictionary[key] = [clean_nested_dict(v) for v in values_list] + except ValueError: + dictionary[key] = value else: dictionary[key] = value diff --git a/poetry.lock b/poetry.lock index 6761df86..70fba507 100644 --- a/poetry.lock +++ b/poetry.lock @@ -528,63 +528,63 @@ files = [ [[package]] name = "coverage" -version = "7.0.1" +version = "7.0.5" description = "Code coverage measurement for Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "coverage-7.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b3695c4f4750bca943b3e1f74ad4be8d29e4aeab927d50772c41359107bd5d5c"}, - {file = "coverage-7.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fa6a5a224b7f4cfb226f4fc55a57e8537fcc096f42219128c2c74c0e7d0953e1"}, - {file = "coverage-7.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74f70cd92669394eaf8d7756d1b195c8032cf7bbbdfce3bc489d4e15b3b8cf73"}, - {file = "coverage-7.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b66bb21a23680dee0be66557dc6b02a3152ddb55edf9f6723fa4a93368f7158d"}, - {file = "coverage-7.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d87717959d4d0ee9db08a0f1d80d21eb585aafe30f9b0a54ecf779a69cb015f6"}, - {file = "coverage-7.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:854f22fa361d1ff914c7efa347398374cc7d567bdafa48ac3aa22334650dfba2"}, - {file = "coverage-7.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1e414dc32ee5c3f36544ea466b6f52f28a7af788653744b8570d0bf12ff34bc0"}, - {file = "coverage-7.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6c5ad996c6fa4d8ed669cfa1e8551348729d008a2caf81489ab9ea67cfbc7498"}, - {file = "coverage-7.0.1-cp310-cp310-win32.whl", hash = "sha256:691571f31ace1837838b7e421d3a09a8c00b4aac32efacb4fc9bd0a5c647d25a"}, - {file = "coverage-7.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:89caf4425fe88889e2973a8e9a3f6f5f9bbe5dd411d7d521e86428c08a873a4a"}, - {file = "coverage-7.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:63d56165a7c76265468d7e0c5548215a5ba515fc2cba5232d17df97bffa10f6c"}, - {file = "coverage-7.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f943a3b2bc520102dd3e0bb465e1286e12c9a54f58accd71b9e65324d9c7c01"}, - {file = "coverage-7.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:830525361249dc4cd013652b0efad645a385707a5ae49350c894b67d23fbb07c"}, - {file = "coverage-7.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd1b9c5adc066db699ccf7fa839189a649afcdd9e02cb5dc9d24e67e7922737d"}, - {file = "coverage-7.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e00c14720b8b3b6c23b487e70bd406abafc976ddc50490f645166f111c419c39"}, - {file = "coverage-7.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6d55d840e1b8c0002fce66443e124e8581f30f9ead2e54fbf6709fb593181f2c"}, - {file = "coverage-7.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:66b18c3cf8bbab0cce0d7b9e4262dc830e93588986865a8c78ab2ae324b3ed56"}, - {file = "coverage-7.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:12a5aa77783d49e05439fbe6e6b427484f8a0f9f456b46a51d8aac022cfd024d"}, - {file = "coverage-7.0.1-cp311-cp311-win32.whl", hash = "sha256:b77015d1cb8fe941be1222a5a8b4e3fbca88180cfa7e2d4a4e58aeabadef0ab7"}, - {file = "coverage-7.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb992c47cb1e5bd6a01e97182400bcc2ba2077080a17fcd7be23aaa6e572e390"}, - {file = "coverage-7.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e78e9dcbf4f3853d3ae18a8f9272111242531535ec9e1009fa8ec4a2b74557dc"}, - {file = "coverage-7.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60bef2e2416f15fdc05772bf87db06c6a6f9870d1db08fdd019fbec98ae24a9"}, - {file = "coverage-7.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9823e4789ab70f3ec88724bba1a203f2856331986cd893dedbe3e23a6cfc1e4e"}, - {file = "coverage-7.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9158f8fb06747ac17bd237930c4372336edc85b6e13bdc778e60f9d685c3ca37"}, - {file = "coverage-7.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:486ee81fa694b4b796fc5617e376326a088f7b9729c74d9defa211813f3861e4"}, - {file = "coverage-7.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1285648428a6101b5f41a18991c84f1c3959cee359e51b8375c5882fc364a13f"}, - {file = "coverage-7.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2c44fcfb3781b41409d0f060a4ed748537557de9362a8a9282182fafb7a76ab4"}, - {file = "coverage-7.0.1-cp37-cp37m-win32.whl", hash = "sha256:d6814854c02cbcd9c873c0f3286a02e3ac1250625cca822ca6bc1018c5b19f1c"}, - {file = "coverage-7.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f66460f17c9319ea4f91c165d46840314f0a7c004720b20be58594d162a441d8"}, - {file = "coverage-7.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b373c9345c584bb4b5f5b8840df7f4ab48c4cbb7934b58d52c57020d911b856"}, - {file = "coverage-7.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d3022c3007d3267a880b5adcf18c2a9bf1fc64469b394a804886b401959b8742"}, - {file = "coverage-7.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92651580bd46519067e36493acb394ea0607b55b45bd81dd4e26379ed1871f55"}, - {file = "coverage-7.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cfc595d2af13856505631be072835c59f1acf30028d1c860b435c5fc9c15b69"}, - {file = "coverage-7.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b4b3a4d9915b2be879aff6299c0a6129f3d08a775d5a061f503cf79571f73e4"}, - {file = "coverage-7.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b6f22bb64cc39bcb883e5910f99a27b200fdc14cdd79df8696fa96b0005c9444"}, - {file = "coverage-7.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72d1507f152abacea81f65fee38e4ef3ac3c02ff8bc16f21d935fd3a8a4ad910"}, - {file = "coverage-7.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0a79137fc99815fff6a852c233628e735ec15903cfd16da0f229d9c4d45926ab"}, - {file = "coverage-7.0.1-cp38-cp38-win32.whl", hash = "sha256:b3763e7fcade2ff6c8e62340af9277f54336920489ceb6a8cd6cc96da52fcc62"}, - {file = "coverage-7.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:09f6b5a8415b6b3e136d5fec62b552972187265cb705097bf030eb9d4ffb9b60"}, - {file = "coverage-7.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:978258fec36c154b5e250d356c59af7d4c3ba02bef4b99cda90b6029441d797d"}, - {file = "coverage-7.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:19ec666533f0f70a0993f88b8273057b96c07b9d26457b41863ccd021a043b9a"}, - {file = "coverage-7.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfded268092a84605f1cc19e5c737f9ce630a8900a3589e9289622db161967e9"}, - {file = "coverage-7.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07bcfb1d8ac94af886b54e18a88b393f6a73d5959bb31e46644a02453c36e475"}, - {file = "coverage-7.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:397b4a923cc7566bbc7ae2dfd0ba5a039b61d19c740f1373791f2ebd11caea59"}, - {file = "coverage-7.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:aec2d1515d9d39ff270059fd3afbb3b44e6ec5758af73caf18991807138c7118"}, - {file = "coverage-7.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c20cfebcc149a4c212f6491a5f9ff56f41829cd4f607b5be71bb2d530ef243b1"}, - {file = "coverage-7.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fd556ff16a57a070ce4f31c635953cc44e25244f91a0378c6e9bdfd40fdb249f"}, - {file = "coverage-7.0.1-cp39-cp39-win32.whl", hash = "sha256:b9ea158775c7c2d3e54530a92da79496fb3fb577c876eec761c23e028f1e216c"}, - {file = "coverage-7.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:d1991f1dd95eba69d2cd7708ff6c2bbd2426160ffc73c2b81f617a053ebcb1a8"}, - {file = "coverage-7.0.1-pp37.pp38.pp39-none-any.whl", hash = "sha256:3dd4ee135e08037f458425b8842d24a95a0961831a33f89685ff86b77d378f89"}, - {file = "coverage-7.0.1.tar.gz", hash = "sha256:a4a574a19eeb67575a5328a5760bbbb737faa685616586a9f9da4281f940109c"}, + {file = "coverage-7.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2a7f23bbaeb2a87f90f607730b45564076d870f1fb07b9318d0c21f36871932b"}, + {file = "coverage-7.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c18d47f314b950dbf24a41787ced1474e01ca816011925976d90a88b27c22b89"}, + {file = "coverage-7.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef14d75d86f104f03dea66c13188487151760ef25dd6b2dbd541885185f05f40"}, + {file = "coverage-7.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66e50680e888840c0995f2ad766e726ce71ca682e3c5f4eee82272c7671d38a2"}, + {file = "coverage-7.0.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9fed35ca8c6e946e877893bbac022e8563b94404a605af1d1e6accc7eb73289"}, + {file = "coverage-7.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d8d04e755934195bdc1db45ba9e040b8d20d046d04d6d77e71b3b34a8cc002d0"}, + {file = "coverage-7.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e109f1c9a3ece676597831874126555997c48f62bddbcace6ed17be3e372de8"}, + {file = "coverage-7.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0a1890fca2962c4f1ad16551d660b46ea77291fba2cc21c024cd527b9d9c8809"}, + {file = "coverage-7.0.5-cp310-cp310-win32.whl", hash = "sha256:be9fcf32c010da0ba40bf4ee01889d6c737658f4ddff160bd7eb9cac8f094b21"}, + {file = "coverage-7.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:cbfcba14a3225b055a28b3199c3d81cd0ab37d2353ffd7f6fd64844cebab31ad"}, + {file = "coverage-7.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:30b5fec1d34cc932c1bc04017b538ce16bf84e239378b8f75220478645d11fca"}, + {file = "coverage-7.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1caed2367b32cc80a2b7f58a9f46658218a19c6cfe5bc234021966dc3daa01f0"}, + {file = "coverage-7.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d254666d29540a72d17cc0175746cfb03d5123db33e67d1020e42dae611dc196"}, + {file = "coverage-7.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19245c249aa711d954623d94f23cc94c0fd65865661f20b7781210cb97c471c0"}, + {file = "coverage-7.0.5-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b05ed4b35bf6ee790832f68932baf1f00caa32283d66cc4d455c9e9d115aafc"}, + {file = "coverage-7.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:29de916ba1099ba2aab76aca101580006adfac5646de9b7c010a0f13867cba45"}, + {file = "coverage-7.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e057e74e53db78122a3979f908973e171909a58ac20df05c33998d52e6d35757"}, + {file = "coverage-7.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:411d4ff9d041be08fdfc02adf62e89c735b9468f6d8f6427f8a14b6bb0a85095"}, + {file = "coverage-7.0.5-cp311-cp311-win32.whl", hash = "sha256:52ab14b9e09ce052237dfe12d6892dd39b0401690856bcfe75d5baba4bfe2831"}, + {file = "coverage-7.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:1f66862d3a41674ebd8d1a7b6f5387fe5ce353f8719040a986551a545d7d83ea"}, + {file = "coverage-7.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b69522b168a6b64edf0c33ba53eac491c0a8f5cc94fa4337f9c6f4c8f2f5296c"}, + {file = "coverage-7.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436e103950d05b7d7f55e39beeb4d5be298ca3e119e0589c0227e6d0b01ee8c7"}, + {file = "coverage-7.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8c56bec53d6e3154eaff6ea941226e7bd7cc0d99f9b3756c2520fc7a94e6d96"}, + {file = "coverage-7.0.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a38362528a9115a4e276e65eeabf67dcfaf57698e17ae388599568a78dcb029"}, + {file = "coverage-7.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f67472c09a0c7486e27f3275f617c964d25e35727af952869dd496b9b5b7f6a3"}, + {file = "coverage-7.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:220e3fa77d14c8a507b2d951e463b57a1f7810a6443a26f9b7591ef39047b1b2"}, + {file = "coverage-7.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ecb0f73954892f98611e183f50acdc9e21a4653f294dfbe079da73c6378a6f47"}, + {file = "coverage-7.0.5-cp37-cp37m-win32.whl", hash = "sha256:d8f3e2e0a1d6777e58e834fd5a04657f66affa615dae61dd67c35d1568c38882"}, + {file = "coverage-7.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:9e662e6fc4f513b79da5d10a23edd2b87685815b337b1a30cd11307a6679148d"}, + {file = "coverage-7.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:790e4433962c9f454e213b21b0fd4b42310ade9c077e8edcb5113db0818450cb"}, + {file = "coverage-7.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:49640bda9bda35b057b0e65b7c43ba706fa2335c9a9896652aebe0fa399e80e6"}, + {file = "coverage-7.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d66187792bfe56f8c18ba986a0e4ae44856b1c645336bd2c776e3386da91e1dd"}, + {file = "coverage-7.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:276f4cd0001cd83b00817c8db76730938b1ee40f4993b6a905f40a7278103b3a"}, + {file = "coverage-7.0.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95304068686545aa368b35dfda1cdfbbdbe2f6fe43de4a2e9baa8ebd71be46e2"}, + {file = "coverage-7.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:17e01dd8666c445025c29684d4aabf5a90dc6ef1ab25328aa52bedaa95b65ad7"}, + {file = "coverage-7.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea76dbcad0b7b0deb265d8c36e0801abcddf6cc1395940a24e3595288b405ca0"}, + {file = "coverage-7.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:50a6adc2be8edd7ee67d1abc3cd20678987c7b9d79cd265de55941e3d0d56499"}, + {file = "coverage-7.0.5-cp38-cp38-win32.whl", hash = "sha256:e4ce984133b888cc3a46867c8b4372c7dee9cee300335e2925e197bcd45b9e16"}, + {file = "coverage-7.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:4a950f83fd3f9bca23b77442f3a2b2ea4ac900944d8af9993743774c4fdc57af"}, + {file = "coverage-7.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c2155943896ac78b9b0fd910fb381186d0c345911f5333ee46ac44c8f0e43ab"}, + {file = "coverage-7.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:54f7e9705e14b2c9f6abdeb127c390f679f6dbe64ba732788d3015f7f76ef637"}, + {file = "coverage-7.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ee30375b409d9a7ea0f30c50645d436b6f5dfee254edffd27e45a980ad2c7f4"}, + {file = "coverage-7.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b78729038abea6a5df0d2708dce21e82073463b2d79d10884d7d591e0f385ded"}, + {file = "coverage-7.0.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13250b1f0bd023e0c9f11838bdeb60214dd5b6aaf8e8d2f110c7e232a1bff83b"}, + {file = "coverage-7.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2c407b1950b2d2ffa091f4e225ca19a66a9bd81222f27c56bd12658fc5ca1209"}, + {file = "coverage-7.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c76a3075e96b9c9ff00df8b5f7f560f5634dffd1658bafb79eb2682867e94f78"}, + {file = "coverage-7.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f26648e1b3b03b6022b48a9b910d0ae209e2d51f50441db5dce5b530fad6d9b1"}, + {file = "coverage-7.0.5-cp39-cp39-win32.whl", hash = "sha256:ba3027deb7abf02859aca49c865ece538aee56dcb4871b4cced23ba4d5088904"}, + {file = "coverage-7.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:949844af60ee96a376aac1ded2a27e134b8c8d35cc006a52903fc06c24a3296f"}, + {file = "coverage-7.0.5-pp37.pp38.pp39-none-any.whl", hash = "sha256:b9727ac4f5cf2cbf87880a63870b5b9730a8ae3a4a360241a0fdaa2f71240ff0"}, + {file = "coverage-7.0.5.tar.gz", hash = "sha256:051afcbd6d2ac39298d62d340f94dbb6a1f31de06dfaf6fcef7b759dd3860c45"}, ] [package.dependencies] @@ -889,14 +889,14 @@ ecdsa = ">=0.14.0" [[package]] name = "identify" -version = "2.5.11" +version = "2.5.13" description = "File identification library for Python" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "identify-2.5.11-py2.py3-none-any.whl", hash = "sha256:e7db36b772b188099616aaf2accbee122949d1c6a1bac4f38196720d6f9f06db"}, - {file = "identify-2.5.11.tar.gz", hash = "sha256:14b7076b29c99b1b0b8b08e96d448c7b877a9b07683cd8cfda2ea06af85ffa1c"}, + {file = "identify-2.5.13-py2.py3-none-any.whl", hash = "sha256:8aa48ce56e38c28b6faa9f261075dea0a942dfbb42b341b4e711896cbb40f3f7"}, + {file = "identify-2.5.13.tar.gz", hash = "sha256:abb546bca6f470228785338a01b539de8a85bbf46491250ae03363956d8ebb10"}, ] [package.extras] @@ -937,14 +937,14 @@ testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packag [[package]] name = "iniconfig" -version = "1.1.1" -description = "iniconfig: brain-dead simple config-ini parsing" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, - {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] [[package]] @@ -988,52 +988,62 @@ testing = ["coverage", "pyyaml"] [[package]] name = "markupsafe" -version = "2.1.1" +version = "2.1.2" description = "Safely add untrusted strings to HTML/XML markup." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, - {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"}, + {file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"}, ] [[package]] @@ -1162,14 +1172,14 @@ types-protobuf = ">=3.20.4" [[package]] name = "nibiru-proto" -version = "0.16.3" +version = "0.17.1" description = "Nibiru Chain Python SDK" category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ - {file = "nibiru_proto-0.16.3-py3-none-any.whl", hash = "sha256:33d2e444b0e3340d32c5053bc1bbb7a9cb4bcdc5fdc53048755043709b3fa781"}, - {file = "nibiru_proto-0.16.3.tar.gz", hash = "sha256:ba7d38d36e3650fb8e879e3b5d45892985fd74da1b45f1bad38a6ac8c960c64c"}, + {file = "nibiru_proto-0.17.1-py3-none-any.whl", hash = "sha256:3e8821f1c3990a9d6794c53b05ed5bdf54e74bc40d97e170190973c418e40bde"}, + {file = "nibiru_proto-0.17.1.tar.gz", hash = "sha256:9973fba9855d39bf9760f099cdf0da648ecd0f87e5d16c41b29340b0d47d4707"}, ] [package.dependencies] @@ -1350,14 +1360,14 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pytest" -version = "7.2.0" +version = "7.2.1" description = "pytest: simple powerful testing with Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.2.0-py3-none-any.whl", hash = "sha256:892f933d339f068883b6fd5a459f03d85bfcb355e4981e146d2c7616c21fef71"}, - {file = "pytest-7.2.0.tar.gz", hash = "sha256:c4014eb40e10f11f355ad4e3c2fb2c6c6d1919c73f3b5a433de4708202cade59"}, + {file = "pytest-7.2.1-py3-none-any.whl", hash = "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5"}, + {file = "pytest-7.2.1.tar.gz", hash = "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42"}, ] [package.dependencies] @@ -1526,19 +1536,19 @@ files = [ [[package]] name = "requests" -version = "2.28.1" +version = "2.28.2" description = "Python HTTP for Humans." category = "main" optional = false python-versions = ">=3.7, <4" files = [ - {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, - {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, + {file = "requests-2.28.2-py3-none-any.whl", hash = "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"}, + {file = "requests-2.28.2.tar.gz", hash = "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"}, ] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<3" +charset-normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<1.27" @@ -1548,18 +1558,18 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "setuptools" -version = "65.6.3" +version = "66.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-65.6.3-py3-none-any.whl", hash = "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54"}, - {file = "setuptools-65.6.3.tar.gz", hash = "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"}, + {file = "setuptools-66.0.0-py3-none-any.whl", hash = "sha256:a78d01d1e2c175c474884671dde039962c9d74c7223db7369771fcf6e29ceeab"}, + {file = "setuptools-66.0.0.tar.gz", hash = "sha256:bd6eb2d6722568de6d14b87c44a96fac54b2a45ff5e940e639979a3d1792adb6"}, ] [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"] +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-lint", "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)", "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-timeout", "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"] @@ -1635,14 +1645,14 @@ files = [ [[package]] name = "types-protobuf" -version = "4.21.0.2" +version = "4.21.0.3" description = "Typing stubs for protobuf" category = "main" optional = false python-versions = "*" files = [ - {file = "types-protobuf-4.21.0.2.tar.gz", hash = "sha256:7df483d34ad3fcb1fa7fff1073560d596c9ac1f419cfa851b220c9a93386c998"}, - {file = "types_protobuf-4.21.0.2-py3-none-any.whl", hash = "sha256:aeefcf39d637016998b3c7b699750847071b555f7c2e0c9873d42ab6103d1a39"}, + {file = "types-protobuf-4.21.0.3.tar.gz", hash = "sha256:824109e0fe87525a9d2da4cc4eec36ca004f1a0f3d1c0838cfd2873a484cffdd"}, + {file = "types_protobuf-4.21.0.3-py3-none-any.whl", hash = "sha256:6c87c7f8df61d57a53de8221777e4fcc3c7ed24419fbf43b8e9f50887f3773fa"}, ] [[package]] @@ -1692,14 +1702,14 @@ test = ["pytest (>=4.3)", "pytest-mock (>=3.3)"] [[package]] name = "urllib3" -version = "1.26.13" +version = "1.26.14" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, - {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, + {file = "urllib3-1.26.14-py2.py3-none-any.whl", hash = "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1"}, + {file = "urllib3-1.26.14.tar.gz", hash = "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72"}, ] [package.extras] @@ -1854,4 +1864,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.7" -content-hash = "fb424ed5afc07d1913644fa5255a1c8f75cb18c30b27c9bbff4432ae8751d1c7" +content-hash = "bc0bafb2b760d40dd0ee85f3e26963ae62b8de69e915b7e94779da97621eaad5" diff --git a/pyproject.toml b/pyproject.toml index 9b97f282..adaf26b8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "nibiru" -version = "0.16.8" +version = "0.17.0" description = "Python SDK for interacting with Nibiru." authors = ["Nibiru Chain "] license = "MIT" @@ -34,7 +34,7 @@ pre-commit = "^2.20.0" shutup = "^0.2.0" websocket-client = "^1.4.1" packaging = "^21.3" -nibiru-proto = "==0.16.3" +nibiru-proto = "==0.17.1" bip32 = "^3.3" importlib-metadata = "^5.0.0" diff --git a/tests/conftest.py b/tests/conftest.py index d443a217..1908b006 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -9,7 +9,6 @@ Fixtures available: - sdk_val - sdk_agent -- sdk_oracle """ import os from typing import Any, Dict, List, Optional @@ -23,7 +22,6 @@ PYTEST_GLOBALS_REQUIRED: Dict[str, str] = dict( VALIDATOR_MNEMONIC="", - ORACLE_MNEMONIC="", ) PYTEST_GLOBALS_OPTIONAL: Dict[str, Any] = dict( USE_LOCALNET=False, @@ -131,14 +129,3 @@ def sdk_agent(network: Network) -> Sdk: tx_config = TX_CONFIG agent = Sdk.authorize().with_config(tx_config).with_network(network) return agent - - -# address: nibi10hj3gq54uxd9l5d6a7sn4dcvhd0l3wdgt2zvyp -@pytest.fixture -def sdk_oracle(network: Network) -> Sdk: - tx_config = TX_CONFIG - return ( - Sdk.authorize(pytest.ORACLE_MNEMONIC) - .with_config(tx_config) - .with_network(network) - ) diff --git a/tests/event_test.py b/tests/event_test.py index 2318d9fb..7d9218e6 100644 --- a/tests/event_test.py +++ b/tests/event_test.py @@ -23,29 +23,6 @@ def raw_events(self) -> List[pytypes.RawEvent]: ], 'type': 'transfer', }, - { - 'attributes': [ - {'key': 'action', 'value': 'post_price'}, - {'key': 'module', 'value': 'pricefeed'}, - { - 'key': 'sender', - 'value': 'nibi10hj3gq54uxd9l5d6a7sn4dcvhd0l3wdgt2zvyp', - }, - ], - 'type': 'message', - }, - { - 'attributes': [ - {'key': 'expiry', 'value': '"2022-12-09T07:58:49.559512Z"'}, - { - 'key': 'oracle', - 'value': '"nibi10hj3gq54uxd9l5d6a7sn4dcvhd0l3wdgt2zvyp"', - }, - {'key': 'pair_id', 'value': '"ueth:unusd"'}, - {'key': 'pair_price', 'value': '"1800.000000000000000000"'}, - ], - 'type': 'nibiru.pricefeed.v1.EventOracleUpdatePrice', - }, ] def test_parse_attributes(self, raw_events: List[pytypes.RawEvent]): @@ -57,36 +34,8 @@ def test_parse_attributes(self, raw_events: List[pytypes.RawEvent]): assert attrs["sender"] == "nibi1zaavvzxez0elundtn32qnk9lkm8kmcsz44g7xl" assert attrs["amount"] == "7unibi,70unusd" - raw_event = raw_events[1] - assert "attributes" in raw_event - raw_attributes: list[dict[str, str]] = raw_event['attributes'] - attrs: dict[str, str] = pytypes.Event.parse_attributes(raw_attributes) - assert attrs["action"] == "post_price" - assert attrs["module"] == "pricefeed" - oracle = "nibi10hj3gq54uxd9l5d6a7sn4dcvhd0l3wdgt2zvyp" - assert attrs["sender"] == oracle - - raw_event = raw_events[2] - assert "attributes" in raw_event - raw_attributes: list[dict[str, str]] = raw_event['attributes'] - attrs: dict[str, str] = pytypes.Event.parse_attributes(raw_attributes) - assert attrs["expiry"] == '"2022-12-09T07:58:49.559512Z"' - assert attrs["oracle"] == f'"{oracle}"' - assert attrs["pair_id"] == '"ueth:unusd"' - assert attrs["pair_price"] == '"1800.000000000000000000"' - def test_new_event(self, raw_events: List[pytypes.RawEvent]): event = pytypes.Event(raw_events[0]) assert event.type == "transfer" for attr in ["recipient", "sender", "amount"]: assert attr in event.attrs - - event = pytypes.Event(raw_events[1]) - assert event.type == "message" - for attr in ["action", "module", "sender"]: - assert attr in event.attrs - - event = pytypes.Event(raw_events[2]) - assert event.type == "nibiru.pricefeed.v1.EventOracleUpdatePrice" - for attr in ["expiry", "oracle", "pair_id", "pair_price"]: - assert attr in event.attrs diff --git a/tests/pricefeed_test.py b/tests/pricefeed_test.py deleted file mode 100644 index 28377bb6..00000000 --- a/tests/pricefeed_test.py +++ /dev/null @@ -1,157 +0,0 @@ -# pricefeed_test.py -from datetime import datetime, timedelta -from typing import Dict, List, Optional - -import pytest -from nibiru_proto.proto.cosmos.base.abci.v1beta1.abci_pb2 import TxResponse - -import nibiru -import tests -from tests import dict_keys_must_match, transaction_must_succeed - -WHITELISTED_ORACLES: Dict[str, str] = { - "nibi1hk04vteklhmtwe0zpt7023p5zcgu49e5v3atyp": "CoinGecko oracle", - "nibi10hj3gq54uxd9l5d6a7sn4dcvhd0l3wdgt2zvyp": "CoinMarketCap oracle", - "nibi1r8gjajmlp9tkff0759rmujv568pa7q6v7u4m3z": "Binance oracle", -} - - -def post_price_test_tx( - sdk: nibiru.Sdk, from_oracle: Optional[str] = None -) -> TxResponse: - if from_oracle is None: - from_oracle = sdk.address - tests.LOGGER.info(f"sending 'nibid tx post price' from {from_oracle}") - msg = nibiru.Msg.pricefeed.post_price( - oracle=from_oracle, - token0="ueth", - token1="unusd", - price=1800, - expiry=datetime.utcnow() + timedelta(hours=1), - ) - return sdk.tx.execute_msgs(msg) - - -def test_post_price_unwhitelisted(sdk_oracle: nibiru.Sdk): - tests.LOGGER.info("'test_post_price_unwhitelisted' - should error") - unwhitested_address = "nibi1pzd5e402eld9kcc3h78tmfrm5rpzlzk6hnxkvu" - queryResp = sdk_oracle.query.pricefeed.oracles("ueth:unusd") - - assert unwhitested_address not in queryResp["oracles"] # TODO - tests.LOGGER.info(f"oracle address not whitelisted: {unwhitested_address}") - - with pytest.raises( - nibiru.exceptions.SimulationError, match="unknown address" - ) as err: - tx_output = post_price_test_tx(sdk=sdk_oracle, from_oracle=unwhitested_address) - err_msg = str(err) - assert transaction_must_succeed(tx_output) is None, err_msg - - -def test_query_markets(sdk_oracle: nibiru.Sdk): - # Market ueth:unusd must be in the list of pricefeed markets - markets_output = sdk_oracle.query.pricefeed.markets() - assert isinstance(markets_output, dict) - assert any( - [market["pair_id"] == "ueth:unusd" for market in markets_output["markets"]] - ) - - # Oracle must be in the list of ueth:unusd market oracles - ueth_unusd_market = next( - market - for market in markets_output["markets"] - if market["pair_id"] == "ueth:unusd" - ) - assert sdk_oracle.address in ueth_unusd_market["oracles"] - - -@pytest.mark.order(after="test_query_markets") -class TestPostPrice: - def test_post_in_the_past(self, sdk_oracle: nibiru.Sdk): - # Transaction post_price in the past must raise proper error - with pytest.raises(nibiru.exceptions.SimulationError, match="Price is expired"): - _ = sdk_oracle.tx.execute_msgs( - msgs=nibiru.Msg.pricefeed.post_price( - sdk_oracle.address, - token0="ueth", - token1="unusd", - price=1800, - expiry=datetime.utcnow() - timedelta(hours=1), # Price expired - ) - ) - - def test_post_prices(self, sdk_oracle: nibiru.Sdk): - - # Market ueth:unusd must be in the list of pricefeed markets - markets_output = sdk_oracle.query.pricefeed.markets() - assert isinstance(markets_output, dict) - assert any( - [market["pair_id"] == "ueth:unusd" for market in markets_output["markets"]] - ) - - tests.LOGGER.info("Oracle must be in the list of ueth:unusd market oracles") - ueth_unusd_market = next( - market - for market in markets_output["markets"] - if market["pair_id"] == "ueth:unusd" - ) - assert sdk_oracle.address in ueth_unusd_market["oracles"] - - tests.LOGGER.info("Transaction post_price must succeed") - tx_output = post_price_test_tx(sdk=sdk_oracle) - tests.LOGGER.info( - f"nibid tx pricefeed post-price:\n{tests.format_response(tx_output)}" - ) - transaction_must_succeed(tx_output) - - # Repeating post_price transaction. - # Otherwise, getting "All input prices are expired" on query.pricefeed.price() - if sdk_oracle.address not in WHITELISTED_ORACLES.keys(): - tests.LOGGER.info(f"oracle address not whitelisted: {sdk_oracle.address}") - with pytest.raises(Exception) as err: - tx_output = post_price_test_tx(sdk=sdk_oracle) - err_msg = str(err) - assert transaction_must_succeed(tx_output) is None, err_msg - tx_output = post_price_test_tx(sdk=sdk_oracle) - tests.LOGGER.info( - f"nibid tx pricefeed post-price:\n{tests.format_response(tx_output)}" - ) - assert transaction_must_succeed(tx_output) is None - sdk_oracle.query.wait_for_next_block() - - -@pytest.mark.order(after="TestPostPrice::test_post_prices") -def test_pricefeed_queries(sdk_oracle: nibiru.Sdk): - - # Raw prices must exist after post_price transaction - raw_prices: List[dict] = sdk_oracle.query.pricefeed.raw_prices("ueth:unusd")[ - "raw_prices" - ] - assert len(raw_prices) >= 1 - - # Raw price must be a dict with specific keys - raw_price = raw_prices[0] - dict_keys_must_match(raw_price, ['expiry', 'oracle_address', 'pair_id', 'price']) - - # Price feed params must be a dict with specific keys - price_feed_params = sdk_oracle.query.pricefeed.params()["params"] - tests.LOGGER.info( - f"nibid query pricefeed params:\n{tests.format_response(price_feed_params)}" - ) - dict_keys_must_match(price_feed_params, ['pairs', 'twap_lookback_window']) - - # ueth price object must be a dict with specific keys - ueth_price = sdk_oracle.query.pricefeed.price("ueth:unusd")["price"] - tests.LOGGER.info( - f"nibid query pricefeed price:\n{tests.format_response(ueth_price)}" - ) - dict_keys_must_match(ueth_price, ["pair_id", "price", "twap"]) - - # At least one pair in prices must be ueth:unusd - prices = sdk_oracle.query.pricefeed.prices()["prices"] - tests.LOGGER.info(f"nibid query pricefeed prices:\n{tests.format_response(prices)}") - assert any([price["pair_id"] == "ueth:unusd" for price in prices]) - - # ueth price object must be a dict with specific keys - ueth_price = next(price for price in prices if price["pair_id"] == "ueth:unusd") - dict_keys_must_match(ueth_price, ["pair_id", "price", "twap"]) diff --git a/tests/websocket_test.py b/tests/websocket_test.py index 88795c0e..f094f781 100644 --- a/tests/websocket_test.py +++ b/tests/websocket_test.py @@ -14,7 +14,7 @@ @pytest.mark.slow def test_websocket_listen( - sdk_val: nibiru.Sdk, sdk_oracle: nibiru.Sdk, network: Network + sdk_val: nibiru.Sdk, network: Network ): """ Open a position and ensure output is correct @@ -29,15 +29,9 @@ def test_websocket_listen( EventType.PositionChangedEvent, # Bank EventType.Transfer, - # Pricefeed - EventType.OracleUpdatePriceEvent, ] - expected_events_block = [ - EventType.PairPriceUpdatedEvent, - ] - - expected_events = expected_events_block + expected_events_tx + expected_events = expected_events_tx nibiru_websocket = NibiruWebsocket( network, @@ -66,25 +60,6 @@ def test_websocket_listen( ] ) - sdk_val.tx.execute_msgs( - Msg.pricefeed.post_price( - oracle=sdk_oracle.address, - token0="unibi", - token1="unusd", - price=10, - expiry=datetime.utcnow() + timedelta(hours=1), - ), - ) - sdk_val.tx.execute_msgs( - Msg.pricefeed.post_price( - oracle=sdk_oracle.address, - token0="unibi", - token1="unusd", - price=11, - expiry=datetime.utcnow() + timedelta(hours=1), - ), - ) - LOGGER.info("Closing position") sdk_val.tx.execute_msgs( Msg.perp.close_position( From 070d0875d805a71e90ca290b007f90bc42422d1e Mon Sep 17 00:00:00 2001 From: Oleg Nikonychev Date: Wed, 18 Jan 2023 19:05:53 +0400 Subject: [PATCH 2/2] chore: linting fix --- tests/websocket_test.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tests/websocket_test.py b/tests/websocket_test.py index f094f781..2cc0b3fa 100644 --- a/tests/websocket_test.py +++ b/tests/websocket_test.py @@ -1,5 +1,4 @@ import time -from datetime import datetime, timedelta from multiprocessing import Queue from typing import List @@ -13,9 +12,7 @@ @pytest.mark.slow -def test_websocket_listen( - sdk_val: nibiru.Sdk, network: Network -): +def test_websocket_listen(sdk_val: nibiru.Sdk, network: Network): """ Open a position and ensure output is correct """