+
    i  c                   s    ^ RI t ^ RI5 ^ RIHt ^ RIHtHt ^ RIHtH	t	H
t
 R]! ] P                  P                  ^,           4      ,           t]
! ]4       ! R R4      4       tRtRt. ]O]O5t ! R	 R
]4      tR# )    N)*)NodeVisitor)contextmanagernullcontext)IntEnumauto_simple_enumZ1ec                   s*  a  ] tR t^t o Rt]! 4       t]! 4       t]! 4       t]! 4       t	]! 4       t
]! 4       t]! 4       t]! 4       t]! 4       t]t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       tR tRtV tR# )_Precedencez5Precedence table that originated from python grammar.c                sZ     V P                  V ^,           4      #   \         d    T u # i ; i)   )	__class__
ValueErrorself   &%/usr/lib64/python3.14/_ast_unparse.pynextZ_Precedence.next&   s.    	>>$(++ 	K	s    ** N)__name__
__module____qualname____firstlineno____doc__r   
NAMED_EXPRTUPLEYIELDTESTORANDNOTCMPEXPRBORBXORBANDSHIFTARITHTERMFACTORPOWERAWAITATOMr   __static_attributes____classdictcell__)__classdict__s   @r   r   r      s     ?JFEFE6D	B
&C
&C
&C6D
C6D6DFEFE6DVFFEFE6D     r   c                   s  a a ] tR t^1t oRtR tR tR tR tR t	RRR/R	 llt
R
 t]RR l4       t]RR/R l4       t]R 4       tR tR tR tR tR tR tV 3R ltR tR tR tR tR tR tR tR tR tR  t R! t!R" t"R# t#R$ t$R% t%R& t&R' t'R( t(R) t)R* t*R+ t+R, t,R- t-R. t.R/ t/R0 t0R1 t1R2 t2R3 t3R4 t4R5 t5R6 t6R7 t7R8 t8R9 t9R: t:R; t;R< t<R= t=R> t>R? t?R@ t@RA tARB tBRC]CRDRE/RF ltDRC]C/RG ltERH tFRI tGRJ tHRK tIRRL ltJRM tKRRN ltLRO tMRP tNRQ tORR tPRS tQRT tRRU tSRV tTRW tURX tVRY tWRZ tXR[ tYR\ tZR] t[R^ t\R_R`RaRbRcRdReRf/t]Rb]^P                  R`]^P                  Rd]^P                  Rf]^P                  /taRg tbRhRdRiRfRjRkRlRmRnRoRpRqRrRsRtRuRvRwRxRyRzR{R|R}R~R/tcRd]^P                  Rf]^P                  Rk]^P                  Rm]^P                  Ro]^P                  Rq]^P                  Rs]^P                  Ru]^P                  Rw]^P                  Ry]^P                  R{]^P                  R}]^P                  R]^P                  /tk]l! R4      tmR tnRRRRRRRRRRRRRRRRRRRR/
toR tpRRRR/tqR]^P                  R]^P                  /ttR tuR tvR twR txR tyR tzR t{R t|R t}R t~R tR tR tR tR tR tR tR tR tR tR tR tR tRtVtV ;t# )UnparserzMethods in this class recursively traverse an AST and
output source code for the abstract syntax; original formatting
is disregarded.c                sZ    . V n         / V n        / V n        ^ V n        RV n        RV n        R# )r    FN)_source_precedences_type_ignores_indent_in_try_star_in_interactiver   r   r   __init__ZUnparser.__init__6   s0    !$r-   c                s    \        V4      p V! \        V4      4       V F  pV! 4        V! V4       K  	  R#   \         d     R# i ; i)z7Call f on each item in seq, calling inter() in between.N)iterr   ZStopIteration)r   ZinterfZseqZxs   &&&& r   
interleaveZUnparser.interleave>   sG    3i	d3iL !   		s   8 AAc                s   a  \        V4      ^8X  d#   V! V^ ,          4       S P                  R4       R# S P                  V 3R lW4       R# )zTraverse and separate the given *items* with a comma and append it to
the buffer. If *items* is a single item sequence, a trailing comma
will be added.Z,c                  &   < S P                  R 4      # , writer      r   <lambda>Z%Unparser.items_view.<locals>.<lambda>R       DJJt$4r-   N)lenr=   r8   )r   Z	traverseritemss   f&&r   
items_viewZUnparser.items_viewJ   s6     u:?eAhJJsOOO4iGr-   c                P    V P                   '       d   V P                  R4       R# R# )z8Adds a newline if it isn't the start of generated source
Nr/   r=   r   r   r   maybe_newlineZUnparser.maybe_newlineT       <<<JJt r-   c                rD   )z?Adds a "; " delimiter if it isn't the start of generated sourcez; NrF   r   r   r   maybe_semicolonZUnparser.maybe_semicolonY   rH   r-   allow_semicolonTc               s   V P                   '       d>   V P                  '       g,   V'       d$   V P                  4        V P                  V4       R# V P	                  4        V P                  RV P                  ,          V,           4       R# )zIndent a piece of text and append it, according to the current
indentation level, or only delineate with semicolon if applicablez    N)r4   r2   rI   r=   rG   )r   textrJ   s   &&$r   fillZUnparser.fill^   sX       "JJt JJv,t34r-   c                s<    V P                   P                  V4       R# )zAdd new source partsN)r/   Zextend)r   rK   s   &*r   r=   ZUnparser.writeh   s    D!r-   Nc              #  sR   "   Vf   . pV P                   pWn         Vx  W n         R # 5iN)r/   )r   bufferZoriginal_source   && r   bufferedZUnparser.bufferedl   s'     >F,,&s   %'extrac             #  s   "   V P                  R4       V'       d   V P                  V4       V ;P                  ^,          un        Rx  V ;P                  ^,          un        R# 5i)zA context manager for preparing the source for blocks. It adds
the character':', increases the indentation on enter and decreases
the indentation on exit. If *extra* is given, it will be directly
appended after the colon character.
:N)r=   r2   )r   rQ   s   &$r   blockZUnparser.blockv   s@      	

3JJus   A#A%c              #  sZ   "   V P                  V4       Rx  V P                  V4       R# 5i)zA context manager for preparing the source for expressions. It adds
*start* to the buffer and enters, after exit it adds *end*.Nr<   )r   startend   &&&r   delimitZUnparser.delimit   s!     
 	

5

3s   )+c                sH    V'       d   V P                  W4      # \        4       # rM   )rW   r   )r   rT   rU   	conditions   &&&&r   
delimit_ifZUnparser.delimit_if   s    <<++= r-   c                sL    V P                  RRV P                  V4      V8  4      # )z,Shortcut to adding precedence related parens())rY   get_precedence)r   
precedencenoderV   r   require_parensZUnparser.require_parens   s%    sC)<)<T)BZ)OPPr-   c                sV    V P                   P                  V\        P                  4      # rM   )r0   getr   r   r   r^      &&r   r\   ZUnparser.get_precedence   s!      $$T;+;+;<<r-   c                s4    V F  pWP                   V&   K  	  R # rM   )r0   )r   r]   Znodesr^   s   &&* r   set_precedenceZUnparser.set_precedence   s    D&0d# r-   c                sl   \        V\        \        \        \        34      '       d   \        VP                  4      ^8  d   R# VP                  ^ ,          p\        V\        4      '       g   R# VP                  p\        V\        4      '       d%   \        VP                  \        4      '       d   V# R# R# )zIf a docstring node is found in the body of the *node* parameter,
return that docstring node, None otherwise.

