diff --git a/aries_cloudagent/admin/tests/test_admin_server.py b/aries_cloudagent/admin/tests/test_admin_server.py index 7eae850288..300e82f758 100644 --- a/aries_cloudagent/admin/tests/test_admin_server.py +++ b/aries_cloudagent/admin/tests/test_admin_server.py @@ -20,6 +20,11 @@ from ..server import AdminServer, AdminSetupError +# Ignore Marshmallow warning, as well as 'NotAppKeyWarning' coming from apispec packages +@pytest.mark.filterwarnings( + "ignore:The 'missing' attribute of fields is deprecated. Use 'load_default' instead.", + "ignore:It is recommended to use web.AppKey instances for keys.", +) class TestAdminServer(IsolatedAsyncioTestCase): async def asyncSetUp(self): self.message_results = [] @@ -507,5 +512,6 @@ def _smaller_scope(): with pytest.raises(RuntimeError): await responder.send_outbound(None) - with pytest.raises(RuntimeError): - await responder.send_webhook("test", {}) + with pytest.deprecated_call(): + with pytest.raises(RuntimeError): + await responder.send_webhook("test", {}) diff --git a/aries_cloudagent/anoncreds/default/legacy_indy/registry.py b/aries_cloudagent/anoncreds/default/legacy_indy/registry.py index 3be3cab976..c302f2348d 100644 --- a/aries_cloudagent/anoncreds/default/legacy_indy/registry.py +++ b/aries_cloudagent/anoncreds/default/legacy_indy/registry.py @@ -796,8 +796,8 @@ async def _revoc_reg_entry_with_fix( # Ledger rejected transaction request: client request invalid: # InvalidClientRequest(...) # In this scenario we try to post a correction - LOGGER.warn("Retry ledger update/fix due to error") - LOGGER.warn(err) + LOGGER.warning("Retry ledger update/fix due to error") + LOGGER.warning(err) (_, _, rev_entry_res) = await self.fix_ledger_entry( profile, rev_list, @@ -806,7 +806,7 @@ async def _revoc_reg_entry_with_fix( write_ledger, endorser_did, ) - LOGGER.warn("Ledger update/fix applied") + LOGGER.warning("Ledger update/fix applied") elif "InvalidClientTaaAcceptanceError" in err.roll_up: # if no write access (with "InvalidClientTaaAcceptanceError") # e.g. aries_cloudagent.ledger.error.LedgerTransactionError: diff --git a/aries_cloudagent/anoncreds/models/anoncreds_cred_def.py b/aries_cloudagent/anoncreds/models/anoncreds_cred_def.py index b9e038ea9d..0630114bcc 100644 --- a/aries_cloudagent/anoncreds/models/anoncreds_cred_def.py +++ b/aries_cloudagent/anoncreds/models/anoncreds_cred_def.py @@ -16,7 +16,10 @@ NUM_STR_WHOLE_VALIDATE, ) -NUM_STR_WHOLE = {"validate": NUM_STR_WHOLE_VALIDATE, "example": NUM_STR_WHOLE_EXAMPLE} +NUM_STR_WHOLE = { + "validate": NUM_STR_WHOLE_VALIDATE, + "metadata": {"example": NUM_STR_WHOLE_EXAMPLE}, +} class CredDefValuePrimary(BaseModel): @@ -126,17 +129,27 @@ class Meta: model_class = CredDefValueRevocation unknown = EXCLUDE - g = fields.Str(example="1 1F14F&ECB578F 2 095E45DDF417D") - g_dash = fields.Str(example="1 1D64716fCDC00C 1 0C781960FA66E3D3 2 095E45DDF417D") - h = fields.Str(example="1 16675DAE54BFAE8 2 095E45DD417D") - h0 = fields.Str(example="1 21E5EF9476EAF18 2 095E45DDF417D") - h1 = fields.Str(example="1 236D1D99236090 2 095E45DDF417D") - h2 = fields.Str(example="1 1C3AE8D1F1E277 2 095E45DDF417D") - htilde = fields.Str(example="1 1D8549E8C0F8 2 095E45DDF417D") - h_cap = fields.Str(example="1 1B2A32CF3167 1 2490FEBF6EE55 1 0000000000000000") - u = fields.Str(example="1 0C430AAB2B4710 1 1CB3A0932EE7E 1 0000000000000000") - pk = fields.Str(example="1 142CD5E5A7DC 1 153885BD903312 2 095E45DDF417D") - y = fields.Str(example="1 153558BD903312 2 095E45DDF417D 1 0000000000000000") + g = fields.Str(metadata={"example": "1 1F14F&ECB578F 2 095E45DDF417D"}) + g_dash = fields.Str( + metadata={"example": "1 1D64716fCDC00C 1 0C781960FA66E3D3 2 095E45DDF417D"} + ) + h = fields.Str(metadata={"example": "1 16675DAE54BFAE8 2 095E45DD417D"}) + h0 = fields.Str(metadata={"example": "1 21E5EF9476EAF18 2 095E45DDF417D"}) + h1 = fields.Str(metadata={"example": "1 236D1D99236090 2 095E45DDF417D"}) + h2 = fields.Str(metadata={"example": "1 1C3AE8D1F1E277 2 095E45DDF417D"}) + htilde = fields.Str(metadata={"example": "1 1D8549E8C0F8 2 095E45DDF417D"}) + h_cap = fields.Str( + metadata={"example": "1 1B2A32CF3167 1 2490FEBF6EE55 1 0000000000000000"} + ) + u = fields.Str( + metadata={"example": "1 0C430AAB2B4710 1 1CB3A0932EE7E 1 0000000000000000"} + ) + pk = fields.Str( + metadata={"example": "1 142CD5E5A7DC 1 153885BD903312 2 095E45DDF417D"} + ) + y = fields.Str( + metadata={"example": "1 153558BD903312 2 095E45DDF417D 1 0000000000000000"} + ) class CredDefValue(BaseModel): @@ -178,11 +191,11 @@ class Meta: primary = fields.Nested( CredDefValuePrimarySchema(), - description="Primary value for credential definition", + metadata={"description": "Primary value for credential definition"}, ) revocation = fields.Nested( CredDefValueRevocationSchema(), - description="Revocation value for credential definition", + metadata={"description": "Revocation value for credential definition"}, required=False, ) @@ -243,20 +256,26 @@ class Meta: unknown = EXCLUDE issuer_id = fields.Str( - description="Issuer Identifier of the credential definition or schema", + metadata={ + "description": "Issuer Identifier of the credential definition or schema", + "example": INDY_OR_KEY_DID_EXAMPLE, + }, data_key="issuerId", - example=INDY_OR_KEY_DID_EXAMPLE, ) schema_id = fields.Str( data_key="schemaId", - description="Schema identifier", - example=INDY_SCHEMA_ID_EXAMPLE, + metadata={ + "description": "Schema identifier", + "example": INDY_SCHEMA_ID_EXAMPLE, + }, ) type = fields.Str(validate=OneOf(["CL"])) tag = fields.Str( - description="""The tag value passed in by the Issuer to + metadata={ + "description": """The tag value passed in by the Issuer to an AnonCred's Credential Definition create and store implementation.""", - example="default", + "example": "default", + } ) value = fields.Nested(CredDefValueSchema()) @@ -315,12 +334,14 @@ class Meta: ) ) credential_definition_id = fields.Str( - description="credential definition id", + metadata={ + "description": "credential definition id", + "example": INDY_CRED_DEF_ID_EXAMPLE, + }, allow_none=True, - example=INDY_CRED_DEF_ID_EXAMPLE, ) credential_definition = fields.Nested( - CredDefSchema(), description="credential definition" + CredDefSchema(), metadata={"description": "credential definition"} ) @@ -418,11 +439,13 @@ class Meta: unknown = EXCLUDE credential_definition_id = fields.Str( - description="credential definition id", - example=INDY_CRED_DEF_ID_EXAMPLE, + metadata={ + "description": "credential definition id", + "example": INDY_CRED_DEF_ID_EXAMPLE, + }, ) credential_definition = fields.Nested( - CredDefSchema(), description="credential definition" + CredDefSchema(), metadata={"description": "credential definition"} ) resolution_metadata = fields.Dict() credential_definitions_metadata = fields.Dict() diff --git a/aries_cloudagent/anoncreds/models/anoncreds_revocation.py b/aries_cloudagent/anoncreds/models/anoncreds_revocation.py index b60eefafa2..5fe66d8f0e 100644 --- a/aries_cloudagent/anoncreds/models/anoncreds_revocation.py +++ b/aries_cloudagent/anoncreds/models/anoncreds_revocation.py @@ -62,15 +62,18 @@ class Meta: unknown = EXCLUDE public_keys = fields.Dict( - data_key="publicKeys", example=INDY_RAW_PUBLIC_KEY_EXAMPLE + data_key="publicKeys", metadata={"example": INDY_RAW_PUBLIC_KEY_EXAMPLE} ) - max_cred_num = fields.Int(data_key="maxCredNum", example=666) + max_cred_num = fields.Int(data_key="maxCredNum", metadata={"example": 777}) tails_location = fields.Str( data_key="tailsLocation", - example="https://tails-server.com/hash/7Qen9RDyemMuV7xGQvp7NjwMSpyHieJyBakycxN7dX7P", + metadata={ + "example": "https://tails-server.com/hash/7Qen9RDyemMuV7xGQvp7NjwMSpyHieJyBakycxN7dX7P" + }, ) tails_hash = fields.Str( - data_key="tailsHash", example="7Qen9RDyemMuV7xGQvp7NjwMSpyHieJyBakycxN7dX7P" + data_key="tailsHash", + metadata={"example": "7Qen9RDyemMuV7xGQvp7NjwMSpyHieJyBakycxN7dX7P"}, ) @@ -130,18 +133,25 @@ class Meta: unknown = EXCLUDE issuer_id = fields.Str( - description="Issuer Identifier of the credential definition or schema", + metadata={ + "description": "Issuer Identifier of the credential definition or schema", + "example": INDY_OR_KEY_DID_EXAMPLE, + }, data_key="issuerId", - example=INDY_OR_KEY_DID_EXAMPLE, ) type = fields.Str(data_key="revocDefType") cred_def_id = fields.Str( - description="Credential definition identifier", + metadata={ + "description": "Credential definition identifier", + "example": INDY_CRED_DEF_ID_EXAMPLE, + }, data_key="credDefId", - example=INDY_CRED_DEF_ID_EXAMPLE, ) tag = fields.Str( - description="tag for the revocation registry definition", example="default" + metadata={ + "description": "tag for the revocation registry definition", + "example": "default", + } ) value = fields.Nested(RevRegDefValueSchema()) @@ -204,11 +214,13 @@ class Meta: ) ) revocation_registry_definition_id = fields.Str( - description="revocation registry definition id", - example=INDY_REV_REG_ID_EXAMPLE, + metadata={ + "description": "revocation registry definition id", + "example": INDY_REV_REG_ID_EXAMPLE, + } ) revocation_registry_definition = fields.Nested( - RevRegDefSchema(), description="revocation registry definition" + RevRegDefSchema(), metadata={"description": "revocation registry definition"} ) @@ -381,30 +393,40 @@ class Meta: unknown = EXCLUDE issuer_id = fields.Str( - description="Issuer Identifier of the credential definition or schema", + metadata={ + "description": "Issuer Identifier of the credential definition or schema", + "example": INDY_OR_KEY_DID_EXAMPLE, + }, data_key="issuerId", - example=INDY_OR_KEY_DID_EXAMPLE, ) rev_reg_def_id = fields.Str( - description="The ID of the revocation registry definition", + metadata={ + "description": "The ID of the revocation registry definition", + "example": INDY_REV_REG_ID_EXAMPLE, + }, data_key="revRegDefId", - example=INDY_REV_REG_ID_EXAMPLE, ) revocation_list = fields.List( fields.Int(), - description="Bit list representing revoked credentials", + metadata={ + "description": "Bit list representing revoked credentials", + "example": [0, 1, 1, 0], + }, data_key="revocationList", - example=[0, 1, 1, 0], ) current_accumulator = fields.Str( - description="The current accumalator value", - example="21 118...1FB", + metadata={ + "description": "The current accumalator value", + "example": "21 118...1FB", + }, data_key="currentAccumulator", ) timestamp = fields.Int( - description="Timestamp at which revocation list is applicable", + metadata={ + "description": "Timestamp at which revocation list is applicable", + "example": INDY_ISO8601_DATETIME_EXAMPLE, + }, required=False, - example=INDY_ISO8601_DATETIME_EXAMPLE, ) @@ -458,7 +480,9 @@ class Meta: ] ) ) - revocation_list = fields.Nested(RevListSchema(), description="revocation list") + revocation_list = fields.Nested( + RevListSchema(), metadata={"description": "revocation list"} + ) class RevListResult(BaseModel): diff --git a/aries_cloudagent/anoncreds/models/anoncreds_schema.py b/aries_cloudagent/anoncreds/models/anoncreds_schema.py index 58cb4a06f2..c9190239fa 100644 --- a/aries_cloudagent/anoncreds/models/anoncreds_schema.py +++ b/aries_cloudagent/anoncreds/models/anoncreds_schema.py @@ -61,20 +61,26 @@ class Meta: unknown = EXCLUDE issuer_id = fields.Str( - description="Issuer Identifier of the credential definition or schema", + metadata={ + "description": "Issuer Identifier of the credential definition or schema", + "example": INDY_OR_KEY_DID_EXAMPLE, + }, data_key="issuerId", - example=INDY_OR_KEY_DID_EXAMPLE, ) attr_names = fields.List( fields.Str( - description="Attribute name", - example="score", + metadata={ + "description": "Attribute name", + "example": "score", + } ), - description="Schema attribute names", + metadata={"description": "Schema attribute names"}, data_key="attrNames", ) - name = fields.Str(description="Schema name", example="Example schema") - version = fields.Str(description="Schema version", example="1.0") + name = fields.Str( + metadata={"description": "Schema name", "example": "Example schema"} + ) + version = fields.Str(metadata={"description": "Schema version", "example": "1.0"}) class GetSchemaResult(BaseModel): @@ -130,7 +136,7 @@ class Meta: schema_value = fields.Nested(AnonCredsSchemaSchema(), data_key="schema") schema_id = fields.Str( - description="Schema identifier", example=INDY_SCHEMA_ID_EXAMPLE + metadata={"description": "Schema identifier", "example": INDY_SCHEMA_ID_EXAMPLE} ) resolution_metadata = fields.Dict() schema_metadata = fields.Dict() @@ -184,8 +190,10 @@ class Meta: ) ) schema_id = fields.Str( - description="Schema identifier", - example=INDY_SCHEMA_ID_EXAMPLE, + metadata={ + "description": "Schema identifier", + "example": INDY_SCHEMA_ID_EXAMPLE, + } ) schema_value = fields.Nested(AnonCredsSchemaSchema(), data_key="schema") diff --git a/aries_cloudagent/anoncreds/revocation.py b/aries_cloudagent/anoncreds/revocation.py index bf50cef8d2..70cea45e64 100644 --- a/aries_cloudagent/anoncreds/revocation.py +++ b/aries_cloudagent/anoncreds/revocation.py @@ -1209,7 +1209,7 @@ async def revoke_pending_credentials( ) failed_crids.add(rev_id) elif rev_id >= rev_info["next_index"]: - LOGGER.warn( + LOGGER.warning( "Skipping requested credential revocation" "on rev reg id %s, cred rev id=%s not yet issued", revoc_reg_id, @@ -1217,7 +1217,7 @@ async def revoke_pending_credentials( ) failed_crids.add(rev_id) elif rev_list.revocation_list[rev_id] == 1: - LOGGER.warn( + LOGGER.warning( "Skipping requested credential revocation" "on rev reg id %s, cred rev id=%s already revoked", revoc_reg_id, @@ -1259,7 +1259,7 @@ async def revoke_pending_credentials( CATEGORY_REV_LIST, revoc_reg_id, for_update=True ) if not rev_info_upd: - LOGGER.warn( + LOGGER.warning( "Revocation registry missing, skipping update: {}", revoc_reg_id, ) diff --git a/aries_cloudagent/anoncreds/routes.py b/aries_cloudagent/anoncreds/routes.py index e1011fd7a3..a0e9bf47fb 100644 --- a/aries_cloudagent/anoncreds/routes.py +++ b/aries_cloudagent/anoncreds/routes.py @@ -82,17 +82,17 @@ class SchemaPostOptionSchema(OpenAPISchema): endorser_connection_id = fields.Str( metadata={ "description": endorser_connection_id_description, - "required": False, "example": UUIDFour.EXAMPLE, - } + }, + required=False, ) create_transaction_for_endorser = fields.Bool( metadata={ "description": create_transaction_for_endorser_description, - "required": False, "example": False, - } + }, + required=False, ) @@ -263,8 +263,8 @@ class CredIdMatchInfo(OpenAPISchema): metadata={ "description": "Credential definition identifier", "example": INDY_CRED_DEF_ID_EXAMPLE, - "required": True, - } + }, + required=True, ) @@ -275,23 +275,23 @@ class InnerCredDefSchema(OpenAPISchema): metadata={ "description": "Credential definition tag", "example": "default", - "required": True, - } + }, + required=True, ) schema_id = fields.Str( metadata={ "description": "Schema identifier", "example": INDY_SCHEMA_ID_EXAMPLE, - "required": True, }, + required=True, data_key="schemaId", ) issuer_id = fields.Str( metadata={ "description": "Issuer Identifier of the credential definition", "example": INDY_OR_KEY_DID_EXAMPLE, - "required": True, }, + required=True, data_key="issuerId", ) @@ -303,28 +303,27 @@ class CredDefPostOptionsSchema(OpenAPISchema): metadata={ "description": endorser_connection_id_description, "example": UUIDFour.EXAMPLE, - "required": False, - } + }, + required=False, ) create_transaction_for_endorser = fields.Bool( metadata={ "description": create_transaction_for_endorser_description, "example": False, - "required": False, - } + }, + required=False, ) support_revocation = fields.Bool( metadata={ "description": "Support credential revocation", - "required": False, - } + }, + required=False, ) revocation_registry_size = fields.Int( metadata={ "description": "Maximum number of credential revocations per registry", - "example": 666, - "required": False, - } + }, + required=False, ) @@ -443,8 +442,10 @@ class GetCredDefsResponseSchema(OpenAPISchema): credential_definition_ids = fields.List( fields.Str( - description="credential definition identifiers", - example="GvLGiRogTJubmj5B36qhYz:3:CL:8:faber.agent.degree_schema", + metadata={ + "description": "credential definition identifiers", + "example": "GvLGiRogTJubmj5B36qhYz:3:CL:8:faber.agent.degree_schema", + } ) ) @@ -478,20 +479,28 @@ class InnerRevRegDefSchema(OpenAPISchema): """Request schema for revocation registry creation request.""" issuer_id = fields.Str( - description="Issuer Identifier of the credential definition or schema", + metadata={ + "description": "Issuer Identifier of the credential definition or schema", + "example": INDY_OR_KEY_DID_EXAMPLE, + }, data_key="issuerId", - example=INDY_OR_KEY_DID_EXAMPLE, ) cred_def_id = fields.Str( - description="Credential definition identifier", + metadata={ + "description": "Credential definition identifier", + "example": INDY_SCHEMA_ID_EXAMPLE, + }, data_key="credDefId", - example=INDY_SCHEMA_ID_EXAMPLE, ) - tag = fields.Str(description="tag for revocation registry", example="default") + tag = fields.Str( + metadata={"description": "tag for revocation registry", "example": "default"} + ) max_cred_num = fields.Int( - description="Maximum number of credential revocations per registry", + metadata={ + "description": "Maximum number of credential revocations per registry", + "example": 777, + }, data_key="maxCredNum", - example=666, ) @@ -502,15 +511,15 @@ class RevRegDefOptionsSchema(OpenAPISchema): metadata={ "description": endorser_connection_id_description, "example": UUIDFour.EXAMPLE, - "required": False, - } + }, + required=False, ) create_transaction_for_endorser = fields.Bool( metadata={ "description": create_transaction_for_endorser_description, "example": False, - "required": False, - } + }, + required=False, ) @@ -577,15 +586,15 @@ class RevListOptionsSchema(OpenAPISchema): metadata={ "description": endorser_connection_id_description, "example": UUIDFour.EXAMPLE, - "required": False, - } + }, + required=False, ) create_transaction_for_endorser = fields.Bool( metadata={ "description": create_transaction_for_endorser_description, "example": False, - "required": False, - } + }, + required=False, ) @@ -593,8 +602,10 @@ class RevListCreateRequestSchema(OpenAPISchema): """Request schema for revocation registry creation request.""" rev_reg_def_id = fields.Str( - description="Revocation registry definition identifier", - example=INDY_REV_REG_ID_EXAMPLE, + metadata={ + "description": "Revocation registry definition identifier", + "example": INDY_REV_REG_ID_EXAMPLE, + } ) options = fields.Nested(RevListOptionsSchema) diff --git a/aries_cloudagent/config/logging.py b/aries_cloudagent/config/logging.py index fa1a0db419..149d5456b5 100644 --- a/aries_cloudagent/config/logging.py +++ b/aries_cloudagent/config/logging.py @@ -8,7 +8,7 @@ import sys import yaml import time as mod_time -import pkg_resources +from importlib import resources from contextvars import ContextVar from datetime import datetime, timedelta @@ -21,7 +21,6 @@ ) from logging.handlers import BaseRotatingHandler from random import randint -from typing import TextIO from portalocker import LOCK_EX, lock, unlock from pythonjsonlogger import jsonlogger @@ -58,7 +57,7 @@ def filter(self, record): return True -def load_resource(path: str, encoding: str = None) -> TextIO: +def load_resource(path: str, encoding: str = None): """Open a resource file located in a python package or the local filesystem. Args: @@ -69,9 +68,12 @@ def load_resource(path: str, encoding: str = None) -> TextIO: components = path.rsplit(":", 1) try: if len(components) == 1: + # Local filesystem resource return open(components[0], encoding=encoding) else: - bstream = pkg_resources.resource_stream(components[0], components[1]) + # Package resource + package, resource = components + bstream = resources.open_binary(package, resource) if encoding: return io.TextIOWrapper(bstream, encoding=encoding) return bstream diff --git a/aries_cloudagent/config/tests/test_logging.py b/aries_cloudagent/config/tests/test_logging.py index 7d8d220a0c..8ae25bad2b 100644 --- a/aries_cloudagent/config/tests/test_logging.py +++ b/aries_cloudagent/config/tests/test_logging.py @@ -136,19 +136,26 @@ def test_banner_did(self): assert test_did in output def test_load_resource(self): + # Testing local file access with mock.patch("builtins.open", mock.MagicMock()) as mock_open: test_module.load_resource("abc", encoding="utf-8") mock_open.side_effect = IOError("insufficient privilege") + # load_resource should absorb IOError test_module.load_resource("abc", encoding="utf-8") - with mock.patch.object( - test_module.pkg_resources, "resource_stream", mock.MagicMock() - ) as mock_res_stream, mock.patch.object( - test_module.io, "TextIOWrapper", mock.MagicMock() + # Testing package resource access with encoding (text mode) + with mock.patch( + "importlib.resources.open_binary", mock.MagicMock() + ) as mock_open_binary, mock.patch( + "io.TextIOWrapper", mock.MagicMock() ) as mock_text_io_wrapper: test_module.load_resource("abc:def", encoding="utf-8") + mock_open_binary.assert_called_once_with("abc", "def") + mock_text_io_wrapper.assert_called_once() - with mock.patch.object( - test_module.pkg_resources, "resource_stream", mock.MagicMock() - ) as mock_res_stream: + # Testing package resource access without encoding (binary mode) + with mock.patch( + "importlib.resources.open_binary", mock.MagicMock() + ) as mock_open_binary: test_module.load_resource("abc:def", encoding=None) + mock_open_binary.assert_called_once_with("abc", "def") diff --git a/aries_cloudagent/core/tests/test_dispatcher.py b/aries_cloudagent/core/tests/test_dispatcher.py index adceb7d5ec..0644c6d3fa 100644 --- a/aries_cloudagent/core/tests/test_dispatcher.py +++ b/aries_cloudagent/core/tests/test_dispatcher.py @@ -590,8 +590,9 @@ def _smaller_scope(): with self.assertRaises(RuntimeError): await responder.send_outbound(None) - with self.assertRaises(RuntimeError): - await responder.send_webhook("test", {}) + with pytest.deprecated_call(): + with self.assertRaises(RuntimeError): + await responder.send_webhook("test", {}) # async def test_dispatch_version_with_degraded_features(self): # profile = make_profile() diff --git a/aries_cloudagent/indy/credx/issuer.py b/aries_cloudagent/indy/credx/issuer.py index 6150d9d9ca..26843c0428 100644 --- a/aries_cloudagent/indy/credx/issuer.py +++ b/aries_cloudagent/indy/credx/issuer.py @@ -456,7 +456,7 @@ async def revoke_credentials( ) failed_crids.add(rev_id) elif rev_id > rev_info["curr_id"]: - LOGGER.warn( + LOGGER.warning( "Skipping requested credential revocation" "on rev reg id %s, cred rev id=%s not yet issued", revoc_reg_id, @@ -464,7 +464,7 @@ async def revoke_credentials( ) failed_crids.add(rev_id) elif rev_id in used_ids: - LOGGER.warn( + LOGGER.warning( "Skipping requested credential revocation" "on rev reg id %s, cred rev id=%s already revoked", revoc_reg_id, @@ -500,7 +500,7 @@ async def revoke_credentials( CATEGORY_REV_REG_INFO, revoc_reg_id, for_update=True ) if not rev_reg_upd or not rev_reg_info: - LOGGER.warn( + LOGGER.warning( "Revocation registry missing, skipping update: {}", revoc_reg_id, ) diff --git a/aries_cloudagent/protocols/didexchange/v1_0/handlers/tests/test_response_handler.py b/aries_cloudagent/protocols/didexchange/v1_0/handlers/tests/test_response_handler.py index 0fd802b2b1..87369fbaf2 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/handlers/tests/test_response_handler.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/handlers/tests/test_response_handler.py @@ -77,7 +77,7 @@ async def asyncSetUp(self): did_doc_attach=self.did_doc_attach, ) - @pytest.mark.asyncio + @pytest.mark.asyncio(scope="module") @mock.patch.object(test_module, "DIDXManager") async def test_called(self, mock_didx_mgr): mock_didx_mgr.return_value.accept_response = mock.CoroutineMock() @@ -91,7 +91,7 @@ async def test_called(self, mock_didx_mgr): ) assert not responder.messages - @pytest.mark.asyncio + @pytest.mark.asyncio(scope="module") @mock.patch.object(test_module, "DIDXManager") async def test_called_auto_ping(self, mock_didx_mgr): self.ctx.update_settings({"auto_ping_connection": True}) @@ -109,7 +109,7 @@ async def test_called_auto_ping(self, mock_didx_mgr): result, target = messages[0] assert isinstance(result, Ping) - @pytest.mark.asyncio + @pytest.mark.asyncio(scope="module") @mock.patch.object(test_module, "DIDXManager") @mock.patch.object(connection_target, "ConnectionTarget") async def test_problem_report(self, mock_conn_target, mock_didx_mgr): @@ -146,7 +146,7 @@ async def test_problem_report(self, mock_conn_target, mock_didx_mgr): ) assert target == {"target_list": [mock_conn_target]} - @pytest.mark.asyncio + @pytest.mark.asyncio(scope="module") @mock.patch.object(test_module, "DIDXManager") @mock.patch.object(connection_target, "ConnectionTarget") async def test_problem_report_did_doc( @@ -193,7 +193,7 @@ async def test_problem_report_did_doc( ) assert target == {"target_list": [mock_conn_target]} - @pytest.mark.asyncio + @pytest.mark.asyncio(scope="module") @mock.patch.object(test_module, "DIDXManager") @mock.patch.object(connection_target, "ConnectionTarget") async def test_problem_report_did_doc_no_conn_target( diff --git a/aries_cloudagent/protocols/didexchange/v1_0/routes.py b/aries_cloudagent/protocols/didexchange/v1_0/routes.py index 0c7b90cd7c..4c3197bd57 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/routes.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/routes.py @@ -185,9 +185,11 @@ class DIDXRejectRequestSchema(OpenAPISchema): """Parameters and validators for reject-request request string.""" reason = fields.Str( - description="Reason for rejecting the DID Exchange", + metadata={ + "description": "Reason for rejecting the DID Exchange", + "example": "Request rejected", + }, required=False, - example="Request rejected", ) diff --git a/aries_cloudagent/revocation/models/issuer_rev_reg_record.py b/aries_cloudagent/revocation/models/issuer_rev_reg_record.py index a027010937..60c1ffd1fc 100644 --- a/aries_cloudagent/revocation/models/issuer_rev_reg_record.py +++ b/aries_cloudagent/revocation/models/issuer_rev_reg_record.py @@ -330,15 +330,15 @@ async def send_entry( # Ledger rejected transaction request: client request invalid: # InvalidClientRequest(...) # In this scenario we try to post a correction - LOGGER.warn("Retry ledger update/fix due to error") - LOGGER.warn(err) + LOGGER.warning("Retry ledger update/fix due to error") + LOGGER.warning(err) (_, _, res) = await self.fix_ledger_entry( profile, True, ledger.pool.genesis_txns, ) rev_entry_res = {"result": res} - LOGGER.warn("Ledger update/fix applied") + LOGGER.warning("Ledger update/fix applied") elif "InvalidClientTaaAcceptanceError" in err.roll_up: # if no write access (with "InvalidClientTaaAcceptanceError") # e.g. aries_cloudagent.ledger.error.LedgerTransactionError: diff --git a/aries_cloudagent/revocation/recover.py b/aries_cloudagent/revocation/recover.py index f2bf38267c..eca105a1b4 100644 --- a/aries_cloudagent/revocation/recover.py +++ b/aries_cloudagent/revocation/recover.py @@ -100,7 +100,7 @@ async def generate_ledger_rrrecovery_txn( set_revoked = set(set_revoked) mismatch = prev_revoked - set_revoked if mismatch: - LOGGER.warn( + LOGGER.warning( "Credential index(es) revoked on the ledger, but not in wallet: %s", mismatch, ) diff --git a/aries_cloudagent/revocation_anoncreds/models/issuer_cred_rev_record.py b/aries_cloudagent/revocation_anoncreds/models/issuer_cred_rev_record.py index 49a68b9209..bab3909b83 100644 --- a/aries_cloudagent/revocation_anoncreds/models/issuer_cred_rev_record.py +++ b/aries_cloudagent/revocation_anoncreds/models/issuer_cred_rev_record.py @@ -154,15 +154,15 @@ class Meta: ) rev_reg_id = fields.Str( required=False, - description="Revocation registry identifier", + metadata={"description": "Revocation registry identifier"}, ) cred_def_id = fields.Str( required=False, - description="Credential definition identifier", + metadata={"description": "Credential definition identifier"}, ) cred_rev_id = fields.Str( required=False, - description="Credential revocation identifier", + metadata={"description": "Credential revocation identifier"}, ) cred_ex_version = fields.Str( required=False, metadata={"description": "Credential exchange version"} diff --git a/aries_cloudagent/revocation_anoncreds/recover.py b/aries_cloudagent/revocation_anoncreds/recover.py index 2a891d265a..2d9eca8755 100644 --- a/aries_cloudagent/revocation_anoncreds/recover.py +++ b/aries_cloudagent/revocation_anoncreds/recover.py @@ -102,7 +102,7 @@ async def generate_ledger_rrrecovery_txn( set_revoked = set(set_revoked) mismatch = prev_revoked - set_revoked if mismatch: - LOGGER.warn( + LOGGER.warning( "Credential index(es) revoked on the ledger, but not in wallet: %s", mismatch, ) diff --git a/aries_cloudagent/storage/tests/test_askar_storage.py b/aries_cloudagent/storage/tests/test_askar_storage.py index a7d9883273..f257c60180 100644 --- a/aries_cloudagent/storage/tests/test_askar_storage.py +++ b/aries_cloudagent/storage/tests/test_askar_storage.py @@ -358,7 +358,7 @@ async def test_postgres_wallet_storage_works(self): class TestAskarStorageSearchSession(IsolatedAsyncioTestCase): - @pytest.mark.asyncio + @pytest.mark.asyncio(scope="module") async def test_askar_storage_search_session(self): profile = "profileId" diff --git a/aries_cloudagent/utils/classloader.py b/aries_cloudagent/utils/classloader.py index b2a24e62a3..12a4d6fe01 100644 --- a/aries_cloudagent/utils/classloader.py +++ b/aries_cloudagent/utils/classloader.py @@ -1,7 +1,7 @@ """The classloader provides utilties to dynamically load classes and modules.""" import inspect -import pkg_resources +from importlib import resources import sys from importlib import import_module @@ -158,20 +158,25 @@ def load_subclass_of(cls, base_class: Type, mod_path: str, package: str = None): @classmethod def scan_subpackages(cls, package: str) -> Sequence[str]: """Return a list of sub-packages defined under a named package.""" - # FIXME use importlib.resources in python 3.7 if "." in package: package, sub_pkg = package.split(".", 1) else: sub_pkg = "." - if not pkg_resources.resource_isdir(package, sub_pkg): + + try: + package_path = resources.files(package) + except FileNotFoundError: raise ModuleLoadError(f"Undefined package {package}") + + if not (package_path / sub_pkg).is_dir(): + raise ModuleLoadError(f"Undefined package {package}") + found = [] joiner = "" if sub_pkg == "." else f"{sub_pkg}." - for sub_path in pkg_resources.resource_listdir(package, sub_pkg): - if pkg_resources.resource_exists( - package, f"{sub_pkg}/{sub_path}/__init__.py" - ): - found.append(f"{package}.{joiner}{sub_path}") + sub_path = package_path / sub_pkg + for item in sub_path.iterdir(): + if (item / "__init__.py").exists(): + found.append(f"{package}.{joiner}{item.name}") return found diff --git a/poetry.lock b/poetry.lock index ed5e34c9b7..e40bdffbfb 100644 --- a/poetry.lock +++ b/poetry.lock @@ -619,43 +619,43 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "42.0.2" +version = "42.0.3" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be"}, - {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d"}, - {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4"}, - {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2"}, - {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529"}, - {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1"}, - {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1"}, - {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929"}, - {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9"}, - {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2"}, - {file = "cryptography-42.0.2-cp37-abi3-win32.whl", hash = "sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee"}, - {file = "cryptography-42.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee"}, - {file = "cryptography-42.0.2-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242"}, - {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a"}, - {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446"}, - {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90"}, - {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3"}, - {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589"}, - {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a"}, - {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea"}, - {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33"}, - {file = "cryptography-42.0.2-cp39-abi3-win32.whl", hash = "sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635"}, - {file = "cryptography-42.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6"}, - {file = "cryptography-42.0.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380"}, - {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6"}, - {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2"}, - {file = "cryptography-42.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f"}, - {file = "cryptography-42.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008"}, - {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12"}, - {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a"}, - {file = "cryptography-42.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65"}, - {file = "cryptography-42.0.2.tar.gz", hash = "sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888"}, + {file = "cryptography-42.0.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a"}, + {file = "cryptography-42.0.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b"}, + {file = "cryptography-42.0.3-cp37-abi3-win32.whl", hash = "sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5"}, + {file = "cryptography-42.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54"}, + {file = "cryptography-42.0.3-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65"}, + {file = "cryptography-42.0.3-cp39-abi3-win32.whl", hash = "sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3"}, + {file = "cryptography-42.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd"}, + {file = "cryptography-42.0.3.tar.gz", hash = "sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe"}, ] [package.dependencies] @@ -790,17 +790,6 @@ toolz = ">=0.8.0" [package.extras] cython = ["cython"] -[[package]] -name = "decorator" -version = "5.1.1" -description = "Decorators for Humans" -optional = false -python-versions = ">=3.5" -files = [ - {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, - {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, -] - [[package]] name = "deepmerge" version = "0.3.0" @@ -882,62 +871,59 @@ gmpy2 = ["gmpy2"] [[package]] name = "eth-hash" -version = "0.3.3" +version = "0.6.0" description = "eth-hash: The Ethereum hashing function, keccak256, sometimes (erroneously) called sha3" optional = false -python-versions = ">=3.5, <4" +python-versions = ">=3.8, <4" files = [ - {file = "eth-hash-0.3.3.tar.gz", hash = "sha256:8cde211519ff1a98b46e9057cb909f12ab62e263eb30a0a94e2f7e1f46ac67a0"}, - {file = "eth_hash-0.3.3-py3-none-any.whl", hash = "sha256:3c884e4f788b38cc92cff05c4e43bc6b82686066f04ecfae0e11cdcbe5a283bd"}, + {file = "eth-hash-0.6.0.tar.gz", hash = "sha256:ae72889e60db6acbb3872c288cfa02ed157f4c27630fcd7f9c8442302c31e478"}, + {file = "eth_hash-0.6.0-py3-none-any.whl", hash = "sha256:9f8daaa345764f8871dc461855049ac54ae4291d780279bce6fce7f24e3f17d3"}, ] [package.extras] -dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "flake8 (==3.7.9)", "ipython", "isort (>=4.2.15,<5)", "mypy (==0.770)", "pydocstyle (>=5.0.0,<6)", "pytest (==5.4.1)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "sphinx-rtd-theme (>=0.1.9,<1)", "towncrier (>=19.2.0,<20)", "tox (==3.14.6)", "twine", "wheel"] -doc = ["Sphinx (>=1.6.5,<2)", "sphinx-rtd-theme (>=0.1.9,<1)", "towncrier (>=19.2.0,<20)"] -lint = ["flake8 (==3.7.9)", "isort (>=4.2.15,<5)", "mypy (==0.770)", "pydocstyle (>=5.0.0,<6)"] +dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "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)"] pycryptodome = ["pycryptodome (>=3.6.6,<4)"] -pysha3 = ["pysha3 (>=1.0.0,<2.0.0)"] -test = ["pytest (==5.4.1)", "pytest-xdist", "tox (==3.14.6)"] +pysha3 = ["pysha3 (>=1.0.0,<2.0.0)", "safe-pysha3 (>=1.0.0)"] +test = ["pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] [[package]] name = "eth-typing" -version = "2.3.0" +version = "4.0.0" description = "eth-typing: Common type annotations for ethereum python packages" optional = false -python-versions = ">=3.5, <4" +python-versions = ">=3.8, <4" files = [ - {file = "eth-typing-2.3.0.tar.gz", hash = "sha256:39cce97f401f082739b19258dfa3355101c64390914c73fe2b90012f443e0dc7"}, - {file = "eth_typing-2.3.0-py3-none-any.whl", hash = "sha256:b7fa58635c1cb0cbf538b2f5f1e66139575ea4853eac1d6000f0961a4b277422"}, + {file = "eth-typing-4.0.0.tar.gz", hash = "sha256:9af0b6beafbc5c2e18daf19da5f5a68315023172c4e79d149e12ad10a3d3f731"}, + {file = "eth_typing-4.0.0-py3-none-any.whl", hash = "sha256:7e556bea322b6e8c0a231547b736c258e10ce9eed5ddc254f51031b12af66a16"}, ] [package.extras] -dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "flake8 (==3.8.3)", "ipython", "isort (>=4.2.15,<5)", "mypy (==0.782)", "pydocstyle (>=3.0.0,<4)", "pytest (>=4.4,<4.5)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "sphinx-rtd-theme (>=0.1.9)", "tox (>=2.9.1,<3)", "twine", "wheel"] -doc = ["Sphinx (>=1.6.5,<2)", "sphinx-rtd-theme (>=0.1.9)"] -lint = ["flake8 (==3.8.3)", "isort (>=4.2.15,<5)", "mypy (==0.782)", "pydocstyle (>=3.0.0,<4)"] -test = ["pytest (>=4.4,<4.5)", "pytest-xdist", "tox (>=2.9.1,<3)"] +dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "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)"] +test = ["pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] [[package]] name = "eth-utils" -version = "1.10.0" +version = "3.0.0" description = "eth-utils: Common utility functions for python code that interacts with Ethereum" optional = false -python-versions = ">=3.5,!=3.5.2,<4" +python-versions = ">=3.8, <4" files = [ - {file = "eth-utils-1.10.0.tar.gz", hash = "sha256:bf82762a46978714190b0370265a7148c954d3f0adaa31c6f085ea375e4c61af"}, - {file = "eth_utils-1.10.0-py3-none-any.whl", hash = "sha256:74240a8c6f652d085ed3c85f5f1654203d2f10ff9062f83b3bad0a12ff321c7a"}, + {file = "eth-utils-3.0.0.tar.gz", hash = "sha256:8721869568448349bceae63c277b75758d11e0dc190e7ef31e161b89619458f1"}, + {file = "eth_utils-3.0.0-py3-none-any.whl", hash = "sha256:9a284106acf6f6ce91ddf792489cf8bd4c681fd5ae7653d2f3d5d100be5c3905"}, ] [package.dependencies] -cytoolz = {version = ">=0.10.1,<1.0.0", markers = "implementation_name == \"cpython\""} -eth-hash = ">=0.3.1,<0.4.0" -eth-typing = ">=2.2.1,<3.0.0" -toolz = {version = ">0.8.2,<1", markers = "implementation_name == \"pypy\""} +cytoolz = {version = ">=0.10.1", markers = "implementation_name == \"cpython\""} +eth-hash = ">=0.3.1" +eth-typing = ">=3.0.0" +toolz = {version = ">0.8.2", markers = "implementation_name == \"pypy\""} [package.extras] -dev = ["Sphinx (>=1.6.5,<2)", "black (>=18.6b4,<19)", "bumpversion (>=0.5.3,<1)", "flake8 (==3.7.9)", "hypothesis (>=4.43.0,<5.0.0)", "ipython", "isort (>=4.2.15,<5)", "mypy (==0.720)", "pydocstyle (>=5.0.0,<6)", "pytest (==5.4.1)", "pytest (>=3.4.1,<4.0.0)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "sphinx-rtd-theme (>=0.1.9,<2)", "towncrier (>=19.2.0,<20)", "tox (==3.14.6)", "twine (>=1.13,<2)", "wheel (>=0.30.0,<1.0.0)"] -doc = ["Sphinx (>=1.6.5,<2)", "sphinx-rtd-theme (>=0.1.9,<2)", "towncrier (>=19.2.0,<20)"] -lint = ["black (>=18.6b4,<19)", "flake8 (==3.7.9)", "isort (>=4.2.15,<5)", "mypy (==0.720)", "pydocstyle (>=5.0.0,<6)", "pytest (>=3.4.1,<4.0.0)"] -test = ["hypothesis (>=4.43.0,<5.0.0)", "pytest (==5.4.1)", "pytest-xdist", "tox (==3.14.6)"] +dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "eth-hash[pycryptodome]", "hypothesis (>=4.43.0)", "ipython", "mypy (==1.5.1)", "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)"] +test = ["hypothesis (>=4.43.0)", "mypy (==1.5.1)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] [[package]] name = "exceptiongroup" @@ -1136,6 +1122,25 @@ files = [ {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, ] +[[package]] +name = "importlib-metadata" +version = "7.0.1" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"}, + {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"}, +] + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] + [[package]] name = "indy-credx" version = "1.1.1" @@ -1203,33 +1208,31 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jsonpath-ng" -version = "1.5.2" +version = "1.6.1" description = "A final implementation of JSONPath for Python that aims to be standard compliant, including arithmetic and binary comparison operators and providing clear AST for metaprogramming." optional = false python-versions = "*" files = [ - {file = "jsonpath-ng-1.5.2.tar.gz", hash = "sha256:144d91379be14d9019f51973bd647719c877bfc07dc6f3f5068895765950c69d"}, - {file = "jsonpath_ng-1.5.2-py3-none-any.whl", hash = "sha256:93d1f248be68e485eb6635c3a01b2d681f296dc349d71e37c8755837b8944d36"}, + {file = "jsonpath-ng-1.6.1.tar.gz", hash = "sha256:086c37ba4917304850bd837aeab806670224d3f038fe2833ff593a672ef0a5fa"}, + {file = "jsonpath_ng-1.6.1-py3-none-any.whl", hash = "sha256:8f22cd8273d7772eea9aaa84d922e0841aa36fdb8a2c6b7f6c3791a16a9bc0be"}, ] [package.dependencies] -decorator = "*" ply = "*" -six = "*" [[package]] name = "jwcrypto" -version = "1.5.3" +version = "1.5.4" description = "Implementation of JOSE Web standards" optional = false python-versions = ">= 3.8" files = [ - {file = "jwcrypto-1.5.3.tar.gz", hash = "sha256:3af84bb6ed78fb29325308d4eca55e2842f1583010cb6c09207375a4ecea151f"}, + {file = "jwcrypto-1.5.4.tar.gz", hash = "sha256:0815fbab613db99bad85691da5f136f8860423396667728a264bcfa6e1db36b0"}, ] [package.dependencies] cryptography = ">=3.4" -typing_extensions = "*" +typing_extensions = ">=4.5.0" [[package]] name = "lxml" @@ -1326,19 +1329,20 @@ source = ["Cython (>=3.0.7)"] [[package]] name = "markdown" -version = "3.1.1" -description = "Python implementation of Markdown." +version = "3.5.2" +description = "Python implementation of John Gruber's Markdown." optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" +python-versions = ">=3.8" files = [ - {file = "Markdown-3.1.1-py2.py3-none-any.whl", hash = "sha256:56a46ac655704b91e5b7e6326ce43d5ef72411376588afa1dd90e881b83c7e8c"}, - {file = "Markdown-3.1.1.tar.gz", hash = "sha256:2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a"}, + {file = "Markdown-3.5.2-py3-none-any.whl", hash = "sha256:d43323865d89fc0cb9b20c75fc8ad313af307cc087e84b657d9eec768eddeadd"}, + {file = "Markdown-3.5.2.tar.gz", hash = "sha256:e1ac7b3dc550ee80e602e71c1d168002f062e49f1b11e26a36264dafd4df2ef8"}, ] [package.dependencies] -setuptools = ">=36" +importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} [package.extras] +docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] testing = ["coverage", "pyyaml"] [[package]] @@ -2016,13 +2020,13 @@ tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] [[package]] name = "pytest" -version = "8.0.0" +version = "8.0.1" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.0.0-py3-none-any.whl", hash = "sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6"}, - {file = "pytest-8.0.0.tar.gz", hash = "sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c"}, + {file = "pytest-8.0.1-py3-none-any.whl", hash = "sha256:3e4f16fe1c0a9dc9d9389161c127c3edc5d810c38d6793042fb81d9f48a59fca"}, + {file = "pytest-8.0.1.tar.gz", hash = "sha256:267f6563751877d772019b13aacbe4e860d73fe8f651f28112e9ac37de7513ae"}, ] [package.dependencies] @@ -2173,7 +2177,6 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -2181,16 +2184,8 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {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"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -2207,7 +2202,6 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -2215,7 +2209,6 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -2266,23 +2259,23 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "rlp" -version = "1.2.0" -description = "A package for Recursive Length Prefix encoding and decoding" +version = "4.0.0" +description = "rlp: A package for Recursive Length Prefix encoding and decoding" optional = false -python-versions = "*" +python-versions = ">=3.8, <4" files = [ - {file = "rlp-1.2.0-py2.py3-none-any.whl", hash = "sha256:97b7e770f16442772311b33e6bc28b45318e7c8def69b9df16452304e224e9df"}, - {file = "rlp-1.2.0.tar.gz", hash = "sha256:27273fc2dbc3513c1e05ea6b8af28aac8745fb09c164e39e2ed2807bf7e1b342"}, + {file = "rlp-4.0.0-py3-none-any.whl", hash = "sha256:1747fd933e054e6d25abfe591be92e19a4193a56c93981c05bd0f84dfe279f14"}, + {file = "rlp-4.0.0.tar.gz", hash = "sha256:61a5541f86e4684ab145cb849a5929d2ced8222930a570b3941cf4af16b72a78"}, ] [package.dependencies] -eth-utils = ">=1.0.2,<2" +eth-utils = ">=2" [package.extras] -dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "flake8 (==3.4.1)", "hypothesis (==3.56.5)", "ipython", "pytest (==3.3.2)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "setuptools (>=36.2.0)", "sphinx-rtd-theme (>=0.1.9)", "tox (>=2.9.1,<3)", "twine", "wheel"] -doc = ["Sphinx (>=1.6.5,<2)", "sphinx-rtd-theme (>=0.1.9)"] -lint = ["flake8 (==3.4.1)"] -test = ["hypothesis (==3.56.5)", "pytest (==3.3.2)", "tox (>=2.9.1,<3)"] +dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "hypothesis (==5.19.0)", "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)"] +rust-backend = ["rusty-rlp (>=0.2.1,<0.3)"] +test = ["hypothesis (==5.19.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] [[package]] name = "ruff" @@ -2312,13 +2305,13 @@ files = [ [[package]] name = "sd-jwt" -version = "0.10.3" +version = "0.10.4" description = "The reference implementation of the IETF SD-JWT specification." optional = false python-versions = ">=3.8,<4.0" files = [ - {file = "sd_jwt-0.10.3-py3-none-any.whl", hash = "sha256:de5d8296a977c758cefcc153a1bfab12de3087fbf4a38bf589165ab31c7a41f7"}, - {file = "sd_jwt-0.10.3.tar.gz", hash = "sha256:c9307ed1cb9597c532f19d5eb3e040a77ff264214354b2ed0533db83c05a3a8e"}, + {file = "sd_jwt-0.10.4-py3-none-any.whl", hash = "sha256:d7ae669eb5d51bceeb38e0df8ab2faddd12e3b21ab64d831b6d048fc1e00ce75"}, + {file = "sd_jwt-0.10.4.tar.gz", hash = "sha256:82f93e2f570cfd31fab124e301febb81f3bcad70b10e38f5f9cff70ad659c2ce"}, ] [package.dependencies] @@ -2781,6 +2774,21 @@ files = [ idna = ">=2.0" multidict = ">=4.0" +[[package]] +name = "zipp" +version = "3.17.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.8" +files = [ + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] + [extras] askar = ["anoncreds", "aries-askar", "indy-credx", "indy-vdr"] bbs = ["ursa-bbs-signatures"] @@ -2789,4 +2797,4 @@ indy = ["python3-indy"] [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "eed5beb9146bbfa581a7978d58ad579e7d64ce997f2d3a51db69607402aba52e" +content-hash = "0edb68b8723afe8a2feba6e0a855c1947826152c1b472d31906e630a16d0654f" diff --git a/pyproject.toml b/pyproject.toml index d87f653f02..029b529afa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,8 +25,8 @@ base58="~2.1.0" ConfigArgParse="~1.5.3" deepmerge="~0.3.0" ecdsa="~0.16.1" -jsonpath_ng="1.5.2" -Markdown="~3.1.1" +jsonpath-ng="1.6.1" +Markdown="~3.5.2" markupsafe="2.0.1" marshmallow="~3.20.1" nest_asyncio="~1.5.5" @@ -43,7 +43,7 @@ pytz="~2021.1" pyyaml="~6.0.1" qrcode = {version = ">=6.1,<7.0", extras = ["pil"]} requests="~2.31.0" -rlp="1.2.0" +rlp="4.0.0" unflatten="~0.1" sd-jwt = "^0.10.3" did-peer-2 = "^0.1.2" @@ -139,6 +139,9 @@ markers = [ ] junit_family = "xunit1" asyncio_mode = "auto" +filterwarnings = [ + 'ignore:distutils Version classes are deprecated. Use packaging.version instead.:DeprecationWarning', # Ignore specific DeprecationWarning for old packages using distutils version class +] [tool.coverage.run]