B
    S:                 @   sP   d dl mZ G dd deZG dd deZG dd deZG dd	 d	eZd
S )    )
exceptionsc               @   sP   e Zd ZdddZdd Zdd Zd	d
 Zdd Zdd ZdddZ	dd Z
dS )
TaskHandleTaskTc             C   s"   || _ || _d| _g | _g | _dS )zConstruct a TaskHandle

        If `interrupts` is `False` the task won't be interrupted by
        calling `TaskHandle.stop()`.

        FN)name
interruptsstoppedjob_sets	observers)selfr   r    r   3lib/python3.7/site-packages/rope/base/taskhandle.py__init__   s
    zTaskHandle.__init__c             C   s   | j rd| _|   dS )zInterrupts the refactoringTN)r   r   _inform_observers)r
   r   r   r   stop   s    zTaskHandle.stopc             C   s   | j r| j d S dS )zReturn the current `JobSet`N)r   )r
   r   r   r   current_jobset   s    zTaskHandle.current_jobsetc             C   s   | j | dS )zRegister an observer for this task handle

        The observer is notified whenever the task is stopped or
        a job gets finished.

        N)r	   append)r
   observerr   r   r   add_observer   s    zTaskHandle.add_observerc             C   s   | j S )N)r   )r
   r   r   r   
is_stopped'   s    zTaskHandle.is_stoppedc             C   s   | j S )N)r   )r
   r   r   r   get_jobsets*   s    zTaskHandle.get_jobsetsJobSetNc             C   s&   t | ||d}| j| |   |S )N)r   count)r   r   r   r   )r
   r   r   resultr   r   r   create_jobset-   s    zTaskHandle.create_jobsetc             C   s   xt | jD ]
}|  qW d S )N)listr	   )r
   r   r   r   r   r   3   s    zTaskHandle._inform_observers)r   T)r   N)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   r   r      s   
	
r   c               @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )r   c             C   s"   || _ || _|| _d| _d | _d S )Nr   )handler   r   donejob_name)r
   r   r   r   r   r   r   r   :   s
    zJobSet.__init__c             C   s   |    || _| j  d S )N)check_statusr!   r   r   )r
   r   r   r   r   started_jobA   s    zJobSet.started_jobc             C   s*   |    |  jd7  _| j  d | _d S )N   )r"   r    r   r   r!   )r
   r   r   r   finished_jobF   s    
zJobSet.finished_jobc             C   s   | j  rt d S )N)r   r   r   ZInterruptedTaskError)r
   r   r   r   r"   L   s    
zJobSet.check_statusc             C   s   | j S )N)r!   )r
   r   r   r   get_active_job_nameP   s    zJobSet.get_active_job_namec             C   s2   | j d k	r.| j dkr.| jd | j  }t|dS d S )Nr   d   )r   r    min)r
   Zpercentr   r   r   get_percent_doneS   s    zJobSet.get_percent_donec             C   s   | j S )N)r   )r
   r   r   r   get_nameX   s    zJobSet.get_nameN)
r   r   r   r   r#   r%   r"   r&   r)   r*   r   r   r   r   r   8   s   r   c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )NullTaskHandlec             C   s   d S )Nr   )r
   r   r   r   r   ^   s    zNullTaskHandle.__init__c             C   s   dS )NFr   )r
   r   r   r   r   a   s    zNullTaskHandle.is_stoppedc             C   s   d S )Nr   )r
   r   r   r   r   d   s    zNullTaskHandle.stopc             O   s   t  S )N)
NullJobSet)r
   argskwdsr   r   r   r   g   s    zNullTaskHandle.create_jobsetc             C   s   g S )Nr   )r
   r   r   r   r   j   s    zNullTaskHandle.get_jobsetsc             C   s   d S )Nr   )r
   r   r   r   r   r   m   s    zNullTaskHandle.add_observerN)	r   r   r   r   r   r   r   r   r   r   r   r   r   r+   \   s   r+   c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )r,   c             C   s   d S )Nr   )r
   r   r   r   r   r#   s   s    zNullJobSet.started_jobc             C   s   d S )Nr   )r
   r   r   r   r%   v   s    zNullJobSet.finished_jobc             C   s   d S )Nr   )r
   r   r   r   r"   y   s    zNullJobSet.check_statusc             C   s   d S )Nr   )r
   r   r   r   r&   |   s    zNullJobSet.get_active_job_namec             C   s   d S )Nr   )r
   r   r   r   r)      s    zNullJobSet.get_percent_donec             C   s   d S )Nr   )r
   r   r   r   r*      s    zNullJobSet.get_nameN)	r   r   r   r#   r%   r"   r&   r)   r*   r   r   r   r   r,   q   s   r,   N)Z	rope.baser   objectr   r   r+   r,   r   r   r   r   <module>   s   4$