Logic mirrored from ``_PyAST_GetDocString``.N)
isinstanceZAsyncFunctionDefZFunctionDefZClassDefZModulerA   bodyZExprvalueConstantstrra   rb   r   get_raw_docstringZUnparser.get_raw_docstring   s    
 #[(FC
 
^ayy|$%%zzdH%%*TZZ*E*EK +F%r-   c                s    V P                   P                  VP                  4      ;'       g    VP                  pVe   RV 2# R # )Nz	 # type: )r1   r`   linenotype_comment)r   r^   ZcommentrO   r   get_type_commentZUnparser.get_type_comment   sB    $$((5JJ9J9Jwi(( r-   c                s   < \        V\        4      '       d   V F  pV P                  V4       K  	  R # \        SV `  V4       R # rM   )rd   listtraverseZsupervisit)r   r^   itemr
   s   && r   rn   ZUnparser.traverse   s4    dD!!d#  GM$r-   c                sh    . V n         V P                  V4       RP                  V P                   4      # )zzOutputs a source code string that, if converted back to an ast
(using ast.parse) will generate an AST equivalent to *node* )r/   rn   joinra   rb   r   ro   ZUnparser.visit   s*     dwwt||$$r-   c                s    V P                  V4      ;p'       d6   V P                  V4       V P                  VP                  R ,          4       R# V P                  VP                  4       R# ):r	   NNN)ri   _write_docstringrn   re   )r   r^   Z	docstringrO   r   "_write_docstring_and_traverse_bodyZ+Unparser._write_docstring_and_traverse_body   sJ    //55I5!!),MM$))B-(MM$))$r-   c                s   VP                    Uu/ uF  pVP                  R VP                   2bK  	  upV n         V P	                  V4       V P                  P                  4        R# u upi   T P                  P                  4        i ; i)ignoreN)Ztype_ignoresrj   Ztagr1   rt   clear)r   r^   ru   rO   r   visit_ModuleZUnparser.visit_Module   s~     ++
+ MMVFJJ<00+
	'33D9$$&
 $$&s   #A(A- -B	c                s^    R V n          V P                  V4       RV n         R#   RT n         i ; i)TFN)r4   rt   ra   rb   r   visit_InteractiveZUnparser.visit_Interactive   s.    #	)33D9#(D 5D s   # 	,c                s"  a  S P                  R R4      ;_uu_ 4        S P                  V 3R lS P                  VP                  4       RRR4       S P	                  R4       S P                  VP
                  4       R#   + '       g   i     L>; i)rZ   r[   c                  r9   r:   r<   r   r>   r   r?   Z-Unparser.visit_FunctionType.<locals>.<lambda>       

4(r-   N -> )rW   r8   rn   Zargtypesr=   returnsra      f&r   visit_FunctionTypeZUnparser.visit_FunctionType   s[    \\#s##OO($-- $
 	

6dll# $#s   ,A>>B	c                s    V P                  4        V P                  \        P                  VP                  4       V P                  VP                  4       R # rM   )rL   rc   r   r   rf   rn   ra   rb   r   
visit_ExprZUnparser.visit_Expr   s5    		K--tzz:djj!r-   c                s   V P                  \        P                  V4      ;_uu_ 4        V P                  \        P                  VP
                  VP                  4       V P                  VP
                  4       V P                  R 4       V P                  VP                  4       RRR4       R#   + '       g   i     R# ; i)z := N)	r_   r   r   rc   r)   targetrf   rn   r=   ra   rb   r   visit_NamedExprZUnparser.visit_NamedExpr   sv      !7!7>> 0 0$++tzzJMM$++&JJvMM$**%	 ?>>>s   A=B00C	c                   a  S P                  R 4       S P                  V 3R lS P                  VP                  4       R# )zimport c                  r9   r:   r<   r   r>   r   r?   Z'Unparser.visit_Import.<locals>.<lambda>       

4 0r-   N)rL   r8   rn   namesra   r|   r   visit_ImportZUnparser.visit_Import   s(    		)0$--Lr-   c                sT  a  S P                  R 4       S P                  RVP                  ;'       g    ^ ,          4       VP                  '       d   S P                  VP                  4       S P                  R4       S P	                  V 3R lS P
                  VP                  4       R# )zfrom .z import c                  r9   r:   r<   r   r>   r   r?   Z+Unparser.visit_ImportFrom.<locals>.<lambda>   r   r-   N)rL   r=   ZlevelZmoduler8   rn   r   ra   r|   r   visit_ImportFromZUnparser.visit_ImportFrom   sh    		'

3$**//*+;;;JJt{{#

:0$--Lr-   c                s^   V P                  4        VP                   FE  pV P                  \        P                  V4       V P                  V4       V P                  R 4       KG  	  V P                  VP                  4       V P                  V4      ;p'       d   V P                  V4       R# R# ) = N)	rL   targetsrc   r   r   rn   r=   rf   rl   )r   r^   r   rk      &&  r   visit_AssignZUnparser.visit_Assign   s    		llF 1 16:MM&!JJu # 	djj!0066<6JJ|$ 7r-   c                s.   V P                  4        V P                  VP                  4       V P                  R V P                  VP
                  P                  P                  ,          ,           R,           4       V P                  VP                  4       R# ) z= N)	rL   rn   r   r=   binopopr
   r   rf   ra   rb   r   visit_AugAssignZUnparser.visit_AugAssign  sZ    		dkk"

3DGG$5$5$>$>??$FGdjj!r-   c                s   V P                  4        T P                  R RVP                  '       * ;'       d    \        VP                  \
        4      4      ;_uu_ 4        V P                  VP                  4       RRR4       V P                  R4       V P                  VP                  4       VP                  '       d/   V P                  R4       V P                  VP                  4       R# R#   + '       g   i     L~; i)rZ   r[   N: r   )
rL   rY   Zsimplerd   r   ZNamern   r=   
annotationrf   ra   rb   r   visit_AnnAssignZUnparser.visit_AnnAssign  s    		__S#4;;'X'X:dkkSW;XYYMM$++& Z

