From c9e3efddb86d244e01303106faac72d9ec76a876 Mon Sep 17 00:00:00 2001 From: Aarni Koskela Date: Mon, 20 Nov 2023 22:55:28 +0200 Subject: [PATCH] feat: move websocket-client to extra dependency (#3123) Also bump minimum version to that prescribed by #3022 Signed-off-by: Aarni Koskela --- docker/api/client.py | 12 ++++++++++-- setup.py | 4 +++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/docker/api/client.py b/docker/api/client.py index a2cb459de..20f8a2af7 100644 --- a/docker/api/client.py +++ b/docker/api/client.py @@ -5,7 +5,6 @@ import requests import requests.exceptions -import websocket from .. import auth from ..constants import (DEFAULT_NUM_POOLS, DEFAULT_NUM_POOLS_SSH, @@ -309,7 +308,16 @@ def _attach_websocket(self, container, params=None): return self._create_websocket_connection(full_url) def _create_websocket_connection(self, url): - return websocket.create_connection(url) + try: + import websocket + return websocket.create_connection(url) + except ImportError as ie: + raise DockerException( + 'The `websocket-client` library is required ' + 'for using websocket connections. ' + 'You can install the `docker` library ' + 'with the [websocket] extra to install it.' + ) from ie def _get_raw_response_socket(self, response): self._raise_for_status(response) diff --git a/setup.py b/setup.py index 866aa23c8..79bf3bdb6 100644 --- a/setup.py +++ b/setup.py @@ -13,7 +13,6 @@ 'packaging >= 14.0', 'requests >= 2.26.0', 'urllib3 >= 1.26.0', - 'websocket-client >= 0.32.0', ] extras_require = { @@ -27,6 +26,9 @@ # Only required when connecting using the ssh:// protocol 'ssh': ['paramiko>=2.4.3'], + + # Only required when using websockets + 'websockets': ['websocket-client >= 1.3.0'], } with open('./test-requirements.txt') as test_reqs_txt: