From dfc4177b5067d902381757c1a5fa0e28ed1aa641 Mon Sep 17 00:00:00 2001 From: Smit Parmar Date: Fri, 29 Mar 2024 04:06:53 +0530 Subject: [PATCH] community[patch]: mypy ignore fix (#18483) Relates to #17048 Description : Applied fix to dynamodb and elasticsearch file. Error was : `Cannot override writeable attribute with read-only property` Suggestion: instead of adding ``` @messages.setter def messages(self, messages: List[BaseMessage]) -> None: raise NotImplementedError("Use add_messages instead") ``` we can change base class property `messages: List[BaseMessage]` to ``` @property def messages(self) -> List[BaseMessage]:... ``` then we don't need to add `@messages.setter` in all child classes. --- .../chat_message_histories/dynamodb.py | 9 ++++++++- .../chat_message_histories/elasticsearch.py | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/libs/community/langchain_community/chat_message_histories/dynamodb.py b/libs/community/langchain_community/chat_message_histories/dynamodb.py index 4429d2e1f1..2f1c18c45c 100644 --- a/libs/community/langchain_community/chat_message_histories/dynamodb.py +++ b/libs/community/langchain_community/chat_message_histories/dynamodb.py @@ -103,7 +103,7 @@ class DynamoDBChatMessageHistory(BaseChatMessageHistory): ) @property - def messages(self) -> List[BaseMessage]: # type: ignore + def messages(self) -> List[BaseMessage]: """Retrieve the messages from DynamoDB""" try: from botocore.exceptions import ClientError @@ -129,6 +129,13 @@ class DynamoDBChatMessageHistory(BaseChatMessageHistory): messages = messages_from_dict(items) return messages + @messages.setter + def messages(self, messages: List[BaseMessage]) -> None: + raise NotImplementedError( + "Direct assignment to 'messages' is not allowed." + " Use the 'add_messages' instead." + ) + def add_message(self, message: BaseMessage) -> None: """Append the message to the record in DynamoDB""" try: diff --git a/libs/community/langchain_community/chat_message_histories/elasticsearch.py b/libs/community/langchain_community/chat_message_histories/elasticsearch.py index 4000241063..464e9e1273 100644 --- a/libs/community/langchain_community/chat_message_histories/elasticsearch.py +++ b/libs/community/langchain_community/chat_message_histories/elasticsearch.py @@ -143,7 +143,7 @@ class ElasticsearchChatMessageHistory(BaseChatMessageHistory): return es_client @property - def messages(self) -> List[BaseMessage]: # type: ignore[override] + def messages(self) -> List[BaseMessage]: """Retrieve the messages from Elasticsearch""" try: from elasticsearch import ApiError @@ -167,6 +167,13 @@ class ElasticsearchChatMessageHistory(BaseChatMessageHistory): return messages_from_dict(items) + @messages.setter + def messages(self, messages: List[BaseMessage]) -> None: + raise NotImplementedError( + "Direct assignment to 'messages' is not allowed." + " Use the 'add_messages' instead." + ) + def add_message(self, message: BaseMessage) -> None: """Add a message to the chat session in Elasticsearch""" try: