From ca0694466e5187707c0b2b3378d6e78b12c44bc2 Mon Sep 17 00:00:00 2001 From: Miles Mason Winther <42948872+mmwinther@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:16:01 +0100 Subject: [PATCH] Use a with block for ThreadPoolExecutor (#222) --- src/datadoc/backend/external_sources/external_sources.py | 8 ++++---- src/datadoc/backend/statistic_subject_mapping.py | 5 +++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/datadoc/backend/external_sources/external_sources.py b/src/datadoc/backend/external_sources/external_sources.py index 2c1c7525..bb6cbc69 100644 --- a/src/datadoc/backend/external_sources/external_sources.py +++ b/src/datadoc/backend/external_sources/external_sources.py @@ -21,10 +21,10 @@ def __init__(self) -> None: Initializes the future object. """ self.future: concurrent.futures.Future[T | None] | None = None - executor = concurrent.futures.ThreadPoolExecutor(max_workers=1) - self.future = executor.submit( - self._fetch_data_from_external_source, - ) + with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor: + self.future = executor.submit( + self._fetch_data_from_external_source, + ) def wait_for_external_result(self) -> None: """Waits for the thread responsible for loading the external request to finish.""" diff --git a/src/datadoc/backend/statistic_subject_mapping.py b/src/datadoc/backend/statistic_subject_mapping.py index cc599e26..8c792d55 100644 --- a/src/datadoc/backend/statistic_subject_mapping.py +++ b/src/datadoc/backend/statistic_subject_mapping.py @@ -141,8 +141,9 @@ def _parse_statistic_subject_structure_xml( @property def primary_subjects(self) -> list[PrimarySubject]: """Getter for primary subjects.""" - self._parse_xml_if_loaded() - logger.debug("Got %s primary subjects", len(self._primary_subjects)) + if not self._primary_subjects: + self._parse_xml_if_loaded() + logger.debug("Got %s primary subjects", len(self._primary_subjects)) return self._primary_subjects def _parse_xml_if_loaded(self) -> bool: