o
    uJAfE                     @  sB   d dl mZ d dlZdddZG d	d
 d
ejZG dd dZdS )    )annotationsNlinesT.Iterable[str]return)T.List[T.Tuple[T.List[str], T.List[str]]]c           	      C  s  g }g }g }d}d}| D ]r}| ds|d7 }d }|D ]b}|r;|dkr+|dkr+|d7 }|dkr4|dkr4q||7 }d }q|dv rB|}q|dv rk|dkrW|rR|| n|| d}|dkrj|||f g }g }d}q|dkry|| d}d	}q||7 }qq|S )
NF 
$\>   r	   r
   >   r    :T)endswithappend)	r   rulestargetsdepsZin_depsoutlineescapec r   7/usr/lib/python3.10/site-packages/mesonbuild/depfile.pyparse   sR   



r   c                   @  s   e Zd ZU ded< dS )Targetz
T.Set[str]r   N)__name__
__module____qualname____annotations__r   r   r   r   r   =   s   
 r   c                   @  s"   e Zd ZdddZddddZdS )DepFiler   r   c           	      C  sX   t |}i }|D ]\}}|D ]}||tt d}|D ]}|j| qqq|| _d S )N)r   )r   
setdefaultr   setr   adddepfile)	selfr   r   r"   r   r   targettdepr   r   r   __init__C   s   
zDepFile.__init__NnamestrvisitedT.Optional[T.Set[str]]r   T.List[str]c                 C  sl   t  }|st  }||v rg S || | j|}|sg S ||j |jD ]}|| || q&t|S N)r    r!   r"   getupdater   get_all_dependenciessorted)r#   r(   r*   r   r$   r&   r   r   r   r0   M   s   

zDepFile.get_all_dependencies)r   r   r-   )r(   r)   r*   r+   r   r,   )r   r   r   r'   r0   r   r   r   r   r   B   s    

r   )r   r   r   r   )
__future__r   typingTr   
NamedTupler   r   r   r   r   r   <module>   s
   
+