Ë
    ú}ài”  ã                   óh   — d dl Z d dlZd dlmZmZ d dlmZ d dlmZ ddl	m
Z
mZmZmZ  G d„ d«      Zy)	é    N)ÚcopyfileÚrmtree)ÚContextException)Ú	TLSConfigé   )Úget_context_hostÚget_meta_dirÚget_meta_fileÚget_tls_dirc                   óè   — e Zd ZdZ	 	 dd„Z	 	 dd„Zd„ Zed„ «       Zed„ «       Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zy)ÚContextz
A context.Nc                 ó  — |st        d«      ‚|| _        d | _        || _        i | _        i | _        d| _        d| _        |s#|r|dk(  rdn|}|t        ||«      | dœi| _        y |j                  «       D ]“  \  }}t        |t        «      st        d|› d|› �«      ‚|| j                  |<   |dk7  rŒ<|j                  dt        ||«      «      | j                  |   d<   t        |j                  d	| «      «      | j                  |   d	<   Œ• y )
NzName not providedz	IN MEMORYÚswarmÚdocker©ÚHostÚSkipTLSVerifyz$Unknown endpoint format for context z: r   r   )Ú	ExceptionÚnameÚcontext_typeÚorchestratorÚ	endpointsÚtls_cfgÚ	meta_pathÚtls_pathr   ÚitemsÚ
isinstanceÚdictr   ÚgetÚbool)	Úselfr   r   Úhostr   ÚtlsÚdefault_endpointÚkÚvs	            ú]/home/factor_ks/STREAMA2026/tests/venv/lib/python3.12/site-packages/docker/context/context.pyÚ__init__zContext.__init__   s9  € áÜÐ/Ó0Ð0ØˆŒ	Ø ˆÔØ(ˆÔØˆŒØˆŒØ$ˆŒØ#ˆŒáñ ! L°GÒ$;ñ  (à#ð ð
 !Ü,¨T°3Ó7Ø), Wñ#ðˆDŒNð ð —O‘OÓ%ò 	+‰DˆAˆqÜ˜a¤Ô&ä&Ø:¸4¸&ÀÀ1À#ÐFóð ð !"ˆD�N‰N˜1ÑØ�HŠ}Øà()¯©¨fÔ6FØ�có7ó )ˆD�N‰N˜1Ñ˜fÑ%ä15°a·e±eØ S ó7*ó 2+ˆD�N‰N˜1Ñ˜oÒ.ñ	+ó    c                 óŠ   — t        || «      |dœ| j                  |<   |r|| j                  |   d<   |r|| j                  |<   y y )Nr   ÚDefaultNamespace)r   r   r   )r!   r   r"   r   Úskip_tls_verifyÚdef_namespaces         r'   Úset_endpointzContext.set_endpoint>   sS   € ô % T¨Ð+>Ó?Ø,ñ 
ˆ�‰�tÑñ Ø7DˆD�N‰N˜4Ñ Ð!3Ñ4áØ!(ˆD�L‰L˜Òð r)   c                 ó"   — | j                  «       S ©N)Ú__call__©r!   s    r'   ÚinspectzContext.inspectK   s   € Ø�}‰}‹Ðr)   c                 ó  — t         j                  |«      }|rm | |d   |d   j                  dd «      |j                  dd «      ¬«      }|d   j                  dd «      |_        |j	                  «        t        |«      |_        |S y )NÚNameÚMetadataÚStackOrchestratorÚ	Endpoints)r   r   ÚType)r   Ú
_load_metar   r   Ú_load_certsr	   r   )Úclsr   ÚmetaÚinstances       r'   Úload_contextzContext.load_contextN   s‡   € ä×!Ñ! $Ó'ˆÙÙØ�V‘Ø! *Ñ-×1Ñ1Ð2EÀtÓLØŸ(™( ;°Ó5ô7ˆHð %)¨Ñ$4×$8Ñ$8¸ÀÓ$FˆHÔ!Ø× Ñ Ô"Ü!-¨dÓ!3ˆHÔØˆOØr)   c                 óü  — t        |«      }t        j                  j                  |«      sy i }	 t	        |«      5 }t        j                  |«      }d d d «       |d   j                  «       D ]T  \  }}|dk7  rŒ|j                  dt        d d«      «      |d   |   d<   t        |j                  dd«      «      |d   |   d<   ŒV |S # 1 sw Y   ŒuxY w# t        t        t        f$ r}t        d|› d|› �«      |‚d }~ww xY w)	Nz)Detected corrupted meta file for context z : r8   r   r   Fr   T)r
   ÚosÚpathÚisfileÚopenÚjsonÚloadÚOSErrorÚKeyErrorÚ
ValueErrorr   r   r   r   r    )r<   r   Ú	meta_fileÚmetadataÚfÚer%   r&   s           r'   r:   zContext._load_meta\   s  € ä! $Ó'ˆ	Ü�w‰w�~‰~˜iÔ(Øàˆð	Ü�i“ð ( AÜŸ9™9 Q›<�÷(ð ˜[Ñ)×/Ñ/Ó1ò 	.‰DˆAˆqØ�HŠ}ØØ/0¯u©uØÔ(¨¨uÓ5ó07ˆH�[Ñ! !Ñ$ VÑ,ä8<Ø—‘�o tÓ,ó9.ˆH�[Ñ! !Ñ$ _Ò5ð	.ð ˆ÷%(ð (ûäœ¤:Ð.ò 	äØ;¸D¸6ÀÀQÀCÐHóàðûð	ús.   ¯C ºCÁC ÃCÃ	C ÃC;Ã$C6Ã6C;c                 óP  — i }t        | j                  «      }| j                  j                  «       D �]c  }t        j
                  j                  t        j
                  j                  ||«      «      sŒBd }d }d }t	        j                  t        j
                  j                  ||«      «      D ]›  }|j                  d«      r"t        j
                  j                  |||«      }Œ6|j                  d«      r"t        j
                  j                  |||«      }Œi|j                  d«      sŒ{t        j
                  j                  |||«      }Œ� t        |||g«      s�Œ)d }|dk(  r!| j                  d   j                  dd«      sd}t        ||f||¬«      ||<   �Œf || _        || _        y )	NÚcaÚcertÚkeyr   r   FT)Úclient_certÚca_certÚverify)r   r   r   ÚkeysrA   rB   ÚisdirÚjoinÚlistdirÚ
