From a1b4b75465b95c26343435679e4578580cbae003 Mon Sep 17 00:00:00 2001 From: jtyoung84 <104453205+jtyoung84@users.noreply.github.com> Date: Sun, 13 Oct 2024 14:20:04 -0700 Subject: [PATCH 1/3] feat: makes polling interval configurable --- src/codeocean/computation.py | 5 +++-- src/codeocean/data_asset.py | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/codeocean/computation.py b/src/codeocean/computation.py index 3efa3f0..51f8295 100644 --- a/src/codeocean/computation.py +++ b/src/codeocean/computation.py @@ -141,17 +141,18 @@ def run_capsule(self, run_params: RunParams) -> Computation: return Computation.from_dict(res.json()) - def wait_until_completed(self, computation: Computation) -> Computation: + def wait_until_completed(self, computation: Computation, polling_interval: int = 5) -> Computation: """ Polls the given computation until it reaches the 'Completed' or 'Failed' state. """ + assert polling_interval >= 5, "polling_interval should be greater than or equal to 5" while True: comp = self.get_computation(computation.id) if comp.state in [ComputationState.Completed, ComputationState.Failed]: return comp - sleep(5) + sleep(polling_interval) def list_computation_results(self, computation_id: str, path: str = "") -> Folder: data = { diff --git a/src/codeocean/data_asset.py b/src/codeocean/data_asset.py index 6c74686..9008c60 100644 --- a/src/codeocean/data_asset.py +++ b/src/codeocean/data_asset.py @@ -237,17 +237,18 @@ def create_data_asset(self, data_asset_params: DataAssetParams) -> DataAsset: return DataAsset.from_dict(res.json()) - def wait_until_ready(self, data_asset: DataAsset) -> DataAsset: + def wait_until_ready(self, data_asset: DataAsset, polling_interval: int = 5) -> DataAsset: """ Polls the given data asset until it reaches the 'Ready' or 'Failed' state. """ + assert polling_interval >= 5, "polling_interval should be greater than or equal to 5" while True: da = self.get_data_asset(data_asset.id) if da.state in [DataAssetState.Ready, DataAssetState.Failed]: return da - sleep(5) + sleep(polling_interval) def delete_data_asset(self, data_asset_id: str): self.client.delete(f"data_assets/{data_asset_id}") From fe631d96df0333e42fb68b826c34c89c037b8583 Mon Sep 17 00:00:00 2001 From: jtyoung84 <104453205+jtyoung84@users.noreply.github.com> Date: Mon, 14 Oct 2024 09:35:55 -0700 Subject: [PATCH 2/3] uses ValueError instead of assertion --- src/codeocean/computation.py | 5 ++++- src/codeocean/data_asset.py | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/codeocean/computation.py b/src/codeocean/computation.py index 51f8295..73ff330 100644 --- a/src/codeocean/computation.py +++ b/src/codeocean/computation.py @@ -145,7 +145,10 @@ def wait_until_completed(self, computation: Computation, polling_interval: int = """ Polls the given computation until it reaches the 'Completed' or 'Failed' state. """ - assert polling_interval >= 5, "polling_interval should be greater than or equal to 5" + if polling_interval >= 5: + raise ValueError( + f"Polling interval {polling_interval} should be greater than or equal to 5" + ) while True: comp = self.get_computation(computation.id) diff --git a/src/codeocean/data_asset.py b/src/codeocean/data_asset.py index 9008c60..909515e 100644 --- a/src/codeocean/data_asset.py +++ b/src/codeocean/data_asset.py @@ -241,7 +241,10 @@ def wait_until_ready(self, data_asset: DataAsset, polling_interval: int = 5) -> """ Polls the given data asset until it reaches the 'Ready' or 'Failed' state. """ - assert polling_interval >= 5, "polling_interval should be greater than or equal to 5" + if polling_interval >= 5: + raise ValueError( + f"Polling interval {polling_interval} should be greater than or equal to 5" + ) while True: da = self.get_data_asset(data_asset.id) From 493b429872713fd39238d3570e32ff212520fc6f Mon Sep 17 00:00:00 2001 From: jtyoung84 <104453205+jtyoung84@users.noreply.github.com> Date: Mon, 14 Oct 2024 10:09:57 -0700 Subject: [PATCH 3/3] fixes inequality check --- src/codeocean/computation.py | 2 +- src/codeocean/data_asset.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/codeocean/computation.py b/src/codeocean/computation.py index 73ff330..bd72451 100644 --- a/src/codeocean/computation.py +++ b/src/codeocean/computation.py @@ -145,7 +145,7 @@ def wait_until_completed(self, computation: Computation, polling_interval: int = """ Polls the given computation until it reaches the 'Completed' or 'Failed' state. """ - if polling_interval >= 5: + if polling_interval < 5: raise ValueError( f"Polling interval {polling_interval} should be greater than or equal to 5" ) diff --git a/src/codeocean/data_asset.py b/src/codeocean/data_asset.py index 909515e..e7783af 100644 --- a/src/codeocean/data_asset.py +++ b/src/codeocean/data_asset.py @@ -241,7 +241,7 @@ def wait_until_ready(self, data_asset: DataAsset, polling_interval: int = 5) -> """ Polls the given data asset until it reaches the 'Ready' or 'Failed' state. """ - if polling_interval >= 5: + if polling_interval < 5: raise ValueError( f"Polling interval {polling_interval} should be greater than or equal to 5" )