
    h                         S SK Jr  S SKJrJr   " S S\5      r " S S\S9r " S S	5      r " S
 S5      r	 " S S5      r
 " S S\5      rg)    )contextmanager)DictListc                       \ rS rSrS rSrg)_NormalizerMeta   c                 N    [         R                  XX#5      n0 Ul        0 Ul        U$ N)type__new__rule_value_classesrule_type_classes)clsnamebasesdctnew_clss        cC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\parso/normalizer.pyr   _NormalizerMeta.__new__   s'    ,,s%5%'"$&!     N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r      s    r   r   c                       \ rS rSr% 0 r\\\\   4   \	S'   0 r
\\\\   4   \	S'   S rS rS rS r\S 5       rS	 rS
 rS rS rS r\SSSSS.S j5       rSrg)
Normalizer   _rule_type_instances_rule_value_instancesc                     Xl         X l        / U l        U R                  S5      U l        U R                  S5      U l        g )Nr   r   )grammar_configissues_instantiate_rulesr    r!   )selfr#   configs      r   __init__Normalizer.__init__   s;    $($;$;<O$P!%)%<%<=Q%R"r   c                    0 n[        U 5      R                  5        H`  n[        X10 5      nUR                  5        H=  u  pVU Vs/ s H
  ow" U 5      PM     nnUR	                  U/ 5      R                  U5        M?     Mb     U$ s  snf r
   )r   mrogetattritems
setdefaultextend)	r'   attrr   base	rules_maptype_rule_classesrule_clsnews	            r   r&   Normalizer._instantiate_rules   sz    JNN$DB/I'0'8#6BCl(x~lCub)005 (9 %
 
 Ds   Bc                 j    U R                  U5        U R                  U5      nU R                  5         U$ r
   )
initializevisitfinalize)r'   nodevalues      r   walkNormalizer.walk"   s*    

4 r   c                    ^   UR                   nT R                  U5         SR                  U 4S jU 5       5      sS S S 5        $ ! , (       d  f       g = f! [         a    T R	                  U5      s $ f = f)N c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr
   )r;   ).0childr'   s     r   	<genexpr>#Normalizer.visit.<locals>.<genexpr>/   s     GhUtzz%00hs   !)children
visit_nodejoinAttributeError
visit_leaf)r'   r=   rH   s   `  r   r;   Normalizer.visit(   s]    	H}}H &wwGhGG '&&  	)??4((	)s   A A
AA43A4c              #   6   #    U R                  U5        S v   g 7fr
   )_check_type_rulesr'   r=   s     r   rI   Normalizer.visit_node1   s     t$s   c                     U R                   R                  UR                  / 5       H  nUR                  U5        M     g r
   )r    getr   	feed_node)r'   r=   rules      r   rO   Normalizer._check_type_rules6   s0    --11$))R@DNN4  Ar   c                     U R                  U5        U R                  R                  UR                  / 5       H  nUR	                  U5        M     UR
                  UR                  -   $ r
   )rO   r!   rS   r>   rT   prefix)r'   leafrU   s      r   rL   Normalizer.visit_leaf:   sS    t$..224::rBDNN4  C {{TZZ''r   c                     g r
   r   rP   s     r   r:   Normalizer.initializeB       r   c                     g r
   r   r'   s    r   r<   Normalizer.finalizeE   r]   r   c                 p    [        XU5      nX@R                  ;  a  U R                  R                  U5        g)NT)Issuer%   append)r'   r=   codemessageissues        r   	add_issueNormalizer.add_issueH   s-    d'*#KKu%r   Nr   )r>   valuesr   typesc                   ^ ^^ [        T5      m[        T5      mUb  TR                  U5        Ub  TR                  U5        T(       d  T(       d  [        S5      eU UU4S jnU$ )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                    > T H.  nTR                   R                  U/ 5      R                  U 5        M0     T H.  nTR                  R                  U/ 5      R                  U 5        M0     U $ r
   )r   r/   rc   r   )r6   vtr   rj   ri   s      r   	decorator+Normalizer.register_rule.<locals>.decoratorb   s^    &&11!R8??I %%00B7>>xH Or   )listrc   
