U
    d                     @   s  d Z ddlZddlmZ ddlmZ ddlZddlmZm	Z	 dZ
edZedZed	Zed
ZedZdZG dd deZdd ZG dd dZe eje	dd Zejedejdddejdd Zejedejdddejdd Zejedejdddejdd Zejedejdddejdd  Zejedejdddejd!d" ZdS )#The ``celery logtool`` command.    N)Counter)	FileInput)CeleryCommandhandle_preload_options)logtoolz^\[\d\d\d\d\-\d\d-\d\d z.+?\] Receivedz
.+?\] Taskz.+?([\w\.]+)\[(.+?)\].+z.+?[\w\.]+\[.+?\] (.+)z
Report
======
Task total: {task[total]}
Task errors: {task[errors]}
Task success: {task[succeeded]}
Task completed: {task[completed]}
Tasks
=====
{task[types].format}
c                   @   s   e Zd Zedd ZdS )_task_countsc                 C   s   d dd | D S )N
c                 s   s   | ]}d j | V  qdS )z{}: {}N)format).0i r   6/tmp/pip-unpacked-wheel-9cz4377o/celery/bin/logtool.py	<genexpr>#   s     z&_task_counts.format.<locals>.<genexpr>)joinselfr   r   r   r
   !   s    z_task_counts.formatN)__name__
__module____qualname__propertyr
   r   r   r   r   r      s   r   c                 C   s   t | }| S N)RE_TASK_INFOmatchgroups)linemr   r   r   	task_info&   s    
r   c                   @   sN   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 Z	dd Z
dS )AuditNc                 C   sF   t  | _i | _i | _t  | _t | _d| _|| _|| _	|| _
d | _d S )Nr   )setidsnamesresultsreadyr   
task_typestask_errorson_task_erroron_traceon_debug	prev_line)r   r&   r'   r(   r   r   r   __init__-   s    zAudit.__init__c                 C   s   t |D ]}| | q| S r   )r   feed)r   filesr   r   r   r   run9   s    z	Audit.runc                 C   s,   || j |< | j| | j|  d7  < d S N   )r!   r    addr$   )r   r   	task_nametask_idr   r   r   task_received>   s    
zAudit.task_receivedc                 C   s2   | j | || j|< d|kr.| |||| d S )N	succeeded)r#   r0   r"   
task_errorr   r   r1   r2   resultr   r   r   
task_readyC   s    
zAudit.task_readyc                 C   s(   |  j d7  _ | jr$| |||| d S r.   )r%   r&   r6   r   r   r   r5   I   s    zAudit.task_errorc                 C   s   t |rt|r0t|\}}| ||| nPt|rpt|\}}t|}|r^| \}| |||| n| j	r| 	| || _
n(| jr| dtd | j
|g d | _
d S )Nr	   )RE_LOG_STARTr   RE_TASK_RECEIVEDr   r3   RE_TASK_READYRE_TASK_RESULTr   r8   r(   r)   r'   r   filterr6   r   r   r   r+   N   s     





z
Audit.feedc                 C   s   | j | jA S r   )r    r#   r   r   r   r   incomplete_tasksb   s    zAudit.incomplete_tasksc                 C   s8   dt | j t| j| jt| jt| j| j diS )NZtask)typestotalerrorsZ	completedr4   )r   r$   most_commonlenr    r%   r#   r   r   r   r   reporte   s    zAudit.report)NNN)r   r   r   r*   r-   r3   r8   r5   r+   r>   rD   r   r   r   r   r   +   s   
r   c                 C   s   dS )r   Nr   ctxr   r   r   r   q   s    r   )clsr,   )nargsc                 C   s$   | j tjf t |  d S r   )objechoREPORT_FORMATr
   r   r-   rD   rF   r,   r   r   r   statsx   s    rN   c                 C   s   t | jjd| d S )N)r'   r   rJ   rK   r-   rM   r   r   r   traces   s    rP   c                    s   t  fddd| d S )Nc                    s    j | S r   )rJ   rK   )r   _rE   r   r   <lambda>       zerrors.<locals>.<lambda>)r&   )r   r-   rM   r   rE   r   rA      s    rA   c                 C   s4   t  }|| | D ]}| jd|  qd S )NzDid not complete: )r   r-   r>   rJ   rK   )rF   r,   auditr2   r   r   r   
incomplete   s    
rU   c                 C   s   t | jjd| d S )N)r(   rO   rM   r   r   r   debug   s    rV   ) __doc__recollectionsr   Z	fileinputr   ZclickZcelery.bin.baser   r   __all__compiler9   r:   r;   r   r<   rL   listr   r   r   groupZpass_contextr   commandargumentrN   rP   rA   rU   rV   r   r   r   r   <module>   sN   




F




