o
    ÙKÕi	  ã                   @   sf   d dl Z d dlZd dlmZ e d¡ e ¡ ¡ G dd„ de jd�ZG dd„ deƒZ	G d	d
„ d
ƒZ
dS )é    N)ÚOptionalÚ	ubuntuproc                
   @   s4   e Zd Zejdededee dee fdd„ƒZdS )ÚAbstractProgressÚtotal_stepsÚ
done_stepsÚprevious_step_messageÚcurrent_step_messagec                C   ó   d S ©N© ©Úselfr   r   r   r   r   r   ú7/usr/lib/python3/dist-packages/uaclient/api/__init__.pyÚprogress
   s   	zAbstractProgress.progressN)	Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodÚintr   Ústrr   r   r   r   r   r   	   s    ýüûúr   )Ú	metaclassc                	   @   s.   e Zd Zdededee dee fdd„ZdS )ÚNullProgressr   r   r   r   c                C   r	   r
   r   r   r   r   r   r      s   zNullProgress.progressN)r   r   r   r   r   r   r   r   r   r   r   r      s    ýüûúr   c                   @   sT   e Zd Zddee fdd„Zdefdd„Zdd	„ Zdd
efdd„Z	de
fdd„ZdS )ÚProgressWrapperNÚprogress_objectc                 C   s.   |d ur|| _ ntƒ | _ d| _d| _d | _d S )Nr   éÿÿÿÿ)r   r   r   r   r   )r   r   r   r   r   Ú__init__#   s   
zProgressWrapper.__init__Úmessagec                 C   s2   | j j| j| j| j|d� || _|  jd7  _d S )N©r   r   r   r   é   )r   r   r   r   r   )r   r   r   r   r   r   ,   s   üzProgressWrapper.progressc                 C   s&   | j | _| jj| j | j| jd d� d S )Nr   )r   r   r   r   r   ©r   r   r   r   Úfinish6   s   
üzProgressWrapper.finishÚeventc                 C   s"   t | jdƒr| j ||¡ dS dS )zí
        This is our secret event system. We use it internally to insert prompts
        and extra messages in the middle of operations at certain points.
        We don't consider this stable enough to expose to the public API.
        Ú	_on_eventN)Úhasattrr   r#   )r   r"   Úpayloadr   r   r   Úemit?   s   ÿzProgressWrapper.emitÚreturnc                 C   s   t | jdƒr
| jjS dS )NÚis_interactiveF)r$   r   r(   r    r   r   r   r(   H   s   zProgressWrapper.is_interactiver
   )r   r   r   r   r   r   r   r   r!   r&   Úboolr(   r   r   r   r   r   "   s    	
		r   )r   ÚloggingÚtypingr   Ú	getLoggerÚ
addHandlerÚNullHandlerÚABCMetar   r   r   r   r   r   r   Ú<module>   s    