
    S`	                     :    d dl mZ d Zd Zd Zd Zd Zd Zd Zy	)
    )DependencyErrorc                     t        | d      S )Nservice!get_source_name_from_network_modenetwork_modes    >/usr/lib/python3/dist-packages/compose/config/sort_services.py"get_service_name_from_network_moder      s    ,\9EE    c                     t        | d      S )N	containerr   r   s    r
   $get_container_name_from_network_moder      s    ,\;GGr   c                 `    | sy | j                  |dz         sy | j                  dd      \  }}|S )N:   )
startswithsplit)r	   source_type_net_names       r
   r   r      s8    "";s?3$$S!,KAxOr   c                 R    | D cg c]  }|j                  dd      d    c}S c c}w )Nr   r   r   )r   )linkslinks     r
   get_service_namesr      s&    .34dDJJsAq!444s   $c                 @    | D cg c]  }|j                    c}S c c}w )N)source)volumes_fromvolume_froms     r
   #get_service_names_from_volumes_fromr       s    2>?;K???s   c           
         | d   }|D cg c]  }|t        |j                  dg             v s|t        |j                  dg             v sk|t        |j                  d            k(  sN|t        |j                  d            k(  s1|t        |j                  d            k(  s||j                  dg       v r| c}S c c}w )Nnamer   r   r	   pidipc
depends_on)r   getr    r   )service_dictservicesr"   r   s       r
   get_service_dependentsr)      s    D'%gkk'2&>??7NTV8WXX6w{{>7RSS6w{{57IJJ6w{{57IJJGKKb11 	  s   B.B;c                 d      d d  t               g  fdr d          rS )Nc                 "   | d   v r| d   t        | j                  dg             v rt        d| d   z        | d   | j                  dg       v rt        d| d   z        | d   | j                  dg       v rt        d| d   z        t        dd	j                        z        | v rej	                  | d          t        |       D ]
  } |        j                  | d          j                  |        j                  d
|        y y )Nr"   r   z$A service can not link to itself: %sr   z,A service can not mount itself as volume: %sr%   z&A service can not depend on itself: %szCircular dependency between %sz and r   )r   r&   r   joinaddr)   removeinsert)nmr(   sorted_servicestemporary_markedunmarkedvisits     r
   r5   z!sort_service_dicts.<locals>.visit2   s%   V9((y-aeeGR.@AA%&LqQWy&XYYyAEE."55%&TWXY_W`&`aayAEE,33%&NQRSYQZ&Z[[!"BW\\RbEc"cdd=  6++Ax8 a##AfI.OOA""1a( r   )set)r(   r2   r3   r4   r5   s   `@@@@r
   sort_service_dictsr8   ,   sA    {HuO) )$ hrl  r   N)	compose.config.errorsr   r   r   r   r   r    r)   r8    r   r
   <module>r;      s.    1FH5@
r   