From 4ade20cb3fad10edda936b661107a3e105a1a1d0 Mon Sep 17 00:00:00 2001 From: Thomas Grainger Date: Thu, 13 May 2021 12:29:58 +0100 Subject: [PATCH 1/2] expose session context manager interface from ApiClient in DockerClient --- docker/client.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/docker/client.py b/docker/client.py index 5add5d73..ce438e4a 100644 --- a/docker/client.py +++ b/docker/client.py @@ -20,7 +20,8 @@ class DockerClient(object): Example: >>> import docker - >>> client = docker.DockerClient(base_url='unix://var/run/docker.sock') + >>> with docker.DockerClient(base_url='unix://var/run/docker.sock') as client: + ... Args: base_url (str): URL to the Docker server. For example, @@ -211,6 +212,14 @@ class DockerClient(object): return self.api.close() close.__doc__ = APIClient.close.__doc__ + def __enter__(self): + return self.api.__enter__() + __enter__.__doc__ = APIClient.__enter__.__doc__ + + def __exit__(self, *args, **kwargs): + return self.api.__exit__(self, *args, **kwargs) + __exit__.__doc__ = APIClient.__exit__.__doc__ + def __getattr__(self, name): s = ["'DockerClient' object has no attribute '{}'".format(name)] # If a user calls a method on APIClient, they From 2399c1a30ca6c61f087779766067508a5febafe1 Mon Sep 17 00:00:00 2001 From: Thomas Grainger Date: Thu, 13 May 2021 12:31:32 +0100 Subject: [PATCH 2/2] return a DockerClient from DockerClient.__enter__, rather than an APIClient --- docker/client.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docker/client.py b/docker/client.py index ce438e4a..4e4e0c84 100644 --- a/docker/client.py +++ b/docker/client.py @@ -213,11 +213,13 @@ class DockerClient(object): close.__doc__ = APIClient.close.__doc__ def __enter__(self): - return self.api.__enter__() + self.api.__enter__() + return self + __enter__.__doc__ = APIClient.__enter__.__doc__ def __exit__(self, *args, **kwargs): - return self.api.__exit__(self, *args, **kwargs) + return self.api.__exit__(*args, **kwargs) __exit__.__doc__ = APIClient.__exit__.__doc__ def __getattr__(self, name):