startswithÚallr   r   r   r   )	r!   ÚcertsÚtls_dirÚendpointrS   rP   rQ   ÚfilenamerT   s	            r'   r;   zContext._load_certsx   sa  € ØˆÜ˜dŸi™iÓ(ˆØŸ™×+Ñ+Ó-ó 	MˆHÜ—7‘7—=‘=¤§¡§¡¨g°xÓ!@ÔAØØˆGØˆDØˆCÜŸJ™J¤r§w¡w§|¡|°G¸XÓ'FÓGò D�Ø×&Ñ& tÔ,Ü Ÿg™gŸl™l¨7°H¸hÓG‘GØ×(Ñ(¨Ô0ÜŸ7™7Ÿ<™<¨°¸8ÓD‘DØ×(Ñ(¨Õ/ÜŸ'™'Ÿ,™, w°¸(ÓC‘CðDô �G˜T 3Ð'Ö(Ø�Ø˜xÒ'°·±¸xÑ0H×0LÑ0LØ'¨ô10à!�FÜ"+Ø!% s °WÀVô#M��h“ð%	Mð( ˆŒØˆ�r)   c                 ó  — t        | j                  «      }t        j                  j	                  |«      st        j
                  |«       t        t        | j                  «      d«      5 }|j                  t        j                  | j                  «      «       d d d «       t        | j                  «      }| j                  j                  «       D �]x  \  }}t        j                  j	                  t        j                  j                  ||«      «      s3t        j
                  t        j                  j                  ||«      «       |j                   }|rHt#        |t        j                  j                  ||t        j                  j%                  |«      «      «       |j&                  sŒÚ|j&                  \  }}t#        |t        j                  j                  ||t        j                  j%                  |«      «      «       t#        |t        j                  j                  ||t        j                  j%                  |«      «      «       �Œ{ t        | j                  «      | _        t        | j                  «      | _        y # 1 sw Y   �ŒêxY w)NÚw)r	   r   rA   rB   rV   ÚmakedirsrD   r
   ÚwriterE   Údumpsr6   r   r   r   rW   rS   r   ÚbasenamerP   r   r   )	r!   Úmeta_dirrL   r\   r]   r#   Úca_fileÚ	cert_fileÚkey_files	            r'   ÚsavezContext.save’   s³  € Ü §	¡	Ó*ˆÜ�w‰w�}‰}˜XÔ&Ü�K‰K˜Ô!Ü”- §	¡	Ó*¨CÓ0ð 	/°AØ�G‰G”D—J‘J˜tŸ}™}Ó-Ô.÷	/ô ˜dŸi™iÓ(ˆØ!Ÿ\™\×/Ñ/Ó1ó 	D‰MˆH�cÜ—7‘7—=‘=¤§¡§¡¨g°xÓ!@ÔAÜ—‘œBŸG™GŸL™L¨°(Ó;Ô<à—k‘kˆGÙÜ˜¤"§'¡'§,¡,Ø˜X¤r§w¡w×'7Ñ'7¸Ó'@ó#Bô Cð �x‹xØ&)§h¡hÑ#�	˜8Ü˜¤B§G¡G§L¡LØ˜X¤r§w¡w×'7Ñ'7¸	Ó'Bó%Dô Eä˜¤2§7¡7§<¡<Ø˜X¤r§w¡w×'7Ñ'7¸Ó'Aó$Cö Dð	Dô  & d§i¡iÓ0ˆŒÜ# D§I¡IÓ.ˆ�÷+	/ñ 	/ús   Á)/J Ê J
