@@ -107,7 +107,7 @@ def __init__(self, base_url=None, version=None,
107107 user_agent = DEFAULT_USER_AGENT , num_pools = None ,
108108 credstore_env = None , use_ssh_client = False ,
109109 max_pool_size = DEFAULT_MAX_POOL_SIZE ):
110- super (APIClient , self ).__init__ ()
110+ super ().__init__ ()
111111
112112 if tls and not base_url :
113113 raise TLSParameterError (
@@ -199,7 +199,7 @@ def __init__(self, base_url=None, version=None,
199199 self ._version = version
200200 if not isinstance (self ._version , str ):
201201 raise DockerException (
202- 'Version parameter must be a string or None. Found {0 }' .format (
202+ 'Version parameter must be a string or None. Found {}' .format (
203203 type (version ).__name__
204204 )
205205 )
@@ -219,7 +219,7 @@ def _retrieve_server_version(self):
219219 )
220220 except Exception as e :
221221 raise DockerException (
222- 'Error while fetching server API version: {0}' . format ( e )
222+ f 'Error while fetching server API version: { e } '
223223 )
224224
225225 def _set_request_timeout (self , kwargs ):
@@ -248,19 +248,19 @@ def _url(self, pathfmt, *args, **kwargs):
248248 for arg in args :
249249 if not isinstance (arg , str ):
250250 raise ValueError (
251- 'Expected a string but found {0 } ({1 }) '
251+ 'Expected a string but found {} ({}) '
252252 'instead' .format (arg , type (arg ))
253253 )
254254
255255 quote_f = partial (urllib .parse .quote , safe = "/:" )
256256 args = map (quote_f , args )
257257
258258 if kwargs .get ('versioned_api' , True ):
259- return '{0 }/v{1}{2 }' .format (
259+ return '{}/v{}{ }' .format (
260260 self .base_url , self ._version , pathfmt .format (* args )
261261 )
262262 else :
263- return '{0}{1}' . format ( self .base_url , pathfmt .format (* args ))
263+ return f' { self .base_url } { pathfmt .format (* args )} '
264264
265265 def _raise_for_status (self , response ):
266266 """Raises stored :class:`APIError`, if one occurred."""
@@ -341,8 +341,7 @@ def _stream_helper(self, response, decode=False):
341341
342342 if response .raw ._fp .chunked :
343343 if decode :
344- for chunk in json_stream (self ._stream_helper (response , False )):
345- yield chunk
344+ yield from json_stream (self ._stream_helper (response , False ))
346345 else :
347346 reader = response .raw
348347 while not reader .closed :
@@ -398,8 +397,13 @@ def _multiplexed_response_stream_helper(self, response):
398397 def _stream_raw_result (self , response , chunk_size = 1 , decode = True ):
399398 ''' Stream result for TTY-enabled container and raw binary data'''
400399 self ._raise_for_status (response )
401- for out in response .iter_content (chunk_size , decode ):
402- yield out
400+
401+ # Disable timeout on the underlying socket to prevent
402+ # Read timed out(s) for long running processes
403+ socket = self ._get_raw_response_socket (response )
404+ self ._disable_socket_timeout (socket )
405+
406+ yield from response .iter_content (chunk_size , decode )
403407
404408 def _read_from_socket (self , response , stream , tty = True , demux = False ):
405409 socket = self ._get_raw_response_socket (response )
@@ -477,7 +481,7 @@ def _unmount(self, *args):
477481
478482 def get_adapter (self , url ):
479483 try :
480- return super (APIClient , self ).get_adapter (url )
484+ return super ().get_adapter (url )
481485 except requests .exceptions .InvalidSchema as e :
482486 if self ._custom_adapter :
483487 return self ._custom_adapter
0 commit comments