4doo&:::JJuMM$**% 	 ZYs   C//C?	c                s    V P                  R 4       VP                  '       d/   V P                  R4       V P                  VP                  4       R# R# )Zreturnr   N)rL   rf   r=   rn   ra   rb   r   visit_ReturnZUnparser.visit_Return  s7    		(:::JJsOMM$**% r-   c                (    V P                  R 4       R# )ZpassNrL   ra   rb   r   
visit_PassZUnparser.visit_Pass  s    		&r-   c                r   )ZbreakNr   ra   rb   r   visit_BreakZUnparser.visit_Break   s    		'r-   c                r   )ZcontinueNr   ra   rb   r   visit_ContinueZUnparser.visit_Continue#  s    		*r-   c                r   )zdel c                  r9   r:   r<   r   r>   r   r?   Z'Unparser.visit_Delete.<locals>.<lambda>(  r   r-   N)rL   r8   rn   r   ra   r|   r   visit_DeleteZUnparser.visit_Delete&  s(    		&0$--Nr-   c                s    V P                  R 4       V P                  VP                  4       VP                  '       d/   V P	                  R4       V P                  VP                  4       R# R# )zassert r;   N)rL   rn   testZmsgr=   ra   rb   r   visit_AssertZUnparser.visit_Assert*  sH    		)dii 888JJtMM$((# r-   c                r   )zglobal c                  r9   r:   r<   r   r>   r   r?   Z'Unparser.visit_Global.<locals>.<lambda>3  r   r-   NrL   r8   r=   r   ra   r|   r   visit_GlobalZUnparser.visit_Global1  s(    		)0$**djjIr-   c                r   )z	nonlocal c                  r9   r:   r<   r   r>   r   r?   Z)Unparser.visit_Nonlocal.<locals>.<lambda>7  r   r-   Nr   ra   r|   r   visit_NonlocalZUnparser.visit_Nonlocal5  s(    		+0$**djjIr-   c                   V P                  \        P                  V4      ;_uu_ 4        V P                  R 4       VP                  '       dW   V P                  R4       V P                  \        P                  VP                  4       V P                  VP                  4       RRR4       R#   + '       g   i     R# ; i)Zawaitr   N)r_   r   r(   r=   rf   rc   r)   rn   ra   rb   r   visit_AwaitZUnparser.visit_Await9  t      !2!2D99JJwzzz

3##K$4$4djjAdjj) :999   A:B--B>	c                r   )Zyieldr   N)r_   r   r   r=   rf   rc   r)   rn   ra   rb   r   visit_YieldZUnparser.visit_YieldA  r   r   c                sv   V P                  \        P                  V4      ;_uu_ 4        V P                  R 4       VP                  '       g   \        R4      hV P                  \        P                  VP                  4       V P                  VP                  4       RRR4       R#   + '       g   i     R# ; i)zyield from z-Node can't be used without a value attribute.N)	r_   r   r   r=   rf   r   rc   r)   rn   ra   rb   r   visit_YieldFromZUnparser.visit_YieldFromI  su      !2!2D99JJ}%::: !PQQ 0 0$**=MM$**% :999s   A4B''B8	c                sb   V P                  R 4       VP                  '       g    VP                  '       d   \        R4      hR# V P	                  R4       V P                  VP                  4       VP                  '       d/   V P	                  R4       V P                  VP                  4       R# R# )Zraisez*Node can't use cause without an exception.Nr   z from )rL   ZexcZcauser   r=   rn   ra   rb   r   visit_RaiseZUnparser.visit_RaiseQ  st    		'xxxzzz #MOO

3dhh:::JJx MM$**% r-   c                s   V P                  R RR7       V P                  4       ;_uu_ 4        V P                  VP                  4       RRR4       VP                   F  pV P                  V4       K  	  VP
                  '       dP   V P                  RRR7       V P                  4       ;_uu_ 4        V P                  VP
                  4       RRR4       VP                  '       dR   V P                  RRR7       V P                  4       ;_uu_ 4        V P                  VP                  4       RRR4       R# R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)ZtryFrJ   NelseZfinally)rL   rS   rn   re   ZhandlersorelseZ	finalbody)r   r^   ZexrO   r   do_visit_tryZUnparser.do_visit_try]  s    		%	/ZZ\\MM$))$ --BMM"  ;;;IIfeI4dkk* >>>IIiI7dnn-   \  s#   D:1EE :E
	E	 E1	c                r    V P                   p R V n         V P                  V4       W n         R#   Y n         i ; i)FNr3   r   r   r^   Zprev_in_try_starrO   r   	visit_TryZUnparser.visit_Tryl  s7    ,,	1 %Dd# 0 0   . 6c                r   )TNr   r   rO   r   visit_TryStarZUnparser.visit_TryStart  s7    ,,	1 $Dd# 0 0r   c                s   T P                  V P                  '       d   R MRRR7       VP                  '       d-   V P                  R4       V P	                  VP                  4       VP
                  '       d-   V P                  R4       V P                  VP
                  4       V P                  4       ;_uu_ 4        V P	                  VP                  4       RRR4       R#   + '       g   i     R# ; i)zexcept*ZexceptFr   r    as N)rL   r3   typer=   rn   namerS   re   ra   rb   r   visit_ExceptHandlerZUnparser.visit_ExceptHandler|  s    		t000)hPU	V999JJsOMM$))$999JJvJJtyy!ZZ\\MM$))$ \\\s   <C""C3	c                sr   V P                  4        VP                   F'  pV P                  R RR7       V P                  V4       K)  	  V P                  RVP                  ,           RR7       \        VR4      '       d   V P                  VP                  4       T P                  RRVP                  ;'       g    VP                  R7      ;_uu_ 4        RpVP                   F0  pV'       d   V P                  R4       MR	pV P                  V4       K2  	  VP                   F0  pV'       d   V P                  R4       MR	pV P                  V4       K2  	  R
R
R
4       V P                  4       ;_uu_ 4        V P                  V4       R
R
R
4       R
#   + '       g   i     LD; i  + '       g   i     R
# ; i)@Fr   zclass type_paramsrZ   r[   )rX   r;   TN)rG   decorator_listrL   rn   r   hasattr_type_params_helperr   rY   Zbaseskeywordsr=   rS   rt   )r   r^   decocommaes   &&   r   visit_ClassDefZUnparser.visit_ClassDef  s:   ''DIIc5I1MM$ ( 			(TYY&	>4''$$T%5%56__S#4::3N3N_OOEZZJJt$ Ea    ]]JJt$ Ea  # P ZZ\\33D9 \ PO \\s   BF6F%F"	%F6	c                *    V P                  VR 4       R# )ZdefN_function_helperra   rb   r   visit_FunctionDefZUnparser.visit_FunctionDef  s    dE*r-   c                r   )z	async defNr   ra   rb   r   visit_AsyncFunctionDefZUnparser.visit_AsyncFunctionDef  s    dK0r-   c                s   V P                  4        VP                   F'  pV P                  R RR7       V P                  V4       K)  	  VR,           VP                  ,           pV P                  VRR7       \        VR4      '       d   V P                  VP                  4       V P                  RR4      ;_uu_ 4        V P                  VP                  4       RRR4       VP                  '       d-   V P                  R4       V P                  VP                  4       V P                  V P                  V4      R	7      ;_uu_ 4        V P                  V4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)
r   Fr   r   r   rZ   r[   Nrz   rQ   )rG   r   rL   rn   r   r   r   r   rW   argsr{   r=   rS   rl   rt   )r   r^   Zfill_suffixr   Zdef_strs   &&&  r   r   ZUnparser._function_helper  s   ''DIIc5I1MM$ ( #dii/		'5	14''$$T%5%56\\#s##MM$))$ $<<<JJvMM$,,'ZZd33D9Z::33D9 ;: $#
 ;::s   <E#E6#E3	6F	c                s   a  VeY   \        V4      ^ 8  dG   S P                  RR4      ;_uu_ 4        S P                  V 3R lS P                  V4       R R R 4       R # R # R #   + '       g   i     R # ; i)N[]c                  r9   r:   r<   r   r>   r   r?   Z.Unparser._type_params_helper.<locals>.<lambda>      

4(8r-   )rA   rW   r8   rn   )r   r   r|   r   r   ZUnparser._type_params_helper  sU    "s;'7!';c3'' 8$--U (' (<"'''s   "A  A1	c                s8   V P                  VP                  4       VP                  '       d-   V P                  R 4       V P                  VP                  4       VP                  '       d/   V P                  R4       V P                  VP                  4       R# R# )r   r   N)r=   r   Zboundrn   default_valuera   rb   r   visit_TypeVarZUnparser.visit_TypeVar  sf    

499:::JJtMM$**%JJuMM$,,- r-   c                    V P                  R VP                  ,           4       VP                  '       d/   V P                  R4       V P                  VP                  4       R# R# )r   r   Nr=   r   r   rn   ra   rb   r   visit_TypeVarTupleZUnparser.visit_TypeVarTuple  sE    

3?#JJuMM$,,- r-   c                r   )**r   Nr   ra   rb   r   visit_ParamSpecZUnparser.visit_ParamSpec  sF    

4$))#$JJuMM$,,- r-   c                s    V P                  R 4       V P                  VP                  4       V P                  VP                  4       V P                  R4       V P                  VP                  4       R# )ztype r   N)rL   rn   r   r   r   r=   rf   ra   rb   r   visit_TypeAliasZUnparser.visit_TypeAlias  sN    		'dii   !1!12

5djj!r-   c                *    V P                  R V4       R# )zfor N_for_helperra   rb   r   	visit_ForZUnparser.visit_For  s    &r-   c                r   )z
async for Nr   ra   rb   r   visit_AsyncForZUnparser.visit_AsyncFor  s    t,r-   c                s   V P                  VR R7       V P                  \        P                  VP                  4       V P                  VP                  4       V P                  R4       V P                  VP                  4       V P                  V P                  V4      R7      ;_uu_ 4        V P                  VP                  4       RRR4       VP                  '       dR   V P                  RR R7       V P                  4       ;_uu_ 4        V P                  VP                  4       RRR4       R# R#   + '       g   i     Lu; i  + '       g   i     R# ; i)Fr    in r   Nr   )rL   rc   r   r   r   rn   r=   r6   rS   rl   re   r   )r   rL   r^   rV   r   r   ZUnparser._for_helper  s    		$	.K--t{{;dkk"

6dii ZZd33D9Z::MM$))$ ;;;;IIfeI4dkk*   ;: s   .D7E
7E	
E	c                s   V P                  R RR7       V P                  VP                  4       V P                  4       ;_uu_ 4        V P                  VP                  4       RRR4       VP
                  '       d   \        VP
                  4      ^8X  d   \        VP
                  ^ ,          \        4      '       d   VP
                  ^ ,          pV P                  RRR7       V P                  VP                  4       V P                  4       ;_uu_ 4        V P                  VP                  4       RRR4       K  VP
                  '       dR   V P                  RRR7       V P                  4       ;_uu_ 4        V P                  VP
                  4       RRR4       R# R#   + '       g   i     ELH; i  + '       g   i     EK]  ; i  + '       g   i     R# ; i)zif Fr   Nzelif r   )	rL   rn   r   rS   re   r   rA   rd   ZIfra   rb   r   visit_IfZUnparser.visit_If  s!   		%	/dii ZZ\\MM$))$  kkkc$++.!3
4;;q>SU8V8V;;q>DIIguI5MM$))$dii(  ;;;IIfeI4dkk*   \\ 
 s$   F"F6:G"F3	6G	G	c                s   V P                  R RR7       V P                  VP                  4       V P                  4       ;_uu_ 4        V P                  VP                  4       RRR4       VP
                  '       dR   V P                  RRR7       V P                  4       ;_uu_ 4        V P                  VP
                  4       RRR4       R# R#   + '       g   i     Lu; i  + '       g   i     R# ; i)zwhile Fr   Nr   )rL   rn   r   rS   re   r   ra   rb   r   visit_WhileZUnparser.visit_While  s    		(E	2dii ZZ\\MM$))$ ;;;IIfeI4dkk*   \ s   C(C#C 	#C4	c                F  a  S P                  R RR7       S P                  V 3R lS P                  VP                  4       S P	                  S P                  V4      R7      ;_uu_ 4        S P                  VP                  4       RRR4       R#   + '       g   i     R# ; i)zwith Fr   c                  r9   r:   r<   r   r>   r   r?   Z%Unparser.visit_With.<locals>.<lambda>
  r   r-   r   NrL   r8   rn   rB   rS   rl   re   ra   r|   r   
visit_WithZUnparser.visit_With  sg    		'5	10$--LZZd33D9Z::MM$))$ ;:::   )BB 	c                r   )zasync with Fr   c                  r9   r:   r<   r   r>   r   r?   Z*Unparser.visit_AsyncWith.<locals>.<lambda>  r   r-   r   Nr   ra   r|   r   visit_AsyncWithZUnparser.visit_AsyncWith  sg    		-	70$--LZZd33D9Z::MM$))$ ;:::r   quote_typesescape_special_whitespaceFc               s.  aaa V3R lpRP                  \        VS4      4      oTpRS9   d   V Uu. uF  qf\        9   g   K  VNK  	  ppV Uu. uF  qfS9  g   K  VNK  	  ppV'       g1   \        S4      o\	        V3R lV 4       S^ ,          4      pS^R	 V.3# S'       df   VP                  V3R lR7       V^ ,          ^ ,          SR	,          8X  d4   \        V^ ,          4      ^8X  g   Q hSRR	 R,           SR	,          ,           oSV3# u upi u upi )
z{Helper for writing string literals, minimizing escapes.
Returns the tuple (string literal to write, possible quote types).
c                 s   < S'       g
   V R 9   d   V # V R8X  g   V P                  4       '       g!   V P                  R4      P                  R4      # V # )z
	\Zunicode_escapeZascii)ZisprintableZencodeZdecode)Zcr      &r   escape_charZ1Unparser._str_literal_helper.<locals>.escape_char  sD     -fDyxx 0188AAHr-   rq   rE   c              3   sH   <"   T F  pS^ ,          V9   g   K  Vx  K  	  R# 5i)r    Nr   )Z.0qstrings   & r   Z	<genexpr>Z/Unparser._str_literal_helper.<locals>.<genexpr>.  s     C[F1IN!![s   "
"c                 s*   < V ^ ,          SR,          8H  # )r    r   )r   escaped_stringr   r   r?   Z.Unparser._str_literal_helper.<locals>.<lambda>2  s    qt~b7I/Ir-   )keyNr   r   )rr   Zmap_MULTI_QUOTESreprr   ZsortrA   )	r   r   r   r   r   Zpossible_quotesr   Zquoter   s	   &f$d    @r   _str_literal_helperZUnparser._str_literal_helper  s   	 [&!9:%>!*9P/Q-=Oqq/OP&5Qo.9P11oQ &\FC[CVAYOE!B<%((  %I J q!!$r(::?1-.!333!/!4t!;nR>P!P..# QQs   DDDDc               sn    V P                  WR7      w  rV^ ,          pV P                  V V V 24       R# )zKWrite string literal value with a best effort attempt to avoid backslashes.r   N)r   r=   )r   r   r   
quote_types   &&$ r   _write_str_avoiding_backslashesZ(Unparser._write_str_avoiding_backslashes:  s:    "66v6W ^


j\&*67r-   c                s   . p\        \        4      pR pV F  w  rVV'       d>   V P                  VVRR7      w  rW\        V4      P	                  V4      '       d   Rp MiTpMQRV9   d(   V Uu. uF  q\
        9   g   K  VNK  	  ppV'       g   Q hV Uu. uF  qV9  g   K  VNK  	  ppV'       d   TpVP                  V4       K  	  V'       d   R.pVP                  4        V Fg  w  rVV'       dJ   \        RV,           4      pRp	VP                  V	4      '       g   Q \        V4      4       hV\        V	4      R	 pVP                  V4       Ki  	  RP                  V4      pV^ ,          p
V P                  V
 V V
 24       R# u upi u upi )
FT)r   r   rE   '''"z'"rq   Nr   )rm   _ALL_QUOTESr   ZsetZ
isdisjointr   appendrv   r   
startswithrA   rr   r=   )r   ZpartsZ	new_partsr   Zfallback_to_reprrf   Zis_constantZnew_quote_typesr   Zexpected_prefixr   s   &&         r   _ftstring_helperZUnparser._ftstring_helper@  s   	;' "'E)-)A)A +.2 *B *&
 '22;??'+$-5=.9"Pk-=O11kK"P&&;.9"Lke^11k"L""1KU#' #(*  !'KOO&+" u-E&+O ++O<<Id5kI<!#o"6r:E  ' ', 	" ^


