a
   SW¼+â„¨ã                   @   sP   d dl mZ G dd„ deƒZdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dS )é    )Úutilsc                   @   s   e Zd ZdS )ÚStreamOutputErrorN)Ú__name__Ú
__module__Ú__qualname__© r   r   ú;/usr/lib/python3.9/site-packages/compose/progress_stream.pyr      s   r   c              	   C   sL   z|  | ¡ W n8 tyF   t|ddƒ}|  | j|dd |¡¡ Y n0 d S )NÚencodingÚasciiÚreplace)Úerrors)ÚwriteÚUnicodeEncodeErrorÚgetattrÚencodeÚdecode)ÚsÚstreamr	   r   r   r   Úwrite_to_stream   s
    r   c                 c   sæ   t |dƒo| ¡ }|}i }d}t | ¡D ]¸}|V  d|v p@d|v }|s\t|||ƒ | ¡  q(|sbq(| d¡}|srq(||vrt|ƒ||< td|ƒ t|ƒ||  }tdd|f |ƒ t|||ƒ d|v rØtd	d|f |ƒ | ¡  q(d S )
NÚisattyr   ÚprogressÚprogressDetailÚidÚ
z%c[%dAé   z%c[%dB)	Úhasattrr   r   Zjson_streamÚprint_output_eventÚflushÚgetÚlenr   )Úoutputr   Úis_terminalÚlinesÚdiffÚeventZis_progress_eventZimage_idr   r   r   Ústream_output   s2    

r%   c                 C   sj  d| v rt | d d ƒ‚d}|r<d| vr<tdd |ƒ d}nd| v rHd S d	| v rbtd
| d	  |ƒ d| v r|td| d  |ƒ d| v r–td| d  |ƒ |  dd¡}d| v rÄtd || d |¡|ƒ n¢d| v r2| d }| d¡}d|v r|rt|d ƒt|ƒ d }td |||¡|ƒ ntd ||¡|ƒ n4d| v rTtd | d |¡|ƒ ntd ||¡|ƒ d S )NZerrorDetailÚmessageÚ r   z%c[2Kr   úr   Útimez[%s] r   z%s: Úfromz
(from %s) Ústatusr   z{} {}{}ÚtotalÚcurrentéd   z{} ({:.1f}%){}z{}{}z{}{}
)r   r   r   ÚformatÚfloat)r$   r   r!   Ú
terminatorr+   Údetailr,   Ú
percentager   r   r   r   9   s6    


r   c                 C   s@   d }| D ]2}|  d¡}|rd|vr&qq| dd¡d  ¡ }q|S )Nr+   ÚDigestú:é   )r   ÚsplitÚstrip)ÚeventsÚdigestr$   r+   r   r   r   Úget_digest_from_pulla   s    
r;   c                 C   s,   | D ]"}|  di ¡  d¡}|r|  S qd S )NZauxr4   )r   )r9   r$   r:   r   r   r   Úget_digest_from_pushl   s
    
r<   c                 C   sT   | d   ¡ }d| v rP| d }d|v rPd|v rPt|d ƒt|d ƒ }d ||¡}|S )Nr+   r   r-   r,   z{} ({:.1%}))Úlowerr0   r/   )r$   r+   r2   r3   r   r   r   Úread_statust   s    r>   N)
Zcomposer   Ú	Exceptionr   r   r%   r   r;   r<   r>   r   r   r   r   Ú<module>   s   )(