U
    ˆÓ]ê  ã                   @   s`   d dl mZ d dl mZ 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S )é    )Úabsolute_import)Úunicode_literals)Úutilsc                   @   s   e Zd ZdS )ÚStreamOutputErrorN)Ú__name__Ú
__module__Ú__qualname__© r	   r	   ú9/usr/lib/python3/dist-packages/compose/progress_stream.pyr      s   r   c              	   C   sN   z|  | ¡ W n: tk
rH   t|ddƒ}|  | j|dd |¡¡ Y nX 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| ¡ }t |¡}i }d}t | ¡D ]¸}|V  d|kpFd|k}|sbt|||ƒ | ¡  q.|shq.| d¡}|sxq.||kr–t|ƒ||< t	d|ƒ t|ƒ||  }t	dd|f |ƒ t|||ƒ d|krÞt	d	d|f |ƒ | ¡  q.d S )
NÚisattyr   ÚprogressÚprogressDetailÚidÚ
z%c[%dAé   z%c[%dB)
Úhasattrr   r   Zget_output_streamZjson_streamÚprint_output_eventÚflushÚgetÚlenr   )Úoutputr   Úis_terminalÚlinesZdiffÚeventZis_progress_eventZimage_idr	   r	   r
   Ústream_output   s2    


r&   c                 C   sj  d| krt | d d ƒ‚d}|r<d| kr<tdd |ƒ d}nd| krHd S d	| krbtd
| d	  |ƒ d| kr|td| d  |ƒ d| kr–td| d  |ƒ |  dd¡}d| krÄtd|| d |f |ƒ n¢d| kr2| d }| d¡}d|kr|rt|d ƒt|ƒ d }td|||f |ƒ ntd||f |ƒ n4d| krTtd| d |f |ƒ ntd||f |ƒ d S )NZerrorDetailÚmessageÚ r   z%c[2Kr   úr   Útimez[%s] r   z%s: Úfromz
(from %s) Ústatusr   z%s %s%sÚtotalZcurrentéd   z%s (%.1f%%)%sz%s%sz%s%s
)r   r   r    Úfloat)r%   r   r#   Ú
terminatorr,   Zdetailr-   Z
percentager	   r	   r
   r   <   s6    


r   c                 C   s@   d }| D ]2}|  d¡}|rd|kr&qq| dd¡d  ¡ }q|S )Nr,   ÚDigestú:é   )r    ÚsplitÚstrip)ÚeventsÚdigestr%   r,   r	   r	   r
   Úget_digest_from_pulld   s    
r8   c                 C   s,   | D ]"}|  di ¡  d¡}|r|  S qd S )NZauxr1   )r    )r6   r%   r7   r	   r	   r
   Úget_digest_from_pusho   s
    
r9   N)Z
__future__r   r   Zcomposer   Ú	Exceptionr   r   r&   r   r8   r9   r	   r	   r	   r
   Ú<module>   s   )(