Skip to content

Commit 47d330f

Browse files
fix: fix file open with encoding in chat_history.py (#31884)
Thank you for contributing to LangChain! - [x] **PR title**: "package: description" - Where "package" is whichever of langchain, core, etc. is being modified. Use "docs: ..." for purely docs changes, "infra: ..." for CI changes. - Example: "core: add foobar LLM" - [x] **PR message**: ***Delete this entire checklist*** and replace with - **Description:** a description of the change - **Issue:** the issue # it fixes, if applicable - **Dependencies:** any dependencies required for this change - **Twitter handle:** if your PR gets announced, and you'd like a mention, we'll gladly shout you out! - [x] **Add tests and docs**: If you're adding a new integration, please include 1. a test for the integration, preferably unit tests that do not rely on network access, 2. an example notebook showing its use. It lives in `docs/docs/integrations` directory. - [x] **Lint and test**: Run `make format`, `make lint` and `make test` from the root of the package(s) you've modified. See contribution guidelines for more: https://python.langchain.com/docs/contributing/ Additional guidelines: - Make sure optional dependencies are imported within a function. - Please do not add dependencies to pyproject.toml files (even optional ones) unless they are required for unit tests. - Most PRs should not touch more than one package. - Changes should be backwards compatible. If no one reviews your PR within a few days, please @-mention one of baskaryan, eyurtsev, ccurme, vbarda, hwchase17. Co-authored-by: Mason Daugherty <[email protected]>
1 parent 4215261 commit 47d330f

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

libs/core/langchain_core/chat_history.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -65,28 +65,32 @@ class BaseChatMessageHistory(ABC):
6565
.. code-block:: python
6666
6767
class FileChatMessageHistory(BaseChatMessageHistory):
68-
storage_path: str
68+
storage_path: str
6969
session_id: str
7070
71-
@property
72-
def messages(self):
73-
with open(os.path.join(storage_path, session_id), 'r:utf-8') as f:
74-
messages = json.loads(f.read())
71+
@property
72+
def messages(self):
73+
with open(
74+
os.path.join(storage_path, session_id),
75+
"r",
76+
encoding="utf-8",
77+
) as f:
78+
messages = json.loads(f.read())
7579
return messages_from_dict(messages)
7680
77-
def add_messages(self, messages: Sequence[BaseMessage]) -> None:
78-
all_messages = list(self.messages) # Existing messages
79-
all_messages.extend(messages) # Add new messages
81+
def add_messages(self, messages: Sequence[BaseMessage]) -> None:
82+
all_messages = list(self.messages) # Existing messages
83+
all_messages.extend(messages) # Add new messages
8084
81-
serialized = [message_to_dict(message) for message in all_messages]
82-
# Can be further optimized by only writing new messages
83-
# using append mode.
84-
with open(os.path.join(storage_path, session_id), 'w') as f:
85-
json.dump(f, messages)
85+
serialized = [message_to_dict(message) for message in all_messages]
86+
# Can be further optimized by only writing new messages
87+
# using append mode.
88+
with open(os.path.join(storage_path, session_id), "w") as f:
89+
json.dump(messages, f)
8690
87-
def clear(self):
88-
with open(os.path.join(storage_path, session_id), 'w') as f:
89-
f.write("[]")
91+
def clear(self):
92+
with open(os.path.join(storage_path, session_id), "w") as f:
93+
f.write("[]")
9094
"""
9195

9296
messages: list[BaseMessage]

0 commit comments

Comments
 (0)