j\%56/ #Q #Ms   +F<FFFc                sJ   V P                  V4       . pV Fe  pV P                  4       ;_uu_ 4       pV P                  V4       R R R 4       VP                  RP	                  X4      \        V\        4      34       Kg  	  V P                  V4       R #   + '       g   i     LW; i)Nrq   )r=   rP   _write_ftstring_innerr   rr   rd   rg   r   )r   valuesZprefixZfstring_partsrf   rN   s   &&&   r   _write_ftstringZUnparser._write_ftstringj  sz    

6EF**51 !  *UH"=>  	m, !s   BB"c                >    V P                  VP                  R 4       R# )r7   Nr   r   ra   rb   r   visit_JoinedStrZUnparser.visit_JoinedStru      T[[#.r-   c                r   )ZtNr   ra   rb   r   visit_TemplateStrZUnparser.visit_TemplateStrx  r   r-   c                s   \        V\        4      '       d(   VP                   F  pV P                  W2R 7       K  	  R# \        V\        4      '       d   \        VP
                  \        4      '       d   VP
                  P                  RR4      P                  RR4      pV'       dI   VP                  RR4      pVP                  RR4      pVP                  R	R
4      pVP                  RR4      pV P                  V4       R# \        V\        4      '       d   V P                  V4       R# \        V\        4      '       d   V P                  V4       R# \        RV: 24      h)is_format_spec{z{{}z}}r   z\\'z\'r   z\"rE   z\nz"Unexpected node inside JoinedStr, N)rd   Z	JoinedStrr   r   rg   rf   rh   replacer=   ZFormattedValuevisit_FormattedValueZInterpolationvisit_Interpolationr   )r   r^   r   rf      &&& r   r   ZUnparser._write_ftstring_inner{  s   dI&&**5*P %h''Jtzz3,G,GJJ&&sD199#tDEdF3c51c51dE2JJun--%%d+m,,$$T*A$JKKr-   c                s    \        V 4      ! 4       pVP                  \        P                  P	                  4       V4       VP                  V4      # rM   )r   rc   r   r   r   ro   )r   ZinnerZunparserrO   r   _unparse_interpolation_valueZ%Unparser._unparse_interpolation_value  s;    :< 0 0 5 5 7?~~e$$r-   c                s6   V P                  R R4      ;_uu_ 4        V'       d   VP                  pMV P                  VP                  4      pVP	                  R 4      '       d   V P                  R4       V P                  V4       VP                  R8w  d(   V P                  R\        VP                  4       24       VP                  '       d/   V P                  R4       V P                  VP                  RR7       RRR4       R#   + '       g   i     R# ; i)	r   r   r   Z!rR   Tr   Nr   )
rW   rh   r  rf   r   r=   Z
conversionZchrZformat_specr   )r   r^   use_str_attrZexprr  r   _write_interpolationZUnparser._write_interpolation  s    \\#s##xx88Ds##

