From 8650a41f9523fd51f93679244955fed4f40f91f8 Mon Sep 17 00:00:00 2001 From: Manon Blanco <blanco@teklia.com> Date: Wed, 7 Feb 2024 08:58:27 +0000 Subject: [PATCH] Explicitely log a warning when the helper doesn't support cache --- arkindex_worker/cache.py | 14 ++++++++++++++ arkindex_worker/worker/dataset.py | 2 ++ arkindex_worker/worker/element.py | 5 ++++- arkindex_worker/worker/entity.py | 8 +++++++- arkindex_worker/worker/metadata.py | 4 +++- tests/test_dataset_worker.py | 23 +++++++++++++++++++---- 6 files changed, 49 insertions(+), 7 deletions(-) diff --git a/arkindex_worker/cache.py b/arkindex_worker/cache.py index c757a5ef..76e80f1f 100644 --- a/arkindex_worker/cache.py +++ b/arkindex_worker/cache.py @@ -374,3 +374,17 @@ def merge_parents_cache(paths: list, current_database: Path): for statement in statements: cursor.execute(statement) connection.commit() + + +def unsupported_cache(func): + def wrapper(self, *args, **kwargs): + results = func(self, *args, **kwargs) + + if not (self.is_read_only or self.use_cache): + logger.warning( + f"This API helper `{func.__name__}` did not update the cache database" + ) + + return results + + return wrapper diff --git a/arkindex_worker/worker/dataset.py b/arkindex_worker/worker/dataset.py index be088ef4..86c36708 100644 --- a/arkindex_worker/worker/dataset.py +++ b/arkindex_worker/worker/dataset.py @@ -6,6 +6,7 @@ from collections.abc import Iterator from enum import Enum from arkindex_worker import logger +from arkindex_worker.cache import unsupported_cache from arkindex_worker.models import Dataset, Element @@ -68,6 +69,7 @@ class DatasetMixin: return map(format_result, list(results)) + @unsupported_cache def update_dataset_state(self, dataset: Dataset, state: DatasetState) -> Dataset: """ Partially updates a dataset state through the API. diff --git a/arkindex_worker/worker/element.py b/arkindex_worker/worker/element.py index 0ab37242..22b8b9c6 100644 --- a/arkindex_worker/worker/element.py +++ b/arkindex_worker/worker/element.py @@ -9,7 +9,7 @@ from warnings import warn from peewee import IntegrityError from arkindex_worker import logger -from arkindex_worker.cache import CachedElement, CachedImage +from arkindex_worker.cache import CachedElement, CachedImage, unsupported_cache from arkindex_worker.models import Element @@ -30,6 +30,7 @@ class MissingTypeError(Exception): class ElementMixin: + @unsupported_cache def create_required_types(self, element_types: list[ElementType]): """Creates given element types in the corpus. @@ -82,6 +83,7 @@ class ElementMixin: return True + @unsupported_cache def create_sub_element( self, element: Element, @@ -284,6 +286,7 @@ class ElementMixin: return created_ids + @unsupported_cache def create_element_parent( self, parent: Element, diff --git a/arkindex_worker/worker/entity.py b/arkindex_worker/worker/entity.py index 07fd8a6d..ce7e004b 100644 --- a/arkindex_worker/worker/entity.py +++ b/arkindex_worker/worker/entity.py @@ -9,7 +9,11 @@ from warnings import warn from peewee import IntegrityError from arkindex_worker import logger -from arkindex_worker.cache import CachedEntity, CachedTranscriptionEntity +from arkindex_worker.cache import ( + CachedEntity, + CachedTranscriptionEntity, + unsupported_cache, +) from arkindex_worker.models import Element, Transcription @@ -29,6 +33,7 @@ class MissingEntityType(Exception): class EntityMixin: + @unsupported_cache def check_required_entity_types( self, entity_types: list[str], create_missing: bool = True ): @@ -206,6 +211,7 @@ class EntityMixin: ) return transcription_ent + @unsupported_cache def create_transcription_entities( self, transcription: Transcription, diff --git a/arkindex_worker/worker/metadata.py b/arkindex_worker/worker/metadata.py index 75e4d6b7..2a822bbf 100644 --- a/arkindex_worker/worker/metadata.py +++ b/arkindex_worker/worker/metadata.py @@ -5,7 +5,7 @@ ElementsWorker methods for metadata. from enum import Enum from arkindex_worker import logger -from arkindex_worker.cache import CachedElement +from arkindex_worker.cache import CachedElement, unsupported_cache from arkindex_worker.models import Element @@ -56,6 +56,7 @@ class MetaType(Enum): class MetaDataMixin: + @unsupported_cache def create_metadata( self, element: Element | CachedElement, @@ -106,6 +107,7 @@ class MetaDataMixin: return metadata["id"] + @unsupported_cache def create_metadatas( self, element: Element | CachedElement, diff --git a/tests/test_dataset_worker.py b/tests/test_dataset_worker.py index ac303e89..c8bb9ebe 100644 --- a/tests/test_dataset_worker.py +++ b/tests/test_dataset_worker.py @@ -470,10 +470,17 @@ def test_run_initial_dataset_state_error( logging.WARNING, f"Failed running worker on dataset dataset_id: AssertionError('{error}')", ), - ( - logging.ERROR, - "Ran on 1 datasets: 0 completed, 1 failed", - ), + ] + ( + [ + ( + logging.WARNING, + "This API helper `update_dataset_state` did not update the cache database", + ) + ] + if generator + else [] + ) + [ + (logging.ERROR, "Ran on 1 datasets: 0 completed, 1 failed"), ] @@ -697,7 +704,15 @@ def test_run( ] * 2 extra_logs += [ (logging.INFO, "Building Dataset (dataset_id) (1/1)"), + ( + logging.WARNING, + "This API helper `update_dataset_state` did not update the cache database", + ), (logging.INFO, "Completed Dataset (dataset_id) (1/1)"), + ( + logging.WARNING, + "This API helper `update_dataset_state` did not update the cache database", + ), ] else: archive_path = ( -- GitLab