
                            S SK r S SKrS SKJr  SSKJr  SSKJr  S SK	r	S SK
r	\	R                  R                  r " S S\	R                  R                  5      r " S	 S
\	R                   R"                  5      r " S S\5      rg)    N)BaseHTTPAdapter   )	constants   )NpipeSocketc                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )NpipeHTTPConnection   c                 :   > [         TU ]  SUS9  Xl        X l        g )N	localhost)timeoutsuper__init__
npipe_pathr   )selfr   r   	__class__s      -lib/third_party/docker/transport/npipeconn.pyr   NpipeHTTPConnection.__init__   &     	 	
 %    c                     [        5       nUR                  U R                  5        UR                  U R                  5        Xl        g N)r   
settimeoutr   connectr   sock)r   r   s     r   r   NpipeHTTPConnection.connect   s.    }%T__%	r   )r   r   r   )<   )__name__
__module____qualname____firstlineno__r   r   __static_attributes____classcell__r   s   @r   r	   r	      s     r   r	   c                   8   ^  \ rS rSrSU 4S jjrS rS rSrU =r$ )NpipeHTTPConnectionPool   c                 :   > [         TU ]  SX#S9  Xl        X l        g )Nr   )r   maxsizer   )r   r   r   r*   r   s       r   r    NpipeHTTPConnectionPool.__init__   r   r   c                 B    [        U R                  U R                  5      $ r   )r	   r   r   )r   s    r   	_new_conn!NpipeHTTPConnectionPool._new_conn%   s    "OOT\\
 	
r   c                 j   S n U R                   R                  U R                  US9nU=(       d    U R                  5       $ ! [         a!    [        R
                  R                  U S5      e[        R                   a4    U R                  (       a   [        R
                  R                  U S5      e Nf = f)N)blockr   zPool is closed.z>Pool reached maximum size and no more connections are allowed.)poolgetr0   AttributeErrorurllib3
exceptionsClosedPoolErrorqueueEmptyEmptyPoolErrorr-   )r   r   conns      r   	_get_conn!NpipeHTTPConnectionPool._get_conn-   s    	99==tzz7=CD 't~~''  	N$$44T;LMM{{ 	zz((77/  	s   $A A.B21B2)r   r   )r   
   )	r   r    r!   r"   r   r-   r;   r#   r$   r%   s   @r   r'   r'      s    
( (r   r'   c                      ^  \ rS rSr\R
                  R                  R                  / SQ-   rS\R                  \R                  4U 4S jjrSS jrS rSrU =r$ )	NpipeHTTPAdapterA   )r   poolsr   max_pool_sizer   c                    > UR                  SS5      U l        X l        X@l        [	        US S9U l        [        TU ]  5         g )Nznpipe:// c                 "    U R                  5       $ r   )close)ps    r   <lambda>+NpipeHTTPAdapter.__init__.<locals>.<lambda>O   s
    QWWYr   )dispose_func)replacer   r   rB   RecentlyUsedContainerrA   r   r   )r   base_urlr   pool_connectionsrB   r   s        r   r   NpipeHTTPAdapter.__init__H   sC     #**:r:**+>

 	r   c                 0   U R                   R                     U R                   R                  U5      nU(       a  UsS S S 5        $ [        U R                  U R
                  U R                  S9nX0R                   U'   S S S 5        U$ ! , (       d  f       W$ = f)N)r*   )rA   lockr2   r'   r   r   rB   )r   urlproxiesr1   s       r   get_connectionNpipeHTTPAdapter.get_connectionS   sv    ZZ__::>>#&D _
 +**D #JJsO   _ s   $B7B
Bc                     UR                   $ r   )path_url)r   requestrS   s      r   request_urlNpipeHTTPAdapter.request_urla   s     r   )rB   r   rA   r   r   )r   r    r!   r"   requestsadaptersHTTPAdapter	__attrs__r   DEFAULT_NUM_POOLSDEFAULT_MAX_POOL_SIZEr   rT   rY   r#   r$   r%   s   @r   r?   r?   A   sQ    !!--77 ;L LI
 *,"+"="=(>>	   r   r?   )r7   requests.adaptersr[    docker.transport.basehttpadapterr   rD   r   npipesocketr   r4   urllib3.connection_collectionsrL   
connectionHTTPConnectionr	   connectionpoolHTTPConnectionPoolr'   r?    r   r   <module>rk      si      <  $  ,,BB ',,;; !(g44GG !(H&  & r   