
    Cj,7                     x   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJrJr  S SK	J
r
  S SKJr  S SKJrJr  SSKJr  SSKJrJrJrJr  SS	KJr  \R2                  " S
S5      rS rS rS r\
" SS9S 5       rS rS r S r!S r"S r#S r$S r%S r&S%S jr'S r(S&S jr)S r*S r+S r,S r-S  r.S! r/S" r0S'S# jr1S$ r2g)(    N)datetimetimezone)	lru_cache)zip_longest)urlparse
urlunparse   )errors)
BYTE_UNITSDEFAULT_HTTP_HOSTDEFAULT_NPIPEDEFAULT_UNIX_SOCKET)	TLSConfigURLComponentsz'scheme netloc url params query fragmentc                  .    [         R                  " S5      e)Nz[utils.create_ipam_pool has been removed. Please use a docker.types.IPAMPool object instead.r
   DeprecatedMethodargskwargss     d/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/docker/utils/utils.pycreate_ipam_poolr      s    

!
!	0     c                  .    [         R                  " S5      e)Nz_utils.create_ipam_config has been removed. Please use a docker.types.IPAMConfig object instead.r   r   s     r   create_ipam_configr   #       

!
!	2 r   c                 |    [         R                  " U 5      nUR                  S5      n[        R                  " U5      $ )Nutf-8)base64	b64decodedecodejsonloads)headerdatas     r   decode_json_headerr&   *   s/    F#D;;wD::dr   )maxsizec                     X:X  a  g[        S U R                  S5       5       5      n[        S UR                  S5       5       5      n[        X#SS9 H  u  pEXE:X  a  M  XE:  a    g  g   g)zCompare docker versions

