
    Mh                         d dl mZ d dlmZmZ  G d de          Z G d de          Z G d d	          Z G d
 d          Z	 G d d          Z
 G d de          ZdS )    )contextmanager)DictListc                       e Zd Zd ZdS )_NormalizerMetac                 \    t                               | |||          }i |_        i |_        |S N)type__new__rule_value_classesrule_type_classes)clsnamebasesdctnew_clss        P/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/parso/normalizer.pyr   z_NormalizerMeta.__new__   s.    ,,sD%55%'"$&!    N)__name__
__module____qualname__r    r   r   r   r      s#            r   r   c                       e Zd ZU i Zeeee         f         ed<   i Z	eeee         f         ed<   d Z
d Zd Zd Zed             Zd Zd	 Zd
 Zd Zd Zedddddd            ZdS )
Normalizer_rule_type_instances_rule_value_instancesc                     || _         || _        g | _        |                     d          | _        |                     d          | _        d S )Nr   r   )grammar_configissues_instantiate_rulesr   r   )selfr   configs      r   __init__zNormalizer.__init__   sK    $($;$;<O$P$P!%)%<%<=Q%R%R"""r   c                     i }t                                                     D ]d}t          ||i           }|                                D ]<\  }} fd|D             }|                    |g                               |           =e|S )Nc                 &    g | ]} |          S r   r   ).0rule_clsr"   s     r   
<listcomp>z1Normalizer._instantiate_rules.<locals>.<listcomp>   s!    CCC(xx~~CCCr   )r
   mrogetattritems
setdefaultextend)r"   attrr   base	rules_maptype_rule_classesnews   `       r   r!   zNormalizer._instantiate_rules   s    JJNN$$ 	6 	6DdB//I'0'8'8 6 6#|CCCClCCCub))0055556 
r   c                     |                      |           |                     |          }|                                  |S r	   )
initializevisitfinalize)r"   nodevalues      r   walkzNormalizer.walk"   s7    

4  r   c                      	 |j         }                     |          5  d                     fd|D                       cd d d            S # 1 swxY w Y   d S # t          $ r                      |          cY S w xY w)N c              3   B   K   | ]}                     |          V  d S r	   )r7   )r'   childr"   s     r   	<genexpr>z#Normalizer.visit.<locals>.<genexpr>/   s/      GGUtzz%00GGGGGGr   )children
visit_nodejoinAttributeError
visit_leaf)r"   r9   rA   s   `  r   r7   zNormalizer.visit(   s    	H}H && H HwwGGGGhGGGGGH H H H H H H H H H H H H H H H H H  	) 	) 	)??4(((((	)s"   A !AAAA<;A<c              #   <   K   |                      |           d V  d S r	   )_check_type_rulesr"   r9   s     r   rB   zNormalizer.visit_node1   s'      t$$$r   c                 v    | j                             |j        g           D ]}|                    |           d S r	   )r   getr
   	feed_node)r"   r9   rules      r   rG   zNormalizer._check_type_rules6   sE    -11$)R@@ 	! 	!DNN4    	! 	!r   c                     |                      |           | j                            |j        g           D ]}|                    |           |j        |j        z   S r	   )rG   r   rJ   r:   rK   prefix)r"   leafrL   s      r   rE   zNormalizer.visit_leaf:   s^    t$$$.224:rBB 	! 	!DNN4    {TZ''r   c                     d S r	   r   rH   s     r   r6   zNormalizer.initializeB       r   c                     d S r	   r   r"   s    r   r8   zNormalizer.finalizeE   rQ   r   c                 n    t          |||          }|| j        vr| j                            |           dS )NT)Issuer    append)r"   r9   codemessageissues        r   	add_issuezNormalizer.add_issueH   s;    dD'**##Ku%%%tr   Nr   )r:   valuesr
   typesc                     t                    t                    |                    |           |                    |           sst          d           fd}|S )z
        Use it as a class decorator::

            normalizer = Normalizer('grammar', 'config')
            @normalizer.register_rule(value='foo')
            class MyRule(Rule):
                error_code = 42
        Nz%You must register at least something.c                     D ]0}j                             |g                               |            1D ]0}j                            |g                               |            1| S r	   )r   r-   rV   r   )r(   vtr   r\   r[   s      r   	decoratorz+Normalizer.register_rule.<locals>.decoratorb   s~     J J&11!R88??IIII I I%00B77>>xHHHHOr   )listrV   
ValueError)r   r:   r[   r
   r\   ra   s   ` ` ` r   register_rulezNormalizer.register_ruleN   s     fUMM%   LL 	Fe 	FDEEE	 	 	 	 	 	 	 r   )r   r   r   r   r   strr   r
   __annotations__r   r$   r!   r;   r7   r   rB   rG   rE   r6   r8   rZ   classmethodrd   r   r   r   r   r      s(        24$sDJ/444354T$Z0555S S S    H H H   ^! ! !( ( (       $($b     [  r   r   )	metaclassc                       e Zd ZeZd ZdS )NormalizerConfigc                 @    | j         d S |                      ||           S r	   )normalizer_class)r"   r   s     r   create_normalizerz"NormalizerConfig.create_normalizero   s&     (4$$Wd333r   N)r   r   r   r   rl   rm   r   r   r   rj   rj   l   s)        !4 4 4 4 4r   rj   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )rU   c                 X    || _         	 || _        	 |j        | _        	 |j        | _        d S r	   )rW   rX   	start_posend_posr"   r9   rW   rX   s       r   r$   zIssue.__init__w   s;    		 	 	 |r   c                 B    | j         |j         k    o| j        |j        k    S r	   )rp   rW   r"   others     r   __eq__zIssue.__eq__   s    ~0LTY%*5LLr   c                 .    |                      |           S r	   )rv   rt   s     r   __ne__zIssue.__ne__   s    ;;u%%%%r   c                 8    t          | j        | j        f          S r	   )hashrW   rp   rS   s    r   __hash__zIssue.__hash__   s    TY/000r   c                 2    d| j         j        d| j        dS )N<z: >)	__class__r   rW   rS   s    r   __repr__zIssue.__repr__   s      !^444diii@@r   N)r   r   r   r$   rv   rx   r{   r   r   r   r   rU   rU   v   sg        $ $ $ M M M& & &1 1 1A A A A Ar   rU   c                   J    e Zd ZU eed<   eed<   d Zd Zd Zd Z	d
dZ
d	 ZdS )RulerW   rX   c                     || _         d S r	   )_normalizer)r"   
normalizers     r   r$   zRule.__init__   s    %r   c                     t                      r	   )NotImplementedErrorrH   s     r   is_issuezRule.is_issue   s    !###r   c                     |S r	   r   rH   s     r   get_nodezRule.get_node   s    r   c                 :    || j         }|t          d          |S )Nz$The message on the class is not set.)rX   rc   )r"   rX   r9   s      r   _get_messagezRule._get_message   s'    ?lG !GHHHr   Nc                     || j         }|t          d          |                     ||          }| j                            |||           d S )Nz'The error code on the class is not set.)rW   rc   r   r   rZ   rr   s       r   rZ   zRule.add_issue   sX    <9D| !JKKK##GT22""4w77777r   c                     |                      |          r,|                     |          }|                     |           d S d S r	   )r   r   rZ   )r"   r9   
issue_nodes      r   rK   zRule.feed_node   sI    == 	't,,JNN:&&&&&	' 	'r   )NN)r   r   r   intrf   re   r$   r   r   r   rZ   rK   r   r   r   r   r      s         
IIILLL& & &$ $ $    8 8 8 8' ' ' ' 'r   r   c                   .     e Zd Zd Z fdZ fdZ xZS )RefactoringNormalizerc                     || _         d S r	   )_node_to_str_map)r"   node_to_str_maps     r   r$   zRefactoringNormalizer.__init__   s     /r   c                     	 | j         |         S # t          $ r$ t                                          |          cY S w xY wr	   )r   KeyErrorsuperr7   )r"   r9   r   s     r   r7   zRefactoringNormalizer.visit   sM    	'(.. 	' 	' 	'77==&&&&&	'    +>>c                     	 | j         |         S # t          $ r$ t                                          |          cY S w xY wr	   )r   r   r   rE   )r"   rO   r   s     r   rE   z RefactoringNormalizer.visit_leaf   sO    	,(.. 	, 	, 	,77%%d+++++	,r   )r   r   r   r$   r7   rE   __classcell__)r   s   @r   r   r      s`        0 0 0' ' ' ' ', , , , , , , , ,r   r   N)
contextlibr   typingr   r   r
   r   r   rj   rU   r   r   r   r   r   <module>r      sG   % % % % % %            d   \ \ \ \ \? \ \ \ \~4 4 4 4 4 4 4 4A A A A A A A A<!' !' !' !' !' !' !' !'H, , , , ,J , , , , ,r   