From ce29c8e665a1bc388187316bb8b93397ac88a9e9 Mon Sep 17 00:00:00 2001 From: jtyoung84 <104453205+jtyoung84@users.noreply.github.com> Date: Sat, 19 Oct 2024 14:00:01 -0700 Subject: [PATCH 1/3] feat: adds option for custom adapters --- src/codeocean/client.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/codeocean/client.py b/src/codeocean/client.py index 7d291b5..1510f01 100644 --- a/src/codeocean/client.py +++ b/src/codeocean/client.py @@ -1,6 +1,9 @@ +from typing import Tuple + from requests_toolbelt.sessions import BaseUrlSession from requests_toolbelt.adapters.socket_options import TCPKeepAliveAdapter -from dataclasses import dataclass +from requests.adapters import HTTPAdapter +from dataclasses import dataclass, field from codeocean.capsule import Capsules from codeocean.computation import Computations @@ -12,11 +15,15 @@ class CodeOcean: domain: str token: str + _optional_adapters: Tuple[HTTPAdapter] = field(default=tuple(), repr=False) def __post_init__(self): self.session = BaseUrlSession(base_url=f"{self.domain}/api/v1/") self.session.auth = (self.token, "") self.session.mount(self.domain, TCPKeepAliveAdapter()) + + for optional_adapter in self._optional_adapters: + self.session.mount(self.domain, optional_adapter) self.session.headers.update({"Content-Type": "application/json"}) self.session.hooks["response"] = [ lambda response, *args, **kwargs: response.raise_for_status() From 86a256a84c96f600c6c81536a8a9b0d9d3a60ea6 Mon Sep 17 00:00:00 2001 From: Zvika Gart Date: Mon, 21 Oct 2024 12:02:11 +0100 Subject: [PATCH 2/3] Fixes --- src/codeocean/client.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/codeocean/client.py b/src/codeocean/client.py index 1510f01..43d1460 100644 --- a/src/codeocean/client.py +++ b/src/codeocean/client.py @@ -1,9 +1,9 @@ -from typing import Tuple - -from requests_toolbelt.sessions import BaseUrlSession +from dataclasses import dataclass from requests_toolbelt.adapters.socket_options import TCPKeepAliveAdapter +from requests_toolbelt.sessions import BaseUrlSession from requests.adapters import HTTPAdapter -from dataclasses import dataclass, field +from typing import Optional +from urllib3.util import Retry from codeocean.capsule import Capsules from codeocean.computation import Computations @@ -15,20 +15,17 @@ class CodeOcean: domain: str token: str - _optional_adapters: Tuple[HTTPAdapter] = field(default=tuple(), repr=False) + retries: Optional[Retry] = None def __post_init__(self): self.session = BaseUrlSession(base_url=f"{self.domain}/api/v1/") self.session.auth = (self.token, "") - self.session.mount(self.domain, TCPKeepAliveAdapter()) - - for optional_adapter in self._optional_adapters: - self.session.mount(self.domain, optional_adapter) self.session.headers.update({"Content-Type": "application/json"}) self.session.hooks["response"] = [ lambda response, *args, **kwargs: response.raise_for_status() ] - + self.session.mount(self.domain, TCPKeepAliveAdapter(max_retries=self.retries)) + self.capsules = Capsules(client=self.session) self.computations = Computations(client=self.session) self.data_assets = DataAssets(client=self.session) From fd36de476c8bd5015afb57a8acdc49bc8b908590 Mon Sep 17 00:00:00 2001 From: Zvika Gart Date: Mon, 21 Oct 2024 12:04:13 +0100 Subject: [PATCH 3/3] lint --- src/codeocean/client.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/codeocean/client.py b/src/codeocean/client.py index 43d1460..3b14056 100644 --- a/src/codeocean/client.py +++ b/src/codeocean/client.py @@ -1,7 +1,6 @@ from dataclasses import dataclass from requests_toolbelt.adapters.socket_options import TCPKeepAliveAdapter from requests_toolbelt.sessions import BaseUrlSession -from requests.adapters import HTTPAdapter from typing import Optional from urllib3.util import Retry @@ -25,7 +24,7 @@ def __post_init__(self): lambda response, *args, **kwargs: response.raise_for_status() ] self.session.mount(self.domain, TCPKeepAliveAdapter(max_retries=self.retries)) - + self.capsules = Capsules(client=self.session) self.computations = Computations(client=self.session) self.data_assets = DataAssets(client=self.session)