diff --git a/todoist_api_python/api.py b/todoist_api_python/api.py index fa727ab..b25c9f8 100644 --- a/todoist_api_python/api.py +++ b/todoist_api_python/api.py @@ -2,6 +2,8 @@ from typing import Any, Dict, List +from weakref import finalize + import requests from todoist_api_python.endpoints import ( @@ -36,6 +38,13 @@ class TodoistAPI: def __init__(self, token: str, session: requests.Session | None = None) -> None: self._token: str = token self._session = session or requests.Session() + self._finalizer = finalize(self, self._session.close) + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self._finalizer() def get_task(self, task_id: str) -> Task: endpoint = get_rest_url(f"{TASKS_ENDPOINT}/{task_id}")