From 0165a343d51c8051f1793f62202e2f053ab1b594 Mon Sep 17 00:00:00 2001 From: An Ha Date: Mon, 12 Jun 2017 16:33:56 -0400 Subject: [PATCH] Add attributes for pickling When using the multiprocessing module, it throws an AttributeError, complaining that the object does not have the attribute used. This adds the missing attributes and allows them to be pickled. Signed-off-by: An Ha --- docker/api/client.py | 6 ++++++ docker/transport/npipeconn.py | 5 +++++ docker/transport/ssladapter.py | 4 ++++ docker/transport/unixconn.py | 5 +++++ 4 files changed, 20 insertions(+) diff --git a/docker/api/client.py b/docker/api/client.py index 6e567b161d..65b5baa967 100644 --- a/docker/api/client.py +++ b/docker/api/client.py @@ -83,6 +83,12 @@ class APIClient( configuration. user_agent (str): Set a custom user agent for requests to the server. """ + + __attrs__ = requests.Session.__attrs__ + ['_auth_configs', + '_version', + 'base_url', + 'timeout'] + def __init__(self, base_url=None, version=None, timeout=DEFAULT_TIMEOUT_SECONDS, tls=False, user_agent=DEFAULT_USER_AGENT, num_pools=DEFAULT_NUM_POOLS): diff --git a/docker/transport/npipeconn.py b/docker/transport/npipeconn.py index db059b445a..ab9b90480a 100644 --- a/docker/transport/npipeconn.py +++ b/docker/transport/npipeconn.py @@ -69,6 +69,11 @@ def _get_conn(self, timeout): class NpipeAdapter(requests.adapters.HTTPAdapter): + + __attrs__ = requests.adapters.HTTPAdapter.__attrs__ + ['npipe_path', + 'pools', + 'timeout'] + def __init__(self, base_url, timeout=60, pool_connections=constants.DEFAULT_NUM_POOLS): self.npipe_path = base_url.replace('npipe://', '') diff --git a/docker/transport/ssladapter.py b/docker/transport/ssladapter.py index 31f45fc459..8fafec3550 100644 --- a/docker/transport/ssladapter.py +++ b/docker/transport/ssladapter.py @@ -25,6 +25,10 @@ class SSLAdapter(HTTPAdapter): '''An HTTPS Transport Adapter that uses an arbitrary SSL version.''' + __attrs__ = HTTPAdapter.__attrs__ + ['assert_fingerprint', + 'assert_hostname', + 'ssl_version'] + def __init__(self, ssl_version=None, assert_hostname=None, assert_fingerprint=None, **kwargs): self.ssl_version = ssl_version diff --git a/docker/transport/unixconn.py b/docker/transport/unixconn.py index 978c87a1bf..3565cfb629 100644 --- a/docker/transport/unixconn.py +++ b/docker/transport/unixconn.py @@ -50,6 +50,11 @@ def _new_conn(self): class UnixAdapter(requests.adapters.HTTPAdapter): + + __attrs__ = requests.adapters.HTTPAdapter.__attrs__ + ['pools', + 'socket_path', + 'timeout'] + def __init__(self, socket_url, timeout=60, pool_connections=constants.DEFAULT_NUM_POOLS): socket_path = socket_url.replace('http+unix://', '')