From 31a3b42ea6437f0726bb84151a71533a3bfc07ed Mon Sep 17 00:00:00 2001 From: Johannes Koester Date: Wed, 11 Jun 2025 14:40:35 +0200 Subject: [PATCH 1/2] fix: fix some lints --- .../storage_provider.py | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/snakemake_interface_storage_plugins/storage_provider.py b/snakemake_interface_storage_plugins/storage_provider.py index 5430006..a1fba3d 100644 --- a/snakemake_interface_storage_plugins/storage_provider.py +++ b/snakemake_interface_storage_plugins/storage_provider.py @@ -66,7 +66,7 @@ def __init__( is_default=False, ): self.logger: Logger = logger - self.wait_for_free_local_storage: int = wait_for_free_local_storage + self.wait_for_free_local_storage: Optional[int] = wait_for_free_local_storage try: local_prefix.mkdir(parents=True, exist_ok=True) except OSError as e: @@ -90,10 +90,13 @@ def rate_limiter(self, query: str, operation: Operation): else: key = self.rate_limiter_key(query, operation) if key not in self._rate_limiters: - max_status_checks_frac = Fraction( - self.settings.max_requests_per_second - or self.default_max_requests_per_second() - ).limit_denominator() + rate = self.default_max_requests_per_second() + if ( + self.settings is not None + and self.settings.max_requests_per_second is not None + ): + rate = self.settings.max_requests_per_second + max_status_checks_frac = Fraction(rate).limit_denominator() self._rate_limiters[key] = Throttler( rate_limit=max_status_checks_frac.numerator, period=max_status_checks_frac.denominator, @@ -159,10 +162,13 @@ def safe_print(self, query: str) -> str: @property def is_read_write(self) -> bool: from snakemake_interface_storage_plugins.storage_object import ( - StorageObjectReadWrite, + StorageObjectRead, + StorageObjectWrite, ) - return isinstance(self.storage_object_cls, StorageObjectReadWrite) + return isinstance( + self.get_storage_object_cls(), StorageObjectRead + ) and isinstance(self.get_storage_object_cls(), StorageObjectWrite) @classmethod def get_storage_object_cls(cls): From 5d382fa9050c11c483aa83d1706e535a8eefdf0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20K=C3=B6ster?= Date: Wed, 11 Jun 2025 15:29:23 +0200 Subject: [PATCH 2/2] Update snakemake_interface_storage_plugins/storage_provider.py Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- snakemake_interface_storage_plugins/storage_provider.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/snakemake_interface_storage_plugins/storage_provider.py b/snakemake_interface_storage_plugins/storage_provider.py index a1fba3d..958359c 100644 --- a/snakemake_interface_storage_plugins/storage_provider.py +++ b/snakemake_interface_storage_plugins/storage_provider.py @@ -96,6 +96,12 @@ def rate_limiter(self, query: str, operation: Operation): and self.settings.max_requests_per_second is not None ): rate = self.settings.max_requests_per_second + + if rate is None or rate <= 0: + raise WorkflowError( + "max_requests_per_second must be a positive number, " + f"got {rate}" + ) max_status_checks_frac = Fraction(rate).limit_denominator() self._rate_limiters[key] = Throttler( rate_limit=max_status_checks_frac.numerator,