o
    hr                     @   s   d dl mZmZ d dlmZmZmZmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZmZmZ eeef ZedZeG d	d
 d
e
e ZdS )    )	dataclassfield)AnyIteratorListTypeVarUnion)Visitor)out)lib2to3_parse)token)LeafNode	type_reprTc                   @   s   e Zd ZU dZeed< eedZe	e
 ed< dZeed< de
ded	ed
dfddZded
ee fddZedee
eef d
dfddZdS )DebugVisitorr   
tree_depth)default_factorylist_outputTprint_outputmessageargskwargsreturnNc                 O   s0   | j | | jrt|g|R i | d S d S )N)r   appendr   r
   )selfr   r   r    r   A/var/www/html/ai/venv/lib/python3.10/site-packages/black/debug.pyr
      s   zDebugVisitor.outnodec                 c   s    dd| j   }t|trHt|j}| j| | dd |  j d7  _ |jD ]
}| |E d H  q'|  j d8  _ | j| d| ddd d S tj	
|jt|j}| j| | d	dd
 |jro| jd|jdddd | jd|jd	dd d S )N    yellow)fg   /F)r"   boldblue)r"   nlgreen)r"   r%   r'   )r   
isinstancer   r   typer
   childrenvisitr   tok_namegetstrprefixvalue)r   r   indent_typechildr   r   r   visit_default   s   


zDebugVisitor.visit_defaultcodec                 C   s*   t  }t|trt|}t|| dS )zmPretty-print the lib2to3 AST of a given string of `code`.

        Convenience method for debugging.
        N)r   r)   r/   r   listr,   )clsr6   vr   r   r   show-   s   
zDebugVisitor.show)__name__
__module____qualname__r   int__annotations__r   r7   r   r   r/   r   boolr   r
   LNr   r   r5   classmethodr   r   r   r:   r   r   r   r   r      s   
 "r   N)dataclassesr   r   typingr   r   r   r   r   black.nodesr	   black.outputr
   black.parsingr   blib2to3.pgen2r   blib2to3.pytreer   r   r   rA   r   r   r   r   r   r   <module>   s    