
    bi                        d dl Z d dlZd dlZd dlZddlmZ ddlmZ ddl	m
Z
 ej                  j                  Z G d dej                  j                        Z G d	 d
ej                   j"                        Z G d de      Zy)    N   )	constants   )BaseHTTPAdapter)NpipeSocketc                   &     e Zd Zd fd	Zd Z xZS )NpipeHTTPConnectionc                 D    t         |   d|       || _        || _        y )N	localhost)timeoutsuper__init__
npipe_pathr   )selfr   r   	__class__s      U/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/docker/transport/npipeconn.pyr   zNpipeHTTPConnection.__init__   s*     	 	
 %    c                     t               }|j                  | j                         |j                  | j                         || _        y N)r   
settimeoutr   connectr   sock)r   r   s     r   r   zNpipeHTTPConnection.connect   s0    }%T__%	r   )<   )__name__
__module____qualname__r   r   __classcell__r   s   @r   r	   r	      s    r   r	   c                   ,     e Zd Zd fd	Zd Zd Z xZS )NpipeHTTPConnectionPoolc                 F    t         |   d||       || _        || _        y )Nr   )r   maxsizer   )r   r   r   r#   r   s       r   r   z NpipeHTTPConnectionPool.__init__   s,    ' 	 	
 %r   c                 B    t        | j                  | j                        S r   )r	   r   r   )r   s    r   	_new_connz!NpipeHTTPConnectionPool._new_conn%   s    "OOT\\
 	
r   c                 d   d }	 | j                   j                  | j                  |      }|xs | j                         S # t        $ r&}t        j
                  j                  | d      |d }~wt        j                  $ r0 | j                  r!t        j
                  j                  | d      d Y w xY w)N)blockr   zPool is closed.z>Pool reached maximum size and no more connections are allowed.)poolgetr'   AttributeErrorurllib3
exceptionsClosedPoolErrorqueueEmptyEmptyPoolErrorr%   )r   r   connaes       r   	_get_connz!NpipeHTTPConnectionPool._get_conn-   s    	99==tzz7=CD 't~~''  	V$$44T;LMSUU{{ 	zz((77/ 	 	s   '? 	B/!A))AB/.B/)r   
   )r   r   r   r   r%   r3   r   r   s   @r   r!   r!      s    
(r   r!   c                        e Zd Zej                  j
                  j                  g dz   Zdej                  ej                  f fd	Z
ddZd Z xZS )NpipeHTTPAdapter)r   poolsr   max_pool_sizer   c                     |j                  dd      | _        || _        || _        t	        |d       | _        t        |           y )Nznpipe:// c                 "    | j                         S r   )close)ps    r   <lambda>z+NpipeHTTPAdapter.__init__.<locals>.<lambda>N   s    QWWY r   )dispose_func)replacer   r   r8   RecentlyUsedContainerr7   r   r   )r   base_urlr   pool_connectionsr8   r   s        r   r   zNpipeHTTPAdapter.__init__G   sG     #**:r:**+>

 	r   c                 $   | j                   j                  5  | j                   j                  |      }|r|cd d d        S t        | j                  | j
                  | j                        }|| j                   |<   d d d        |S # 1 sw Y   S xY w)N)r#   )r7   lockr)   r!   r   r   r8   )r   urlproxiesr(   s       r   get_connectionzNpipeHTTPAdapter.get_connectionR   s~    ZZ__ 		#::>>#&D		# 		#
 +**D #DJJsO		# 		# s   B ;BBc                     |j                   S r   )path_url)r   requestrG   s      r   request_urlzNpipeHTTPAdapter.request_url`   s     r   r   )r   r   r   requestsadaptersHTTPAdapter	__attrs__r   DEFAULT_NUM_POOLSDEFAULT_MAX_POOL_SIZEr   rH   rL   r   r   s   @r   r6   r6   @   sL    !!--77 ;L LI
 *,"+"="=(>>	 r   r6   )r.   requests.adaptersrM   r+   urllib3.connectionr:   r   basehttpadapterr   npipesocketr   _collectionsrA   
connectionHTTPConnectionr	   connectionpoolHTTPConnectionPoolr!   r6    r   r   <module>r]      si         , $,,BB ',,;;  (g44GG  (F&  & r   