>>> v1 = '1.9'
>>> v2 = '1.10'
>>> compare_version(v1, v2)
1
>>> compare_version(v2, v1)
-1
>>> compare_version(v2, v2)
0
r   c              3   8   #    U  H  n[        U5      v   M     g 7fNint.0ps     r   	<genexpr>"compare_version.<locals>.<genexpr>@        -}!s1vv}   .c              3   8   #    U  H  n[        U5      v   M     g 7fr*   r+   r-   s     r   r0   r1   A   r2   r3   )	fillvalue   )tuplesplitr   )v1v2s1s2c1c2s         r   compare_versionrA   0   sg     
x	-rxx}-	-B	-rxx}-	-Bb28W 3 r   c                     [        X5      S:  $ )Nr   )rA   r;   r<   s     r   
version_ltrD   M   s    2"Q&&r   c                 "    [        X5      (       + $ r*   )rD   rC   s     r   version_gterF   Q   s    "!!!r   c                    SSS.n[        U [        5      (       aJ  [        U 5      S:X  a  U S   US'   U S   US'   Ok[        U S   [        5      (       a	  U S   US'   OJU S   US'   OA[        U [        5      (       a(  SU ;   a  U S   US'   SU ;   a  U S   US'   O[        U 5      eXS'   US   c  SUS'   U$ [        US   5      US'   U$ )N )HostIpHostPortr	   r8   rJ   r   rI   )
isinstancer9   lenstrdict
ValueError)bindingresults     r   _convert_port_bindingrR   U   s    +F'5!!w<1!(F:&qzF8
C((&qzF8!(F:	GT	"	" !(!4F:7"#*8#4x W%%$zj!z M !
!34zMr   c                 
   0 n[        U R                  5       5       H^  u  p#[        U5      nSU;  a  US-  n[        U[        5      (       a   U Vs/ s H  n[        U5      PM     snX'   MP  [        U5      /X'   M`     U$ s  snf )N/z/tcp)iteritemsrM   rK   listrR   )port_bindingsrQ   kvkeyrP   s         r   convert_port_bindingsr\   q   s    F]((*+!fc>6MCaIJKg09KFK034FK , M Ls   B c                    [        U [        5      (       a  U $ / nU R                  5        GH,  u  p#[        U[        5      (       a  UR	                  S5      n[        U[
        5      (       a  SU;   a  SU;   a  [        SU< 35      eUS   n[        U[        5      (       a  UR	                  S5      nSU;   a  US   (       a  SOSnOSU;   a  US   nOSn/ SQnSU;   a   US   U;   a  U(       a  U S	US    3nOUS   nUR                  U S
U S
U 35        M  [        U[        5      (       a  UR	                  S5      nUR                  U S
U S35        GM/     U$ )Nr   romodez-Binding cannot contain both "ro" and "mode": bindrw)rsharedsharedrslaveslaverprivateprivatepropagation,:z:rw)rK   rW   rV   bytesr!   rN   rO   append)bindsrQ   rY   rZ   r`   r_   propagation_modess          r   convert_volume_bindsro   ~   si   %Fa!AaqyVq[ CA5I  V9D$&&{{7+qy wtD1y! !a&6:K&K"V1Q}%5$67D]+DMM#QtfAdV$ !U##HHW%MM#QqcW \ Mr   c                 j   [        U [        5      (       a  U $ [        U [        5      (       d!  [        S[	        U 5      R
                   35      e0 nU  H]  n[        U[        5      (       a   SU;   a  UR                  SS5      u  p4O&UnSnO![        S[	        U5      R
                   35      eXAU'   M_     U$ )Nz;Expected tmpfs value to be either a list or a dict, found: rj   r8   rH   z3Expected item in tmpfs list to be a string, found: )rK   rN   rW   rO   type__name__rM   r:   )tmpfsrQ   mountnameoptionss        r   convert_tmpfs_mountsrw      s    %eT""5k**+-
 	

 FeS!!e| %C 3g u+../1 
 t  Mr   c                     U (       d  U $ [        U [        5      (       d  [        S5      e/ nU  H-  n[        U[        5      (       a  SU0nUR	                  U5        M/     U$ )Nz"networks parameter must be a list.Target)rK   rW   	TypeErrorrM   rl   )networksrQ   ns      r   convert_service_networksr}      s[    h%%<==Fa1Aa  Mr   c                     U R                  SS5      n[        U5      S:X  a  [        U5      $ U R                  SS5      n[        U5      S:X  a  SUS   ;  a  [        U5      $ U S 4$ )N@r8   r	   rj   rT   )rsplitrL   r9   )	repo_namepartss     r   parse_repository_tagr      se    S!$E
5zQU|S!$E
5zQ3eAh.U|d?r   c                 D   U (       d  U(       a  [         $ U (       a  U R                  5       S:X  a  [        $ U R                  5       n [        U 5      nUR                  nU(       a  [        S U 5       5      (       a  [        SU  3S5      nSnUS:X  a  [        R                  " S5      eUS:X  d  US:X  a  US:H  nSnOUS	:X  a  S
nUS;  a  [        R                  " SU  35      eUS:X  a*  UR                  (       d  [        R                  " SU  35      e[        UR                  UR                  UR                  UR                  /5      (       a  [        R                  " SU  35      eUR                  (       a  US:X  a  [        R                  " SU  35      eUR                  nUS
:X  a  UR                  b  UR                   SU 3nUR                  nUS;   ai  UR                  =(       d    SnUS::  a2  US:w  a  [        R                  " SU  35      eSnUR                   SU 3nUR                  (       d  [          SU 3nUS:X  a  SU(       a  SOS 3nOUS
:X  a  S	nUS;   a  U SU 3R#                  S5      $ [%        ['        UUUSSSS95      R#                  S5      $ )Nzunix://c              3   L   #    U  H  o[         R                   S 3;  v   M     g7f)+N)stringascii_letters)r.   xs     r   r0   parse_host.<locals>.<genexpr>   s!     KUF$8$8#9!;;Us   "$z//tcpfdzfd protocol is not implementedhttphttps	http+unixunix)r   r   npipesshzInvalid bind address protocol: zInvalid bind address format: r   z@Invalid bind address format: no path allowed for this protocol: rT   )r   r   r   z/Invalid bind address format: port is required:    rj   srH   )r   r   z://)schemenetlocurlparamsqueryfragment)r   stripr   r   r   anyr
   DockerExceptionr   r   r   r   passwordpathhostnameportr   rstripr   r   )addris_win32tls
parsed_urlprotor   r   r   s           r   
parse_hostr      s   H4::<9,""::<D$JECKUKKK4&k51
}$$%EFF %7*w	+	33$$-dV4
 	
 ~j// $$+D62
 	
 :++Z-@-@   $$+D62
 	
 5E>$$NtfU
 	
 F?z22> !))*!D62DF#!19~,,EdVL  D"))*!D62F"")*!D62F ~csr*+	&&&D6"))#..m  vc{r   c                    / nU  H  n[        U[        5      (       a  UR                  U5        M+  [        U[        5      (       d"  [        R
                  " S[        U5       35      eUR                  S5      nU(       d  M|  US   n[        U5      S:  a  US   nOUn[        U5      S:  a  US   nOSnUR                  UUUS.5        M     U$ )NzInvalid device type rj   r   r8   r	   rwm)
PathOnHostPathInContainerCgroupPermissions)	rK   rN   rl   rM   r
   r   rq   r:   rL   )devicesdevice_listdevicedevice_mappingpath_on_hostpath_in_containerpermissionss          r   parse_devicesr   D  s    Kfd##v&&#&&((&tF|n5   c*>)!,L>"Q&$21$5!$0!>"Q&,Q/#*#4%0  ' 0 r   c                 d   U (       d  [         R                  n U R                  S5      nU R                  S5      =(       d    S nU R                  S5      nUS:X  a  SnOUS LnU=(       d    Un0 nU(       a  XS'   U(       d  U$ U(       d=  [         R                  R	                  [         R                  R                  S5      S5      n[        [         R                  R	                  US	5      [         R                  R	                  US
5      4[         R                  R	                  US5      US9US'   U$ )NDOCKER_HOSTDOCKER_CERT_PATHDOCKER_TLS_VERIFYrH   Fbase_url~z.dockerzcert.pemzkey.pemzca.pem)client_certca_certverifyr   )osenvirongetr   join
expanduserr   )environmenthost	cert_path
tls_verify
enable_tlsr   s         r   kwargs_from_envr   a  s    jj??=)D  23;tI !45JR
t+
(jJF!zGGLL!3!3C!8)D	WW\\)Z8WW\\)Y79Y1	F5M Mr   c                 Z   0 n[        U R                  5       5       Hr  u  p#[        U[        5      (       a  U(       a  SOSn[        U[        5      (       d  U/nU Vs/ s H%  n[        U[
        5      (       d  [        U5      OUPM'     snX'   Mt     [        R                  " U5      $ s  snf )Ntruefalse)rU   rV   rK   boolrW   rM   r"   dumps)filtersrQ   rY   rZ   items        r   convert_filtersr     s    FW]]_%aA!T""A 
 (c22CI<
	 & ::f	
s   ,B(c                     U R                  [        R                  5      [        SSS[        R                  S9-
  nUR                  UR
                  S-  S-  -   $ )z&Convert a datetime to a Unix timestampi  r8   )tzinfo   i  )
astimezoner   utcr   secondsdays)dtdeltas     r   datetime_to_timestampr     sD    MM(,,'(4Ahll*SSE==5::?T111r   c                 t   [        U [        [        45      (       a  U $ [        U 5      S:X  a  gU SS R	                  5       (       a/  U S   R	                  5       (       a  U S   S:X  d	  U S   S:X  a  U S S n [
        nU S   R                  5       nUR                  5       (       a  U nSnOU S S nX!R                  5       ;   d  UR                  5       (       a   [        U5      n[        XAU   -  5      n U $ [        R                  " SU  S	35      e! [         a   n[        R                  " SU S35      UeS nAff = f)
Nr   r7   bBz/Failed converting the string value for memory (z) to an integer.z The specified value for memory (zW) should specify the units. The postfix should be one of the `b` `k` `m` `g` characters)rK   r,   floatrL   isalphar   lowerisdigitkeysrO   r
   r   )r   unitssuffixdigits_partdigitsves         r   parse_bytesr     sF   !c5]##
1v{BxaemmooR5C<1R5C<#2AErU[[]F ~~f!1!1	;'F v&' H $$.qc 2J J
 	
  	((= 02 	s   D 
D7D22D7c                     [        U [        5      (       a  [        U R                  5       5      n [	        U 5       VVs/ s H  u  pU(       a  U SU 3OUPM     snn$ s  snnf )Nrj   )rK   rN   rU   rV   sorted)linksrY   rZ   s      r   normalize_linksr     sN    %U[[]#/5e}=}tq!qc1#J"}===s   Ac                 :   0 n[        U 5       nU Hl  nUS   S:X  a  M  UR                  5       nU(       d  M'  UR                  SS5      n[        U5      S:X  a
  Uu  pVXaU'   MR  [        R
                  " SU  SU 35      e   SSS5        U$ ! , (       d  f       U$ = f)	zY
Reads a line-separated environment file.
The format of each line should be "key=value".
r   #=r8   r	   z!Invalid line in environment file z:
N)openr   r:   rL   r
   r   )env_filer   fline
parse_linerY   rZ   s          r   parse_env_filer     s    
 K	h1DAw#~::<DC+J:!#!!"A,,7zTFKM M  
$ % 
$ s   A3B
Bc                 .    [         R                  " U 5      $ r*   )shlexr:   )commands    r   split_commandr     s    ;;wr   c                 j    S n[        U R                  5       5       Vs/ s H  o!" U6 PM	     sn$ s  snf )Nc                 f    Uc  U $ [        U[        5      (       a  UR                  S5      nU  SU 3$ )Nr   r   )rK   rk   r!   )r[   values     r   
format_env&format_environment.<locals>.format_env  s8    =JeU##LL)Eawr   )rU   rV   )r   r   vars      r   format_environmentr    s6      )-[->->-@(AB(AJ(ABBBs   0c                    U(       a<  [        [        U R                  5       5      5       VVs/ s H  u  p#U SU 3PM     snn$ [        [        U R                  5       5      5       VVs/ s H  u  p#U SU 3PM     snn$ s  snnf s  snnf )N rj   )r   rU   rV   )extra_hoststaskrY   rZ   s       r   format_extra_hostsr    s    #)${/@/@/B*C#D
#D41qc1#J#D
 	

  &d;+<+<+>&?@@tq1#Qqc
@ 	
s   B )Bc                 .    [         R                  " S5      e)Nz_utils.create_host_config has been removed. Please use a docker.types.HostConfig object instead.r   )selfr   r   s      r   create_host_configr
    r   r   )FFr*   )F)3r   collectionsr"   r   os.pathr   r   r   r   	functoolsr   	itertoolsr   urllib.parser   r   rH   r
   	constantsr   r   r   r   r   r   
namedtupler   r   r   r&   rA   rD   rF   rR   r\   ro   rw   r}   r   r   r   r   r   r   r   r   r   r   r  r  r
   r   r   <module>r     s       	    '  ! -   &&- 4 8'"8
3l:Xv:#L2%P>8 C	r   