
    Uٵg	                         d dl Z d dlZd dlmZ  ej                  d      j                   ej                                 G d de j                        Z G d de      Z	 G d	 d
      Z
y)    N)Optional	ubuntuproc            
       N    e Zd Zej                  dededee   dee   fd       Zy)AbstractProgresstotal_steps
done_stepsprevious_step_messagecurrent_step_messagec                     y N selfr   r   r	   r
   s        7/usr/lib/python3/dist-packages/uaclient/api/__init__.pyprogresszAbstractProgress.progress
   s     	    N)	__name__
__module____qualname__abcabstractmethodintr   strr   r   r   r   r   r   	   sJ      	
  (} 'sm r   r   )	metaclassc            	       0    e Zd Zdededee   dee   fdZy)NullProgressr   r   r	   r
   c                     y r   r   r   s        r   r   zNullProgress.progress   s     	r   N)r   r   r   r   r   r   r   r   r   r   r   r      s7      	
  (} 'smr   r   c                   L    e Zd Zddee   fdZdefdZd ZddefdZ	d	e
fd
Zy)ProgressWrapperNprogress_objectc                 `    ||| _         nt               | _         d| _        d| _        d | _        y )Nr   )r    r   r   r   r	   )r   r    s     r   __init__zProgressWrapper.__init__#   s1    &#2D #/>D %)"r   messagec                     | j                   j                  | j                  | j                  | j                  |       || _        | xj                  dz  c_        y )Nr   r   r	   r
      )r    r   r   r   r	   )r   r$   s     r   r   zProgressWrapper.progress,   sO    %%(("&"<"<!(	 	& 	
 &-"1r   c                     | j                   | _        | j                  j                  | j                   | j                  | j                  d        y )Nr&   )r   r   r    r   r	   r   s    r   finishzProgressWrapper.finish6   sD    **%%(("&"<"<!%	 	& 	
r   eventc                 j    t        | j                  d      r| j                  j                  ||       yy)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+   payloads      r   emitzProgressWrapper.emit?   s/     4''5  **5': 6r   returnc                 \    t        | j                  d      r| j                  j                  S y)Nis_interactiveF)r.   r    r3   r)   s    r   r3   zProgressWrapper.is_interactiveH   s(    4'')9:''666r   r   )r   r   r   r   r   r#   r   r   r*   r0   boolr3   r   r   r   r   r   "   s=    *1A(B * 
;# ; r   r   )r   loggingtypingr   	getLogger
addHandlerNullHandlerABCMetar   r   r   r   r   r   <module>r;      s^    
     +  ) )*='*=*=*? @
 
	# 	* *r   