
    f                         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y)    )contextmanager)DictListc                       e Zd Zd Zy)_NormalizerMetac                 R    t         j                  | |||      }i |_        i |_        |S N)type__new__rule_value_classesrule_type_classes)clsnamebasesdctnew_clss        K/var/www/cvtools/html/venv/lib/python3.12/site-packages/parso/normalizer.pyr   z_NormalizerMeta.__new__   s+    ,,sD%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y)
Normalizer_rule_type_instances_rule_value_instancesc                     || _         || _        g | _        | j                  d      | _        | j                  d      | _        y )Nr   r   )grammar_configissues_instantiate_rulesr   r   )selfr   configs      r   __init__zNormalizer.__init__   s?    $($;$;<O$P!%)%<%<=Q%R"r   c                    i }t        |       j                         D ]]  }t        ||i       }|j                         D ];  \  }}|D cg c]
  } ||        }}|j	                  |g       j                  |       = _ |S c c}w r	   )r
   mrogetattritems
setdefaultextend)	r"   attrr   base	rules_maptype_rule_classesrule_clsnews	            r   r!   zNormalizer._instantiate_rules   s    JNN$ 	6DdB/I'0'8 6#|6BC(x~CCub)0056	6
 
 Ds   A>c                 j    | j                  |       | j                  |      }| j                          |S r	   )
initializevisitfinalize)r"   nodevalues      r   walkzNormalizer.walk"   s*    

4 r   c                      	 |j                   } j                  |      5  dj                   fd|D              cd d d        S # 1 sw Y   y xY w# t        $ r  j	                  |      cY S w xY w)N c              3   @   K   | ]  }j                  |        y wr	   )r4   ).0childr"   s     r   	<genexpr>z#Normalizer.visit.<locals>.<genexpr>/   s     GUtzz%0Gs   )children
visit_nodejoinAttributeError
visit_leaf)r"   r6   r?   s   `  r   r4   zNormalizer.visit(   sj    	H}}H & HwwGhGGH H H  	)??4((	)s   A AAA-,A-c              #   6   K   | j                  |       d  y wr	   )_check_type_rulesr"   r6   s     r   r@   zNormalizer.visit_node1   s     t$s   c                 |    | j                   j                  |j                  g       D ]  }|j                  |        y r	   )r   getr
   	feed_node)r"   r6   rules      r   rE   zNormalizer._check_type_rules6   s4    --11$))R@ 	!DNN4 	!r   c                     | j                  |       | j                  j                  |j                  g       D ]  }|j	                  |        |j
                  |j                  z   S r	   )rE   r   rH   r7   rI   prefix)r"   leafrJ   s      r   rC   zNormalizer.visit_leaf:   sW    t$..224::rB 	!DNN4 	! {{TZZ''r   c                      y r	   r   rF   s     r   r3   zNormalizer.initializeB       r   c                      y r	   r   r"   s    r   r5   zNormalizer.finalizeE   rO   r   c                 p    t        |||      }|| j                  vr| j                  j                  |       y)NT)Issuer    append)r"   r6   codemessageissues        r   	add_issuezNormalizer.add_issueH   s1    dD'*#KKu%r   Nr   )r7   valuesr
   typesc                     t              t              |j                  |       |j                  |       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
        z%You must register at least something.c                     D ]-  }j                   j                  |g       j                  |        / D ]-  }j                  j                  |g       j                  |        / | S r	   )r   r)   rT   r   )r0   vtr   rZ   rY   s      r   	decoratorz+Normalizer.register_rule.<locals>.decoratorb   sl     J&&11!R8??IJ I%%00B7>>xHIOr   )listrT   
ValueError)r   r7   rY   r
   rZ   r_   s   ` ` ` r   register_rulezNormalizer.register_ruleN   sY     fUMM% LLeDEE	 r   )r   r   r   r   r   strr   r
   __annotations__r   r$   r!   r8   r4   r   r@   rE   rC   r3   r5   rX   classmethodrb   r   r   r   r   r      s    24$sDJ/4354T$Z05SH  !( $($b  r   r   )	metaclassc                       e Zd ZeZd Zy)NormalizerConfigc                 @    | j                   y | j                  ||       S r	   )normalizer_class)r"   r   s     r   create_normalizerz"NormalizerConfig.create_normalizero   s$      ($$Wd33r   N)r   r   r   r   rj   rk   r   r   r   rh   rh   l   s    !4r   rh   c                   *    e Zd Zd Zd Zd Zd Zd Zy)rS   c                 j    || _         	 || _        	 |j                  | _        	 |j                  | _        y r	   )rU   rV   	start_posend_posr"   r6   rU   rV   s       r   r$   zIssue.__init__w   s;    		 	 	 ||r   c                 j    | j                   |j                   k(  xr | j                  |j                  k(  S r	   )rn   rU   r"   others     r   __eq__zIssue.__eq__   s'    ~~0LTYY%**5LLr   c                 &    | j                  |       S r	   )rt   rr   s     r   __ne__zIssue.__ne__   s    ;;u%%%r   c                 D    t        | j                  | j                  f      S r	   )hashrU   rn   rQ   s    r   __hash__zIssue.__hash__   s    TYY/00r   c                 P    d| j                   j                  d| j                  dS )N<z: >)	__class__r   rU   rQ   s    r   __repr__zIssue.__repr__   s    !^^44dii@@r   N)r   r   r   r$   rt   rv   ry   r~   r   r   r   rS   rS   v   s    $ M&1Ar   rS   c                   H    e Zd ZU eed<   eed<   d Zd Zd Zd Z	d
dZ
d	 Zy)RulerU   rV   c                     || _         y r	   )_normalizer)r"   
normalizers     r   r$   zRule.__init__   s
    %r   c                     t               r	   )NotImplementedErrorrF   s     r   is_issuezRule.is_issue   s    !##r   c                     |S r	   r   rF   s     r   get_nodezRule.get_node   s    r   c                 <    || j                   }|t        d      |S )Nz$The message on the class is not set.)rV   ra   )r"   rV   r6   s      r   _get_messagezRule._get_message   s&    ?llG !GHHr   Nc                     || j                   }|t        d      | j                  ||      }| j                  j	                  |||       y )Nz'The error code on the class is not set.)rU   ra   r   r   rX   rp   s       r   rX   zRule.add_issue   sK    <99D| !JKK##GT2""4w7r   c                 l    | j                  |      r#| j                  |      }| j                  |       y y r	   )r   r   rX   )r"   r6   
issue_nodes      r   rI   zRule.feed_node   s-    ==t,JNN:& r   )NN)r   r   r   intrd   rc   r$   r   r   r   rX   rI   r   r   r   r   r      s*    
IL&$8'r   r   c                   .     e Zd Zd Z fdZ fdZ xZS )RefactoringNormalizerc                     || _         y 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superr4   )r"   r6   r}   s     r   r4   zRefactoringNormalizer.visit   s7    	'((.. 	'7=&&	'    --c                 `    	 | j                   |   S # t        $ r t        |   |      cY S w xY wr	   )r   r   r   rC   )r"   rM   r}   s     r   rC   z RefactoringNormalizer.visit_leaf   s8    	,((.. 	,7%d++	,r   )r   r   r   r$   r4   rC   __classcell__)r}   s   @r   r   r      s    0', ,r   r   N)
contextlibr   typingr   r   r
   r   r   rh   rS   r   r   r   r   r   <module>r      sS    % d \? \~4 4A A<!' !'H,J ,r   