3JJt"$

Qs4??3456

3**4+;+;D*Q $###s   AD#A+D.DD	c                s(    V P                  V4       R # rM   )r  ra   rb   r   r   ZUnparser.visit_FormattedValue  s    !!$'r-   c                sB    V P                  WP                  R JR7       R # )N)r  )r  rh   ra   rb   r   r  ZUnparser.visit_Interpolation  s    !!$XXT5I!Jr-   c                <    V P                  VP                  4       R # rM   )r=   Zidra   rb   r   
visit_NameZUnparser.visit_Name  s    

477r-   c                s    V P                  R R7       VP                  R8X  d   V P                  R4       V P                  VP                  \
        R7       R# )Fr   ur   N)rL   kindr=   r   rf   r   ra   rb   r   rs   ZUnparser._write_docstring  s>    		%	(99JJsO,,TZZ],Sr-   c           
     s   \        V\        \        34      '       dP   V P                  \	        V4      P                  R \        4      P                  RR\         R\         R24      4       R# V P                  \	        V4      4       R# )ZinfZnanrZ   -r[   N)rd   ZfloatZcomplexr=   r   r   _INFSTR)r   rf   rb   r   _write_constantZUnparser._write_constant  sb    eeW-.. JJU(!G9AgYa 89 JJtE{#r-   c                s   VP                   p\        V\        4      '       dB   V P                  R R4      ;_uu_ 4        V P	                  V P
                  V4       RRR4       R# VRJ d   V P                  R4       R# VP                  R8X  d   V P                  R4       V P                  VP                   4       R#   + '       g   i     R# ; i)rZ   r[   N....r  )rf   rd   ZtuplerW   rC   r  r=   r	  )r   r^   rf   rO   r   visit_ConstantZUnparser.visit_Constant  s    

eU##c3'' 4 4e< ('c\JJuyyC