c                 óþ   — t         j                  j                  | j                  «      rt	        | j                  «       t         j                  j                  | j
                  «      rt	        | j
                  «       y y r0   )rA   rB   rV   r   r   r   r2   s    r'   ÚremovezContext.remove­   sG   € Ü�7‰7�=‰=˜Ÿ™Ô(Ü�4—>‘>Ô"Ü�7‰7�=‰=˜Ÿ™Ô'Ü�4—=‘=Õ!ð (r)   c                 óP   — d| j                   j                  › d| j                  › d�S )Nú<z: 'z'>)Ú	__class__Ú__name__r   r2   s    r'   Ú__repr__zContext.__repr__³   s&   € Ø�4—>‘>×*Ñ*Ð+¨3¨t¯y©y¨k¸Ð<Ð<r)   c                 óL   — t        j                  | j                  «       d¬«      S )Né   )Úindent)rE   rc   r1   r2   s    r'   Ú__str__zContext.__str__¶   s   € Ü�z‰z˜$Ÿ-™-›/°!Ô4Ð4r)   c                 óŠ   — | j                   }|j                  | j                  «       |j                  | j                  «       |S r0   )r6   ÚupdateÚTLSMaterialÚStorage)r!   Úresults     r'   r1   zContext.__call__¹   s2   € Ø—‘ˆØ�‰�d×&Ñ&Ô'Ø�‰�d—l‘lÔ#Øˆr)   c                 ó   — | j                   d u S r0   )r   r2   s    r'   Úis_docker_hostzContext.is_docker_host¿   s   € Ø× Ñ  DÐ(Ð(r)   c                 ó   — | j                   S r0   )r   r2   s    r'   r5   zContext.NameÂ   s   € à�y‰yÐr)   c                 óì   — | j                   r| j                   dk(  r1| j                  j                  dd «      }|r|j                  dd «      S y | j                  | j                      j                  dd «      S )Nr   r   r   )r   r   r   )r!   r]   s     r'   r   zContext.HostÆ   sg   € à× Ò  D×$5Ñ$5¸Ò$@Ø—~‘~×)Ñ)¨(°DÓ9ˆHÙØ—|‘| F¨DÓ1Ð1Øà�~‰~˜d×/Ñ/Ñ0×4Ñ4°V¸TÓBÐBr)   c                 ó   — | j                   S r0   )r   r2   s    r'   ÚOrchestratorzContext.OrchestratorÐ   s   € à× Ñ Ð r)   c                 ón   — i }| j                   rd| j                   i}| j                  || j                  dœS )Nr7   )r5   r6   r8   )r   r   r   )r!   r=   s     r'   r6   zContext.MetadataÔ   s;   € àˆØ×ÒØ'¨×):Ñ):Ð;ˆDà—I‘IØØŸ™ñ
ð 	
r)   c                 ó„   — | j                   }|r|dk(  rd}|| j                  j                  «       v r| j                  |   S y )Nr   r   )r   r   rU   )r!   rQ   s     r'   r   zContext.TLSConfigß   sB   € à×ÑˆÙ�c˜W’nØˆCØ�$—,‘,×#Ñ#Ó%Ñ%Ø—<‘< Ñ$Ð$Ør)   c           	      óê   — i }| j                   j                  «       D ]Q  \  }}|j                  \  }}t        t	        t
        j                  j                  |j                  ||g«      «      ||<   ŒS d|iS )Nrw   )	r   r   rP   ÚlistÚmaprA   rB   rd   rS   )r!   r[   r]   r#   rP   rQ   s         r'   rw   zContext.TLSMaterialè   su   € àˆØ!Ÿ\™\×/Ñ/Ó1ò 	A‰MˆH�cØŸ™‰IˆD�#Ü"Ü”B—G‘G×$Ñ$ s§{¡{°D¸#Ð&>Ó?óAˆE�(ŠOð	Að
 ˜5ð
ð 	
r)   c                 ó8   — d| j                   | j                  dœiS )Nrx   )ÚMetadataPathÚTLSPath)r   r   r2   s    r'   rx   zContext.Storageó   s$   € ð Ø $§¡ØŸ=™=ñðð 	r)   )NNNF)r   NNFN)ro   Ú
__module__Ú__qualname__Ú__doc__r(   r.   r3   Úclassmethodr?   r:   r;   ri   rk   rp   rt   r1   r{   Úpropertyr5   r   r   r6   r   rw   rx   © r)   r'   r   r      sü   „ ÙàEIØó)+ðX 59Ø15ó)òð ñó ðð ñó ðò6 ò4/ò6"ò=ò5òò)ð ñó ðð ñCó ðCð ñ!ó ð!ð ñ
ó ð
ð ñó ðð ñ
ó ð
ð ñó ñr)   r   )rE   rA   Úshutilr   r   Údocker.errorsr   Ú
docker.tlsr   Úconfigr   r	   r
   r   r   r�   r)   r'   ú<module>r’      s*   ðÛ Û 	ß #å *Ý  ÷ó ÷iò ir)   