From 5ab9b10a6ace6b8de9e898647424897aeaec7813 Mon Sep 17 00:00:00 2001 From: jacekv Date: Fri, 7 Feb 2025 20:45:31 +0800 Subject: [PATCH 01/10] Stuff --- Makefile | 6 +++--- docker-compose.override.yml | 4 ++-- docker-compose.yml | 10 ++++++++-- pantos/servicenode/application.py | 2 -- pantos/servicenode/protocol.py | 1 + pantos/servicenode/restapi.py | 2 -- 6 files changed, 14 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 2f0b1040..0979f94b 100644 --- a/Makefile +++ b/Makefile @@ -81,13 +81,13 @@ coverage-postgres: coverage-all: poetry run python3 -m pytest --cov-report term-missing --cov=pantos tests -.PHONY: tar -tar: dist/pantos_service_node-$(PANTOS_SERVICE_NODE_VERSION).tar.gz - .PHONY: openapi-docs openapi-docs: poetry run python3 -m openapi $(OPENAPI_FILE_LOCATION) +.PHONY: tar +tar: dist/pantos_service_node-$(PANTOS_SERVICE_NODE_VERSION).tar.gz + dist/pantos_service_node-$(PANTOS_SERVICE_NODE_VERSION).tar.gz: pantos/ service-node-config.yml service-node-config.env bids.yml alembic.ini pantos-service-node.sh pantos-service-node-worker.sh cp service-node-config.yml pantos/service-node-config.yml cp service-node-config.env pantos/service-node-config.env diff --git a/docker-compose.override.yml b/docker-compose.override.yml index dc4359a9..51f95899 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -9,7 +9,7 @@ services: networks: pantos-service-node: pantos-ethereum: - entrypoint: sh -c 'set -a; . /etc/pantos/eth-data/ETHEREUM.env && . /etc/pantos/bnb-data/BNB_CHAIN.env; set +a; exec /usr/bin/pantos-service-node-server' + entrypoint: sh -c 'set -a; . /etc/pantos/service-node-config.env && . /etc/pantos/eth-data/ETHEREUM.env && . /etc/pantos/bnb-data/BNB_CHAIN.env; set +a; exec /usr/bin/pantos-service-node-server' environment: PANTOS_ENV_FILE: /etc/pantos/service-node-config.env APP_URL: http://localhost:808${INSTANCE-1} @@ -42,7 +42,7 @@ services: networks: pantos-service-node: pantos-ethereum: - entrypoint: sh -c 'set -a; . /etc/pantos/eth-data/ETHEREUM.env && . /etc/pantos/bnb-data/BNB_CHAIN.env; set +a; exec /usr/bin/pantos-service-node-celery' + entrypoint: sh -c 'set -a; . /etc/pantos/service-node-config.env && . /etc/pantos/eth-data/ETHEREUM.env && . /etc/pantos/bnb-data/BNB_CHAIN.env; set +a; exec /usr/bin/pantos-service-node-celery' environment: PANTOS_ENV_FILE: /etc/pantos/service-node-config.env APP_URL: http://localhost:808${INSTANCE-1} diff --git a/docker-compose.yml b/docker-compose.yml index ee692fef..1f2db30a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -48,6 +48,8 @@ services: condition: service_healthy db: condition: service_healthy + worker: + condition: service_started develop: watch: - action: sync @@ -122,9 +124,13 @@ services: retries: 3 start_period: 20s depends_on: - # Wait for the app to setup the DB - app: + broker: + condition: service_healthy + db: condition: service_healthy + # # Wait for the app to setup the DB + # app: + # condition: service_healthy develop: watch: - action: sync diff --git a/pantos/servicenode/application.py b/pantos/servicenode/application.py index 8056dba3..78d7c3a0 100644 --- a/pantos/servicenode/application.py +++ b/pantos/servicenode/application.py @@ -8,7 +8,6 @@ import flask import semantic_version # type: ignore from pantos.common.blockchains.enums import Blockchain -from pantos.common.health import initialize_blockchain_nodes from pantos.common.logging import LogFile from pantos.common.logging import LogFormat from pantos.common.logging import initialize_logger @@ -96,7 +95,6 @@ def initialize_application(is_flask_app: bool = False) -> None: sys.exit(1) check_protocol_version_compatibility() blockchain_rpc_nodes = get_blockchains_rpc_nodes() - initialize_blockchain_nodes(blockchain_rpc_nodes) def check_protocol_version_compatibility() -> None: diff --git a/pantos/servicenode/protocol.py b/pantos/servicenode/protocol.py index 9e56d26c..ae701076 100644 --- a/pantos/servicenode/protocol.py +++ b/pantos/servicenode/protocol.py @@ -8,6 +8,7 @@ is_supported_protocol_version as _is_supported_protocol_version_by_common _SUPPORTED_PROTOCOL_VERSIONS: typing.Final[set[semantic_version.Version]] = { + semantic_version.Version('0.2.0'), semantic_version.Version('0.3.0'), } diff --git a/pantos/servicenode/restapi.py b/pantos/servicenode/restapi.py index d6af8f06..4d31bf34 100644 --- a/pantos/servicenode/restapi.py +++ b/pantos/servicenode/restapi.py @@ -15,7 +15,6 @@ from pantos.common.blockchains.enums import Blockchain from pantos.common.entities import ServiceNodeBid from pantos.common.restapi import Live -from pantos.common.restapi import NodesHealthResource from pantos.common.restapi import bad_request from pantos.common.restapi import conflict from pantos.common.restapi import internal_server_error @@ -450,7 +449,6 @@ def get(self) -> flask.Response: # Register the RESTful resources _restful_api = flask_restful.Api(flask_app) _restful_api.add_resource(Live, '/health/live') -_restful_api.add_resource(NodesHealthResource, '/health/nodes') _restful_api.add_resource(_Transfer, '/transfer') _restful_api.add_resource(_TransferStatus, '/transfer//status') _restful_api.add_resource(_Bids, '/bids') From 5877a8a5f6f726f08b62620f7a0391ed9064d13d Mon Sep 17 00:00:00 2001 From: jacekv Date: Mon, 10 Feb 2025 16:46:52 +0800 Subject: [PATCH 02/10] Adding commit-reveal to registration --- Dockerfile | 2 +- debian/rules | 2 +- docker-compose.yml | 8 +- environment.yml | 2 +- linux/scripts/pantos-service-node-celery | 2 +- pantos-service-node-worker.sh | 2 +- pantos/servicenode/application.py | 2 - pantos/servicenode/blockchains/base.py | 139 +++++ pantos/servicenode/blockchains/ethereum.py | 79 ++- pantos/servicenode/blockchains/solana.py | 11 + pantos/servicenode/celery.py | 7 +- pantos/servicenode/database/access.py | 8 +- pantos/servicenode/database/models.py | 5 +- poetry.lock | 676 +++++++-------------- pyproject.toml | 6 +- tests/blockchains/test_ethereum.py | 41 +- tests/conftest.py | 7 + tests/test_application.py | 9 +- 18 files changed, 490 insertions(+), 518 deletions(-) diff --git a/Dockerfile b/Dockerfile index 95c936af..8cb4215e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ #syntax=docker/dockerfile:1.7.0-labs # SPDX-License-Identifier: GPL-3.0-only -FROM python:3.12-bookworm AS dev +FROM python:3.13-bookworm AS dev RUN apt-get update && \ apt-get install build-essential debhelper devscripts \ diff --git a/debian/rules b/debian/rules index f7e825c3..f745d664 100755 --- a/debian/rules +++ b/debian/rules @@ -14,7 +14,7 @@ DH_VERBOSE=1 export DH_VIRTUALENV_INSTALL_ROOT=/opt/pantos export POETRY_VIRTUALENVS_CREATE=false -PYTHON_VERSION = 3.12.4 +PYTHON_VERSION = 3.13 SNAKE=debian/$(PACKAGE)$(DH_VIRTUALENV_INSTALL_ROOT)/$(PACKAGE)/bin/python3 EXTRA_REQUIREMENTS=--upgrade-pip --preinstall "setuptools>=38" --preinstall "poetry<2.0.0" --preinstall "dh-poetry" DH_VENV_ARGS=--builtin-venv --python=$(SNAKE) $(EXTRA_REQUIREMENTS) \ diff --git a/docker-compose.yml b/docker-compose.yml index 1f2db30a..1db52a4f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -48,8 +48,6 @@ services: condition: service_healthy db: condition: service_healthy - worker: - condition: service_started develop: watch: - action: sync @@ -128,9 +126,9 @@ services: condition: service_healthy db: condition: service_healthy - # # Wait for the app to setup the DB - # app: - # condition: service_healthy + # Wait for the app to setup the DB + app: + condition: service_healthy develop: watch: - action: sync diff --git a/environment.yml b/environment.yml index 1d690fa4..299dd5b9 100644 --- a/environment.yml +++ b/environment.yml @@ -3,4 +3,4 @@ channels: - defaults - conda-forge dependencies: - - python=3.12 + - python=3.13 diff --git a/linux/scripts/pantos-service-node-celery b/linux/scripts/pantos-service-node-celery index 247c3bfc..fe081dfd 100644 --- a/linux/scripts/pantos-service-node-celery +++ b/linux/scripts/pantos-service-node-celery @@ -71,7 +71,7 @@ fi while true; do echo "Starting the celery worker" - $PROGRAM -m celery -A pantos.servicenode worker $EXTRA_ARGS -l INFO -n pantos.servicenode -Q transfers,bids + $PROGRAM -m celery -A pantos.servicenode worker $EXTRA_ARGS -l INFO -n pantos.servicenode -Q transfers,bids,transactions PYTHON_EXIT_CODE=$? if [ "$PANTOS_CELERY_AUTORESTART" != "true" ]; then diff --git a/pantos-service-node-worker.sh b/pantos-service-node-worker.sh index cd159da1..4daa9dce 100755 --- a/pantos-service-node-worker.sh +++ b/pantos-service-node-worker.sh @@ -1,3 +1,3 @@ #! /bin/sh -celery -A pantos.servicenode worker -l INFO -n pantos.servicenode -Q transfers,bids +celery -A pantos.servicenode worker -l INFO -n pantos.servicenode -Q transfers,bids,transactions diff --git a/pantos/servicenode/application.py b/pantos/servicenode/application.py index 78d7c3a0..dc025fef 100644 --- a/pantos/servicenode/application.py +++ b/pantos/servicenode/application.py @@ -19,7 +19,6 @@ from pantos.servicenode.business.node import NodeInteractor from pantos.servicenode.configuration import config from pantos.servicenode.configuration import get_blockchain_config -from pantos.servicenode.configuration import get_blockchains_rpc_nodes from pantos.servicenode.configuration import get_signer_config from pantos.servicenode.configuration import load_config from pantos.servicenode.database import \ @@ -94,7 +93,6 @@ def initialize_application(is_flask_app: bool = False) -> None: exc_info=True) sys.exit(1) check_protocol_version_compatibility() - blockchain_rpc_nodes = get_blockchains_rpc_nodes() def check_protocol_version_compatibility() -> None: diff --git a/pantos/servicenode/blockchains/base.py b/pantos/servicenode/blockchains/base.py index ca286ec0..bceb6b7e 100644 --- a/pantos/servicenode/blockchains/base.py +++ b/pantos/servicenode/blockchains/base.py @@ -8,6 +8,7 @@ import uuid import semantic_version # type: ignore +from hexbytes import HexBytes from pantos.common.blockchains.base import BlockchainHandler from pantos.common.blockchains.base import BlockchainUtilities from pantos.common.blockchains.base import BlockchainUtilitiesError @@ -17,6 +18,8 @@ from pantos.common.blockchains.enums import ContractAbi from pantos.common.blockchains.factory import get_blockchain_utilities from pantos.common.blockchains.factory import initialize_blockchain_utilities +from pantos.common.blockchains.tasks import \ + _dependent_transaction_submission_task from pantos.common.entities import TransactionStatus from pantos.common.exceptions import ErrorCreator from pantos.common.types import BlockchainAddress @@ -646,6 +649,43 @@ def cancel_unregistration(self) -> None: """ pass # pragma: no cover + @abc.abstractmethod + def calculate_commitment(self, abi_types: list[str], + values: list[typing.Any]) -> HexBytes: + """Calculate the commitment hash for the given ABI types and + values. + + Parameters + ---------- + abi_types : list[str] + The ABI types of the values. + values : list[typing.Any] + The values to be hashed. + + Returns + ------- + web3.HexBytes + The commitment hash. + """ + pass # pragma: no cover + + @abc.abstractmethod + def get_commitment_wait_period(self, blockchain: Blockchain) -> int: + """Get the commitment wait period for the service node. + + Returns + ------- + int + The commitment wait period in blocks. + + Raises + ------ + BlockchainClientError + If the commitment wait period cannot be obtained. + + """ + pass + @abc.abstractmethod def get_validator_fee_factor(self, blockchain: Blockchain) -> int: """Get the validator fee factor of the given blockchain. @@ -805,6 +845,105 @@ def _start_transaction_submission( return self._get_utilities().start_transaction_submission( request_, node_connections) + @dataclasses.dataclass + class _DependingTransactionSubmissionStartRequest: + """Request data for starting a depending transaction submission. + + Attributes + ---------- + prerequisite_transaction: _TransactionSubmissionStartRequest + Transaction submission request data for the transaction to be + send before the depending transaction. + dependent_transaction: _TransactionSubmissionStartRequest + Transaction submission request data for the depending + transaction. + blocks_to_wait: int + The number of blocks to wait before submitting the depending + transaction. + """ + # Forward Reference: Python postpones the evaluation for Python >v3.10 + # automatically + prerequisite_transaction: \ + "BlockchainClient._TransactionSubmissionStartRequest" + dependent_transaction: \ + "BlockchainClient._TransactionSubmissionStartRequest" + blocks_to_wait: int + + def _start_depending_transactions_submission( + self, request: _DependingTransactionSubmissionStartRequest, + node_connections: NodeConnections) -> uuid.UUID: + """Start a depending transaction submission. The dependent + transaction is automatically submitted as soon as the prerequisite + transaction is included and reaches a given number of blocks. + + Parameters + ---------- + request : _DependingTransactionSubmissionStartRequest + The request data for starting a depending transaction + submission. + node_connections : NodeConnections + The NodeConnections instance to be used when interacting + with blockchain nodes. + + Returns + ------- + uuid.UUID + The unique internal transaction ID, which can be used later + to retrieve the status of the transaction submission. + """ + contract_abi = \ + request.prerequisite_transaction \ + .versioned_contract_abi.contract_abi + if contract_abi is ContractAbi.PANTOS_HUB: + contract_address = self._get_config()['hub'] + elif contract_abi is ContractAbi.PANTOS_TOKEN: + contract_address = self._get_config()['pan_token'] + else: + raise NotImplementedError + min_adaptable_fee_per_gas = \ + self._get_config()['min_adaptable_fee_per_gas'] + max_total_fee_per_gas = self._get_config().get('max_total_fee_per_gas') + if max_total_fee_per_gas == 0: + # Since YAML Tag directives do not support the `or` operation + max_total_fee_per_gas = None + adaptable_fee_increase_factor = \ + self._get_config()['adaptable_fee_increase_factor'] + blocks_until_resubmission = \ + self._get_config()['blocks_until_resubmission'] + prerequisite_request = \ + BlockchainUtilities.TransactionSubmissionStartRequest( + contract_address, + request.prerequisite_transaction.versioned_contract_abi, + request.prerequisite_transaction.function_selector, + request.prerequisite_transaction.function_args, + request.prerequisite_transaction.gas, + min_adaptable_fee_per_gas, + max_total_fee_per_gas, request.prerequisite_transaction.amount, + request.prerequisite_transaction.nonce, + adaptable_fee_increase_factor, blocks_until_resubmission) + + prerequisite_internal_id = self._get_utilities( + ).start_transaction_submission(prerequisite_request, node_connections) + + dependent_request = \ + BlockchainUtilities.TransactionSubmissionStartRequest( + contract_address, + request.dependent_transaction.versioned_contract_abi, + request.dependent_transaction.function_selector, + request.dependent_transaction.function_args, + request.dependent_transaction.gas, min_adaptable_fee_per_gas, + max_total_fee_per_gas, request.dependent_transaction.amount, + request.dependent_transaction.nonce, + adaptable_fee_increase_factor, + blocks_until_resubmission) + + return _dependent_transaction_submission_task.delay( + blockchain_id=self.get_blockchain().value, + prerequisite_internal_id=str(prerequisite_internal_id), + blocks_to_wait=request.blocks_to_wait, + average_block_time=self._get_config()['average_block_time'], + request=dependent_request.to_dict()) + @property def _versioned_pantos_forwarder_abi(self) -> VersionedContractAbi: return VersionedContractAbi(ContractAbi.PANTOS_FORWARDER, diff --git a/pantos/servicenode/blockchains/ethereum.py b/pantos/servicenode/blockchains/ethereum.py index d3fe2427..82fa1943 100644 --- a/pantos/servicenode/blockchains/ethereum.py +++ b/pantos/servicenode/blockchains/ethereum.py @@ -6,9 +6,11 @@ import typing import uuid +import semantic_version # type: ignore import web3 import web3.contract.contract import web3.exceptions +from hexbytes import HexBytes from pantos.common.blockchains.base import NodeConnections from pantos.common.blockchains.base import TransactionNonceTooLowError from pantos.common.blockchains.base import TransactionUnderpricedError @@ -23,6 +25,9 @@ _HUB_REGISTER_SERVICE_NODE_FUNCTION_SELECTOR = '0x901428b0' _HUB_REGISTER_SERVICE_NODE_GAS = 300000 +_HUB_COMMIT_HASH_FUNCTION_SELECTOR = '0x3c37b640' +_HUB_COMMIT_HASH_GAS = 250000 + _HUB_TRANSFER_FUNCTION_SELECTOR = '0x87d28cd6' _HUB_TRANSFER_GAS = 200000 _HUB_VERIFY_TRANSFER_FUNCTION_NAME = 'verifyTransfer' @@ -181,13 +186,55 @@ def register_node(self, node_url: str, node_deposit: int, _logger.info('node deposit allowance submitted', extra=extra_info) nonce += 1 - request = BlockchainClient._TransactionSubmissionStartRequest( - self._versioned_pantos_hub_abi, - _HUB_REGISTER_SERVICE_NODE_FUNCTION_SELECTOR, - (self.__address, node_url, node_deposit, withdrawal_address), - _HUB_REGISTER_SERVICE_NODE_GAS, None, nonce) - internal_transaction_id = self._start_transaction_submission( - request, node_connections) + if self.protocol_version >= semantic_version.Version('0.3.0'): + # This part is going to be moved somewhere else + commitment_wait_period = self.get_commitment_wait_period( + self.get_blockchain()) + commit_hash = self.calculate_commitment( + ['address', 'address', 'string', 'address'], [ + self.__address, withdrawal_address, node_url, + self.__address + ]) + + commit_hash_request = \ + BlockchainClient._TransactionSubmissionStartRequest( + self._versioned_pantos_hub_abi, + _HUB_COMMIT_HASH_FUNCTION_SELECTOR, (commit_hash, ), + _HUB_COMMIT_HASH_GAS, None, nonce) + + nonce += 1 + register_node_request = \ + BlockchainClient._TransactionSubmissionStartRequest( + self._versioned_pantos_hub_abi, + _HUB_REGISTER_SERVICE_NODE_FUNCTION_SELECTOR, + ( + self.__address, node_url, + node_deposit, withdrawal_address + ), + _HUB_REGISTER_SERVICE_NODE_GAS, None, nonce + ) + nonce += 1 + + dependent_requests = BlockchainClient \ + ._DependingTransactionSubmissionStartRequest( + prerequisite_transaction=commit_hash_request, + dependent_transaction=register_node_request, + blocks_to_wait=commitment_wait_period, + ) + + internal_transaction_id = \ + self._start_depending_transactions_submission( + dependent_requests, node_connections) + else: + # for version < 0.3.0 + request = BlockchainClient._TransactionSubmissionStartRequest( + self._versioned_pantos_hub_abi, + _HUB_REGISTER_SERVICE_NODE_FUNCTION_SELECTOR, + (self.__address, node_url, node_deposit, + withdrawal_address), _HUB_REGISTER_SERVICE_NODE_GAS, None, + nonce) + internal_transaction_id = self._start_transaction_submission( + request, node_connections) extra_info |= {'internal_transaction_id': internal_transaction_id} _logger.info('node registration submitted', extra=extra_info) except Exception: @@ -315,6 +362,19 @@ def cancel_unregistration(self) -> None: raise self._create_error( 'unable to cancel the service node unregistration') + def get_commitment_wait_period(self, blockchain: Blockchain) -> int: + # Docstring inherited + try: + node_connections = self.__create_node_connections() + hub_contract = self._create_hub_contract(node_connections) + wait_period = hub_contract.functions \ + .getCommitmentWaitPeriod().call().get() + assert isinstance(wait_period, int) + return wait_period + except Exception: + raise self._create_error( + 'unable to get the commitment wait period') + def get_validator_fee_factor(self, blockchain: Blockchain) -> int: # Docstring inherited try: @@ -327,6 +387,11 @@ def get_validator_fee_factor(self, blockchain: Blockchain) -> int: except Exception: raise self._create_error('unable to get the validator fee factor') + def calculate_commitment(self, abi_types: list[str], + values: list[typing.Any]) -> HexBytes: + # Docstring inherited + return web3.Web3.solidity_keccak(abi_types, values) + def _create_hub_contract( self, node_connections: NodeConnections) \ -> NodeConnections.Wrapper[web3.contract.Contract]: diff --git a/pantos/servicenode/blockchains/solana.py b/pantos/servicenode/blockchains/solana.py index 9e082882..85ff8471 100644 --- a/pantos/servicenode/blockchains/solana.py +++ b/pantos/servicenode/blockchains/solana.py @@ -1,8 +1,10 @@ """Module for Solana-specific clients and errors. """ +import typing import uuid +from hexbytes import HexBytes from pantos.common.blockchains.enums import Blockchain from pantos.common.types import BlockchainAddress @@ -95,6 +97,15 @@ def cancel_unregistration(self) -> None: # Docstring inherited raise NotImplementedError # pragma: no cover + def calculate_commitment(self, abi_types: list[str], + values: list[typing.Any]) -> HexBytes: + # Docstring inherited + raise NotImplementedError + + def get_commitment_wait_period(self, blockchain: Blockchain) -> int: + # Docstring inherited + raise NotImplementedError + def get_validator_fee_factor(self, blockchain: Blockchain) -> int: # Docstring inherited raise NotImplementedError # pragma: no cover diff --git a/pantos/servicenode/celery.py b/pantos/servicenode/celery.py index 634e6abe..1970712c 100644 --- a/pantos/servicenode/celery.py +++ b/pantos/servicenode/celery.py @@ -20,6 +20,7 @@ _TRANSFERS_QUEUE_NAME = 'transfers' _BIDS_QUEUE_NAME = 'bids' +_TRANSACTIONS_QUEUE_NAME = 'transactions' _logger = logging.getLogger(__name__) """Logger for this module.""" @@ -65,7 +66,8 @@ def verify_celery_url_has_ssl() -> bool: backend=config['celery']['backend'], include=[ 'pantos.common.blockchains.tasks', 'pantos.servicenode.business.transfers', - 'pantos.servicenode.business.plugins' + 'pantos.servicenode.business.plugins', + 'pantos.servicenode.business.tasks' ], broker_use_ssl=ca_certs) """Celery application instance.""" @@ -83,6 +85,9 @@ def verify_celery_url_has_ssl() -> bool: }, 'pantos.common.blockchains.tasks.*': { 'queue': _TRANSFERS_QUEUE_NAME + }, + 'pantos.servicenode.business.tasks.*': { + 'queue': _TRANSACTIONS_QUEUE_NAME } }, task_track_started=True, diff --git a/pantos/servicenode/database/access.py b/pantos/servicenode/database/access.py index 290b668d..5edfca79 100644 --- a/pantos/servicenode/database/access.py +++ b/pantos/servicenode/database/access.py @@ -296,7 +296,7 @@ def update_on_chain_transfer_id(internal_transfer_id: int, transfer.on_chain_transfer_id = typing.cast(sqlalchemy.Column, on_chain_transfer_id) transfer.updated = typing.cast(sqlalchemy.Column, - datetime.datetime.utcnow()) + datetime.datetime.now(datetime.UTC)) def update_transfer_nonce(internal_transfer_id: int, blockchain: Blockchain, @@ -394,7 +394,7 @@ def update_transfer_status(internal_transfer_id: int, # the unique sender nonce constraint transfer.sender_nonce = typing.cast(sqlalchemy.Column, None) transfer.updated = typing.cast(sqlalchemy.Column, - datetime.datetime.utcnow()) + datetime.datetime.now(datetime.UTC)) def update_transfer_transaction_id(internal_transfer_id: int, @@ -424,7 +424,7 @@ def update_transfer_transaction_id(internal_transfer_id: int, transfer.transaction_id = typing.cast(sqlalchemy.Column, transaction_id) transfer.updated = typing.cast(sqlalchemy.Column, - datetime.datetime.utcnow()) + datetime.datetime.now(datetime.UTC)) def update_transfer_task_id(internal_transfer_id: int, @@ -452,7 +452,7 @@ def update_transfer_task_id(internal_transfer_id: int, f'unknown internal transfer ID: {internal_transfer_id}') transfer.task_id = typing.cast(sqlalchemy.Column, str(task_id)) transfer.updated = typing.cast(sqlalchemy.Column, - datetime.datetime.utcnow()) + datetime.datetime.now(datetime.UTC)) def _read_id(session: sqlalchemy.orm.Session, model: typing.Type[B], diff --git a/pantos/servicenode/database/models.py b/pantos/servicenode/database/models.py index e4033d92..d62fac2f 100644 --- a/pantos/servicenode/database/models.py +++ b/pantos/servicenode/database/models.py @@ -284,8 +284,9 @@ class Transfer(Base): status_id = sqlalchemy.Column(sqlalchemy.Integer, sqlalchemy.ForeignKey('transfer_status.id'), nullable=False) - created = sqlalchemy.Column(sqlalchemy.DateTime, nullable=False, - default=datetime.datetime.utcnow) + created = sqlalchemy.Column(sqlalchemy.DateTime(timezone=True), + nullable=False, + default=datetime.datetime.now(datetime.UTC)) updated = sqlalchemy.Column(sqlalchemy.DateTime) source_blockchain = sqlalchemy.orm.relationship( 'Blockchain', diff --git a/poetry.lock b/poetry.lock index 6538065a..843f668a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.0.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" @@ -6,8 +6,6 @@ version = "2.4.4" description = "Happy Eyeballs for asyncio" optional = false python-versions = ">=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "aiohappyeyeballs-2.4.4-py3-none-any.whl", hash = "sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8"}, {file = "aiohappyeyeballs-2.4.4.tar.gz", hash = "sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745"}, @@ -15,89 +13,92 @@ files = [ [[package]] name = "aiohttp" -version = "3.11.11" +version = "3.11.12" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.9" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" -files = [ - {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8"}, - {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5"}, - {file = "aiohttp-3.11.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c"}, - {file = "aiohttp-3.11.11-cp310-cp310-win32.whl", hash = "sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745"}, - {file = "aiohttp-3.11.11-cp310-cp310-win_amd64.whl", hash = "sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773"}, - {file = "aiohttp-3.11.11-cp311-cp311-win32.whl", hash = "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62"}, - {file = "aiohttp-3.11.11-cp311-cp311-win_amd64.whl", hash = "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e"}, - {file = "aiohttp-3.11.11-cp312-cp312-win32.whl", hash = "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600"}, - {file = "aiohttp-3.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5"}, - {file = "aiohttp-3.11.11-cp313-cp313-win32.whl", hash = "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d"}, - {file = "aiohttp-3.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3e23419d832d969f659c208557de4a123e30a10d26e1e14b73431d3c13444c2e"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21fef42317cf02e05d3b09c028712e1d73a9606f02467fd803f7c1f39cc59add"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1f21bb8d0235fc10c09ce1d11ffbd40fc50d3f08a89e4cf3a0c503dc2562247a"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1642eceeaa5ab6c9b6dfeaaa626ae314d808188ab23ae196a34c9d97efb68350"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2170816e34e10f2fd120f603e951630f8a112e1be3b60963a1f159f5699059a6"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8be8508d110d93061197fd2d6a74f7401f73b6d12f8822bbcd6d74f2b55d71b1"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eed954b161e6b9b65f6be446ed448ed3921763cc432053ceb606f89d793927e"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6c9af134da4bc9b3bd3e6a70072509f295d10ee60c697826225b60b9959acdd"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44167fc6a763d534a6908bdb2592269b4bf30a03239bcb1654781adf5e49caf1"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:479b8c6ebd12aedfe64563b85920525d05d394b85f166b7873c8bde6da612f9c"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:10b4ff0ad793d98605958089fabfa350e8e62bd5d40aa65cdc69d6785859f94e"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b540bd67cfb54e6f0865ceccd9979687210d7ed1a1cc8c01f8e67e2f1e883d28"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1dac54e8ce2ed83b1f6b1a54005c87dfed139cf3f777fdc8afc76e7841101226"}, - {file = "aiohttp-3.11.11-cp39-cp39-win32.whl", hash = "sha256:568c1236b2fde93b7720f95a890741854c1200fba4a3471ff48b2934d2d93fd3"}, - {file = "aiohttp-3.11.11-cp39-cp39-win_amd64.whl", hash = "sha256:943a8b052e54dfd6439fd7989f67fc6a7f2138d0a2cf0a7de5f18aa4fe7eb3b1"}, - {file = "aiohttp-3.11.11.tar.gz", hash = "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e"}, +files = [ + {file = "aiohttp-3.11.12-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:aa8a8caca81c0a3e765f19c6953416c58e2f4cc1b84829af01dd1c771bb2f91f"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:84ede78acde96ca57f6cf8ccb8a13fbaf569f6011b9a52f870c662d4dc8cd854"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:584096938a001378484aa4ee54e05dc79c7b9dd933e271c744a97b3b6f644957"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:392432a2dde22b86f70dd4a0e9671a349446c93965f261dbaecfaf28813e5c42"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:88d385b8e7f3a870146bf5ea31786ef7463e99eb59e31db56e2315535d811f55"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b10a47e5390c4b30a0d58ee12581003be52eedd506862ab7f97da7a66805befb"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b5263dcede17b6b0c41ef0c3ccce847d82a7da98709e75cf7efde3e9e3b5cae"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50c5c7b8aa5443304c55c262c5693b108c35a3b61ef961f1e782dd52a2f559c7"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d1c031a7572f62f66f1257db37ddab4cb98bfaf9b9434a3b4840bf3560f5e788"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:7e44eba534381dd2687be50cbd5f2daded21575242ecfdaf86bbeecbc38dae8e"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:145a73850926018ec1681e734cedcf2716d6a8697d90da11284043b745c286d5"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:2c311e2f63e42c1bf86361d11e2c4a59f25d9e7aabdbdf53dc38b885c5435cdb"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ea756b5a7bac046d202a9a3889b9a92219f885481d78cd318db85b15cc0b7bcf"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:526c900397f3bbc2db9cb360ce9c35134c908961cdd0ac25b1ae6ffcaa2507ff"}, + {file = "aiohttp-3.11.12-cp310-cp310-win32.whl", hash = "sha256:b8d3bb96c147b39c02d3db086899679f31958c5d81c494ef0fc9ef5bb1359b3d"}, + {file = "aiohttp-3.11.12-cp310-cp310-win_amd64.whl", hash = "sha256:7fe3d65279bfbee8de0fb4f8c17fc4e893eed2dba21b2f680e930cc2b09075c5"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:87a2e00bf17da098d90d4145375f1d985a81605267e7f9377ff94e55c5d769eb"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b34508f1cd928ce915ed09682d11307ba4b37d0708d1f28e5774c07a7674cac9"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:936d8a4f0f7081327014742cd51d320296b56aa6d324461a13724ab05f4b2933"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de1378f72def7dfb5dbd73d86c19eda0ea7b0a6873910cc37d57e80f10d64e1"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9d45dbb3aaec05cf01525ee1a7ac72de46a8c425cb75c003acd29f76b1ffe94"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:930ffa1925393381e1e0a9b82137fa7b34c92a019b521cf9f41263976666a0d6"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8340def6737118f5429a5df4e88f440746b791f8f1c4ce4ad8a595f42c980bd5"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4016e383f91f2814e48ed61e6bda7d24c4d7f2402c75dd28f7e1027ae44ea204"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c0600bcc1adfaaac321422d615939ef300df81e165f6522ad096b73439c0f58"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:0450ada317a65383b7cce9576096150fdb97396dcfe559109b403c7242faffef"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:850ff6155371fd802a280f8d369d4e15d69434651b844bde566ce97ee2277420"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8fd12d0f989c6099e7b0f30dc6e0d1e05499f3337461f0b2b0dadea6c64b89df"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:76719dd521c20a58a6c256d058547b3a9595d1d885b830013366e27011ffe804"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:97fe431f2ed646a3b56142fc81d238abcbaff08548d6912acb0b19a0cadc146b"}, + {file = "aiohttp-3.11.12-cp311-cp311-win32.whl", hash = "sha256:e10c440d142fa8b32cfdb194caf60ceeceb3e49807072e0dc3a8887ea80e8c16"}, + {file = "aiohttp-3.11.12-cp311-cp311-win_amd64.whl", hash = "sha256:246067ba0cf5560cf42e775069c5d80a8989d14a7ded21af529a4e10e3e0f0e6"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e392804a38353900c3fd8b7cacbea5132888f7129f8e241915e90b85f00e3250"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8fa1510b96c08aaad49303ab11f8803787c99222288f310a62f493faf883ede1"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dc065a4285307607df3f3686363e7f8bdd0d8ab35f12226362a847731516e42c"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddb31f8474695cd61fc9455c644fc1606c164b93bff2490390d90464b4655df"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dec0000d2d8621d8015c293e24589d46fa218637d820894cb7356c77eca3259"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3552fe98e90fdf5918c04769f338a87fa4f00f3b28830ea9b78b1bdc6140e0d"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dfe7f984f28a8ae94ff3a7953cd9678550dbd2a1f9bda5dd9c5ae627744c78e"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a481a574af914b6e84624412666cbfbe531a05667ca197804ecc19c97b8ab1b0"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1987770fb4887560363b0e1a9b75aa303e447433c41284d3af2840a2f226d6e0"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:a4ac6a0f0f6402854adca4e3259a623f5c82ec3f0c049374133bcb243132baf9"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c96a43822f1f9f69cc5c3706af33239489a6294be486a0447fb71380070d4d5f"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a5e69046f83c0d3cb8f0d5bd9b8838271b1bc898e01562a04398e160953e8eb9"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:68d54234c8d76d8ef74744f9f9fc6324f1508129e23da8883771cdbb5818cbef"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9fd9dcf9c91affe71654ef77426f5cf8489305e1c66ed4816f5a21874b094b9"}, + {file = "aiohttp-3.11.12-cp312-cp312-win32.whl", hash = "sha256:0ed49efcd0dc1611378beadbd97beb5d9ca8fe48579fc04a6ed0844072261b6a"}, + {file = "aiohttp-3.11.12-cp312-cp312-win_amd64.whl", hash = "sha256:54775858c7f2f214476773ce785a19ee81d1294a6bedc5cc17225355aab74802"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:413ad794dccb19453e2b97c2375f2ca3cdf34dc50d18cc2693bd5aed7d16f4b9"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a93d28ed4b4b39e6f46fd240896c29b686b75e39cc6992692e3922ff6982b4c"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d589264dbba3b16e8951b6f145d1e6b883094075283dafcab4cdd564a9e353a0"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5148ca8955affdfeb864aca158ecae11030e952b25b3ae15d4e2b5ba299bad2"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:525410e0790aab036492eeea913858989c4cb070ff373ec3bc322d700bdf47c1"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bd8695be2c80b665ae3f05cb584093a1e59c35ecb7d794d1edd96e8cc9201d7"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0203433121484b32646a5f5ea93ae86f3d9559d7243f07e8c0eab5ff8e3f70e"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40cd36749a1035c34ba8d8aaf221b91ca3d111532e5ccb5fa8c3703ab1b967ed"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a7442662afebbf7b4c6d28cb7aab9e9ce3a5df055fc4116cc7228192ad6cb484"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:8a2fb742ef378284a50766e985804bd6adb5adb5aa781100b09befdbfa757b65"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2cee3b117a8d13ab98b38d5b6bdcd040cfb4181068d05ce0c474ec9db5f3c5bb"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f6a19bcab7fbd8f8649d6595624856635159a6527861b9cdc3447af288a00c00"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e4cecdb52aaa9994fbed6b81d4568427b6002f0a91c322697a4bfcc2b2363f5a"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:30f546358dfa0953db92ba620101fefc81574f87b2346556b90b5f3ef16e55ce"}, + {file = "aiohttp-3.11.12-cp313-cp313-win32.whl", hash = "sha256:ce1bb21fc7d753b5f8a5d5a4bae99566386b15e716ebdb410154c16c91494d7f"}, + {file = "aiohttp-3.11.12-cp313-cp313-win_amd64.whl", hash = "sha256:f7914ab70d2ee8ab91c13e5402122edbc77821c66d2758abb53aabe87f013287"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c3623053b85b4296cd3925eeb725e386644fd5bc67250b3bb08b0f144803e7b"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:67453e603cea8e85ed566b2700efa1f6916aefbc0c9fcb2e86aaffc08ec38e78"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6130459189e61baac5a88c10019b21e1f0c6d00ebc770e9ce269475650ff7f73"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9060addfa4ff753b09392efe41e6af06ea5dd257829199747b9f15bfad819460"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34245498eeb9ae54c687a07ad7f160053911b5745e186afe2d0c0f2898a1ab8a"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8dc0fba9a74b471c45ca1a3cb6e6913ebfae416678d90529d188886278e7f3f6"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a478aa11b328983c4444dacb947d4513cb371cd323f3845e53caeda6be5589d5"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c160a04283c8c6f55b5bf6d4cad59bb9c5b9c9cd08903841b25f1f7109ef1259"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:edb69b9589324bdc40961cdf0657815df674f1743a8d5ad9ab56a99e4833cfdd"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ee84c2a22a809c4f868153b178fe59e71423e1f3d6a8cd416134bb231fbf6d3"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bf4480a5438f80e0f1539e15a7eb8b5f97a26fe087e9828e2c0ec2be119a9f72"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:e6b2732ef3bafc759f653a98881b5b9cdef0716d98f013d376ee8dfd7285abf1"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f752e80606b132140883bb262a457c475d219d7163d996dc9072434ffb0784c4"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ab3247d58b393bda5b1c8f31c9edece7162fc13265334217785518dd770792b8"}, + {file = "aiohttp-3.11.12-cp39-cp39-win32.whl", hash = "sha256:0d5176f310a7fe6f65608213cc74f4228e4f4ce9fd10bcb2bb6da8fc66991462"}, + {file = "aiohttp-3.11.12-cp39-cp39-win_amd64.whl", hash = "sha256:74bd573dde27e58c760d9ca8615c41a57e719bff315c9adb6f2a4281a28e8798"}, + {file = "aiohttp-3.11.12.tar.gz", hash = "sha256:7603ca26d75b1b86160ce1bbe2787a0b706e592af5b2504e12caa88a217767b0"}, ] [package.dependencies] @@ -118,8 +119,6 @@ version = "1.3.2" description = "aiosignal: a list of registered asynchronous callbacks" optional = false python-versions = ">=3.9" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5"}, {file = "aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54"}, @@ -134,8 +133,6 @@ version = "1.14.1" description = "A database migration tool for SQLAlchemy." optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "alembic-1.14.1-py3-none-any.whl", hash = "sha256:1acdd7a3a478e208b0503cd73614d5e4c6efafa4e73518bb60e4f2846a37b1c5"}, {file = "alembic-1.14.1.tar.gz", hash = "sha256:496e888245a53adf1498fcab31713a469c65836f8de76e01399aa1c3e90dd213"}, @@ -155,8 +152,6 @@ version = "5.3.1" description = "Low-level AMQP client for Python (fork of amqplib)." optional = false python-versions = ">=3.6" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "amqp-5.3.1-py3-none-any.whl", hash = "sha256:43b3319e1b4e7d1251833a93d672b4af1e40f3d632d479b98661a95f117880a2"}, {file = "amqp-5.3.1.tar.gz", hash = "sha256:cddc00c725449522023bad949f70fff7b48f0b1ade74d170a6f10ab044739432"}, @@ -171,8 +166,6 @@ version = "10.0.0" description = "A library for parsing ISO 8601 strings." optional = false python-versions = "*" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "aniso8601-10.0.0-py2.py3-none-any.whl", hash = "sha256:3c943422efaa0229ebd2b0d7d223effb5e7c89e24d2267ebe76c61a2d8e290cb"}, {file = "aniso8601-10.0.0.tar.gz", hash = "sha256:ff1d0fc2346688c62c0151547136ac30e322896ed8af316ef7602c47da9426cf"}, @@ -187,8 +180,6 @@ version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, @@ -200,8 +191,6 @@ version = "6.8.1" description = "A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification)." optional = false python-versions = ">=3.9" -groups = ["docs"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "apispec-6.8.1-py3-none-any.whl", hash = "sha256:eacba00df745efc9adb2a45cf992300e87938582077e101fb26b78ecf4320beb"}, {file = "apispec-6.8.1.tar.gz", hash = "sha256:f4916cbb7be156963b18f5929a0e42bd2349135834b680a81b12432bcfaa9a39"}, @@ -224,8 +213,6 @@ version = "1.2.0" description = "Web framework plugins for apispec." optional = false python-versions = ">=3.8" -groups = ["docs"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "apispec_webframeworks-1.2.0-py3-none-any.whl", hash = "sha256:68aea0d1eeb3caeeacc7d6772a48c59c8b60b1a88d0bd51529d94597ccf33116"}, {file = "apispec_webframeworks-1.2.0.tar.gz", hash = "sha256:5689288c266a2713c2f516eacc14ea2fec9b21f193edc8f659c770342b97fd81"}, @@ -244,8 +231,6 @@ version = "25.1.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.8" -groups = ["main", "docs", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "attrs-25.1.0-py3-none-any.whl", hash = "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a"}, {file = "attrs-25.1.0.tar.gz", hash = "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e"}, @@ -265,8 +250,6 @@ version = "1.8.2" description = "Security oriented static analyser for python code." optional = false python-versions = ">=3.9" -groups = ["lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "bandit-1.8.2-py3-none-any.whl", hash = "sha256:df6146ad73dd30e8cbda4e29689ddda48364e36ff655dbfc86998401fcf1721f"}, {file = "bandit-1.8.2.tar.gz", hash = "sha256:e00ad5a6bc676c0954669fe13818024d66b70e42cf5adb971480cf3b671e835f"}, @@ -291,8 +274,6 @@ version = "4.2.1" description = "Python multiprocessing fork with improvements and bugfixes" optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "billiard-4.2.1-py3-none-any.whl", hash = "sha256:40b59a4ac8806ba2c2369ea98d876bc6108b051c227baffd928c644d15d8f3cb"}, {file = "billiard-4.2.1.tar.gz", hash = "sha256:12b641b0c539073fc8d3f5b8b7be998956665c4233c7c1fcd66a7e677c4fb36f"}, @@ -304,8 +285,6 @@ version = "3.0.0" description = "efficient arrays of booleans -- C extension" optional = false python-versions = "*" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "bitarray-3.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5ddbf71a97ad1d6252e6e93d2d703b624d0a5b77c153b12f9ea87d83e1250e0c"}, {file = "bitarray-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0e7f24a0b01e6e6a0191c50b06ca8edfdec1988d9d2b264d669d2487f4f4680"}, @@ -452,8 +431,6 @@ version = "1.9.0" description = "Fast, simple object-to-object and broadcast signaling" optional = false python-versions = ">=3.9" -groups = ["main", "docs"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc"}, {file = "blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf"}, @@ -465,8 +442,6 @@ version = "1.5.2" description = "A decorator for caching properties in classes." optional = false python-versions = "*" -groups = ["test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "cached-property-1.5.2.tar.gz", hash = "sha256:9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130"}, {file = "cached_property-1.5.2-py2.py3-none-any.whl", hash = "sha256:df4f613cf7ad9a588cc381aaf4a512d26265ecebd5eb9e1ba12f1319eb85a6a0"}, @@ -478,8 +453,6 @@ version = "5.3.1" description = "Distributed Task Queue." optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "celery-5.3.1-py3-none-any.whl", hash = "sha256:27f8f3f3b58de6e0ab4f174791383bbd7445aff0471a43e99cfd77727940753f"}, {file = "celery-5.3.1.tar.gz", hash = "sha256:f84d1c21a1520c116c2b7d26593926581191435a03aa74b77c941b93ca1c6210"}, @@ -535,8 +508,6 @@ version = "1.3.4" description = "Lightweight, extensible schema and data validation tool for Python dictionaries." optional = false python-versions = ">=2.7" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "Cerberus-1.3.4.tar.gz", hash = "sha256:d1b21b3954b2498d9a79edf16b3170a3ac1021df88d197dc2ce5928ba519237c"}, ] @@ -546,15 +517,13 @@ setuptools = "*" [[package]] name = "certifi" -version = "2024.12.14" +version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ - {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, - {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, + {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, + {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, ] [[package]] @@ -563,8 +532,6 @@ version = "3.4.0" description = "Validate configuration and produce human readable error messages." optional = false python-versions = ">=3.8" -groups = ["dev"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, @@ -576,8 +543,6 @@ version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, @@ -679,8 +644,6 @@ version = "2.0.1" description = "Python bindings for C-KZG-4844" optional = false python-versions = "*" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "ckzg-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b7f9ba6d215f8981c5545f952aac84875bd564a63da02fb22a3d1321662ecdc0"}, {file = "ckzg-2.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8fdec3ff96399acba9baeef9e1b0b5258c08f73245780e6c69f7b73def5e8d0a"}, @@ -784,8 +747,6 @@ version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" -groups = ["main", "docs"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, @@ -800,8 +761,6 @@ version = "0.3.1" description = "Enables git-like *did-you-mean* feature in click" optional = false python-versions = ">=3.6.2" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "click_didyoumean-0.3.1-py3-none-any.whl", hash = "sha256:5c4bb6007cfea5f2fd6583a2fb6701a22a41eb98957e63d0fac41c10e7c3117c"}, {file = "click_didyoumean-0.3.1.tar.gz", hash = "sha256:4f82fdff0dbe64ef8ab2279bd6aa3f6a99c3b28c05aa09cbfc07c9d7fbb5a463"}, @@ -816,8 +775,6 @@ version = "1.1.1" description = "An extension module for click to enable registering CLI commands via setuptools entry-points." optional = false python-versions = "*" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b"}, {file = "click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8"}, @@ -835,8 +792,6 @@ version = "0.3.0" description = "REPL plugin for Click" optional = false python-versions = ">=3.6" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "click-repl-0.3.0.tar.gz", hash = "sha256:17849c23dba3d667247dc4defe1757fff98694e90fe37474f3feebb69ced26a9"}, {file = "click_repl-0.3.0-py3-none-any.whl", hash = "sha256:fb7e06deb8da8de86180a33a9da97ac316751c094c6899382da7feeeeb51b812"}, @@ -855,12 +810,10 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["main", "docs", "lint", "test"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = {main = "(implementation_name == \"cpython\" or implementation_name == \"pypy\") and platform_system == \"Windows\"", docs = "(implementation_name == \"cpython\" or implementation_name == \"pypy\") and platform_system == \"Windows\"", lint = "(implementation_name == \"cpython\" or implementation_name == \"pypy\") and platform_system == \"Windows\"", test = "(implementation_name == \"cpython\" or implementation_name == \"pypy\") and sys_platform == \"win32\""} [[package]] name = "coverage" @@ -868,8 +821,6 @@ version = "7.6.10" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" -groups = ["test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "coverage-7.6.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5c912978f7fbf47ef99cec50c4401340436d200d41d714c7a4766f377c5b7b78"}, {file = "coverage-7.6.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a01ec4af7dfeb96ff0078ad9a48810bb0cc8abcb0115180c6013a6b26237626c"}, @@ -944,8 +895,6 @@ version = "1.0.1" description = "Cython implementation of Toolz: High performance functional utilities" optional = false python-versions = ">=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\"" files = [ {file = "cytoolz-1.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cec9af61f71fc3853eb5dca3d42eb07d1f48a4599fa502cbe92adde85f74b042"}, {file = "cytoolz-1.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:140bbd649dbda01e91add7642149a5987a7c3ccc251f2263de894b89f50b6608"}, @@ -1061,8 +1010,6 @@ version = "0.3.9" description = "Distribution utilities" optional = false python-versions = "*" -groups = ["dev"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, @@ -1074,8 +1021,6 @@ version = "5.2.0" description = "eth_abi: Python utilities for working with Ethereum ABI definitions, especially encoding and decoding" optional = false python-versions = "<4,>=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "eth_abi-5.2.0-py3-none-any.whl", hash = "sha256:17abe47560ad753f18054f5b3089fcb588f3e3a092136a416b6c1502cb7e8877"}, {file = "eth_abi-5.2.0.tar.gz", hash = "sha256:178703fa98c07d8eecd5ae569e7e8d159e493ebb6eeb534a8fe973fbc4e40ef0"}, @@ -1098,8 +1043,6 @@ version = "0.13.0" description = "eth-account: Sign Ethereum transactions and messages with local private keys" optional = false python-versions = "<4,>=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "eth_account-0.13.0-py3-none-any.whl", hash = "sha256:84d27664038c68e6bee28fa5de803c3b629dc5d97cd61d12e5f442c561a5b8af"}, {file = "eth_account-0.13.0.tar.gz", hash = "sha256:ccea4383d9d37b46e17c977b0a5ea397cef1ac1ad3330431ae4b0c10b62d4fcd"}, @@ -1128,8 +1071,6 @@ version = "3.1.0" description = "A python implementation of the bloom filter used by Ethereum" optional = false python-versions = "<4,>=3.8" -groups = ["test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "eth_bloom-3.1.0-py3-none-any.whl", hash = "sha256:c96b2dd6cafa407373bca1a9d74b650378ba672d5b17f2771bf7d3c3aaa7651c"}, {file = "eth_bloom-3.1.0.tar.gz", hash = "sha256:4bc918f6fde44334e92b23cfb345db961e2e3af620535cbc872444f7a143cb88"}, @@ -1149,8 +1090,6 @@ version = "0.7.1" description = "eth-hash: The Ethereum hashing function, keccak256, sometimes (erroneously) called sha3" optional = false python-versions = "<4,>=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "eth_hash-0.7.1-py3-none-any.whl", hash = "sha256:0fb1add2adf99ef28883fd6228eb447ef519ea72933535ad1a0b28c6f65f868a"}, {file = "eth_hash-0.7.1.tar.gz", hash = "sha256:d2411a403a0b0a62e8247b4117932d900ffb4c8c64b15f92620547ca5ce46be5"}, @@ -1169,25 +1108,24 @@ test = ["pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] [[package]] name = "eth-keyfile" -version = "0.8.1" +version = "0.9.0" description = "eth-keyfile: A library for handling the encrypted keyfiles used to store ethereum private keys" optional = false python-versions = "<4,>=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ - {file = "eth_keyfile-0.8.1-py3-none-any.whl", hash = "sha256:65387378b82fe7e86d7cb9f8d98e6d639142661b2f6f490629da09fddbef6d64"}, - {file = "eth_keyfile-0.8.1.tar.gz", hash = "sha256:9708bc31f386b52cca0969238ff35b1ac72bd7a7186f2a84b86110d3c973bec1"}, + {file = "eth_keyfile-0.9.0-py3-none-any.whl", hash = "sha256:45d3513b6433ad885370225ba0429ed26493ba23589c5b1ca5da024765020fef"}, + {file = "eth_keyfile-0.9.0.tar.gz", hash = "sha256:8621c35e83cbc05909d2f23dbb8a87633918733caea553ae0e298f6a06291526"}, ] [package.dependencies] eth-keys = ">=0.4.0" eth-utils = ">=2" +py_ecc = ">=5.2.0" pycryptodome = ">=3.6.6,<4" [package.extras] -dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "ipython", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -docs = ["towncrier (>=21,<22)"] +dev = ["build (>=0.9.0)", "bump_my_version (>=0.19.0)", "ipython", "mypy (==1.10.0)", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "towncrier (>=24,<25)", "tox (>=4.0.0)", "twine", "wheel"] +docs = ["towncrier (>=24,<25)"] test = ["pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] [[package]] @@ -1196,8 +1134,6 @@ version = "0.4.0" description = "Common API for Ethereum key operations." optional = false python-versions = "*" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "eth-keys-0.4.0.tar.gz", hash = "sha256:7d18887483bc9b8a3fdd8e32ddcb30044b9f08fcb24a380d93b6eee3a5bb3216"}, {file = "eth_keys-0.4.0-py3-none-any.whl", hash = "sha256:e07915ffb91277803a28a379418bdd1fad1f390c38ad9353a0f189789a440d5d"}, @@ -1216,15 +1152,13 @@ test = ["asn1tools (>=0.146.2,<0.147)", "eth-hash[pycryptodome]", "eth-hash[pysh [[package]] name = "eth-rlp" -version = "2.1.0" +version = "2.2.0" description = "eth-rlp: RLP definitions for common Ethereum objects in Python" optional = false -python-versions = ">=3.8, <4" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" +python-versions = "<4,>=3.8" files = [ - {file = "eth-rlp-2.1.0.tar.gz", hash = "sha256:d5b408a8cd20ed496e8e66d0559560d29bc21cee482f893936a1f05d0dddc4a0"}, - {file = "eth_rlp-2.1.0-py3-none-any.whl", hash = "sha256:6f476eb7e37d81feaba5d98aed887e467be92648778c44b19fe594aea209cde1"}, + {file = "eth_rlp-2.2.0-py3-none-any.whl", hash = "sha256:5692d595a741fbaef1203db6a2fedffbd2506d31455a6ad378c8449ee5985c47"}, + {file = "eth_rlp-2.2.0.tar.gz", hash = "sha256:5e4b2eb1b8213e303d6a232dfe35ab8c29e2d3051b86e8d359def80cd21db83d"}, ] [package.dependencies] @@ -1233,8 +1167,8 @@ hexbytes = ">=1.2.0" rlp = ">=0.6.0" [package.extras] -dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "eth-hash[pycryptodome]", "ipython", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -docs = ["sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] +dev = ["build (>=0.9.0)", "bump_my_version (>=0.19.0)", "eth-hash[pycryptodome]", "ipython", "mypy (==1.10.0)", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx_rtd_theme (>=1.0.0)", "towncrier (>=24,<25)", "tox (>=4.0.0)", "twine", "wheel"] +docs = ["sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx_rtd_theme (>=1.0.0)", "towncrier (>=24,<25)"] test = ["eth-hash[pycryptodome]", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] [[package]] @@ -1243,8 +1177,6 @@ version = "0.9.0b1" description = "Tools for testing Ethereum applications." optional = false python-versions = ">=3.6.8,<4" -groups = ["test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "eth-tester-0.9.0b1.tar.gz", hash = "sha256:d7db78d21bb33bc645d6172dd5ad259eab52399f2b62d4e9fcab075baf8a6877"}, {file = "eth_tester-0.9.0b1-py3-none-any.whl", hash = "sha256:9cf8742896e26c53e03a79ca6c3a008bf64527f042659bcad306d87fbf2fa79a"}, @@ -1277,8 +1209,6 @@ version = "3.5.2" description = "eth-typing: Common type annotations for ethereum python packages" optional = false python-versions = ">=3.7.2, <4" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "eth-typing-3.5.2.tar.gz", hash = "sha256:22bf051ddfaa35ff827c30090de167e5c5b8cc6d343f7f35c9b1c7553f6ab64d"}, {file = "eth_typing-3.5.2-py3-none-any.whl", hash = "sha256:1842e628fb1ffa929b94f89a9d33caafbeb9978dc96abb6036a12bc91f1c624b"}, @@ -1299,8 +1229,6 @@ version = "2.3.2" description = "eth-utils: Common utility functions for python code that interacts with Ethereum" optional = false python-versions = "<4,>=3.7" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "eth_utils-2.3.2-py3-none-any.whl", hash = "sha256:4470be372674a25b8440b69cb35bda634a079876930853814ea307248c3d198b"}, {file = "eth_utils-2.3.2.tar.gz", hash = "sha256:1986d704b29202386c9bc4b27b948a134320c11c8104c45ca367e4663ae7d10e"}, @@ -1324,8 +1252,6 @@ version = "3.17.0" description = "A platform independent file lock." optional = false python-versions = ">=3.9" -groups = ["dev"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "filelock-3.17.0-py3-none-any.whl", hash = "sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338"}, {file = "filelock-3.17.0.tar.gz", hash = "sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e"}, @@ -1342,8 +1268,6 @@ version = "7.1.1" description = "the modular source code checker: pep8 pyflakes and co" optional = false python-versions = ">=3.8.1" -groups = ["lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "flake8-7.1.1-py2.py3-none-any.whl", hash = "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"}, {file = "flake8-7.1.1.tar.gz", hash = "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38"}, @@ -1360,8 +1284,6 @@ version = "0.9.7.1" description = "Extract swagger specs from your flask project" optional = false python-versions = "*" -groups = ["docs"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "flasgger-0.9.7.1.tar.gz", hash = "sha256:ca098e10bfbb12f047acc6299cc70a33851943a746e550d86e65e60d4df245fb"}, ] @@ -1380,8 +1302,6 @@ version = "3.1.0" description = "A simple framework for building complex web applications." optional = false python-versions = ">=3.9" -groups = ["main", "docs"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "flask-3.1.0-py3-none-any.whl", hash = "sha256:d667207822eb83f1c4b50949b1623c8fc8d51f2341d65f72e1a1815397551136"}, {file = "flask-3.1.0.tar.gz", hash = "sha256:5f873c5184c897c8d9d1b05df1e3d01b14910ce69607a117bd3277098a5836ac"}, @@ -1404,8 +1324,6 @@ version = "5.0.0" description = "A Flask extension adding a decorator for CORS support" optional = false python-versions = "*" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "Flask_Cors-5.0.0-py2.py3-none-any.whl", hash = "sha256:b9e307d082a9261c100d8fb0ba909eec6a228ed1b60a8315fd85f783d61910bc"}, {file = "flask_cors-5.0.0.tar.gz", hash = "sha256:5aadb4b950c4e93745034594d9f3ea6591f734bb3662e16e255ffbf5e89c88ef"}, @@ -1420,8 +1338,6 @@ version = "0.3.10" description = "Simple framework for creating REST APIs" optional = false python-versions = "*" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "Flask-RESTful-0.3.10.tar.gz", hash = "sha256:fe4af2ef0027df8f9b4f797aba20c5566801b6ade995ac63b588abf1a59cec37"}, {file = "Flask_RESTful-0.3.10-py2.py3-none-any.whl", hash = "sha256:1cf93c535172f112e080b0d4503a8d15f93a48c88bdd36dd87269bdaf405051b"}, @@ -1442,8 +1358,6 @@ version = "2.0.1" description = "Celery Flower" optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "flower-2.0.1-py2.py3-none-any.whl", hash = "sha256:9db2c621eeefbc844c8dd88be64aef61e84e2deb29b271e02ab2b5b9f01068e2"}, {file = "flower-2.0.1.tar.gz", hash = "sha256:5ab717b979530770c16afb48b50d2a98d23c3e9fe39851dcf6bc4d01845a02a0"}, @@ -1462,8 +1376,6 @@ version = "1.5.0" description = "A list-like structure which implements collections.abc.MutableSequence" optional = false python-versions = ">=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a"}, {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb"}, @@ -1565,8 +1477,6 @@ version = "3.1.1" description = "Lightweight in-process concurrent programming" optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "python_version < \"3.14\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\") and (implementation_name == \"cpython\" or implementation_name == \"pypy\")" files = [ {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"}, {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"}, @@ -1653,8 +1563,6 @@ version = "23.0.0" description = "WSGI HTTP Server for UNIX" optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d"}, {file = "gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec"}, @@ -1676,8 +1584,6 @@ version = "1.2.1" description = "hexbytes: Python `bytes` subclass that decodes hex, with a readable console output" optional = false python-versions = "<4,>=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "hexbytes-1.2.1-py3-none-any.whl", hash = "sha256:e64890b203a31f4a23ef11470ecfcca565beaee9198df623047df322b757471a"}, {file = "hexbytes-1.2.1.tar.gz", hash = "sha256:515f00dddf31053db4d0d7636dd16061c1d896c3109b8e751005db4ca46bcca7"}, @@ -1694,8 +1600,6 @@ version = "4.11.0" description = "Python humanize utilities" optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "humanize-4.11.0-py3-none-any.whl", hash = "sha256:b53caaec8532bcb2fff70c8826f904c35943f8cecaca29d272d9df38092736c0"}, {file = "humanize-4.11.0.tar.gz", hash = "sha256:e66f36020a2d5a974c504bd2555cf770621dbdbb6d82f94a6857c0b1ea2608be"}, @@ -1710,8 +1614,6 @@ version = "2.6.6" description = "File identification library for Python" optional = false python-versions = ">=3.9" -groups = ["dev"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "identify-2.6.6-py2.py3-none-any.whl", hash = "sha256:cbd1810bce79f8b671ecb20f53ee0ae8e86ae84b557de31d89709dc2a48ba881"}, {file = "identify-2.6.6.tar.gz", hash = "sha256:7bec12768ed44ea4761efb47806f0a41f86e7c0a5fdf5950d4648c90eca7e251"}, @@ -1726,8 +1628,6 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -1742,8 +1642,6 @@ version = "2.0.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.7" -groups = ["test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, @@ -1755,8 +1653,6 @@ version = "5.13.2" description = "A Python utility / library to sort Python imports." optional = false python-versions = ">=3.8.0" -groups = ["lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, @@ -1771,8 +1667,6 @@ version = "2.2.0" description = "Safely pass data to untrusted environments and back." optional = false python-versions = ">=3.8" -groups = ["main", "docs"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef"}, {file = "itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173"}, @@ -1784,8 +1678,6 @@ version = "3.1.5" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" -groups = ["main", "docs"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, @@ -1803,8 +1695,6 @@ version = "0.5.2" description = "JSON log formatter" optional = false python-versions = ">=2.7" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "JSON-log-formatter-0.5.2.tar.gz", hash = "sha256:7b191ae4056468baf2b7445c5ce651bd9ee6b76b4162a479a7d85db6ae029f2d"}, ] @@ -1815,8 +1705,6 @@ version = "4.23.0" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" -groups = ["main", "docs", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, @@ -1838,8 +1726,6 @@ version = "2024.10.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.9" -groups = ["main", "docs", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, @@ -1854,8 +1740,6 @@ version = "5.4.2" description = "Messaging library for Python." optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "kombu-5.4.2-py3-none-any.whl", hash = "sha256:14212f5ccf022fc0a70453bb025a1dcc32782a588c49ea866884047d66e14763"}, {file = "kombu-5.4.2.tar.gz", hash = "sha256:eef572dd2fd9fc614b37580e3caeafdd5af46c1eff31e7fba89138cdb406f2cf"}, @@ -1889,8 +1773,6 @@ version = "1.3.0" description = "An Dict like LRU container." optional = false python-versions = ">=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "lru-dict-1.3.0.tar.gz", hash = "sha256:54fd1966d6bd1fcde781596cb86068214edeebff1db13a2cea11079e3fd07b6b"}, {file = "lru_dict-1.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4073333894db9840f066226d50e6f914a2240711c87d60885d8c940b69a6673f"}, @@ -1980,15 +1862,13 @@ test = ["pytest"] [[package]] name = "mako" -version = "1.3.8" +version = "1.3.9" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ - {file = "Mako-1.3.8-py3-none-any.whl", hash = "sha256:42f48953c7eb91332040ff567eb7eea69b22e7a4affbc5ba8e845e8f730f6627"}, - {file = "mako-1.3.8.tar.gz", hash = "sha256:577b97e414580d3e088d47c2dbbe9594aa7a5146ed2875d4dfa9075af2dd3cc8"}, + {file = "Mako-1.3.9-py3-none-any.whl", hash = "sha256:95920acccb578427a9aa38e37a186b1e43156c87260d7ba18ca63aa4c7cbd3a1"}, + {file = "mako-1.3.9.tar.gz", hash = "sha256:b5d65ff3462870feec922dbccf38f6efb44e5714d7b593a656be86663d8600ac"}, ] [package.dependencies] @@ -2005,8 +1885,6 @@ version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" optional = false python-versions = ">=3.8" -groups = ["lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, @@ -2031,8 +1909,6 @@ version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" -groups = ["main", "docs"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, @@ -2099,15 +1975,13 @@ files = [ [[package]] name = "marshmallow" -version = "3.26.0" +version = "3.26.1" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ - {file = "marshmallow-3.26.0-py3-none-any.whl", hash = "sha256:1287bca04e6a5f4094822ac153c03da5e214a0a60bcd557b140f3e66991b8ca1"}, - {file = "marshmallow-3.26.0.tar.gz", hash = "sha256:eb36762a1cc76d7abf831e18a3a1b26d3d481bbc74581b8e532a3d3a8115e1cb"}, + {file = "marshmallow-3.26.1-py3-none-any.whl", hash = "sha256:3350409f20a70a7e4e11a27661187b77cdcaeb20abca41c1454fe33636bea09c"}, + {file = "marshmallow-3.26.1.tar.gz", hash = "sha256:e6d8affb6cb61d39d26402096dc0aee12d5a26d490a121f118d2e81dc0719dc6"}, ] [package.dependencies] @@ -2124,8 +1998,6 @@ version = "0.7.0" description = "McCabe checker, plugin for flake8" optional = false python-versions = ">=3.6" -groups = ["lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, @@ -2137,8 +2009,6 @@ version = "0.1.2" description = "Markdown URL utilities" optional = false python-versions = ">=3.7" -groups = ["lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, @@ -2150,8 +2020,6 @@ version = "3.1.1" description = "A sane and fast Markdown parser with useful plugins and renderers" optional = false python-versions = ">=3.8" -groups = ["docs"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "mistune-3.1.1-py3-none-any.whl", hash = "sha256:02106ac2aa4f66e769debbfa028509a275069dcffce0dfa578edd7b991ee700a"}, {file = "mistune-3.1.1.tar.gz", hash = "sha256:e0740d635f515119f7d1feb6f9b192ee60f0cc649f80a8f944f905706a21654c"}, @@ -2163,8 +2031,6 @@ version = "6.1.0" description = "multidict implementation" optional = false python-versions = ">=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, @@ -2266,8 +2132,6 @@ version = "1.0.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.7" -groups = ["lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "mypy-1.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:71a808334d3f41ef011faa5a5cd8153606df5fc0b56de5b2e89566c8093a0c9a"}, {file = "mypy-1.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:920169f0184215eef19294fa86ea49ffd4635dedfdea2b57e45cb4ee85d5ccaf"}, @@ -2313,8 +2177,6 @@ version = "0.4.4" description = "Experimental type system extensions for programs checked with the mypy typechecker." optional = false python-versions = ">=2.7" -groups = ["lint", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "mypy_extensions-0.4.4.tar.gz", hash = "sha256:c8b707883a96efe9b4bb3aaf0dcc07e7e217d7d8368eec4db4049ee9e142f4fd"}, ] @@ -2325,8 +2187,6 @@ version = "1.9.1" description = "Node.js virtual environment builder" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["dev"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, @@ -2338,8 +2198,6 @@ version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" -groups = ["main", "docs", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, @@ -2347,93 +2205,95 @@ files = [ [[package]] name = "pantos-common" -version = "5.1.0" +version = "6.0.1" description = "Common code for Pantos off-chain components." optional = false -python-versions = "<4.0,>=3.12" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" -files = [ - {file = "pantos_common-5.1.0-py3-none-any.whl", hash = "sha256:7988d0a0142fd522d8643e6b382718a0d4f79b786881b1df5832fd457b06b79f"}, -] - -[package.dependencies] -aiohappyeyeballs = {version = "2.4.4", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -aiohttp = {version = "3.11.11", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -aiosignal = {version = "1.3.2", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -amqp = {version = "5.3.1", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -aniso8601 = {version = "10.0.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -annotated-types = {version = "0.7.0", markers = "python_version >= \"3.12\" and python_version < \"4\""} -attrs = {version = "25.1.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -billiard = {version = "4.2.1", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -bitarray = {version = "3.0.0", markers = "python_version >= \"3.12\" and python_version < \"4\""} -blinker = {version = "1.9.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -celery = {version = "5.3.1", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -cerberus = {version = "1.3.4", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -certifi = {version = "2024.12.14", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -charset-normalizer = {version = "3.4.1", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -ckzg = {version = "2.0.1", markers = "python_version >= \"3.12\" and python_version < \"4\""} -click = {version = "8.1.8", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -click-didyoumean = {version = "0.3.1", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -click-plugins = {version = "1.1.1", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -click-repl = {version = "0.3.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -colorama = {version = "0.4.6", markers = "python_version >= \"3.12\" and python_version < \"4.0\" and platform_system == \"Windows\""} -cytoolz = {version = "1.0.1", markers = "python_version >= \"3.12\" and python_version < \"4\" and implementation_name == \"cpython\""} -eth-abi = {version = "5.2.0", markers = "python_version >= \"3.12\" and python_version < \"4\""} -eth-account = {version = "0.13.0", markers = "python_version >= \"3.12\" and python_version < \"4\""} -eth-hash = {version = "0.7.1", markers = "python_version >= \"3.12\" and python_version < \"4\""} -eth-keyfile = {version = "0.8.1", markers = "python_version >= \"3.12\" and python_version < \"4\""} -eth-keys = {version = "0.4.0", markers = "python_version >= \"3.12\" and python_version < \"4\""} -eth-rlp = {version = "2.1.0", markers = "python_version >= \"3.12\" and python_version < \"4\""} -eth-typing = {version = "3.5.2", markers = "python_version >= \"3.12\" and python_version < \"4\""} -eth-utils = {version = "2.3.2", markers = "python_version >= \"3.12\" and python_version < \"4\""} -flask = {version = "3.1.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -flask-restful = {version = "0.3.10", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -frozenlist = {version = "1.5.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -hexbytes = {version = "1.2.1", markers = "python_version >= \"3.12\" and python_version < \"4\""} -idna = {version = "3.10", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -itsdangerous = {version = "2.2.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -jinja2 = {version = "3.1.5", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -json-log-formatter = {version = "0.5.2", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -jsonschema = {version = "4.23.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -jsonschema-specifications = {version = "2024.10.1", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -kombu = {version = "5.4.2", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -lru-dict = {version = "1.3.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -markupsafe = {version = "3.0.2", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -marshmallow = {version = "3.26.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -multidict = {version = "6.1.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -packaging = {version = "24.2", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -parsimonious = {version = "0.10.0", markers = "python_version >= \"3.12\" and python_version < \"4\""} -prompt-toolkit = {version = "3.0.50", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -propcache = {version = "0.2.1", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -protobuf = {version = "5.29.3", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -pyaml-env = {version = "1.2.1", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -pycryptodome = {version = "3.20.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -pydantic = {version = "2.10.6", markers = "python_version >= \"3.12\" and python_version < \"4\""} -pydantic-core = {version = "2.27.2", markers = "python_version >= \"3.12\" and python_version < \"4\""} -python-dateutil = {version = "2.9.0.post0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -python-dotenv = {version = "1.0.1", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -pytz = {version = "2024.2", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -pywin32 = {version = "308", markers = "python_version >= \"3.12\" and python_version < \"4.0\" and platform_system == \"Windows\""} -pyyaml = {version = "6.0.1", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -referencing = {version = "0.36.2", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -regex = {version = "2024.11.6", markers = "python_version >= \"3.12\" and python_version < \"4\""} -requests = {version = "2.32.3", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -rlp = {version = "3.0.0", markers = "python_version >= \"3.12\" and python_version < \"4\""} -rpds-py = {version = "0.22.3", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -semantic-version = {version = "2.10.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -setuptools = {version = "75.8.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -six = {version = "1.17.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -toolz = {version = "1.0.0", markers = "python_version >= \"3.12\" and python_version < \"4\" and (implementation_name == \"pypy\" or implementation_name == \"cpython\")"} -typing-extensions = {version = "4.12.2", markers = "python_version >= \"3.12\" and python_version < \"4\""} -tzdata = {version = "2025.1", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -urllib3 = {version = "2.3.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -vine = {version = "5.1.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -wcwidth = {version = "0.2.13", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -web3 = {version = "6.5.0", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -websockets = {version = "14.2", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -werkzeug = {version = "3.1.3", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -yarl = {version = "1.18.3", markers = "python_version >= \"3.12\" and python_version < \"4.0\""} +python-versions = "<4.0,>=3.13" +files = [ + {file = "pantos_common-6.0.1-py3-none-any.whl", hash = "sha256:195c8d0ccc82515328b5b2ae04554a05eac549dd28a8d82437d077c9deeefc2b"}, + {file = "pantos_common-6.0.1.tar.gz", hash = "sha256:d906fd80886b1273fb38ebbd3e5f2fc61f51f602f7b9f523582a4e6252801110"}, +] + +[package.dependencies] +aiohappyeyeballs = {version = "2.4.4", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +aiohttp = {version = "3.11.12", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +aiosignal = {version = "1.3.2", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +amqp = {version = "5.3.1", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +aniso8601 = {version = "10.0.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +annotated-types = {version = "0.7.0", markers = "python_version >= \"3.13\" and python_version < \"4\""} +attrs = {version = "25.1.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +billiard = {version = "4.2.1", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +bitarray = {version = "3.0.0", markers = "python_version >= \"3.13\" and python_version < \"4\""} +blinker = {version = "1.9.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +cached-property = {version = "1.5.2", markers = "python_version >= \"3.13\" and python_version < \"4\""} +celery = {version = "5.3.1", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +cerberus = {version = "1.3.4", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +certifi = {version = "2025.1.31", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +charset-normalizer = {version = "3.4.1", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +ckzg = {version = "2.0.1", markers = "python_version >= \"3.13\" and python_version < \"4\""} +click = {version = "8.1.8", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +click-didyoumean = {version = "0.3.1", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +click-plugins = {version = "1.1.1", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +click-repl = {version = "0.3.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +colorama = {version = "0.4.6", markers = "python_version >= \"3.13\" and python_version < \"4.0\" and platform_system == \"Windows\""} +cytoolz = {version = "1.0.1", markers = "python_version >= \"3.13\" and python_version < \"4\" and implementation_name == \"cpython\""} +eth-abi = {version = "5.2.0", markers = "python_version >= \"3.13\" and python_version < \"4\""} +eth-account = {version = "0.13.0", markers = "python_version >= \"3.13\" and python_version < \"4\""} +eth-hash = {version = "0.7.1", markers = "python_version >= \"3.13\" and python_version < \"4\""} +eth-keyfile = {version = "0.9.0", markers = "python_version >= \"3.13\" and python_version < \"4\""} +eth-keys = {version = "0.4.0", markers = "python_version >= \"3.13\" and python_version < \"4\""} +eth-rlp = {version = "2.2.0", markers = "python_version >= \"3.13\" and python_version < \"4\""} +eth-typing = {version = "3.5.2", markers = "python_version >= \"3.13\" and python_version < \"4\""} +eth-utils = {version = "2.3.2", markers = "python_version >= \"3.13\" and python_version < \"4\""} +flask = {version = "3.1.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +flask-restful = {version = "0.3.10", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +frozenlist = {version = "1.5.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +hexbytes = {version = "1.2.1", markers = "python_version >= \"3.13\" and python_version < \"4\""} +idna = {version = "3.10", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +itsdangerous = {version = "2.2.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +jinja2 = {version = "3.1.5", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +json-log-formatter = {version = "0.5.2", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +jsonschema = {version = "4.23.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +jsonschema-specifications = {version = "2024.10.1", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +kombu = {version = "5.4.2", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +lru-dict = {version = "1.3.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +markupsafe = {version = "3.0.2", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +marshmallow = {version = "3.26.1", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +multidict = {version = "6.1.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +mypy-extensions = {version = "0.4.4", markers = "python_version >= \"3.13\" and python_version < \"4\""} +packaging = {version = "24.2", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +parsimonious = {version = "0.10.0", markers = "python_version >= \"3.13\" and python_version < \"4\""} +prompt-toolkit = {version = "3.0.50", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +propcache = {version = "0.2.1", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +protobuf = {version = "5.29.3", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +py-ecc = {version = "6.0.0", markers = "python_version >= \"3.13\" and python_version < \"4\""} +pyaml-env = {version = "1.2.1", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +pycryptodome = {version = "3.20.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +pydantic = {version = "2.10.6", markers = "python_version >= \"3.13\" and python_version < \"4\""} +pydantic-core = {version = "2.27.2", markers = "python_version >= \"3.13\" and python_version < \"4\""} +python-dateutil = {version = "2.9.0.post0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +python-dotenv = {version = "1.0.1", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +pytz = {version = "2025.1", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +pywin32 = {version = "308", markers = "python_version >= \"3.13\" and python_version < \"4.0\" and platform_system == \"Windows\""} +pyyaml = {version = "6.0.1", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +referencing = {version = "0.36.2", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +regex = {version = "2024.11.6", markers = "python_version >= \"3.13\" and python_version < \"4\""} +requests = {version = "2.32.3", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +rlp = {version = "3.0.0", markers = "python_version >= \"3.13\" and python_version < \"4\""} +rpds-py = {version = "0.22.3", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +semantic-version = {version = "2.10.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +setuptools = {version = "75.8.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +six = {version = "1.17.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +toolz = {version = "1.0.0", markers = "python_version >= \"3.13\" and python_version < \"4\" and (implementation_name == \"pypy\" or implementation_name == \"cpython\")"} +typing-extensions = {version = "4.12.2", markers = "python_version >= \"3.13\" and python_version < \"4\""} +tzdata = {version = "2025.1", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +urllib3 = {version = "2.3.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +vine = {version = "5.1.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +wcwidth = {version = "0.2.13", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +web3 = {version = "6.5.0", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +websockets = {version = "14.2", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +werkzeug = {version = "3.1.3", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} +yarl = {version = "1.18.3", markers = "python_version >= \"3.13\" and python_version < \"4.0\""} [[package]] name = "parsimonious" @@ -2441,8 +2301,6 @@ version = "0.10.0" description = "(Soon to be) the fastest pure-Python PEG parser I could muster" optional = false python-versions = "*" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "parsimonious-0.10.0-py3-none-any.whl", hash = "sha256:982ab435fabe86519b57f6b35610aa4e4e977e9f02a14353edf4bbc75369fc0f"}, {file = "parsimonious-0.10.0.tar.gz", hash = "sha256:8281600da180ec8ae35427a4ab4f7b82bfec1e3d1e52f80cb60ea82b9512501c"}, @@ -2453,25 +2311,24 @@ regex = ">=2022.3.15" [[package]] name = "pbr" -version = "6.1.0" +version = "6.1.1" description = "Python Build Reasonableness" optional = false python-versions = ">=2.6" -groups = ["lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ - {file = "pbr-6.1.0-py2.py3-none-any.whl", hash = "sha256:a776ae228892d8013649c0aeccbb3d5f99ee15e005a4cbb7e61d55a067b28a2a"}, - {file = "pbr-6.1.0.tar.gz", hash = "sha256:788183e382e3d1d7707db08978239965e8b9e4e5ed42669bf4758186734d5f24"}, + {file = "pbr-6.1.1-py2.py3-none-any.whl", hash = "sha256:38d4daea5d9fa63b3f626131b9d34947fd0c8be9b05a29276870580050a25a76"}, + {file = "pbr-6.1.1.tar.gz", hash = "sha256:93ea72ce6989eb2eed99d0f75721474f69ad88128afdef5ac377eb797c4bf76b"}, ] +[package.dependencies] +setuptools = "*" + [[package]] name = "platformdirs" version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" -groups = ["dev", "lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, @@ -2488,8 +2345,6 @@ version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" -groups = ["test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -2505,8 +2360,6 @@ version = "4.1.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" -groups = ["dev"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "pre_commit-4.1.0-py2.py3-none-any.whl", hash = "sha256:d29e7cb346295bcc1cc75fc3e92e343495e3ea0196c9ec6ba53f49f10ab6ae7b"}, {file = "pre_commit-4.1.0.tar.gz", hash = "sha256:ae3f018575a588e30dfddfab9a05448bfbd6b73d78709617b5a2b853549716d4"}, @@ -2525,8 +2378,6 @@ version = "0.21.1" description = "Python client for the Prometheus monitoring system." optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301"}, {file = "prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb"}, @@ -2541,8 +2392,6 @@ version = "3.0.50" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.8.0" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "prompt_toolkit-3.0.50-py3-none-any.whl", hash = "sha256:9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198"}, {file = "prompt_toolkit-3.0.50.tar.gz", hash = "sha256:544748f3860a2623ca5cd6d2795e7a14f3d0e1c3c9728359013f79877fc89bab"}, @@ -2557,8 +2406,6 @@ version = "0.2.1" description = "Accelerated property cache" optional = false python-versions = ">=3.9" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6b3f39a85d671436ee3d12c017f8fdea38509e4f25b28eb25877293c98c243f6"}, {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d51fbe4285d5db5d92a929e3e21536ea3dd43732c5b177c7ef03f918dff9f2"}, @@ -2650,8 +2497,6 @@ version = "5.29.3" description = "" optional = false python-versions = ">=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "protobuf-5.29.3-cp310-abi3-win32.whl", hash = "sha256:3ea51771449e1035f26069c4c7fd51fba990d07bc55ba80701c78f886bf9c888"}, {file = "protobuf-5.29.3-cp310-abi3-win_amd64.whl", hash = "sha256:a4fa6f80816a9a0678429e84973f2f98cbc218cca434abe8db2ad0bffc98503a"}, @@ -2672,8 +2517,6 @@ version = "3.2.4" description = "PostgreSQL database adapter for Python" optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "psycopg-3.2.4-py3-none-any.whl", hash = "sha256:43665368ccd48180744cab26b74332f46b63b7e06e8ce0775547a3533883d381"}, {file = "psycopg-3.2.4.tar.gz", hash = "sha256:f26f1346d6bf1ef5f5ef1714dd405c67fb365cfd1c6cea07de1792747b167b92"}, @@ -2682,7 +2525,6 @@ files = [ [package.dependencies] psycopg-binary = {version = "3.2.4", optional = true, markers = "implementation_name != \"pypy\" and extra == \"binary\""} psycopg-pool = {version = "*", optional = true, markers = "extra == \"pool\""} -typing-extensions = {version = ">=4.6", markers = "python_version < \"3.13\""} tzdata = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] @@ -2699,8 +2541,6 @@ version = "3.2.4" description = "PostgreSQL database adapter for Python -- C optimisation distribution" optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "implementation_name == \"cpython\"" files = [ {file = "psycopg_binary-3.2.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c716f75b5c0388fc5283b5124046292c727511dd8c6aa59ca2dc644b9a2ed0cd"}, {file = "psycopg_binary-3.2.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e2e8050347018f596a63f5dccbb92fb68bca52b13912cb8fc40184b24c0e534f"}, @@ -2775,8 +2615,6 @@ version = "3.2.4" description = "Connection Pool for Psycopg" optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "psycopg_pool-3.2.4-py3-none-any.whl", hash = "sha256:f6a22cff0f21f06d72fb2f5cb48c618946777c49385358e0c88d062c59cbd224"}, {file = "psycopg_pool-3.2.4.tar.gz", hash = "sha256:61774b5bbf23e8d22bedc7504707135aaf744679f8ef9b3fe29942920746a6ed"}, @@ -2791,8 +2629,6 @@ version = "6.0.0" description = "Elliptic curve crypto in python including secp256k1 and alt_bn128" optional = false python-versions = ">=3.6, <4" -groups = ["test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "py_ecc-6.0.0-py3-none-any.whl", hash = "sha256:54e8aa4c30374fa62d582c599a99f352c153f2971352171318bd6910a643be0b"}, {file = "py_ecc-6.0.0.tar.gz", hash = "sha256:3fc8a79e38975e05dc443d25783fd69212a1ca854cc0efef071301a8f7d6ce1d"}, @@ -2815,8 +2651,6 @@ version = "0.7.0a2" description = "Python implementation of the Ethereum Virtual Machine" optional = false python-versions = "*" -groups = ["test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "py-evm-0.7.0a2.tar.gz", hash = "sha256:5d23d441a5afe8543e0a90966c61bcce8c6d9d1c9303a536f85d237a264b8e4d"}, {file = "py_evm-0.7.0a2-py3-none-any.whl", hash = "sha256:844f1858f9c92633a862de8b466313174fb4d5a67c6e62d3cad3be34587ebddc"}, @@ -2846,15 +2680,13 @@ test = ["factory-boy (==2.11.1)", "hypothesis (>=5,<6)", "importlib-metadata (<5 [[package]] name = "py-geth" -version = "5.2.0" +version = "5.2.1" description = "py-geth: Run Go-Ethereum as a subprocess" optional = false python-versions = "<4,>=3.8" -groups = ["test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ - {file = "py_geth-5.2.0-py3-none-any.whl", hash = "sha256:d317dcc9dd1e045027cbb1098f8af6e1ef2e07b267758467a818e5e808bbeb49"}, - {file = "py_geth-5.2.0.tar.gz", hash = "sha256:b8c82f05506edec5cc44665b2023ae2e60b03a05be83c268b41a9ffff1203eba"}, + {file = "py_geth-5.2.1-py3-none-any.whl", hash = "sha256:75276f6d9f285a4775f18708900405b30f15a1fe0354d614ec01a06e2fd3d039"}, + {file = "py_geth-5.2.1.tar.gz", hash = "sha256:74146fd02d73f15128ff8e7e2867b24f2c268b21feb5c040224da9887a8215b1"}, ] [package.dependencies] @@ -2875,8 +2707,6 @@ version = "1.2.1" description = "Provides yaml file parsing with environment variable resolution" optional = false python-versions = ">=3.6" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "pyaml_env-1.2.1-py3-none-any.whl", hash = "sha256:2e7da2d4bba0629711ade1a41864e5e200c84ded896a3d27e9f560fae7311c36"}, {file = "pyaml_env-1.2.1.tar.gz", hash = "sha256:6d5dc98c8c82df743a132c196e79963050c9feb05b0a6f25f3ad77771d3d95b0"}, @@ -2894,8 +2724,6 @@ version = "2.12.1" description = "Python style guide checker" optional = false python-versions = ">=3.8" -groups = ["lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3"}, {file = "pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"}, @@ -2907,8 +2735,6 @@ version = "3.20.0" description = "Cryptographic library for Python" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "pycryptodome-3.20.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:f0e6d631bae3f231d3634f91ae4da7a960f7ff87f2865b2d2b831af1dfb04e9a"}, {file = "pycryptodome-3.20.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:baee115a9ba6c5d2709a1e88ffe62b73ecc044852a925dcb67713a288c4ec70f"}, @@ -2950,8 +2776,6 @@ version = "2.10.6" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"}, {file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"}, @@ -2972,8 +2796,6 @@ version = "2.27.2" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, @@ -3086,8 +2908,6 @@ version = "0.1.27" description = "Python wrappers for ethash, the ethereum proof of workhashing function" optional = false python-versions = "*" -groups = ["test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "pyethash-0.1.27.tar.gz", hash = "sha256:ff66319ce26b9d77df1f610942634dac9742e216f2c27b051c0a2c2dec9c2818"}, ] @@ -3098,8 +2918,6 @@ version = "3.2.0" description = "passive checker of Python programs" optional = false python-versions = ">=3.8" -groups = ["lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, @@ -3111,8 +2929,6 @@ version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" -groups = ["lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, @@ -3127,8 +2943,6 @@ version = "8.3.4" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" -groups = ["test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, @@ -3149,8 +2963,6 @@ version = "6.0.0" description = "Pytest plugin for measuring coverage." optional = false python-versions = ">=3.9" -groups = ["test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "pytest-cov-6.0.0.tar.gz", hash = "sha256:fde0b595ca248bb8e2d76f020b465f3b107c9632e6a1d1705f17834c89dcadc0"}, {file = "pytest_cov-6.0.0-py3-none-any.whl", hash = "sha256:eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35"}, @@ -3169,8 +2981,6 @@ version = "3.14.0" description = "Thin-wrapper around the mock package for easier use with pytest" optional = false python-versions = ">=3.8" -groups = ["test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, @@ -3188,8 +2998,6 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -3204,8 +3012,6 @@ version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, @@ -3216,15 +3022,13 @@ cli = ["click (>=5.0)"] [[package]] name = "pytz" -version = "2024.2" +version = "2025.1" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ - {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, - {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, + {file = "pytz-2025.1-py2.py3-none-any.whl", hash = "sha256:89dd22dca55b46eac6eda23b2d72721bf1bdfef212645d81513ef5d03038de57"}, + {file = "pytz-2025.1.tar.gz", hash = "sha256:c2db42be2a2518b28e65f9207c4d05e6ff547d1efa4086469ef855e4ab70178e"}, ] [[package]] @@ -3233,8 +3037,6 @@ version = "308" description = "Python for Window Extensions" optional = false python-versions = "*" -groups = ["main", "test"] -markers = "(implementation_name == \"cpython\" or implementation_name == \"pypy\") and platform_system == \"Windows\"" files = [ {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, @@ -3262,8 +3064,6 @@ version = "6.0.1" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.6" -groups = ["main", "dev", "docs", "lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, @@ -3283,7 +3083,6 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -3324,8 +3123,6 @@ version = "0.36.2" description = "JSON Referencing + Python" optional = false python-versions = ">=3.9" -groups = ["main", "docs", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0"}, {file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa"}, @@ -3334,7 +3131,6 @@ files = [ [package.dependencies] attrs = ">=22.2.0" rpds-py = ">=0.7.0" -typing-extensions = {version = ">=4.4.0", markers = "python_version < \"3.13\""} [[package]] name = "regex" @@ -3342,8 +3138,6 @@ version = "2024.11.6" description = "Alternative regular expression module, to replace re." optional = false python-versions = ">=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, @@ -3447,8 +3241,6 @@ version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, @@ -3470,8 +3262,6 @@ version = "13.9.4" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.8.0" -groups = ["lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90"}, {file = "rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098"}, @@ -3490,8 +3280,6 @@ version = "3.0.0" description = "A package for Recursive Length Prefix encoding and decoding" optional = false python-versions = "*" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "rlp-3.0.0-py2.py3-none-any.whl", hash = "sha256:d2a963225b3f26795c5b52310e0871df9824af56823d739511583ef459895a7d"}, {file = "rlp-3.0.0.tar.gz", hash = "sha256:63b0465d2948cd9f01de449d7adfb92d207c1aef3982f20310f8009be4a507e8"}, @@ -3513,8 +3301,6 @@ version = "0.22.3" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.9" -groups = ["main", "docs", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "rpds_py-0.22.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967"}, {file = "rpds_py-0.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37"}, @@ -3627,8 +3413,6 @@ version = "1.0.4" description = "SHA-3 (Keccak) for Python 3.9 - 3.11" optional = false python-versions = "*" -groups = ["test"] -markers = "implementation_name == \"cpython\"" files = [ {file = "safe-pysha3-1.0.4.tar.gz", hash = "sha256:e429146b1edd198b2ca934a2046a65656c5d31b0ec894bbd6055127f4deaff17"}, ] @@ -3639,8 +3423,6 @@ version = "2.10.0" description = "A library implementing the 'SemVer' scheme." optional = false python-versions = ">=2.7" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177"}, {file = "semantic_version-2.10.0.tar.gz", hash = "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c"}, @@ -3656,8 +3438,6 @@ version = "75.8.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "setuptools-75.8.0-py3-none-any.whl", hash = "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3"}, {file = "setuptools-75.8.0.tar.gz", hash = "sha256:c5afc8f407c626b8313a86e10311dd3f661c6cd9c09d4bf8c15c0e11f9f2b0e6"}, @@ -3678,8 +3458,6 @@ version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main", "docs"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, @@ -3691,8 +3469,6 @@ version = "2.4.0" description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" optional = false python-versions = "*" -groups = ["test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, @@ -3704,8 +3480,6 @@ version = "2.0.37" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "SQLAlchemy-2.0.37-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da36c3b0e891808a7542c5c89f224520b9a16c7f5e4d6a1156955605e54aef0e"}, {file = "SQLAlchemy-2.0.37-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e7402ff96e2b073a98ef6d6142796426d705addd27b9d26c3b32dbaa06d7d069"}, @@ -3801,8 +3575,6 @@ version = "5.4.0" description = "Manage dynamic plugins for Python applications" optional = false python-versions = ">=3.9" -groups = ["lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "stevedore-5.4.0-py3-none-any.whl", hash = "sha256:b0be3c4748b3ea7b854b265dcb4caa891015e442416422be16f8b31756107857"}, {file = "stevedore-5.4.0.tar.gz", hash = "sha256:79e92235ecb828fe952b6b8b0c6c87863248631922c8e8e0fa5b17b232c4514d"}, @@ -3817,8 +3589,6 @@ version = "1.0.0" description = "List processing tools and functional utilities" optional = false python-versions = ">=3.8" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236"}, {file = "toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02"}, @@ -3830,8 +3600,6 @@ version = "6.4.2" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1"}, {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803"}, @@ -3852,8 +3620,6 @@ version = "2.1.1" description = "Python implementation of the Ethereum Trie structure" optional = false python-versions = ">=3.7,<4" -groups = ["test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "trie-2.1.1-py3-none-any.whl", hash = "sha256:c1a5fc17b37a75008a4517e4f297ad8026dce777eb0eed63ee6335c66d7437b7"}, {file = "trie-2.1.1.tar.gz", hash = "sha256:1c7fa6f4a3088e083764cf4e32a07a69c672fcf15ad922e03f51158d64a855cf"}, @@ -3878,8 +3644,6 @@ version = "6.0.12.20241230" description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.8" -groups = ["lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "types_PyYAML-6.0.12.20241230-py3-none-any.whl", hash = "sha256:fa4d32565219b68e6dee5f67534c722e53c00d1cfc09c435ef04d7353e1e96e6"}, {file = "types_pyyaml-6.0.12.20241230.tar.gz", hash = "sha256:7f07622dbd34bb9c8b264fe860a17e0efcad00d50b5f27e93984909d9363498c"}, @@ -3891,8 +3655,6 @@ version = "2.32.0.20241016" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" -groups = ["lint", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"}, {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"}, @@ -3907,8 +3669,6 @@ version = "1.4.53.38" description = "Typing stubs for SQLAlchemy" optional = false python-versions = "*" -groups = ["lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "types-SQLAlchemy-1.4.53.38.tar.gz", hash = "sha256:5bb7463537e04e1aa5a3557eb725930df99226dcfd3c9bf93008025bfe5c169e"}, {file = "types_SQLAlchemy-1.4.53.38-py3-none-any.whl", hash = "sha256:7e60e74f823931cc9a9e8adb0a4c05e5533e6708b8a266807893a739faf4eaaa"}, @@ -3920,12 +3680,10 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" -groups = ["main", "docs", "lint", "test"] files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] -markers = {main = "implementation_name == \"cpython\" or implementation_name == \"pypy\"", docs = "(implementation_name == \"cpython\" or implementation_name == \"pypy\") and python_version < \"3.13\"", lint = "implementation_name == \"cpython\" or implementation_name == \"pypy\"", test = "implementation_name == \"cpython\" or implementation_name == \"pypy\""} [[package]] name = "tzdata" @@ -3933,8 +3691,6 @@ version = "2025.1" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "tzdata-2025.1-py2.py3-none-any.whl", hash = "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639"}, {file = "tzdata-2025.1.tar.gz", hash = "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694"}, @@ -3946,8 +3702,6 @@ version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" -groups = ["main", "lint", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, @@ -3965,8 +3719,6 @@ version = "5.1.0" description = "Python promises." optional = false python-versions = ">=3.6" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "vine-5.1.0-py3-none-any.whl", hash = "sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc"}, {file = "vine-5.1.0.tar.gz", hash = "sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0"}, @@ -3978,8 +3730,6 @@ version = "20.29.1" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" -groups = ["dev"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "virtualenv-20.29.1-py3-none-any.whl", hash = "sha256:4e4cb403c0b0da39e13b46b1b2476e505cb0046b25f242bee80f62bf990b2779"}, {file = "virtualenv-20.29.1.tar.gz", hash = "sha256:b8b8970138d32fb606192cb97f6cd4bb644fa486be9308fb9b63f81091b5dc35"}, @@ -4000,8 +3750,6 @@ version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" -groups = ["main"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, @@ -4013,8 +3761,6 @@ version = "6.5.0" description = "web3.py" optional = false python-versions = ">=3.7.2" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "web3-6.5.0-py3-none-any.whl", hash = "sha256:a6e9f6e4e13d75a5a3726d10b1be91cde5951446e8a6f0efdaee1695b5011472"}, {file = "web3-6.5.0.tar.gz", hash = "sha256:ebbce3caa0b50015d15a07f17d2a280abbb94a52c6994babb90f3a5482c97712"}, @@ -4050,8 +3796,6 @@ version = "14.2" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" optional = false python-versions = ">=3.9" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "websockets-14.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e8179f95323b9ab1c11723e5d91a89403903f7b001828161b480a7810b334885"}, {file = "websockets-14.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0d8c3e2cdb38f31d8bd7d9d28908005f6fa9def3324edb9bf336d7e4266fd397"}, @@ -4130,8 +3874,6 @@ version = "3.1.3" description = "The comprehensive WSGI web application library." optional = false python-versions = ">=3.9" -groups = ["main", "docs"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e"}, {file = "werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746"}, @@ -4149,8 +3891,6 @@ version = "0.43.0" description = "A formatter for Python code" optional = false python-versions = ">=3.7" -groups = ["lint"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "yapf-0.43.0-py3-none-any.whl", hash = "sha256:224faffbc39c428cb095818cf6ef5511fdab6f7430a10783fdfb292ccf2852ca"}, {file = "yapf-0.43.0.tar.gz", hash = "sha256:00d3aa24bfedff9420b2e0d5d9f5ab6d9d4268e72afbf59bb3fa542781d5218e"}, @@ -4165,8 +3905,6 @@ version = "1.18.3" description = "Yet another URL library" optional = false python-versions = ">=3.9" -groups = ["main", "test"] -markers = "implementation_name == \"cpython\" or implementation_name == \"pypy\"" files = [ {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7df647e8edd71f000a5208fe6ff8c382a1de8edfbccdbbfe649d263de07d8c34"}, {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c69697d3adff5aa4f874b19c0e4ed65180ceed6318ec856ebc423aa5850d84f7"}, @@ -4258,6 +3996,6 @@ multidict = ">=4.0" propcache = ">=0.2.0" [metadata] -lock-version = "2.1" -python-versions = "^3.12" -content-hash = "9a0172266f49be94ad86196ad70a49f853c73a67de6971dd253f84277e0197de" +lock-version = "2.0" +python-versions = "^3.13" +content-hash = "cc75ea18a33e9f80b03b325cc4819cc5d48958316411966271eab75aeadda6ae" diff --git a/pyproject.toml b/pyproject.toml index c69f37fd..2daccff4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,15 +41,15 @@ apispec-webframeworks = "^1.2.0" flasgger = "^0.9.7.1" [tool.poetry.dependencies] -python = "^3.12" -pantos-common = "5.1.0" +python = "^3.13" +pantos-common = "6.0.1" alembic = "1.14.1" celery = "5.3.1" Cerberus = "1.3.4" Flask = "3.1.0" Flask-Cors = "5.0.0" Flask-RESTful = "0.3.10" -marshmallow = "3.26.0" +marshmallow = "3.26.1" psycopg = {extras = ["binary", "pool"], version = "3.2.4"} PyYAML = "6.0.1" SQLAlchemy = "2.0.37" diff --git a/tests/blockchains/test_ethereum.py b/tests/blockchains/test_ethereum.py index 55266316..814e696c 100644 --- a/tests/blockchains/test_ethereum.py +++ b/tests/blockchains/test_ethereum.py @@ -3,6 +3,7 @@ import hexbytes import pytest +import semantic_version # type: ignore import web3 import web3.datastructures from eth_account.account import Account @@ -438,16 +439,25 @@ def test_read_node_url_error(ethereum_client, mock_get_blockchain_config): @pytest.mark.parametrize('node_deposit', [0, 1]) @unittest.mock.patch.object(EthereumClient, '_start_transaction_submission', return_value=uuid.uuid4()) -def test_register_node_correct(mock_start_transaction_submission, node_deposit, +@unittest.mock.patch.object(EthereumClient, + '_start_depending_transactions_submission', + return_value=uuid.uuid4()) +@unittest.mock.patch.object(EthereumClient, 'get_commitment_wait_period') +def test_register_node_correct(mock_get_commitment_wait_period, + mock_start_depending_transactions_submission, + mock_start_transaction_submission, node_deposit, ethereum_client, mock_get_blockchain_config, hub_contract_address, service_node_url, - service_node_address): + service_node_address, commitment_wait_period, + protocol_version): mock_get_blockchain_config.return_value = {'hub': hub_contract_address} + mock_get_commitment_wait_period.return_value = commitment_wait_period - ethereum_client.register_node(service_node_url, node_deposit, - service_node_address) + with unittest.mock.patch.object(ethereum_client, 'protocol_version', + new=protocol_version): + ethereum_client.register_node(service_node_url, node_deposit, + service_node_address) - assert mock_start_transaction_submission.call_count == node_deposit + 1 if node_deposit > 0: approve_request = mock_start_transaction_submission.call_args_list[ 0].args[0] @@ -455,13 +465,20 @@ def test_register_node_correct(mock_start_transaction_submission, node_deposit, ContractAbi.PANTOS_TOKEN assert approve_request.function_args == (hub_contract_address, node_deposit) - register_request = mock_start_transaction_submission.call_args_list[ - node_deposit].args[0] - assert register_request.versioned_contract_abi.contract_abi is \ - ContractAbi.PANTOS_HUB - assert register_request.function_args == (service_node_address, - service_node_url, node_deposit, - service_node_address) + + if protocol_version >= semantic_version.Version('0.3.0'): + assert mock_start_depending_transactions_submission.call_count == 1 + else: + assert mock_start_transaction_submission.call_count == node_deposit + 1 + + register_request = mock_start_transaction_submission.call_args_list[ + node_deposit].args[0] + assert register_request.versioned_contract_abi.contract_abi is \ + ContractAbi.PANTOS_HUB + assert register_request.function_args == (service_node_address, + service_node_url, + node_deposit, + service_node_address) @pytest.mark.parametrize('node_deposit', [0, 1]) diff --git a/tests/conftest.py b/tests/conftest.py index 6491eadb..54c392a8 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,6 +2,8 @@ from pantos.servicenode.protocol import get_supported_protocol_versions +COMMITMENT_WAIT_PERIOD = 10 + def pytest_configure(config): # Prevent warnings for custom markers @@ -17,3 +19,8 @@ def config_dict(protocol_version): @pytest.fixture(scope="session", params=get_supported_protocol_versions()) def protocol_version(request): return request.param + + +@pytest.fixture(scope="session") +def commitment_wait_period(): + return COMMITMENT_WAIT_PERIOD diff --git a/tests/test_application.py b/tests/test_application.py index 768c0963..dc81820e 100644 --- a/tests/test_application.py +++ b/tests/test_application.py @@ -20,16 +20,11 @@ 'pantos.servicenode.application.initialize_database_package') @unittest.mock.patch('pantos.servicenode.application.get_signer_config') @unittest.mock.patch('pantos.servicenode.application.get_signer') -@unittest.mock.patch( - 'pantos.servicenode.application.get_blockchains_rpc_nodes') -@unittest.mock.patch( - 'pantos.servicenode.application.initialize_blockchain_nodes') @unittest.mock.patch('pantos.servicenode.application.initialize_logger') @unittest.mock.patch('pantos.servicenode.application.load_config') @unittest.mock.patch('pantos.servicenode.application.config') def test_initialize_application_correct( - mock_config, mock_load_config, mock_initialize_logger, - mock_initialize_nodes, mock_get_blockchains_rpc_nodes, mock_get_signer, + mock_config, mock_load_config, mock_initialize_logger, mock_get_signer, mock_get_signer_config, mock_initialize_database, mock_initialize_blockchain_clients, mock_check_protocol_version_compatibility, log_format, console_enabled, @@ -61,8 +56,6 @@ def test_initialize_application_correct( assert mock_initialize_database.call_count == 1 assert mock_initialize_blockchain_clients.call_count == 1 mock_check_protocol_version_compatibility.assert_called_once() - assert mock_initialize_nodes.call_count == 1 - assert mock_get_blockchains_rpc_nodes.call_count == 1 mock_load_config.assert_called_with(reload=False) From f08f66c8822f9c95946f5b3dc290ae6f0ddf57d6 Mon Sep 17 00:00:00 2001 From: jacekv Date: Mon, 10 Feb 2025 18:51:51 +0800 Subject: [PATCH 03/10] Adding tasks to register and update --- pantos/servicenode/blockchains/ethereum.py | 46 +++++++++++++++++++--- pantos/servicenode/celery.py | 10 ++--- tests/blockchains/test_ethereum.py | 26 ++++++++---- 3 files changed, 64 insertions(+), 18 deletions(-) diff --git a/pantos/servicenode/blockchains/ethereum.py b/pantos/servicenode/blockchains/ethereum.py index 82fa1943..f7a2a38b 100644 --- a/pantos/servicenode/blockchains/ethereum.py +++ b/pantos/servicenode/blockchains/ethereum.py @@ -315,12 +315,46 @@ def update_node_url(self, node_url: str) -> None: node_connections = self.__create_node_connections() nonce = node_connections.eth.get_transaction_count( self.__address).get() - request = BlockchainClient._TransactionSubmissionStartRequest( - self._versioned_pantos_hub_abi, - _HUB_UPDATE_SERVICE_NODE_URL_FUNCTION_SELECTOR, (node_url, ), - _HUB_UPDATE_SERVICE_NODE_URL_GAS, None, nonce) - internal_transaction_id = self._start_transaction_submission( - request, node_connections) + if self.protocol_version >= semantic_version.Version('0.3.0'): + # This part is going to be moved somewhere else + commitment_wait_period = self.get_commitment_wait_period( + self.get_blockchain()) + commit_hash = self.calculate_commitment( + ['string', 'address'], [node_url, self.__address]) + + commit_hash_request = \ + BlockchainClient._TransactionSubmissionStartRequest( + self._versioned_pantos_hub_abi, + _HUB_COMMIT_HASH_FUNCTION_SELECTOR, (commit_hash, ), + _HUB_COMMIT_HASH_GAS, None, nonce) + + nonce += 1 + update_node_url_request = \ + BlockchainClient._TransactionSubmissionStartRequest( + self._versioned_pantos_hub_abi, + _HUB_UPDATE_SERVICE_NODE_URL_FUNCTION_SELECTOR, + (node_url, ), _HUB_UPDATE_SERVICE_NODE_URL_GAS, None, + nonce) + nonce += 1 + + dependent_requests = BlockchainClient \ + ._DependingTransactionSubmissionStartRequest( + prerequisite_transaction=commit_hash_request, + dependent_transaction=update_node_url_request, + blocks_to_wait=commitment_wait_period, + ) + + internal_transaction_id = \ + self._start_depending_transactions_submission( + dependent_requests, node_connections) + else: + request = BlockchainClient._TransactionSubmissionStartRequest( + self._versioned_pantos_hub_abi, + _HUB_UPDATE_SERVICE_NODE_URL_FUNCTION_SELECTOR, + (node_url, ), _HUB_UPDATE_SERVICE_NODE_URL_GAS, None, + nonce) + internal_transaction_id = self._start_transaction_submission( + request, node_connections) extra_info |= {'internal_transaction_id': internal_transaction_id} _logger.info('node URL update submitted', extra=extra_info) except Exception: diff --git a/pantos/servicenode/celery.py b/pantos/servicenode/celery.py index 1970712c..502db5fe 100644 --- a/pantos/servicenode/celery.py +++ b/pantos/servicenode/celery.py @@ -66,8 +66,7 @@ def verify_celery_url_has_ssl() -> bool: backend=config['celery']['backend'], include=[ 'pantos.common.blockchains.tasks', 'pantos.servicenode.business.transfers', - 'pantos.servicenode.business.plugins', - 'pantos.servicenode.business.tasks' + 'pantos.servicenode.business.plugins' ], broker_use_ssl=ca_certs) """Celery application instance.""" @@ -83,12 +82,13 @@ def verify_celery_url_has_ssl() -> bool: 'pantos.servicenode.business.transfers.*': { 'queue': _TRANSFERS_QUEUE_NAME }, - 'pantos.common.blockchains.tasks.*': { + 'pantos.common.blockchains.tasks._transaction_resubmission_task': { 'queue': _TRANSFERS_QUEUE_NAME }, - 'pantos.servicenode.business.tasks.*': { + 'pantos.servicenode.business.tasks.' + '_dependent_transaction_submission_task': { 'queue': _TRANSACTIONS_QUEUE_NAME - } + } # yapf: disable }, task_track_started=True, worker_enable_remote_control=False, diff --git a/tests/blockchains/test_ethereum.py b/tests/blockchains/test_ethereum.py index 814e696c..2e399c71 100644 --- a/tests/blockchains/test_ethereum.py +++ b/tests/blockchains/test_ethereum.py @@ -518,15 +518,27 @@ def test_unregister_node_error(mock_start_transaction_submission, @unittest.mock.patch.object(EthereumClient, '_start_transaction_submission', return_value=uuid.uuid4()) -def test_update_node_url_correct(mock_start_transaction_submission, - ethereum_client, service_node_url): +@unittest.mock.patch.object(EthereumClient, + '_start_depending_transactions_submission', + return_value=uuid.uuid4()) +@unittest.mock.patch.object(EthereumClient, 'get_commitment_wait_period') +def test_update_node_url_correct(mock_get_commitment_wait_period, + mock_start_depending_transactions_submission, + mock_start_transaction_submission, + ethereum_client, service_node_url, + protocol_version, commitment_wait_period): ethereum_client.update_node_url(service_node_url) - mock_start_transaction_submission.assert_called_once() - update_request = mock_start_transaction_submission.call_args.args[0] - assert update_request.versioned_contract_abi.contract_abi is \ - ContractAbi.PANTOS_HUB - assert update_request.function_args == (service_node_url, ) + mock_get_commitment_wait_period.return_value = commitment_wait_period + + if protocol_version >= semantic_version.Version('0.3.0'): + assert mock_start_depending_transactions_submission.call_count == 1 + else: + mock_start_transaction_submission.assert_called_once() + update_request = mock_start_transaction_submission.call_args.args[0] + assert update_request.versioned_contract_abi.contract_abi is \ + ContractAbi.PANTOS_HUB + assert update_request.function_args == (service_node_url, ) @unittest.mock.patch.object(EthereumClient, '_start_transaction_submission', From 6fcfa04e20264a4fc513f23768e59ea23648848c Mon Sep 17 00:00:00 2001 From: jacekv Date: Tue, 11 Feb 2025 16:00:20 +0800 Subject: [PATCH 04/10] Adding different ref --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index c498cee3..65a88b87 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -342,7 +342,7 @@ jobs: cat export/app.tar | docker import - pantosio/service-node-app:local cat export/worker.tar | docker import - pantosio/service-node-worker:local - - uses: pantos-io/e2e-testing/.github/actions/run-tests@main + - uses: jacekv/e2e-testing/.github/actions/run-tests@main with: servicenode-path: ${{ env.PANTOS_SERVICE_NODE }} servicenode-version: 'local' From 3406fb8b320a4d2ec2be7e2058e49ae52edf7d07 Mon Sep 17 00:00:00 2001 From: jacekv Date: Tue, 11 Feb 2025 16:55:14 +0800 Subject: [PATCH 05/10] Adding trigger --- .github/workflows/ci.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 65a88b87..f77b07c9 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -346,3 +346,4 @@ jobs: with: servicenode-path: ${{ env.PANTOS_SERVICE_NODE }} servicenode-version: 'local' + From a7147980502eb0f6bd225c979eb79fbd694cbac2 Mon Sep 17 00:00:00 2001 From: jacekv Date: Tue, 11 Feb 2025 17:29:26 +0800 Subject: [PATCH 06/10] Blob --- .github/workflows/ci.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index f77b07c9..65a88b87 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -346,4 +346,3 @@ jobs: with: servicenode-path: ${{ env.PANTOS_SERVICE_NODE }} servicenode-version: 'local' - From 1d3c607e04bededc8abf2833baf2fa7e2a35246a Mon Sep 17 00:00:00 2001 From: jacekv Date: Tue, 11 Feb 2025 18:16:28 +0800 Subject: [PATCH 07/10] Removing some tests --- .github/workflows/ci.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 65a88b87..f77b07c9 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -346,3 +346,4 @@ jobs: with: servicenode-path: ${{ env.PANTOS_SERVICE_NODE }} servicenode-version: 'local' + From d555621e3f7a6b2227d7ab54598d559edbbb9ef4 Mon Sep 17 00:00:00 2001 From: jacekv Date: Wed, 12 Feb 2025 18:24:05 +0800 Subject: [PATCH 08/10] Fix reference --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index f77b07c9..2375d93a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -342,7 +342,7 @@ jobs: cat export/app.tar | docker import - pantosio/service-node-app:local cat export/worker.tar | docker import - pantosio/service-node-worker:local - - uses: jacekv/e2e-testing/.github/actions/run-tests@main + - uses: pantos-io/e2e-testing/.github/actions/run-tests@main with: servicenode-path: ${{ env.PANTOS_SERVICE_NODE }} servicenode-version: 'local' From 5f54aeb329b49c7d55b4c9df5b6fd4d68a1a3e55 Mon Sep 17 00:00:00 2001 From: jacekv Date: Wed, 12 Feb 2025 18:44:30 +0800 Subject: [PATCH 09/10] Clean up --- docker-compose.override.yml | 4 ++-- docker-compose.yml | 4 ---- pantos/servicenode/business/node.py | 4 ++-- service-node-config.docker.env | 2 ++ 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 51f95899..dc4359a9 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -9,7 +9,7 @@ services: networks: pantos-service-node: pantos-ethereum: - entrypoint: sh -c 'set -a; . /etc/pantos/service-node-config.env && . /etc/pantos/eth-data/ETHEREUM.env && . /etc/pantos/bnb-data/BNB_CHAIN.env; set +a; exec /usr/bin/pantos-service-node-server' + entrypoint: sh -c 'set -a; . /etc/pantos/eth-data/ETHEREUM.env && . /etc/pantos/bnb-data/BNB_CHAIN.env; set +a; exec /usr/bin/pantos-service-node-server' environment: PANTOS_ENV_FILE: /etc/pantos/service-node-config.env APP_URL: http://localhost:808${INSTANCE-1} @@ -42,7 +42,7 @@ services: networks: pantos-service-node: pantos-ethereum: - entrypoint: sh -c 'set -a; . /etc/pantos/service-node-config.env && . /etc/pantos/eth-data/ETHEREUM.env && . /etc/pantos/bnb-data/BNB_CHAIN.env; set +a; exec /usr/bin/pantos-service-node-celery' + entrypoint: sh -c 'set -a; . /etc/pantos/eth-data/ETHEREUM.env && . /etc/pantos/bnb-data/BNB_CHAIN.env; set +a; exec /usr/bin/pantos-service-node-celery' environment: PANTOS_ENV_FILE: /etc/pantos/service-node-config.env APP_URL: http://localhost:808${INSTANCE-1} diff --git a/docker-compose.yml b/docker-compose.yml index 1db52a4f..ee692fef 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -122,10 +122,6 @@ services: retries: 3 start_period: 20s depends_on: - broker: - condition: service_healthy - db: - condition: service_healthy # Wait for the app to setup the DB app: condition: service_healthy diff --git a/pantos/servicenode/business/node.py b/pantos/servicenode/business/node.py index 9d46985f..7948c846 100644 --- a/pantos/servicenode/business/node.py +++ b/pantos/servicenode/business/node.py @@ -55,12 +55,12 @@ def update_node_registrations(self) -> None: """ for blockchain in Blockchain: - _logger.info('updating the service node registration on ' - '{}'.format(blockchain.name)) try: blockchain_config = get_blockchain_config(blockchain) if not blockchain_config['active']: continue + _logger.info("updating the service node registration on " + f"{blockchain.name}...") to_be_registered = blockchain_config['registered'] blockchain_client = get_blockchain_client(blockchain) is_registered = blockchain_client.is_node_registered() diff --git a/service-node-config.docker.env b/service-node-config.docker.env index 8adca309..783a25a4 100644 --- a/service-node-config.docker.env +++ b/service-node-config.docker.env @@ -12,6 +12,7 @@ AVALANCHE_ACTIVE=false BNB_CHAIN_WITHDRAWAL_ADDRESS='0x47816331dc80AB1DdE3C221951cBa8Bf3d532e15' BNB_CHAIN_PRIVATE_KEY_PASSWORD='' BNB_CHAIN_PROVIDER=http://bnb:8545 +BNB_CHAIN_FALLBACK_PROVIDER= BNB_CHAIN_CHAIN_ID=31338 BNB_CHAIN_FALLBACK_PROVIDER=' ' BNB_CHAIN_CONFIRMATIONS=0 @@ -27,6 +28,7 @@ CRONOS_ACTIVE=false ETHEREUM_WITHDRAWAL_ADDRESS='0x47816331dc80AB1DdE3C221951cBa8Bf3d532e15' ETHEREUM_PRIVATE_KEY_PASSWORD='' ETHEREUM_PROVIDER=http://eth:8545 +ETHEREUM_FALLBACK_PROVIDER= ETHEREUM_CHAIN_ID=31337 ETHEREUM_CONFIRMATIONS=0 ETHEREUM_BLOCKS_UNTIL_RESUBMISSION=10 From 9aeb614b7ce72874645a0a192b6f87716665e1c4 Mon Sep 17 00:00:00 2001 From: jacekv Date: Wed, 12 Feb 2025 18:51:11 +0800 Subject: [PATCH 10/10] Format --- pantos/servicenode/business/node.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pantos/servicenode/business/node.py b/pantos/servicenode/business/node.py index 7948c846..6f6892d1 100644 --- a/pantos/servicenode/business/node.py +++ b/pantos/servicenode/business/node.py @@ -60,7 +60,7 @@ def update_node_registrations(self) -> None: if not blockchain_config['active']: continue _logger.info("updating the service node registration on " - f"{blockchain.name}...") + f"{blockchain.name}...") to_be_registered = blockchain_config['registered'] blockchain_client = get_blockchain_client(blockchain) is_registered = blockchain_client.is_node_registered()