+
    کh                         ^ RI Ht ^ RIHtHt  ! R R]4      t ! R R]R7      t ! R R	4      t ! R
 R4      t	 ! R R4      t
 ! R R]4      tR# )    )contextmanager)DictListc                   &   a  ] tR t^t o R tRtV tR# )_NormalizerMetac                N    \         P                  WW#4      p/ Vn        / Vn        V# N)type__new__rule_value_classesrule_type_classes)clsnamebasesdctnew_clss   &&&& 2/usr/lib/python3/dist-packages/parso/normalizer.pyr   _NormalizerMeta.__new__   s'    ,,s%5%'"$&!     N)__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell____classdict__s   @r   r   r      s      r   r   c            	          a  ] tR t^t o / t/ tR tR tR tR t	]
R 4       tR tR tR tR	 tR
 t]RRRRRRRR/R l4       tV 3R ltRtV tR# )
Normalizerc                    Wn         W n        . V n        V P                  R 4      V n        V P                  R4      V n        R# )r   r   N)grammar_configissues_instantiate_rules_rule_type_instances_rule_value_instances)selfr"   configs   &&&r   __init__Normalizer.__init__   s;    $($;$;<O$P!%)%<%<=Q%R"r   c                   / p\        V 4      P                  4        F_  p\        W1/ 4      pVP                  4        F<  w  rVV Uu. uF
  qw! V 4      NK  	  ppVP	                  V. 4      P                  V4       K>  	  Ka  	  V# u upi 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    V P                  V4       V P                  V4      pV P                  4        V# r	   )
initializevisitfinalize)r(   nodevalues   && r   walkNormalizer.walk"   s*    

4 r   c                  a   VP                   pS P                  V4      ;_uu_ 4        R P                  V 3R lV 4       4      uuRRR4       #   + '       g   i     R# ; i  \         d    S P	                  T4      u # i ; i) c              3   F   <"   T F  pSP                  V4      x  K  	  R # 5ir	   )r<   ).0childr(   s   & r   	<genexpr>#Normalizer.visit.<locals>.<genexpr>/   s     GhUtzz%00hs   !N)children
visit_nodejoinAttributeError
visit_leaf)r(   r>   rI   s   f& r   r<   Normalizer.visit(   sc    	H}}H &&wwGhGG '&&&  	)??4((	)s   A" AA	"B Bc              #  8   "   V P                  V4       R x  R # 5ir	   )_check_type_rulesr(   r>   s   &&r   rJ   Normalizer.visit_node1   s     t$s   c                    V P                   P                  VP                  . 4       F  pVP                  V4       K  	  R # r	   )r&   getr
   	feed_node)r(   r>   rules   && r   rP   Normalizer._check_type_rules6   s0    --11$))R@DNN4  Ar   c                    V P                  V4       V P                  P                  VP                  . 4       F  pVP	                  V4       K  	  VP
                  VP                  ,           # r	   )rP   r'   rT   r?   rU   prefix)r(   leafrV   s   && r   rM   Normalizer.visit_leaf:   sS    t$..224::rBDNN4  C {{TZZ''r   c                    R # r	   r   rQ   s   &&r   r;   Normalizer.initializeB       r   c                    R # r	   r   r(   s   &r   r=   Normalizer.finalizeE   r^   r   c                t    \        WV4      pW@P                  9  d   V P                  P                  V4       R # )T)Issuer$   append)r(   r>   codemessageissues   &&&& r   	add_issueNormalizer.add_issueH   s-    d'*#KKu%r   r?   Nvaluesr
   typesc                  a aa \        S4      o\        S4      oVe   SP                  V4       Ve   SP                  V4       S'       g   S'       g   \        R4      hV VV3R lpV# )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                    < S F.  pSP                   P                  V. 4      P                  V 4       K0  	  S F.  pSP                  P                  V. 4      P                  V 4       K0  	  V # r	   )r   r0   rd   r   )r7   vtr   rk   rj   s   &  r   	decorator+Normalizer.register_rule.<locals>.decoratorb   s^    &&11!R8??I %%00B7>>xH Or   )listrd   
