
    ue/                        d dl mZ d dlZd dlmZmZmZmZmZ d dl	m
Z
mZ d dlmZ d dlmZ  ej                   e      Zeeegdf   Z G d de
      Z G d	 d
e      Zy)    )annotationsN)CallableContextManagerListOptionalSequence)
BaseJobSetBaseTaskHandle)throttle)	Workspacec                      e Zd ZU dZded<   dZded<   ded<   ded<   d	Zd
ed<   ddZddZddZ	ddZ
ddZddZ ed      d        Zy)PylspJobSetr   intcountdoneReport	_reporterr   _report_iter strjob_namec                N    ||| _         |j                         | _        || _        y N)r   	__enter__r   r   )selfr   report_iters      A/usr/lib/python3/dist-packages/pylsp/plugins/_rope_task_handle.py__init__zPylspJobSet.__init__   s'    DJ$..0'    c                    |r|| _         y y r   )r   )r   names     r   started_jobzPylspJobSet.started_job   s     DM r   c                
   | xj                   dz  c_         | j                         Nt        | j                               dk\  r2| j                  y | j                  j	                  d d d        d | _        y | j                          y )N   d   )r   get_percent_doner   r   __exit___reportr   s    r   finished_jobzPylspJobSet.finished_job    sl    		Q	  ".3t7L7L7N3OSV3V  (&&tT48 $DLLNr   c                     y r    r)   s    r   check_statuszPylspJobSet.check_status*       r   c                Z    | j                   dk(  ry| j                  | j                   z  dz  S )Nr   r%   )r   r   r)   s    r   r&   zPylspJobSet.get_percent_done-   s(    ::?		DJJ&#--r   c                N    | xj                   dz  c_         | j                          y)z|
        Increment the number of tasks to complete.

        This is used if the number is not known ahead of time.
        r$   N)r   r(   r)   s    r   	incrementzPylspJobSet.increment2   s     	

a
r   g      ?c                    t        | j                               }| j                   d| j                   d| j                   }t
        j                  d| d| d       | j                  ||       y )N /z
Reporting %)r   r&   r   r   r   logdebugr   )r   percentmessages      r   r(   zPylspJobSet._report;   s`    d++-.]]O1TYYKq=		Jwiq	34w(r   N)r   Optional[int]r   r   )r!   zOptional[str]returnNoner;   r<   )r;   zOptional[float])__name__
__module____qualname__r   __annotations__r   r   r   r"   r*   r-   r&   r1   r   r(   r,   r   r   r   r      s`    E3ND#M  Hc(!.
 c]) )r   r   c                      e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ddZdddZddZddZddZddZ	ddZ
ddZy)PylspTaskHandler   r!   r   	observerszList[PylspJobSet]job_setsboolstoppedr   	workspacezCallable[[str, str], None]r(   c                .    || _         g | _        g | _        y r   )rH   rE   rD   )r   rH   s     r   r   zPylspTaskHandle.__init__K   s    "r   Nc                    | j                   j                  |d d d      }t        ||      }| j                  j	                  |       | j                          |S )NT)skip_token_initialization)rH   report_progressr   rE   append_inform_observers)r   r!   r   r   results        r   create_jobsetzPylspTaskHandle.create_jobsetP   sU    nn44$ 5 
 UK0V$ r   c                     y r   r,   r)   s    r   stopzPylspTaskHandle.stopY   r.   r   c                     y r   r,   r)   s    r   current_jobsetzPylspTaskHandle.current_jobset\   r.   r   c                     y r   r,   r)   s    r   add_observerzPylspTaskHandle.add_observer_   r.   r   c                     y r   r,   r)   s    r   
is_stoppedzPylspTaskHandle.is_stoppedb   r.   r   c                     y r   r,   r)   s    r   get_jobsetszPylspTaskHandle.get_jobsetse   r.   r   c                4    | j                   D ]	  } |         y r   )rD   )r   observers     r   rN   z!PylspTaskHandle._inform_observersh   s     	HJ	r   )rH   r   )JobSetN)r   r:   r=   )r;   zOptional[BaseJobSet])r;   rF   )r;   zSequence[BaseJobSet])r>   r?   r@   rA   r   rP   rR   rT   rV   rX   rZ   rN   r,   r   r   rC   rC   C   sK    
IOM''
r   rC   )
__future__r   loggingtypingr   r   r   r   r   rope.base.taskhandler	   r
   pylsp._utilsr   pylsp.workspacer   	getLoggerr>   r6   r   r   r   r   rC   r,   r   r   <module>re      sX    "  E E ; ! %g!	3*d"	#1)* 1)h'n 'r   