3  , (''s   B<<C	c                   a  S P                  R R4      ;_uu_ 4        S P                  V 3R lS P                  VP                  4       RRR4       R#   + '       g   i     R# ; i)r   r   c                  r9   r:   r<   r   r>   r   r?   Z%Unparser.visit_List.<locals>.<lambda>  r@   r-   N)rW   r8   rn   eltsra   r|   r   
visit_ListZUnparser.visit_List  s<    \\#s##OO4dmmTYYO $###   ,AA#	c                    V P                  R R4      ;_uu_ 4        V P                  VP                  4       VP                   F  pV P                  V4       K  	  RRR4       R#   + '       g   i     R# ; i)r   r   NrW   rn   Zelt
generatorsr   r^   ZgenrO   r   visit_ListCompZUnparser.visit_ListComp  L    \\#s##MM$((#c" ' $###   A A%%A6	c                r  rZ   r[   Nr  r  rO   r   visit_GeneratorExpZUnparser.visit_GeneratorExp  r  r  c                r  )r   r   Nr  r  rO   r   visit_SetCompZUnparser.visit_SetComp  r  r  c                sJ   V P                  R R4      ;_uu_ 4        V P                  VP                  4       V P                  R4       V P                  VP                  4       VP
                   F  pV P                  V4       K  	  RRR4       R#   + '       g   i     R# ; i)r   r   r   N)rW   rn   r   r=   rf   r  r  rO   r   visit_DictCompZUnparser.visit_DictComp  sh    \\#s##MM$((#JJtMM$**%c" '	 $###s   A,BB"	c                sF   VP                   '       d   V P                  R 4       MV P                  R4       V P                  \        P                  VP
                  4       V P                  VP
                  4       V P                  R4       V P                  ! \        P                  P                  4       VP                  .VP                  O5!   V P                  VP                  4       VP                   F%  pV P                  R4       V P                  V4       K'  	  R# )z async for z for r    if N)Zis_asyncr=   rc   r   r   r   rn   r   r   r6   Zifs)r   r^   Z	if_clauserO   r   visit_comprehensionZUnparser.visit_comprehension  s    ===JJ}%JJwK--t{{;dkk"

6K,,113TYYJJdii IJJvMM)$ "r-   c                sP   V P                  \        P                  V4      ;_uu_ 4        V P                  \        P                  P	                  4       VP
                  VP                  4       V P                  VP
                  4       V P                  R 4       V P                  VP                  4       V P                  R4       V P                  \        P                  VP                  4       V P                  VP                  4       RRR4       R#   + '       g   i     R# ; i)r  z else N)
r_   r   r   rc   r   re   r   rn   r=   r   ra   rb   r   visit_IfExpZUnparser.visit_IfExp  s      !1!1488 0 0 5 5 7DIINMM$))$JJvMM$))$JJx  0 0$++>MM$++& 9888s   C!DD%	c                s  a  VP                   '       dQ   S P                  R R4      ;_uu_ 4        S P                  V 3R lS P                  VP                   4       RRR4       R# S P	                  R4       R#   + '       g   i     R# ; i)r   r   c                  r9   r:   r<   r   r>   r   r?   Z$Unparser.visit_Set.<locals>.<lambda>  r   r-   Nz{*()})r  rW   r8   rn   r=   ra   r|   r   	visit_SetZUnparser.visit_Set  sX    999c3'' 8$--S ('
 JJw (''s   ,A77B	c           
     s   a a V 3R  loV V3R lpS P                  RR4      ;_uu_ 4        S P                  V 3R lV\        VP                  VP                  4      4       RRR4       R#   + '       g   i     R# ; i)c                 sn   < SP                  V 4       SP                  R 4       SP                  V4       R# r   Nrn   r=   )kvr   s   &&r   write_key_value_pairZ1Unparser.visit_Dict.<locals>.write_key_value_pair  s'    MM!JJtMM!r-   c                 s   < V w  rVfE   SP                  R4       SP                  \        P                  V4       SP	                  V4       R # S! W4       R # )Nr   )r=   rc   r   r   rn   )rp   r$  r%  r   r&  s   &  r   
write_itemZ'Unparser.visit_Dict.<locals>.write_item  sG    DAy 

4 ##K$4$4a8a $Q*r-   r   r   c                  r9   r:   r<   r   r>   r   r?   Z%Unparser.visit_Dict.<locals>.<lambda>  ry   r-   N)rW   r8   zipkeysr   )r   r^   r'  r&  s   f& @r   
visit_DictZUnparser.visit_Dict  sQ    	
		+ \\#s##OO(*c$))T[[6Q $###s   6A**A;	c                sB   T P                  R R\        VP                  4      ^ 8H  ;'       g#    V P                  V4      \        P
                  8  4      ;_uu_ 4        V P                  V P                  VP                  4       RRR4       R#   + '       g   i     R# ; ir  )rY   rA   r  r\   r   r   rC   rn   ra   rb   r   visit_TupleZUnparser.visit_Tuple"  st    __		NaPP4#6#6t#<{?P?P#P
 

 OODMM4995
 
 
 
s   'BB	ZInvertZ~ZNotZnotZUAddZ+ZUSubr
  c                s   V P                   VP                  P                  P                  ,          pV P                  V,          pV P                  W14      ;_uu_ 4        V P                  V4       V\        P                  Jd   V P                  R 4       V P                  W1P                  4       V P                  VP                  4       RRR4       R#   + '       g   i     R# ; ir   N)unopr   r
   r   unop_precedencer_   r=   r   r&   rc   Zoperandrn   )r   r^   operatoroperator_precedencer   r   visit_UnaryOpZUnparser.visit_UnaryOp2  s    99TWW..778"228<  !4;;JJx  #+*<*<<

3 3\\BMM$,,' <;;;s   A-CC&	ZAddZSubZMultr   ZMatMultr   ZDivZ/ZModZ%ZLShiftz<<ZRShiftz>>ZBitOrZ|ZBitXorZ^ZBitAndZ&ZFloorDivz//ZPowr   c                sf   V P                   VP                  P                  P                  ,          pV P                  V,          pV P                  W14      ;_uu_ 4        W P                  9   d   VP                  4       pTpMTpVP                  4       pV P                  WAP                  4       V P                  VP                  4       V P                  R V R 24       V P                  WQP                  4       V P                  VP                  4       RRR4       R#   + '       g   i     R# ; ir,  )r   r   r
   r   binop_precedencer_   binop_rassocr   rc   leftrn   r=   Zright)r   r^   r/  r0  Zleft_precedenceZright_precedences   &&    r   visit_BinOpZUnparser.visit_BinOp_  s    ::dgg//889"33H=  !4;;,,,"5":":"<#6 "5#6#;#;#= ;MM$))$JJ8*A' 0**=MM$**% <;;;s   B7DD0	ZEqz==ZNotEqz!=ZLtZ<ZLtEz<=ZGtZ>ZGtEz>=ZIsZisZIsNotzis notZInZinZNotInznot inc                sL   V P                  \        P                  V4      ;_uu_ 4        V P                  ! \        P                  P	                  4       VP
                  .VP                  O5!   V P                  VP
                  4       \        VP                  VP                  4       FZ  w  r#V P                  R V P                  VP                  P                  ,          ,           R ,           4       V P                  V4       K\  	  RRR4       R#   + '       g   i     R# ; ir,  )r_   r   r   rc   r   r4  Zcomparatorsrn   r(  Zopsr=   cmpopsr
   r   )r   r^   Zor   r   r   visit_CompareZUnparser.visit_Compare}  s      $77 4 4 6		UDDTDTUMM$))$DHHd&6&67

