diff --git a/src/aleph_client/asynchronous.py b/src/aleph_client/asynchronous.py index 6e86147f..6f1f4579 100644 --- a/src/aleph_client/asynchronous.py +++ b/src/aleph_client/asynchronous.py @@ -10,6 +10,7 @@ from datetime import datetime from functools import lru_cache from typing import Type +from pydantic import ValidationError from aleph_message.models import ( ForgetContent, @@ -25,10 +26,12 @@ StoreMessage, ProgramMessage, ) -from pydantic import ValidationError - +from .exceptions import ( + MessageNotFoundError, + MultipleMessagesError, + ForgottenMessageError +) from aleph_client.types import Account, StorageEnum, GenericMessage -from .exceptions import MessageNotFoundError, MultipleMessagesError from .models import MessagesResponse from .utils import get_message_type_value @@ -625,7 +628,11 @@ async def get_messages( message = Message(**message_raw) messages.append(message) except KeyError as e: + key_error_field = e.args[0] if not ignore_invalid_messages: + if key_error_field == 'item_content': + raise ForgottenMessageError(f"{message.item_hash} was forgotten") + raise e logger.log( level=invalid_messages_log_level, diff --git a/src/aleph_client/exceptions.py b/src/aleph_client/exceptions.py index 1ef24402..b0908784 100644 --- a/src/aleph_client/exceptions.py +++ b/src/aleph_client/exceptions.py @@ -17,3 +17,9 @@ class MultipleMessagesError(QueryError): """Multiple messages were found when a single message is expected.""" pass + + +class ForgottenMessageError(QueryError): + """The requested message was forgotten""" + + pass