ValueError)r   r>   ri   r   rj   ro   s   ` ` ` r   register_ruleNormalizer.register_ruleN   sY     fUMM% LLeDEE	 r   )r$   r    r!   r#   r%   )r   r   r   r   r    r   strr   r   __annotations__r!   r)   r&   r?   r;   r   rI   rO   rL   r:   r<   rg   classmethodrs   r   r   r   r   r   r      s    24$sDJ/4354T$Z05SH  !( $($b  r   r   )	metaclassc                       \ rS rSr\rS rSrg)NormalizerConfigl   c                 @    U R                   c  g U R                  X5      $ r
   )normalizer_class)r'   r#   s     r   create_normalizer"NormalizerConfig.create_normalizero   s"      ($$W33r   r   N)r   r   r   r   r   r}   r~   r   r   r   r   rz   rz   l   s    !4r   rz   c                   2    \ rS rSrS rS rS rS rS rSr	g)	rb   v   c                 f    X l          X0l         UR                  U l         UR                  U l        g r
   )rd   re   	start_posend_posr'   r=   rd   re   s       r   r)   Issue.__init__w   s7    		 	 	 ||r   c                 t    U R                   UR                   :H  =(       a    U R                  UR                  :H  $ r
   )r   rd   r'   others     r   __eq__Issue.__eq__   s'    ~~0LTYY%**5LLr   c                 .    U R                  U5      (       + $ r
   )r   r   s     r   __ne__Issue.__ne__   s    ;;u%%%r   c                 D    [        U R                  U R                  45      $ r
   )hashrd   r   r_   s    r   __hash__Issue.__hash__   s    TYY/00r   c                 T    SU R                   R                  < SU R                  < S3$ )N<z: >)	__class__r   rd   r_   s    r   __repr__Issue.__repr__   s    !^^44dii@@r   )rd   r   re   r   N)
r   r   r   r   r)   r   r   r   r   r   r   r   r   rb   rb   v   s    $ M&1Ar   rb   c                   R    \ rS rSr% \\S'   \\S'   S rS rS r	S r
SS	 jrS
 rSrg)Rule   rd   re   c                     Xl         g r
   _normalizer)r'   
normalizers     r   r)   Rule.__init__   s    %r   c                     [        5       er
   )NotImplementedErrorrP   s     r   is_issueRule.is_issue   s    !##r   c                     U$ r
   r   rP   s     r   get_nodeRule.get_node   s    r   c                 @    Uc  U R                   nUc  [        S5      eU$ )Nz$The message on the class is not set.)re   rr   )r'   re   r=   s      r   _get_messageRule._get_message   s&    ?llG !GHHr   Nc                     Uc  U R                   nUc  [        S5      eU R                  X15      nU R                  R	                  XU5        g )Nz'The error code on the class is not set.)rd   rr   r   r   rg   r   s       r   rg   Rule.add_issue   sG    <99D| !JKK##G2""4w7r   c                 v    U R                  U5      (       a#  U R                  U5      nU R                  U5        g g r
   )r   r   rg   )r'   r=   
issue_nodes      r   rT   Rule.feed_node   s0    ==t,JNN:& r   r   )NN)r   r   r   r   intrv   ru   r)   r   r   r   rg   rT   r   r   r   r   r   r      s*    
IL&$8'r   r   c                   :   ^  \ rS rSrS rU 4S jrU 4S jrSrU =r$ )RefactoringNormalizer   c                     Xl         g r
   _node_to_str_map)r'   node_to_str_maps     r   r)   RefactoringNormalizer.__init__   s     /r   c                 b   >  U R                   U   $ ! [         a    [        TU ]  U5      s $ f = fr
   )r   KeyErrorsuperr;   )r'   r=   r   s     r   r;   RefactoringNormalizer.visit   s7    	'((.. 	'7=&&	'    ..c                 b   >  U R                   U   $ ! [         a    [        TU ]  U5      s $ f = fr
   )r   r   r   rL   )r'   rY   r   s     r   rL    RefactoringNormalizer.visit_leaf   s8    	,((.. 	,7%d++	,r   r   )	r   r   r   r   r)   r;   rL   r   __classcell__)r   s   @r   r   r      s    0', ,r   r   N)
contextlibr   typingr   r   r   r   r   rz   rb   r   r   r   r   r   <module>r      sS    % d \? \~4 4A A<!' !'H,J ,r   