3Q[[-A-A!BBSHIa  8 8777s   CDD#	ZAndZandZOrZorc                s^  a aa S P                   VP                  P                  P                  ,          pS P                  V,          oVV 3R  lpS P                  SV4      ;_uu_ 4        RV R2oS P                  VV 3R lW1P                  4       RRR4       R#   + '       g   i     R# ; i)c                 sn   < SP                  4       oSP                  SV 4       SP                  V 4       R # rM   )r   rc   rn   )r^   r0  r   s   &r   increasing_level_traverseZ8Unparser.visit_BoolOp.<locals>.increasing_level_traverse  s/    "5":":"< 3T:MM$r-   r   c                  s&   < SP                  S 4      # rM   r<   )sr   s   r   r?   Z'Unparser.visit_BoolOp.<locals>.<lambda>  s    DJJqMr-   N)boolopsr   r
   r   boolop_precedencer_   r8   r   )r   r^   r/  r8  r0  r9  s   f&  @@r   visit_BoolOpZUnparser.visit_BoolOp  s}    << 1 1 : :;"44X>	    !4d;;H:QAOO13LkkZ <;;;s   )(BB,	c                s   V P                  \        P                  VP                  4       V P	                  VP                  4       \        VP                  \        4      '       d<   \        VP                  P                  \        4      '       d   V P                  R 4       V P                  R4       V P                  VP                  4       R# )r   r   N)
rc   r   r)   rf   rn   rd   rg   Zintr=   attrra   rb   r   visit_AttributeZUnparser.visit_Attribute  s{    K,,djj9djj! djj(++
4::;K;KS0Q0QJJsO

3

499r-   c                s   V P                  \        P                  VP                  4       V P	                  VP                  4       V P                  R R4      ;_uu_ 4        RpVP                   F0  pV'       d   V P                  R4       MRpV P	                  V4       K2  	  VP                   F0  pV'       d   V P                  R4       MRpV P	                  V4       K2  	  RRR4       R#   + '       g   i     R# ; i)rZ   r[   Fr;   TN)	rc   r   r)   Zfuncrn   rW   r   r=   r   )r   r^   r   r   r   r   
visit_CallZUnparser.visit_Call  s    K,,dii8dii \\#s##EYYJJt$ Ea   ]]JJt$ Ea  # $###s    BC--C>	c                s   R  pV P                  \        P                  VP                  4       V P	                  VP                  4       V P                  RR4      ;_uu_ 4        V! VP                  4      '       d2   V P                  V P                  VP                  P                  4       MV P	                  VP                  4       RRR4       R#   + '       g   i     R# ; i)c                 sJ    \        V \        4      ;'       d    V P                  # rM   )rd   ZTupler  )Zslice_valuer   r   is_non_empty_tupleZ4Unparser.visit_Subscript.<locals>.is_non_empty_tuple  s$    ;. % %$$r-   r   r   N)	rc   r   r)   rf   rn   rW   ZslicerC   r  )r   r^   r@  rO   r   visit_SubscriptZUnparser.visit_Subscript  s    	 	K,,djj9djj!\\#s##!$**--tzz?djj) $###s   #A%CC#	c                s    V P                  R 4       V P                  \        P                  VP                  4       V P                  VP                  4       R# )r   N)r=   rc   r   r   rf   rn   ra   rb   r   visit_StarredZUnparser.visit_Starred  s7    

3K,,djj9djj!r-   c                r   )r  Nr<   ra   rb   r   visit_EllipsisZUnparser.visit_Ellipsis  s    

5r-   c                s\   VP                   '       d   V P                  VP                   4       V P                  R 4       VP                  '       d   V P                  VP                  4       VP                  '       d/   V P                  R 4       V P                  VP                  4       R# R# )rR   N)Zlowerrn   r=   ZupperZstepra   rb   r   visit_SliceZUnparser.visit_Slice  sh    :::MM$**%

3:::MM$**%999JJsOMM$))$ r-   c                s   V P                  R RR7       V P                  VP                  4       V P                  4       ;_uu_ 4        VP                   F  pV P                  V4       K  	  RRR4       R#   + '       g   i     R# ; i)zmatch Fr   N)rL   rn   ZsubjectrS   Zcases)r   r^   ZcaserO   r   visit_MatchZUnparser.visit_Match  sS    		(E	2dll#ZZ\\

d# # \\\s   %A66B	c                s    V P                  VP                  4       VP                  '       d/   V P                  R 4       V P                  VP                  4       R# R# r"  )r=   argr   rn   ra   rb   r   	visit_argZUnparser.visit_arg  s<    

488???JJtMM$//* r-   c                s2   R pVP                   VP                  ,           pR.\        V4      \        VP                  4      ,
          ,          VP                  ,           p\	        \        W44      ^4       F  w  rVVw  rxV'       d   RpMV P                  R4       V P                  V4       V'       d#   V P                  R4       V P                  V4       V\        VP                   4      8X  g   K|  V P                  R4       K  	  VP                  '       g   VP                  '       d   V'       d   RpMV P                  R4       V P                  R4       VP                  '       dx   V P                  VP                  P                  4       VP                  P                  '       d7   V P                  R4       V P                  VP                  P                  4       VP                  '       dx   \        VP                  VP                  4       FS  w  rxV P                  R4       V P                  V4       V'       g   K1  V P                  R4       V P                  V4       KU  	  VP                  '       d   V'       d   RpMV P                  R4       V P                  RVP                  P                  ,           4       VP                  P                  '       d9   V P                  R4       V P                  VP                  P                  4       R# R# R# )	TNFr;   =z, /r   r   r   )Zposonlyargsr   rA   defaultsZ	enumerater(  r=   rn   ZvarargZ
kwonlyargsrF  r   Zkw_defaultsZkwarg)	r   r^   ZfirstZall_argsrI  ZindexZelementsZaZds	   &&       r   visit_argumentsZUnparser.visit_arguments  s   ##dii/6S]S-??@4==P(X)@!DOEDA

4 MM!

3a D,,--

5!  E ;;;$///

4 JJsO{{{

4;;??+;;)))JJt$MM$++"8"89 ???DOOT-=-=>

4 a 1JJsOMM!$ ? :::

4 JJtdjjnn,-zz$$$

4 djj334 % r-   c                s    VP                   f   V P                  R4       M,V P                  VP                   4       V P                  R4       V P                  VP                  4       R # )Nr   rH  )rF  r=   rn   rf   ra   rb   r   visit_keywordZUnparser.visit_keyword  sC    88JJtJJtxx JJsOdjj!r-   c           	     s4   V P                  \        P                  V4      ;_uu_ 4        V P                  R 4       V P	                  4       ;_uu_ 4       pV P                  VP                  4       RRR4       X'       d   V P                  ! R.VO5!   V P                  R4       V P                  \        P                  VP                  4       V P                  VP                  4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)ZlambdaNr   r   )	r_   r   r   r=   rP   rn   r   rc   re   )r   r^   rN   rO   r   visit_LambdaZUnparser.visit_Lambda  s      !1!1488JJx Fdii( !

