
    S`                     z   d dl Z d dlmZ d dlmZ d dlmZ d Zd Z	d Z
d Ze j                  j                  ej                  e	       e j                  j                  ej                  e       e j                  j                  ej                   e       e j                  j                  ej"                  e       e j                  j                  ej$                  e	       e j                  j                  ej&                  e	       e j                  j                  ej(                  e	       dd	Zdd
Zd ZddZy)    N)types)COMPOSE_SPEC)COMPOSEFILE_V1c                 F    | j                   } ||j                               S N)represent_strreprdumperdatarepresenters      :/usr/lib/python3/dist-packages/compose/config/serialize.pyserialize_config_typer      s    &&Ktyy{##    c                 @    | j                  |j                               S r   )represent_dictr	   r   r   s     r   serialize_dict_typer      s      --r   c                     | j                   }t        |t              r|j                  d      }|j	                         dv r| j                  d|d      S  ||      S )z6 Ensure boolean-like strings are quoted in the output zutf-8)ynyesnoonofftruefalseztag:yaml.org,2002:str")style)r   
isinstancebytesdecodelowerrepresent_scalarr
   s      r   serialize_stringr%      sZ    &&K${{7#zz|LL &&'>C&PPtr   c                 >    |j                  dd      }t        | |      S )zN Ensure boolean-like strings are quoted in the output and escape $ characters $z$$)replacer%   r   s     r   serialize_string_escape_dollarr)      s    <<T"DFD))r   c           
         dt        | j                        i}| j                  D cg c]#  }t        || j                  |r||d      nd       % }}|D ci c]  }|j                  d      | c}|d<   dD ]a  }t        | |      }|s|j                         ||<   ||   j                         D ]'  \  }}d|v r|d= d|v sd|v st        |d         |d<   ) c |S c c}w c c}w )Nversionnameservices)networksvolumessecretsconfigsexternal_nameexternal)
strconfig_versionr-   denormalize_service_dictr+   popgetattrcopyitemsbool)	configimage_digestsresultservice_dictdenormalized_serviceskeyconfig_dictr,   confs	            r   denormalize_configrD   .   s&   V2234F #OO
 	 	!NN3@M,v./d	L  2 	 ,.F:
 = >fc*!&&(s +++- 	>JD$$&)~%'+D,<'=D$	>> M1s   (CC c                    |rQt         j                  j                  t        t               t         j                  j                  t        t               nPt         j                  j                  t        t
               t         j                  j                  t        t
               t        j                  t        | |      dddd      S )NF   P   T)default_flow_styleindentwidthallow_unicode)yaml
SafeDumperadd_representerr4   r)   r%   	safe_dumprD   )r<   r=   escape_dollars      r   serialize_configrQ   K   s    ''-KL''-KL''-=>''-=>>>6=1  r   c                     | df}g d}|D ]2  }| |d   z  }|t        | |d   z        k(  r|} t        |       |d   f}2 n  dj                  | S )Nns))     @@us)rT   ms)rT   s)      N@m)rX   hr      z{}{})intformat)valuer>   tablestagetmps        r   serialize_ns_time_valuerb   [   st    T]FE  eAh#eeAh&''E%j%(+F 6==&!!r   c                 ~   | j                         } |r|| d<   d| v rt        j                  | d         | d<   |t        k(  r	d| vrd| d<   d| v rZd| d   v rt	        | d   d         | d   d<   d| d   v rt	        | d   d         | d   d<   d| d   v rt	        | d   d         | d   d<   d	| v r;| d	   D cg c])  }|j
                  s	|t        k  r|j                         n|+ c}| d	<   d
| v rI|t        k(  r@| d
   D cg c].  }t        |t        j                        r|j                         n|0 c}| d
<   | S c c}w c c}w )Nimagerestartnetwork_modebridgehealthcheckintervaltimeoutstart_periodportsr/   )
r9   r   serialize_restart_specV1rb   external_ipVERSIONlegacy_reprr    	MountSpec)r?   r+   image_digestpvs        r   r6   r6   n   s   $$&L ,WL "'">">##
Y "}|;'/^$$m446M]+J77L'
3 ]335L]+I66L'	2 \-88:Q]+N;;L'7 , "'*!
  !}}'0AAMMOqH!
W L gmNZ[dNe#
IJz!U__=AMMO1D#
Y !

#
s   2.D5:3D:r   )NT)rL   compose.configr   compose.constr   rp   r   rn   r   r   r%   r)   rM   rN   rr   VolumeFromSpec
VolumeSpecSecurityOptServiceSecretServiceConfigServicePortrD   rQ   rb   r6    r   r   <module>r      s       1 .$
.*   1D E    4 46K L    0 02G H    1 13H I    3 35H I    3 35H I    1 13F G: "&'r   