From 6f542ac833d4627475d5aba190f4cc8b5dc6d151 Mon Sep 17 00:00:00 2001 From: IFAKA Date: Fri, 19 Dec 2025 09:34:18 +0100 Subject: [PATCH] Add close() method and context manager support Enable proper resource cleanup for the HTTP session: - close() method to explicitly release connections - Context manager (__enter__/__exit__) for with-statement --- src/discourses/client.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/discourses/client.py b/src/discourses/client.py index 4321ad4..fdfe7ec 100644 --- a/src/discourses/client.py +++ b/src/discourses/client.py @@ -331,3 +331,27 @@ def batch( def __repr__(self) -> str: return f"Discourses(base_url='{self.base_url}')" + + def close(self) -> None: + """ + Close the underlying HTTP session. + + This releases connection pool resources. After calling close(), + the client should not be used for further requests. + + Example: + >>> client = Discourses(api_key="your-key") + >>> try: + ... result = client.analyze("text") + ... finally: + ... client.close() + """ + self._session.close() + + def __enter__(self) -> "Discourses": + """Enter context manager.""" + return self + + def __exit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None: + """Exit context manager and close session.""" + self.close()