3((JJt 0 0$))<MM$))$ 98  988s*   *DC3	/D?A*D3D>DD	c                s    V P                  VP                  4       VP                  '       d%   V P                  R VP                  ,           4       R# R# r   N)r=   r   Zasnamera   rb   r   visit_aliasZUnparser.visit_alias(  s5    

499;;;JJv+, r-   c                s    V P                  VP                  4       VP                  '       d/   V P                  R 4       V P                  VP                  4       R# R# rM  )rn   Zcontext_exprZoptional_varsr=   ra   rb   r   visit_withitemZUnparser.visit_withitem-  sC    d''(JJvMM$,,- r-   c                s~   V P                  R RR7       V P                  VP                  4       VP                  '       d-   V P	                  R4       V P                  VP                  4       V P                  4       ;_uu_ 4        V P                  VP                  4       RRR4       R#   + '       g   i     R# ; i)zcase Fr   r  N)rL   rn   patternZguardr=   rS   re   ra   rb   r   visit_match_caseZUnparser.visit_match_case3  sn    		'5	1dll#:::JJvMM$**%ZZ\\MM$))$ \\\s   B++B<	c                r  rM   )rn   rf   ra   rb   r   visit_MatchValueZUnparser.visit_MatchValue<  s    djj!r-   c                r  rM   )r  rf   ra   rb   r   visit_MatchSingletonZUnparser.visit_MatchSingleton?  s    TZZ(r-   c                r  )r   r   c                  r9   r:   r<   r   r>   r   r?   Z.Unparser.visit_MatchSequence.<locals>.<lambda>E  ry   r-   N)rW   r8   rn   patternsra   r|   r   visit_MatchSequenceZUnparser.visit_MatchSequenceB  s>    \\#s##OO($-- $###r  c                sR    VP                   pVf   RpV P                  RV 24       R # )N_r   )r   r=   )r   r^   r   rO   r   visit_MatchStarZUnparser.visit_MatchStarH  s'    yy<D

Qtf:r-   c                sl  a  V 3R  lpS P                  RR4      ;_uu_ 4        VP                  pS P                  V 3R lV\        W1P                  RR7      4       VP
                  pVe.   V'       d   S P                  R4       S P                  RV 24       RRR4       R#   + '       g   i     R# ; i)	c                 sv   < V w  rSP                  V4       SP                  R 4       SP                  V4       R# r"  r#  )pairr$  Zpr      &  r   write_key_pattern_pairZ;Unparser.visit_MatchMapping.<locals>.write_key_pattern_pairO  s.    DAMM!JJtMM!r-   r   r   c                  r9   r:   r<   r   r>   r   r?   Z-Unparser.visit_MatchMapping.<locals>.<lambda>X  ry   r-   TZstrictNr;   r   )rW   r)  r8   r(  rT  restr=   )r   r^   rZ  r)  r\     f&   r   visit_MatchMappingZUnparser.visit_MatchMappingN  s    	 \\#s##99DOO(&D--5
 99DJJt$

Rv;' $###s   AB"3%B""B3	c                s  a  S P                  \        P                  VP                  4       S P	                  VP                  4       S P                  R R4      ;_uu_ 4        VP                  pS P                  V 3R lS P                  V4       VP                  pV'       dL   V 3R lpV'       d   S P                  R4       S P                  V 3R lV\        W1P                  RR7      4       RRR4       R#   + '       g   i     R# ; i)	rZ   r[   c                  r9   r:   r<   r   r>   r   r?   +Unparser.visit_MatchClass.<locals>.<lambda>h  ry   r-   c                 sZ   < V w  rSP                  V R 24       SP                  V4       R# )rH  N)r=   rn   )rX  r=  rP  r   rY  r   write_attr_patternZ5Unparser.visit_MatchClass.<locals>.write_attr_patternl  s(    $(MDJJ$qz*MM'*r-   r;   c                  r9   r:   r<   r   r>   r   r?   r_  t  s    DJJt,r-   Tr[  N)rc   r   r)   Zclsrn   rW   rT  r8   Z	kwd_attrsr=   r(  Zkwd_patterns)r   r^   rT  Zattrsr`  r]  r   visit_MatchClassZUnparser.visit_MatchClassb  s    K,,dhh7dhh\\#s##}}HOO($-- NNE+
 JJt$,&00> $###s   !AC81=C88D		c                s   VP                   pVP                  pVf   V P                  R4       R # Vf   V P                  VP                   4       R # V P                  \        P
                  V4      ;_uu_ 4        V P                  \        P                  VP                  4       V P                  VP                  4       V P                  RVP                    24       R R R 4       R #   + '       g   i     R # ; i)NrV  r   )	r   rP  r=   r_   r   r   rc   r    rn   )r   r^   r   rP  r   r   visit_MatchAsZUnparser.visit_MatchAsy  s    yy,,<JJsO_JJtyy!$$[%5%5t<<##KOOT\\Bdll+

T$))-. =<<<s   9A$C''C8	c                s\  a  S P                  \        P                  V4      ;_uu_ 4        S P                  ! \        P                  P	                  4       .VP
                  O5!   S P                  V 3R  lS P                  VP
                  4       RRR4       R#   + '       g   i     R# ; i)c                  r9   )z | r<   r   r>   r   r?   Z(Unparser.visit_MatchOr.<locals>.<lambda>  s    DJJu$5r-   N)r_   r   r    rc   r   rT  r8   rn   ra   r|   r   visit_MatchOrZUnparser.visit_MatchOr  sf      $77 4 4 6GGOO5t}}dmmT 8777s   A&BB+	)r4   r3   r2   r0   r/   r1   )rq   rM   )F)r   )r   r   r   r   r   r5   r8   rC   rG   rI   rL   r=   r   rP   rS   rW   rY   r_   r\   rc   ri   rl   rn   ro   rt   rw   rx   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r  r  rs   r  r  r  r  r  r  r  r  r   r!  r*  r+  r-  r   r   r&   r.  r1  r   r$   r%   r#   r    r!   r"   r'   r2  Z	frozensetr3  r5  r6  r7  r:  r   r   r;  r<  r>  r?  rA  rB  rC  rD  rE  rG  rJ  rK  rL  rN  rO  rQ  rR  rS  rU  rW  r^  ra  rb  rc  r*   r+   Z__classcell__)r
   r,   s   @@r   r.   r.   1   s<    %
H

5t 5" ' ' t    !Q=1 )
 %%')$"
&MM%"&&O$JJ**&
&.11	%:4+1:"V
..."'-++$+%%$/%0$/LQ$/L8[ 8(7T	-//L*%
R (KT
$
-P####%' ,6 c5%fcBD{[[[	O
( 	ss3ss$$##DtE" 	[[[[[[kk[__[[kk  W%L&$ 	dctctddF! eT4(G{~~F[	!$* "
%$+15f"	%-
.%")((./U Ur-   r.   )r   r   )z"""r   )ZsysZ_astZastr   Z
contextlibr   r   Zenumr   r   r   r   Z
float_infoZ
max_10_expr  r   Z_SINGLE_QUOTESr   r   r.   r   r-   r   <module>rd     s       2 , , cnn//!34
4g  > ///XU{ XUr-   