U
    a±dœ
  ã                   @   sh   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 e 
d¡Ze 
d¡ZG dd	„ d	eƒZdS )
é    N)Úsettings)ÚBaseCommand)Úget_template_setting)Úsignalcommandz:\{?#[\s]*?(TODO|FIXME|BUG|HACK|WARNING|NOTE|XXX)[\s:]?(.+)z(.*)#\}(.*)c                       s0   e Zd ZdZdZ‡ fdd„Zedd„ ƒZ‡  ZS )ÚCommandzaShow all annotations like TODO, FIXME, BUG, HACK, WARNING, NOTE or XXX in your py and HTML files.z;annotation tag (TODO, FIXME, BUG, HACK, WARNING, NOTE, XXX)c                    s"   t ƒ  |¡ |jddddd d S )Nz--tagÚtagzSearch for specific tags onlyÚappend)ÚdestÚhelpÚaction)ÚsuperÚadd_argumentsÚadd_argument)ÚselfÚparser©Ú	__class__© úO/tmp/pip-unpacked-wheel-portabvm/django_extensions/management/commands/notes.pyr      s    üzCommand.add_argumentsc                 O   sš  dd„ t dd„ tjƒD ƒ}tdg ƒ}ttdƒ}|r:||7 }|D ]T}|rVtj ||¡}t |¡D ]0\}}}	|	D ]}
tj 	|
¡d dkrptj ||
¡}g }t
|d	ƒä}d
}| ¡ D ]’}|d7 }t |¡r´t |¡d
 \}}|d r|ttjtt|d ƒƒkr qHt | ¡ ¡r.t | ¡ ¡d
 d
 }| d||| ¡ f ¡ q´|r†| j d| ¡ |D ]}| j d| ¡ qb| j d¡ W 5 Q R X qpq`q>d S )Nc                 S   s   g | ]}|  d d¡‘qS )Ú.ú/)Úreplace)Ú.0Úappr   r   r   Ú
<listcomp>   s     z"Command.handle.<locals>.<listcomp>c                 S   s   |   d¡ S )Nzdjango.contrib)Ú
startswith)r   r   r   r   Ú<lambda>   ó    z Command.handle.<locals>.<lambda>ZDIRSZBASE_DIRé   )z.pyz.htmlÚrr   r   z[%3s] %-5s %sz%s:z  * %sÚ )Úfilterr   ZINSTALLED_APPSr   ÚgetattrÚosÚpathÚjoinÚwalkÚsplitextÚopenÚ	readlinesÚANNOTATION_REÚsearchÚfindallÚmapÚstrÚupperÚANNOTATION_END_REÚstripr   ÚstdoutÚwrite)r   ÚargsÚoptionsZappsZtemplate_dirsÚbase_dirZapp_dirÚtopÚdirsÚfilesÚfnZfpathZannotation_linesÚfdÚiÚliner   ÚmsgÚ
annotationr   r   r   Úhandle   s<    





zCommand.handle)	Ú__name__Ú
__module__Ú__qualname__r
   Úlabelr   r   r@   Ú__classcell__r   r   r   r   r      s
   	r   )r#   ÚreZdjango.confr   Zdjango.core.management.baser   Zdjango_extensions.compatr   Z"django_extensions.management.utilsr   Úcompiler*   r0   r   r   r   r   r   Ú<module>   s   