ValueError)r   r?   rj   r
   rk   rp   s   f$d$d r   register_ruleNormalizer.register_ruleN   sY     fUMM% LLeDEE	 r   c                ~   < V ^8  d   Qh/ S[ S[S[S[,          3,          ;R&   S[ S[S[S[,          3,          ;R&   # )   r&   r'   )r   strr   r
   )formatr   s   "r   __annotate__Normalizer.__annotate__   s5     sDJ/4 T$Z05 r   )r#   r&   r'   r"   r$   r   )r   r   r   r   r&   r'   r*   r%   r@   r<   r   rJ   rP   rM   r;   r=   rh   classmethodrt   __annotate_func__r   r   r   s   @r   r    r       s     2435SH  !( D  $ b  E  r   r    )	metaclassc                   *   a  ] tR t^lt o ]tR tRtV tR# )NormalizerConfigc                D    V P                   f   R # V P                  W4      # 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   s   @r   r   r   l   s     !4 4r   r   c                   >   a  ] tR t^vt o R tR tR tR tR tRt	V t
R# )rc   c                h    W n          W0n         VP                  V n         VP                  V n        R # r	   )re   rf   	start_posend_posr(   r>   re   rf   s   &&&&r   r*   Issue.__init__w   s7    		 	 	 ||r   c                v    V P                   VP                   8H  ;'       d    V P                  VP                  8H  # r	   )r   re   r(   others   &&r   __eq__Issue.__eq__   s*    ~~0LLTYY%**5LLr   c                .    V P                  V4      '       * # r	   )r   r   s   &&r   __ne__Issue.__ne__   s    ;;u%%%r   c                D    \        V P                  V P                  34      # r	   )hashre   r   r`   s   &r   __hash__Issue.__hash__   s    TYY/00r   c                T    R V P                   P                  : RV P                  : R2# )<z: >)	__class__r   re   r`   s   &r   __repr__Issue.__repr__   s    !^^44dii@@r   )re   r   rf   r   N)r   r   r   r   r*   r   r   r   r   r   r   r   s   @r   rc   rc   v   s&     $ M&1A Ar   rc   c                   T   a  ] tR t^t o R tR tR tR tR
R ltR t	V 3R lt
R	tV tR# )Rulec                    Wn         R # r	   _normalizer)r(   
normalizers   &&r   r*   Rule.__init__   s    %r   c                    \        4       hr	   )NotImplementedErrorrQ   s   &&r   is_issueRule.is_issue   s    !##r   c                    V# r	   r   rQ   s   &&r   get_nodeRule.get_node   s    r   c                D    Vf   V P                   pVf   \        R4      hV# )Nz$The message on the class is not set.)rf   rs   )r(   rf   r>   s   &&&r   _get_messageRule._get_message   s&    ?llG !GHHr   Nc                    Vf   V P                   pVf   \        R4      hV P                  W14      pV P                  P	                  WV4       R # )Nz'The error code on the class is not set.)re   rs   r   r   rh   r   s   &&&&r   rh   Rule.add_issue   sG    <99D| !JKK##G2""4w7r   c                |    V P                  V4      '       d%   V P                  V4      pV P                  V4       R # R # r	   )r   r   rh   )r(   r>   
issue_nodes   && r   rU   Rule.feed_node   s0    ==t,JNN:& r   c                2   < V ^8  d   Qh/ S[ ;R&   S[;R&   # )rw   re   rf   )intrx   )ry   r   s   "r   rz   Rule.__annotate__   s     
I L r   r   )NN)r   r   r   r   r*   r   r   r   rh   rU   r}   r   r   r   s   @r   r   r      s*     &$8'=  r   r   c                   D   a a ] tR t^t oR tV 3R ltV 3R ltRtVtV ;t	# )RefactoringNormalizerc                    Wn         R # r	   _node_to_str_map)r(   node_to_str_maps   &&r   r*   RefactoringNormalizer.__init__   s     /r   c                l   <  V P                   V,          #   \         d    \        ST `  T4      u # i ; ir	   )r   KeyErrorsuperr<   )r(   r>   r   s   &&r   r<   RefactoringNormalizer.visit   s7    	'((.. 	'7=&&	'    33c                l   <  V P                   V,          #   \         d    \        ST `  T4      u # i ; ir	   )r   r   r   rM   )r(   rZ   r   s   &&r   rM    RefactoringNormalizer.visit_leaf   s8    	,((.. 	,7%d++	,r   r   )
r   r   r   r   r*   r<   rM   r   r   __classcell__)r   r   s   @@r   r   r      s     0', ,r   r   N)
contextlibr   typingr   r   r
   r   r    r   rc   r   r   r   r   r   <module>r      sS    % d \? \~4 4A A<!' !'H,J ,r   