
    ~ijq                         d dl Z ddl d dlmZ d dlmZ  G d de      Zd ee j                  j                  dz         z   Z G d	 d
e      ZdZdZeez   Z G d de      Zd Zy)    N   )*)contextmanager	printablec                        e Zd ZddZd Zd Zy)nullcontextNc                     || _         y Nenter_result)selfr   s     b/var/www/html/emotional.easysim.app/public_html/venv/lib/python3.12/site-packages/gast/unparser.py__init__znullcontext.__init__;   s
    (    c                     | j                   S r   r   r   s    r   	__enter__znullcontext.__enter__>   s       r   c                      y r    )r   excinfos     r   __exit__znullcontext.__exit__A   s    r   r   )__name__
__module____qualname__r   r   r   r   r   r   r	   r	   :   s    )!r   r	   1ec                   \    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZeZdZdZdZdZdZdZdZdZdZy)_Precedencez5Precedence table that originated from python grammar.r                        	   
                           N)r   r   r   __doc__
NAMED_EXPRTUPLEYIELDTESTORANDNOTCMPEXPRBORBXORBANDSHIFTARITHTERMFACTORPOWERAWAITATOMr   r   r   r   r   I   sd    ?JEED	
B
C
C
CD
CDDEEDFEEDr   r   )'")z"""'''c                       e Zd ZdZd Zd Zd Zd Zd ZddZ	d Z
edd	       Zedd
       Zed        Zd Zd Zd Zd Zd Zd Z fdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d  Z#d! Z$d" Z%d# Z&d$ Z'd% Z(d& Z)d' Z*d( Z+d) Z,d* Z-d+ Z.d, Z/d- Z0d. Z1d/ Z2d0 Z3d1 Z4d2 Z5d3 Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z?d= Z@d> ZAeBd?fd@ZCeBfdAZDdB ZEdC ZFdD ZGdE ZHddFZIdG ZJddHZKdI ZLdJ ZMdK ZNdL ZOdM ZPdN ZQdO ZRdP ZSdQ ZTdR ZUdS ZVdT ZWdU ZXdV ZYdW ZZdX Z[dYdZd[d\d]Z\e]j                  e]j                  e]j                  e]j                  d^Z`d_ Zad[d\d`dadbdcdddedfdgdhdidjdkZbe]j                  e]j                  e]j                  e]j                  e]j                  e]j                  e]j                  e]j                  e]j                  e]j                  e]j                  e]j                  e]j                  dlZj ekdm      Zldn Zmdodpdqdrdsdtdudvdwdxdy
Zndz Zod{d|d}Zpe]j                  e]j                  d~Zsd Ztd Zud Zvd Zwd Zxd Zyd Zzd Z{d Z|d Z}d Z~d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )	_UnparserzMethods in this class recursively traverse an AST and
    output source code for the abstract syntax; original formatting
    is disregarded.c                 X    g | _         i | _        i | _        d| _        d| _        d| _        y )Nr   F)_source_precedences_type_ignores_indent_in_try_star_in_interactiver   s    r   r   z_Unparser.__init__k   s0    !$r   c                     t        |      }	  |t        |             |D ]  } |         ||        y# t        $ r Y yw xY w)z7Call f on each item in seq, calling inter() in between.N)iternextStopIteration)r   interfseqxs        r   
interleavez_Unparser.interleaves   sL    3i	d3iL  !  		s   5 	A Ac                      t        |      dk(  r ||d           j                  d       y j                   fd||       y)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.r   r   ,c                  &     j                  d      S N, writer   s   r   <lambda>z&_Unparser.items_view.<locals>.<lambda>       DJJt$4 r   N)lenr_   rX   )r   	traverseritemss   `  r   
items_viewz_Unparser.items_view   s8     u:?eAhJJsOOO4iGr   c                 @    | j                   r| j                  d       yy)z8Adds a newline if it isn't the start of generated source
NrJ   r_   r   s    r   maybe_newlinez_Unparser.maybe_newline       <<JJt r   c                 @    | j                   r| j                  d       yy)z?Adds a "; " delimiter if it isn't the start of generated sourcez; Nrh   r   s    r   maybe_semicolonz_Unparser.maybe_semicolon   rj   r   c                     | j                   r0| j                  s$|r"| j                          | j                  |       y| j	                          | j                  d| j                  z  |z          y)zIndent a piece of text and append it, according to the current
        indentation level, or only delineate with semicolon if applicablez    N)rO   rM   rl   r_   ri   )r   textallow_semicolons      r   fillz_Unparser.fill   sS       "JJt JJv,t34r   c                 :    | j                   j                  |       y)zAdd new source partsN)rJ   extend)r   rn   s     r   r_   z_Unparser.write   s    D!r   c              #   P   K   |g }| j                   }|| _         | || _         y wr   )rJ   )r   bufferoriginal_sources      r   bufferedz_Unparser.buffered   s,     >F,,&s   $&c              #      K   | j                  d       |r| j                  |       | xj                  dz  c_        d | xj                  dz  c_        yw)a  A 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.
        :r   N)r_   rM   )r   extras     r   blockz_Unparser.block   sA      	

3JJus   AAc              #   X   K   | j                  |       d | j                  |       yw)zA context manager for preparing the source for expressions. It adds
        *start* to the buffer and enters, after exit it adds *end*.Nr^   )r   startends      r   delimitz_Unparser.delimit   s"     
 	

5

3s   (*c                 >    |r| j                  ||      S t               S r   )r~   r	   )r   r|   r}   	conditions       r   
delimit_ifz_Unparser.delimit_if   s    <<s++= r   c                 L    | j                  dd| j                  |      |kD        S )z,Shortcut to adding precedence related parens())r   get_precedence)r   
precedencenodes      r   require_parensz_Unparser.require_parens   s%    sC)<)<T)BZ)OPPr   c                 V    | j                   j                  |t        j                        S r   )rK   getr   r4   r   r   s     r   r   z_Unparser.get_precedence   s!      $$T;+;+;<<r   c                 0    |D ]  }|| j                   |<    y r   )rK   )r   r   nodesr   s       r   set_precedencez_Unparser.set_precedence   s!     	1D&0Dd#	1r   c                 (   t        |t        t        t        t        f      rt        |j                        dk  ry|j                  d   }t        |t              sy|j                  }t        |t              rt        |j                  t              r|S yy)zIf a docstring node is found in the body of the *node* parameter,
        return that docstring node, None otherwise.

        Logic mirrored from ``_PyAST_GetDocString``.r   Nr   )
isinstanceAsyncFunctionDefFunctionDefClassDefModulerb   bodyExprvalueConstantstrr   s     r   get_raw_docstringz_Unparser.get_raw_docstring   sv    
 #[(FC
^ayy|$%zzdH%*TZZ*EK +F%r   c                     | j                   j                  |j                        xs |j                  }|dj	                  |      S y )Nz # type: {})rL   r   linenotype_commentformat)r   r   comments      r   get_type_commentz_Unparser.get_type_comment   sC    $$((5J9J9J ''00 r   c                 ~    t        |t              r|D ]  }| j                  |        y t        t        |   |       y r   )r   listtraversesuperrH   visit)r   r   item	__class__s      r   r   z_Unparser.traverse   s9    dD! $d#$ )T(.r   c                 h    g | _         | j                  |       dj                  | j                         S )zOutputs a source code string that, if converted back to an ast
        (using ast.parse) will generate an AST equivalent to *node* )rJ   r   joinr   s     r   r   z_Unparser.visit   s*     dwwt||$$r   c                     | j                  |      }|r0| j                  |       | j                  |j                  dd         y | j                  |j                         y Nr   )r   _write_docstringr   r   )r   r   	docstrings      r   "_write_docstring_and_traverse_bodyz,_Unparser._write_docstring_and_traverse_body   sI    **40	!!),MM$))AB-(MM$))$r   c                 *   |j                   D ci c](  }|j                  dj                  |j                        * c}| _        	 | j                  |       | j                  j                          y c c}w # | j                  j                          w xY w)Nzignore{})type_ignoresr   r   tagrL   r   clear)r   r   ignores      r   visit_Modulez_Unparser.visit_Module  s}     ++
 MM:,,VZZ88
	'33D9$$&
 $$&s   -A1A6 6Bc                 \    d| _         	 | j                  |       d| _         y # d| _         w xY w)NTF)rO   r   r   s     r   visit_Interactivez_Unparser.visit_Interactive  s.    #	)33D9#(D 5D s   " 	+c                       j                  dd      5   j                   fd j                  |j                         d d d         j	                  d        j                  |j
                         y # 1 sw Y   6xY w)Nr   r   c                  &     j                  d      S r\   r^   r   s   r   r`   z._Unparser.visit_FunctionType.<locals>.<lambda>      

4( r    -> )r~   rX   r   argtypesr_   returnsr   s   ` r   visit_FunctionTypez_Unparser.visit_FunctionType  s_    \\#s# 	OO($--	
 	

6dll#	 	s   +A44A=c                     | j                          | j                  t        j                  |j                         | j                  |j                         y r   )rp   r   r   r3   r   r   r   s     r   
visit_Exprz_Unparser.visit_Expr  s5    		K--tzz:djj!r   c                 f   | j                  t        j                  |      5  | j                  t        j                  |j
                  |j                         | j                  |j
                         | j                  d       | j                  |j                         d d d        y # 1 sw Y   y xY w)Nz := )	r   r   r1   r   rC   targetr   r   r_   r   s     r   visit_NamedExprz_Unparser.visit_NamedExpr   sy      !7!7> 	& 0 0$++tzzJMM$++&JJvMM$**%		& 	& 	&s   A=B''B0c                 |      j                  d        j                   fd j                  |j                         y )Nzimport c                  &     j                  d      S r\   r^   r   s   r   r`   z(_Unparser.visit_Import.<locals>.<lambda>)      

4 0 r   )rp   rX   r   namesr   s   ` r   visit_Importz_Unparser.visit_Import'  s(    		)0$--Lr   c                 0     j                  d        j                  d|j                  xs dz         |j                  r j                  |j                          j                  d        j	                   fd j
                  |j                         y )Nzfrom .r   z import c                  &     j                  d      S r\   r^   r   s   r   r`   z,_Unparser.visit_ImportFrom.<locals>.<lambda>1  r   r   )rp   r_   levelmodulerX   r   r   r   s   ` r   visit_ImportFromz_Unparser.visit_ImportFrom+  sd    		'

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

:0$--Lr   c                 J   | j                          |j                  D ]D  }| j                  t        j                  |       | j                  |       | j                  d       F | j                  |j                         | j                  |      }|r| j                  |       y y )N = )	rp   targetsr   r   r2   r   r_   r   r   )r   r   r   r   s       r   visit_Assignz_Unparser.visit_Assign3  s    		ll 	F 1 16:MM&!JJu	 	djj!,,T2JJ|$ r   c                    | j                          | j                  |j                         | j                  d| j                  |j
                  j                  j                     z   dz          | j                  |j                         y )N z= )	rp   r   r   r_   binopopr   r   r   r   s     r   visit_AugAssignz_Unparser.visit_AugAssign>  sZ    		dkk"

3DGG$5$5$>$>??$FGdjj!r   c                    | j                          | j                  dd|j                   xr t        |j                  t
                    5  | j                  |j                         d d d        | j                  d       | j                  |j                         |j                  r-| j                  d       | j                  |j                         y y # 1 sw Y   oxY w)Nr   r   : r   )
rp   r   simpler   r   Namer   r_   
annotationr   r   s     r   visit_AnnAssignz_Unparser.visit_AnnAssignD  s    		__S#4;;'X:dkkSW;XY 	'MM$++&	'

4doo&::JJuMM$**% 		' 	's   CCc                     | j                  d       |j                  r-| j                  d       | j                  |j                         y y )Nreturnr   )rp   r   r_   r   r   s     r   visit_Returnz_Unparser.visit_ReturnN  s5    		(::JJsOMM$**% r   c                 &    | j                  d       y )Npassrp   r   s     r   
visit_Passz_Unparser.visit_PassT  s    		&r   c                 &    | j                  d       y )Nbreakr   r   s     r   visit_Breakz_Unparser.visit_BreakW  s    		'r   c                 &    | j                  d       y )Ncontinuer   r   s     r   visit_Continuez_Unparser.visit_ContinueZ  s    		*r   c                 |      j                  d        j                   fd j                  |j                         y )Nzdel c                  &     j                  d      S r\   r^   r   s   r   r`   z(_Unparser.visit_Delete.<locals>.<lambda>_  r   r   )rp   rX   r   r   r   s   ` r   visit_Deletez_Unparser.visit_Delete]  s(    		&0$--Nr   c                     | j                  d       | j                  |j                         |j                  r-| j	                  d       | j                  |j                         y y )Nzassert r]   )rp   r   testmsgr_   r   s     r   visit_Assertz_Unparser.visit_Asserta  sF    		)dii 88JJtMM$((# r   c                 |      j                  d        j                   fd j                  |j                         y )Nzglobal c                  &     j                  d      S r\   r^   r   s   r   r`   z(_Unparser.visit_Global.<locals>.<lambda>j  r   r   rp   rX   r_   r   r   s   ` r   visit_Globalz_Unparser.visit_Globalh  s(    		)0$**djjIr   c                 |      j                  d        j                   fd j                  |j                         y )Nz	nonlocal c                  &     j                  d      S r\   r^   r   s   r   r`   z*_Unparser.visit_Nonlocal.<locals>.<lambda>n  r   r   r   r   s   ` r   visit_Nonlocalz_Unparser.visit_Nonlocall  s(    		+0$**djjIr   c                 T   | j                  t        j                  |      5  | j                  d       |j                  rV| j                  d       | j                  t        j                  |j                         | j                  |j                         d d d        y # 1 sw Y   y xY w)Nawaitr   )r   r   rB   r_   r   r   rC   r   r   s     r   visit_Awaitz_Unparser.visit_Awaitp  u      !2!2D9 	*JJwzz

3##K$4$4djjAdjj)	* 	* 	*   A4BB'c                 T   | j                  t        j                  |      5  | j                  d       |j                  rV| j                  d       | j                  t        j                  |j                         | j                  |j                         d d d        y # 1 sw Y   y xY w)Nyieldr   )r   r   r3   r_   r   r   rC   r   r   s     r   visit_Yieldz_Unparser.visit_Yieldx  r   r   c                 H   | j                  t        j                  |      5  | j                  d       |j                  st        d      | j                  t        j                  |j                         | j                  |j                         d d d        y # 1 sw Y   y xY w)Nzyield from z-Node can't be used without a value attribute.)	r   r   r3   r_   r   
ValueErrorr   rC   r   r   s     r   visit_YieldFromz_Unparser.visit_YieldFrom  sv      !2!2D9 	&JJ}%:: !PQQ 0 0$**=MM$**%	& 	& 	&s   A.BB!c                 8   | j                  d       |j                  s|j                  rt        d      y | j	                  d       | j                  |j                         |j                  r-| j	                  d       | j                  |j                         y y )Nraisez*Node can't use cause without an exception.r   z from )rp   exccauser  r_   r   r   s     r   visit_Raisez_Unparser.visit_Raise  sn    		'xxzz !MNN

3dhh::JJx MM$**% r   c                 l   | j                  dd       | j                         5  | j                  |j                         d d d        |j                  D ]  }| j                  |        |j
                  rG| j                  dd       | j                         5  | j                  |j
                         d d d        |j                  rH| j                  dd       | j                         5  | j                  |j                         d d d        y y # 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   y xY w)NtryFro   elsefinally)rp   rz   r   r   handlersorelse	finalbody)r   r   exs      r   do_visit_tryz_Unparser.do_visit_try  s    		%	/ZZ\ 	%MM$))$	%-- 	BMM"	;;IIfeI4 +dkk*+>>IIiI7 .dnn-. . 	% 	%+ +. .s#   DD,D*DD'*D3c                 t    | j                   }	 d| _         | j                  |       || _         y # || _         w xY w)NFrN   r  r   r   prev_in_try_stars      r   	visit_Tryz_Unparser.visit_Try  s;    ,,	1 %Dd# 0D 0D   . 	7c                 t    | j                   }	 d| _         | j                  |       || _         y # || _         w xY w)NTr  r  s      r   visit_TryStarz_Unparser.visit_TryStar  s;    ,,	1 $Dd# 0D 0Dr  c                    | j                  | j                  rdndd       |j                  r,| j                  d       | j	                  |j                         |j
                  r6| j                  d       | j                  |j
                  j                         | j                         5  | j	                  |j                         d d d        y # 1 sw Y   y xY w)Nzexcept*exceptFr  r    as )	rp   rN   typer_   r   nameidrz   r   r   s     r   visit_ExceptHandlerz_Unparser.visit_ExceptHandler  s    		t00)hPU	V99JJsOMM$))$99JJvJJtyy||$ZZ\ 	%MM$))$	% 	% 	%s   ,CCc                    | j                          |j                  D ]&  }| j                  dd       | j                  |       ( | j                  d|j                  z   d       t        |d      r| j                  |j                         | j                  dd|j                  xs |j                        5  d}|j                  D ])  }|r| j                  d	       nd
}| j                  |       + |j                  D ])  }|r| j                  d	       nd
}| j                  |       + 	 d d d        | j                         5  | j                  |       d d d        y # 1 sw Y   4xY w# 1 sw Y   y xY w)N@Fr  zclass type_paramsr   r   )r   r]   T)ri   decorator_listrp   r   r  hasattr_type_params_helperr$  r   baseskeywordsr_   rz   r   )r   r   decocommaes        r   visit_ClassDefz_Unparser.visit_ClassDef  sL   '' 	 DIIc5I1MM$	  			(TYY&	>4'$$T%5%56__S#4::3N_O 	!EZZ !JJt$ Ea ! ]] !JJt$ Ea !	! ZZ\ 	:33D9	: 	:	! 	!	: 	:s   9A3E E, E),E5c                 (    | j                  |d       y )Ndef_function_helperr   s     r   visit_FunctionDefz_Unparser.visit_FunctionDef  s    dE*r   c                 (    | j                  |d       y )Nz	async defr0  r   s     r   visit_AsyncFunctionDefz _Unparser.visit_AsyncFunctionDef  s    dK0r   c                    | j                          |j                  D ]&  }| j                  dd       | j                  |       ( |dz   |j                  z   }| j                  |d       t        |d      r| j                  |j                         | j                  dd      5  | j                  |j                         d d d        |j                  r,| j                  d       | j                  |j                         | j                  | j                  |      	      5  | j                  |       d d d        y # 1 sw Y   }xY w# 1 sw Y   y xY w)
Nr#  Fr  r   r$  r   r   r   ry   )ri   r%  rp   r   r  r&  r'  r$  r~   argsr   r_   rz   r   r   )r   r   fill_suffixr*  def_strs        r   r1  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   $D<!E<EEc                      |Kt        |      dkD  r< j                  dd      5   j                   fd j                  |       d d d        y y y # 1 sw Y   y xY w)Nr   []c                  &     j                  d      S r\   r^   r   s   r   r`   z/_Unparser._type_params_helper.<locals>.<lambda>      

4(8 r   )rb   r~   rX   r   )r   r$  s   ` r   r'  z_Unparser._type_params_helper  s_    "s;'7!';c3' V 8$--UV V (<"V Vs   !AAc                    | j                  |j                         |j                  r,| j                  d       | j                  |j                         |j                  r-| j                  d       | j                  |j                         y y )Nr   r   )r_   r  boundr   default_valuer   s     r   visit_TypeVarz_Unparser.visit_TypeVar  sa    

499::JJtMM$**%JJuMM$,,- r   c                     | j                  d|j                  z          |j                  r-| j                  d       | j                  |j                         y y )Nr   r   r_   r  rA  r   r   s     r   visit_TypeVarTuplez_Unparser.visit_TypeVarTuple  sB    

3?#JJuMM$,,- r   c                     | j                  d|j                  z          |j                  r-| j                  d       | j                  |j                         y y )N**r   rD  r   s     r   visit_ParamSpecz_Unparser.visit_ParamSpec  sC    

4$))#$JJuMM$,,- r   c                     | j                  d       | j                  |j                         | j                  |j                         | j                  d       | j                  |j                         y )Nztype r   )rp   r   r  r'  r$  r_   r   r   s     r   visit_TypeAliasz_Unparser.visit_TypeAlias	  sN    		'dii   !1!12

5djj!r   c                 (    | j                  d|       y )Nzfor _for_helperr   s     r   	visit_Forz_Unparser.visit_For  s    &r   c                 (    | j                  d|       y )Nz
async for rL  r   s     r   visit_AsyncForz_Unparser.visit_AsyncFor  s    t,r   c                 n   | j                  |d       | j                  t        j                  |j                         | j                  |j                         | j                  d       | j                  |j                         | j                  | j                  |            5  | j                  |j                         d d d        |j                  rH| j                  dd       | j                         5  | j                  |j                         d d d        y y # 1 sw Y   ^xY w# 1 sw Y   y xY w)NFr   in r6  r  )rp   r   r   r2   r   r   r_   rQ   rz   r   r   r  )r   rp   r   s      r   rM  z_Unparser._for_helper  s    		$	.K--t{{;dkk"

6dii ZZd33D9Z: 	%MM$))$	%;;IIfeI4 +dkk*+ + 	% 	%+ +s   &D9D+D(+D4c                    | j                  dd       | j                  |j                         | j                         5  | j                  |j                         d d d        |j
                  rt        |j
                        dk(  rt        |j
                  d   t              r|j
                  d   }| j                  dd       | j                  |j                         | j                         5  | j                  |j                         d d d        |j
                  r6t        |j
                        dk(  rt        |j
                  d   t              r|j
                  rH| j                  dd       | j                         5  | j                  |j
                         d d d        y y # 1 sw Y   SxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nzif Fr  r   r   zelif r  )	rp   r   r   rz   r   r  rb   r   Ifr   s     r   visit_Ifz_Unparser.visit_If#  sR   		%	/dii ZZ\ 	%MM$))$	% kkc$++.!3
4;;q>SU8V;;q>DIIguI5MM$))$ )dii()	 kkc$++.!3
4;;q>SU8V ;;IIfeI4 +dkk*+ + 	% 	%) )
+ +s#   F,1F9G,F69GGc                    | j                  dd       | j                  |j                         | j                         5  | j                  |j                         d d d        |j
                  rH| j                  dd       | j                         5  | j                  |j
                         d d d        y y # 1 sw Y   ^xY w# 1 sw Y   y xY w)Nzwhile Fr  r  )rp   r   r   rz   r   r  r   s     r   visit_Whilez_Unparser.visit_While5  s    		(E	2dii ZZ\ 	%MM$))$	%;;IIfeI4 +dkk*+ + 	% 	%+ +s   B8C8CCc                 "     j                  dd        j                   fd j                  |j                          j	                   j                  |            5   j                  |j                         d d d        y # 1 sw Y   y xY w)Nzwith Fr  c                  &     j                  d      S r\   r^   r   s   r   r`   z&_Unparser.visit_With.<locals>.<lambda>A  r   r   r6  rp   rX   r   rd   rz   r   r   r   s   ` r   
visit_Withz_Unparser.visit_With?  sj    		'5	10$--LZZd33D9Z: 	%MM$))$	% 	% 	%    BBc                 "     j                  dd        j                   fd j                  |j                          j	                   j                  |            5   j                  |j                         d d d        y # 1 sw Y   y xY w)Nzasync with Fr  c                  &     j                  d      S r\   r^   r   s   r   r`   z+_Unparser.visit_AsyncWith.<locals>.<lambda>G  r   r   r6  rZ  r   s   ` r   visit_AsyncWithz_Unparser.visit_AsyncWithE  sj    		-	70$--LZZd33D9Z: 	%MM$))$	% 	% 	%r\  Fc                    fd}dj                  t        |            |}dv r|D cg c]  }|t        v s| }}|D cg c]	  }|vs| }}|s+t              t	        fd|D        d         }dd |gfS rD|j                  fd	       |d   d   d   k(  r!t        |d         d
k(  sJ dd dz   d   z   |fS c c}w c c}w )zHelper for writing string literals, minimizing escapes.
        Returns the tuple (string literal to write, possible quote types).
        c                     s| dv r| S | dk(  st        d | D              s | j                  d      j                  d      S | S )Nz
	\c              3   ,   K   | ]  }|t         v   y wr   r   ).0ccs     r   	<genexpr>zE_Unparser._str_literal_helper.<locals>.escape_char.<locals>.<genexpr>W  s     #@B)O#@s   unicode_escapeascii)allencodedecode)cescape_special_whitespaces    r   escape_charz2_Unparser._str_literal_helper.<locals>.escape_charQ  sG     -fDy#@a#@ @xx 0188AAHr   r   rg   c              3   2   K   | ]  }d    |v s|  yw)r   Nr   )rd  qstrings     r   rf  z0_Unparser._str_literal_helper.<locals>.<genexpr>e  s     CF1IN!Cs   r   r   c                     | d   d   k(  S )Nr   rr  r   )rp  escaped_strings    r   r`   z/_Unparser._str_literal_helper.<locals>.<lambda>i  s    qt~b7I/I r   )keyr    Nrb  )r   map_MULTI_QUOTESreprrR   sortrb   )	r   rq  quote_typesrm  rn  possible_quotesrp  quotert  s	    ` `    @r   _str_literal_helperz_Unparser._str_literal_helperK  s   	 [&!9:%>!*9PQQ-=OqPOP&5Q.9P1QQ &\FC[CVAYOE!B<%((  %I J q!!$r(::?1-.!333!/!4t!;nR>P!P..# QQs   CC	CCc                 |    | j                  ||      \  }}|d   }| j                  dj                  ||             y)zKWrite string literal value with a best effort attempt to avoid backslashes.rz  r   	{0}{1}{0}N)r}  r_   r   )r   rq  rz  
quote_types       r   _write_str_avoiding_backslashesz)_Unparser._write_str_avoiding_backslashesq  s>    "66v;6W ^


;%%j&9:r   c                    g }t        t              }d}|D ]  \  }}|r8| j                  ||d      \  }}t        |      j	                  |      rd} nN|}n8d|v r|D cg c]  }|t
        v s| }}|sJ |D cg c]	  }||vs| }}|r|}|j                  |        |rodg}|j                          |D ]W  \  }}|r?t        d|z         }d}	|j                  |	      sJ t        |             |t        |	      d }|j                  |       Y d	j                  |      }|d
   }
| j                  dj                  |
|             y c c}w c c}w )NFT)rz  rm  rg   rF   rE   z'"rr  r   r   r  )r   _ALL_QUOTESr}  set
isdisjointrw  appendr   rx  
startswithrb   r   r_   r   )r   parts	new_partsrz  fallback_to_reprr   is_constantnew_quote_typesrp  expected_prefixr  s              r   _ftstring_helperz_Unparser._ftstring_helperw  s   	;' "' 	$E;)-)A)A +.2 *B *&
 '22;?'+$-5=.9"PQ-=O1"PK"P&&;.9"LQe^1"L"L""1KU#'	$*  !'KOO&+ ("{ u-E&+O ++O<Id5kI<!#o"6r:E  '( 	" ^


;%%j%89/ #Q #Ms   E
,E
:	EEc                 &   | j                  |       g }|D ]\  }| j                         5 }| j                  |       d d d        |j                  dj	                        t        |t              f       ^ | j                  |       y # 1 sw Y   MxY w)Nr   )r_   rv   _write_ftstring_innerr  r   r   r   r  )r   valuesprefixfstring_partsr   rt   s         r   _write_ftstringz_Unparser._write_ftstring  s    

6 	E 2F**512  *UH"=>	 	m,2 2s   BB	c                 <    | j                  |j                  d       y )NrU   r  r  r   s     r   visit_JoinedStrz_Unparser.visit_JoinedStr      T[[#.r   c                 <    | j                  |j                  d       y )Ntr  r   s     r   visit_TemplateStrz_Unparser.visit_TemplateStr  r  r   c                    t        |t              r%|j                  D ]  }| j                  ||        y t        |t              rt        |j
                  t              r|j
                  j                  dd      j                  dd      }|rH|j                  dd      }|j                  dd	      }|j                  d
d      }|j                  dd      }| j                  |       y t        |t              r| j                  |       y t        |t              r| j                  |       y t        dj                  t        |                  )Nis_format_spec{z{{}z}}rb  z\\rD   z\'rE   z\"rg   z\nz$Unexpected node inside JoinedStr, {})r   	JoinedStrr  r  r   r   r   replacer_   FormattedValuevisit_FormattedValueInterpolationvisit_Interpolationr  r   rx  )r   r   r  r   s       r   r  z_Unparser._write_ftstring_inner  s	   dI& Q**5*PQh'Jtzz3,GJJ&&sD199#tDEdF3c51c51dE2JJun-%%d+m,$$T*CJJ4PT:VWWr   c                      t        |              }|j                  t        j                  dz   |       |j	                  |      S r   )r  r   r   r4   r   )r   innerunparsers      r   _unparse_interpolation_valuez&_Unparser._unparse_interpolation_value  s9    4:< 0 01 4e<~~e$$r   c                    | j                  dd      5  |r|j                  }n| j                  |j                        }|j	                  d      r| j                  d       | j                  |       |j                  dk7  r3| j                  dj                  t        |j                                     |j                  r.| j                  d       | j                  |j                  d       d d d        y # 1 sw Y   y xY w)	Nr  r  r   rr  z!{}rx   Tr  )r~   r   r  r   r  r_   
conversionr   chrformat_specr  )r   r   use_str_attrexprs       r   _write_interpolationz_Unparser._write_interpolation  s    \\#s# 	Rxx88Ds#

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

5<<DOO(<=>

3**4+;+;D*Q	R 	R 	Rs   CC66C?c                 &    | j                  |       y r   )r  r   s     r   r  z_Unparser.visit_FormattedValue  s    !!$'r   c                 B    | j                  ||j                  d u       y )N)r  )r  r   r   s     r   r  z_Unparser.visit_Interpolation  s    !!$TXXT5I!Jr   c                     | j                  |j                         |j                  r-| j                  d       | j                  |j                         y y Nr   )r_   r   r   r   r   s     r   
visit_Namez_Unparser.visit_Name  s:    

477??JJtMM$//* r   c                     | j                  d       |j                  dk(  r| j                  d       | j                  |j                  t
               y )NFr  ur  )rp   kindr_   r  r   rw  r   s     r   r   z_Unparser._write_docstring  s>    		%	(99JJsO,,TZZ],Sr   c                    t        |t        t        f      rR| j                  t	        |      j                  dt              j                  ddj                  t                           y | j                  t	        |             y )Ninfnanz	({0}-{0}))r   floatcomplexr_   rx  r  _INFSTRr   )r   r   s     r   _write_constantz_Unparser._write_constant  s[    eeW-. JJU( 2 27 ;< JJtE{#r   c                 n   |j                   }t        |t              r8| j                  dd      5  | j	                  | j
                  |       d d d        y |t        u r| j                  d       y |j                  dk(  r| j                  d       | j                  |j                          y # 1 sw Y   y xY w)Nr   r   ...r  )	r   r   tupler~   re   r  Ellipsisr_   r  )r   r   r   s      r   visit_Constantz_Unparser.visit_Constant  s    

eU#c3' = 4 4e<= =hJJuyyC

3  ,= =s   B++B4c                       j                  dd      5   j                   fd j                  |j                         d d d        y # 1 sw Y   y xY w)Nr;  r<  c                  &     j                  d      S r\   r^   r   s   r   r`   z&_Unparser.visit_List.<locals>.<lambda>
  ra   r   )r~   rX   r   eltsr   s   ` r   
visit_Listz_Unparser.visit_List  sC    \\#s# 	POO4dmmTYYO	P 	P 	P   +AAc                     | j                  dd      5  | j                  |j                         |j                  D ]  }| j                  |        	 d d d        y # 1 sw Y   y xY w)Nr;  r<  r~   r   elt
generatorsr   r   gens      r   visit_ListCompz_Unparser.visit_ListComp  T    \\#s# 	#MM$((# #c"#	# 	# 	#   >AA$c                     | j                  dd      5  | j                  |j                         |j                  D ]  }| j                  |        	 d d d        y # 1 sw Y   y xY w)Nr   r   r  r  s      r   visit_GeneratorExpz_Unparser.visit_GeneratorExp  r  r  c                     | j                  dd      5  | j                  |j                         |j                  D ]  }| j                  |        	 d d d        y # 1 sw Y   y xY w)Nr  r  r  r  s      r   visit_SetCompz_Unparser.visit_SetComp  r  r  c                 &   | j                  dd      5  | j                  |j                         | j                  d       | j                  |j                         |j
                  D ]  }| j                  |        	 d d d        y # 1 sw Y   y xY w)Nr  r  r   )r~   r   ru  r_   r   r  r  s      r   visit_DictCompz_Unparser.visit_DictComp  sp    \\#s# 	#MM$((#JJtMM$**% #c"#		# 	# 	#s   A*BBc                    |j                   r| j                  d       n| j                  d       | j                  t        j                  |j
                         | j                  |j
                         | j                  d        | j                  t        j                  dz   |j                  g|j                    | j                  |j                         |j                  D ]$  }| j                  d       | j                  |       & y )Nz async for z for rR  r    if )
is_asyncr_   r   r   r2   r   r   r4   rQ   ifs)r   r   	if_clauses      r   visit_comprehensionz_Unparser.visit_comprehension&  s    ==JJ}%JJwK--t{{;dkk"

6K,,q0$))GdhhGdii  	%IJJvMM)$	%r   c                    | j                  t        j                  |      5  | j                  t        j                  dz   |j                  |j
                         | j                  |j                         | j                  d       | j                  |j
                         | j                  d       | j                  t        j                  |j                         | j                  |j                         d d d        y # 1 sw Y   y xY w)Nr   r  z else )	r   r   r4   r   r   r   r   r_   r  r   s     r   visit_IfExpz_Unparser.visit_IfExp4  s      !1!148 	' 0 01 4diiKMM$))$JJvMM$))$JJx  0 0$++>MM$++&	' 	' 	's   CD  D	c                      |j                   rF j                  dd      5   j                   fd j                  |j                          d d d        y  j	                  d       y # 1 sw Y   y xY w)Nr  r  c                  &     j                  d      S r\   r^   r   s   r   r`   z%_Unparser.visit_Set.<locals>.<lambda>A  r>  r   z{*()})r  r~   rX   r   r_   r   s   ` r   	visit_Setz_Unparser.visit_Set>  s^    99c3' T 8$--ST T
 JJwT Ts   +A&&A/c           	            fd fd} j                  dd      5   j                   fd|t        |j                  |j                               d d d        y # 1 sw Y   y xY w)Nc                 l    j                  |        j                  d       j                  |       y r  r   r_   )kvr   s     r   write_key_value_pairz2_Unparser.visit_Dict.<locals>.write_key_value_pairH  s'    MM!JJtMM!r   c                     | \  }}|Cj                  d       j                  t        j                  |       j	                  |       y  ||       y )NrG  )r_   r   r   r9   r   )r   r  r  r   r  s      r   
write_itemz(_Unparser.visit_Dict.<locals>.write_itemM  sK    DAqy 

4 ##K$4$4a8a $Q*r   r  r  c                  &     j                  d      S r\   r^   r   s   r   r`   z&_Unparser.visit_Dict.<locals>.<lambda>Z  r   r   )r~   rX   zipkeysr  )r   r   r  r  s   `  @r   
visit_Dictz_Unparser.visit_DictG  sT    	
		+ \\#s# 	OO(*c$))T[[6Q	 	 	s   5AA'c                    | j                  ddt        |j                        dk(  xs" | j                  |      t        j
                  kD        5  | j                  | j                  |j                         d d d        y # 1 sw Y   y xY w)Nr   r   r   )r   rb   r  r   r   r2   re   r   r   s     r   visit_Tuplez_Unparser.visit_Tuple]  sl    __		NaP4#6#6t#<{?P?P#P
 	6
 OODMM4995	6 	6 	6s   'A>>B~not+-)InvertNotUAddUSub)r  r  r  r  c                    | j                   |j                  j                  j                     }| j                  |   }| j                  ||      5  | j                  |       |t        j                  ur| j                  d       | j                  ||j                         | j                  |j                         d d d        y # 1 sw Y   y xY w)Nr   )unopr   r   r   unop_precedencer   r_   r   r@   r   operandr   )r   r   operatoroperator_precedences       r   visit_UnaryOpz_Unparser.visit_UnaryOpm  s    99TWW..778"228<  !4d; 	(JJx  #+*<*<<

3 3T\\BMM$,,'	( 	( 	(s   A,CCr   r#  /%<<>>|^&//rG  )AddSubMultMatMultDivModLShiftRShiftBitOrBitXorBitAndFloorDivPow)r  r  r   r#  r  r  r  r  r  r  r	  r
  rG  )rG  c                     | j                   |j                  j                  j                     }| j                  |   }| j                  ||      5  || j                  v r|dz   }|}n|}|dz   }| j                  ||j                         | j                  |j                         | j                  dj                  |             | j                  ||j                         | j                  |j                         d d d        y # 1 sw Y   y xY w)Nr    {} )r   r   r   r   binop_precedencer   binop_rassocr   leftr   r_   r   right)r   r   r   r  left_precedenceright_precedences         r   visit_BinOpz_Unparser.visit_BinOp  s    ::dgg//889"33H=  !4d; 	&4,,,"5"9#6 "5#6#: ;MM$))$JJv}}X./ 0$**=MM$**%	& 	& 	&s   B,DDz==z!=<z<=>z>=iszis notinznot in)
EqNotEqLtLtEGtGtEIsIsNotInNotInc                    | j                  t        j                  |      5   | j                  t        j                  dz   |j                  g|j
                    | j                  |j                         t        |j                  |j
                        D ]N  \  }}| j                  d| j                  |j                  j                     z   dz          | j                  |       P 	 d d d        y # 1 sw Y   y xY w)Nr   r   )r   r   r8   r   r  comparatorsr   r  opsr_   cmpopsr   r   )r   r   or,  s       r   visit_Comparez_Unparser.visit_Compare  s      $7 	!D! 3TYYRAQAQRMM$))$DHHd&6&67 !1

3Q[[-A-A!BBSHIa !	! 	! 	!s   CC11C:andor)AndOr)r5  r6  c                 H     j                   |j                  j                  j                     } j                  |   g fd} j                  d   |      5  dj                  |       j                   fd||j                         d d d        y # 1 sw Y   y xY w)Nc                 l    dxx   dz  cc<   j                  d   |        j                  |        y )Nr   r   )r   r   )r   r  r   s    r   increasing_level_traversez9_Unparser.visit_BoolOp.<locals>.increasing_level_traverse  s5    "a'" 3A 6=MM$r   r   r  c                  &    j                         S r   r^   )sr   s   r   r`   z(_Unparser.visit_BoolOp.<locals>.<lambda>  s    DJJqM r   )	boolopsr   r   r   boolop_precedencer   r   rX   r  )r   r   r   r;  r  r=  s   `   @@r   visit_BoolOpz_Unparser.visit_BoolOp  s    << 1 1 : :;#55h?@	 
   !4Q!7> 	[h'AOO13LdkkZ	[ 	[ 	[s   3BB!c                    | j                  t        j                  |j                         | j	                  |j                         t        |j                  t              r5t        |j                  j                  t              r| j                  d       | j                  d       | j                  |j                         y )Nr   r   )
r   r   rC   r   r   r   r   intr_   attrr   s     r   visit_Attributez_Unparser.visit_Attribute  su    K,,djj9djj! djj(+
4::;K;KS0QJJsO

3

499r   c                    | j                  t        j                  |j                         | j	                  |j                         | j                  dd      5  d}|j                  D ])  }|r| j                  d       nd}| j	                  |       + |j                  D ])  }|r| j                  d       nd}| j	                  |       + 	 d d d        y # 1 sw Y   y xY w)Nr   r   Fr]   T)	r   r   rC   funcr   r~   r7  r_   r)  )r   r   r+  r,  s       r   
visit_Callz_Unparser.visit_Call  s    K,,dii8dii \\#s# 	!EYY !JJt$ Ea ! ]] !JJt$ Ea !	! 	! 	!s   A3CCc                    d }| j                  t        j                  |j                         | j	                  |j                         | j                  dd      5   ||j                        r1| j                  | j                  |j                  j                         n| j	                  |j                         d d d        y # 1 sw Y   y xY w)Nc                 >    t        | t              xr | j                  S r   )r   Tupler  )slice_values    r   is_non_empty_tuplez5_Unparser.visit_Subscript.<locals>.is_non_empty_tuple  s    ;. %$$r   r;  r<  )	r   r   rC   r   r   r~   slicere   r  )r   r   rL  s      r   visit_Subscriptz_Unparser.visit_Subscript  s    	 	K,,djj9djj!\\#s# 	*!$**-tzz?djj)	* 	* 	*s   ACCc                     | j                  d       | j                  t        j                  |j                         | j                  |j                         y )Nr   )r_   r   r   r9   r   r   r   s     r   visit_Starredz_Unparser.visit_Starred  s7    

3K,,djj9djj!r   c                 &    | j                  d       y )Nr  r^   r   s     r   visit_Ellipsisz_Unparser.visit_Ellipsis  s    

5r   c                 4   |j                   r| j                  |j                          | j                  d       |j                  r| j                  |j                         |j                  r-| j                  d       | j                  |j                         y y )Nrx   )lowerr   r_   upperstepr   s     r   visit_Slicez_Unparser.visit_Slice  sb    ::MM$**%

3::MM$**%99JJsOMM$))$ r   c                     | j                  dd       | j                  |j                         | j                         5  |j                  D ]  }| j                  |        	 d d d        y # 1 sw Y   y xY w)Nzmatch Fr  )rp   r   subjectrz   cases)r   r   cases      r   visit_Matchz_Unparser.visit_Match  s_    		(E	2dll#ZZ\ 	$

 $d#$	$ 	$ 	$s   #A,,A5c                 l   d}|j                   |j                  z   }d gt        |      t        |j                        z
  z  |j                  z   }t	        t        ||      d      D ]  \  }}|\  }}|rd}n| j                  d       | j                  |       |r"| j                  d       | j                  |       |t        |j                         k(  so| j                  d        |j                  s|j                  r|rd}n| j                  d       | j                  d       |j                  rq| j                  |j                  j                         |j                  j                  r6| j                  d       | j                  |j                  j                         |j                  rot        |j                  |j                        D ]L  \  }}| j                  d       | j                  |       |s+| j                  d       | j                  |       N |j                  r|rd}n| j                  d       | j                  d	|j                  j                  z          |j                  j                  r7| j                  d       | j                  |j                  j                         y y y )
NTr   Fr]   =z, /r   r   rG  )posonlyargsr7  rb   defaults	enumerater  r_   r   vararg
kwonlyargsr   r   kw_defaultskwarg)	r   r   firstall_argsr`  indexelementsads	            r   visit_argumentsz_Unparser.visit_arguments  s   ##dii/6S]S-??@4==P(Xx)@!D 	"OE8DAq

4 MM!

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

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

4 JJsO{{

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

4 a JJsOMM!$% ::

4 JJtdjjmm+,zz$$

4 djj334 % r   c                     |j                   | j                  d       n,| j                  |j                          | j                  d       | j                  |j                         y )NrG  r^  )argr_   r   r   r   s     r   visit_keywordz_Unparser.visit_keywordK  sC    88JJtJJtxx JJsOdjj!r   c                    | j                  t        j                  |      5  | j                  d       | j	                         5 }| j                  |j                         d d d        r | j                  dg|  | j                  d       | j                  t        j                  |j                         | j                  |j                         d d d        y # 1 sw Y   }xY w# 1 sw Y   y xY w)Nlambdar   r   )	r   r   r4   r_   rv   r   r7  r   r   )r   r   rt   s      r   visit_Lambdaz_Unparser.visit_LambdaS  s      !1!148 	%JJx  )Fdii()

3((JJt 0 0$))<MM$))$	% 	%) )	% 	%s$   "C'CA3C'C$	 C''C0c                     | j                  |j                         |j                  r| j                  d|j                  z          y y Nr  )r_   r  asnamer   s     r   visit_aliasz_Unparser.visit_alias^  s3    

499;;JJv+, r   c                     | j                  |j                         |j                  r-| j                  d       | j                  |j                         y y rt  )r   context_exproptional_varsr_   r   s     r   visit_withitemz_Unparser.visit_withitemc  s@    d''(JJvMM$,,- r   c                 P   | j                  dd       | j                  |j                         |j                  r,| j	                  d       | j                  |j                         | j                         5  | j                  |j                         d d d        y # 1 sw Y   y xY w)Nzcase Fr  r  )rp   r   patternguardr_   rz   r   r   s     r   visit_match_casez_Unparser.visit_match_casei  ss    		'5	1dll#::JJvMM$**%ZZ\ 	%MM$))$	% 	% 	%s   7BB%c                 :    | j                  |j                         y r   )r   r   r   s     r   visit_MatchValuez_Unparser.visit_MatchValuer  s    djj!r   c                 :    | j                  |j                         y r   )r  r   r   s     r   visit_MatchSingletonz_Unparser.visit_MatchSingletonu  s    TZZ(r   c                       j                  dd      5   j                   fd j                  |j                         d d d        y # 1 sw Y   y xY w)Nr;  r<  c                  &     j                  d      S r\   r^   r   s   r   r`   z/_Unparser.visit_MatchSequence.<locals>.<lambda>{  r   r   )r~   rX   r   patternsr   s   ` r   visit_MatchSequencez_Unparser.visit_MatchSequencex  sA    \\#s# 	OO($--	 	 	r  c                 d    |j                   }|d}| j                  dj                  |             y )N_z*{})r  r_   r   )r   r   r  s      r   visit_MatchStarz_Unparser.visit_MatchStar~  s*    yy<D

5<<%&r   c           
      P     fd} j                  dd      5  |j                  } j                   fd|t        ||j                  d             |j
                  }|3|r j                  d        j                  dj                  |             d d d        y # 1 sw Y   y xY w)	Nc                 v    | \  }}j                  |       j                  d       j                  |       y r  r  )pairr  pr   s      r   write_key_pattern_pairz<_Unparser.visit_MatchMapping.<locals>.write_key_pattern_pair  s0    DAqMM!JJtMM!r   r  r  c                  &     j                  d      S r\   r^   r   s   r   r`   z._Unparser.visit_MatchMapping.<locals>.<lambda>  r   r   Tstrictr]   z**{})r~   r  rX   r  r  restr_   r   )r   r   r  r  r  s   `    r   visit_MatchMappingz_Unparser.visit_MatchMapping  s    	 \\#s# 	099DOO(&D$--5
 99DJJt$

6==./	0 	0 	0s   A:BB%c           
           j                  t        j                  |j                          j	                  |j                          j                  dd      5  |j                  } j                   fd j                  |       |j                  }|rD fd}|r j                  d        j                   fd|t        ||j                  d             d d d        y # 1 sw Y   y xY w)	Nr   r   c                  &     j                  d      S r\   r^   r   s   r   r`   z,_Unparser.visit_MatchClass.<locals>.<lambda>  r   r   c                 r    | \  }}j                  dj                  |             j                  |       y )Nz{}=)r_   r   r   )r  rC  r|  r   s      r   write_attr_patternz6_Unparser.visit_MatchClass.<locals>.write_attr_pattern  s-    $(MD'JJu||D12MM'*r   r]   c                  &     j                  d      S r\   r^   r   s   r   r`   z,_Unparser.visit_MatchClass.<locals>.<lambda>  s    DJJt, r   Tr  )r   r   rC   clsr   r~   r  rX   	kwd_attrsr_   r  kwd_patterns)r   r   r  attrsr  s   `    r   visit_MatchClassz_Unparser.visit_MatchClass  s    K,,dhh7dhh\\#s# 	}}HOO($-- NNE+
 JJt$,&t00>	 	 	s   A?C!!C*c                    |j                   }|j                  }|| j                  d       y || j                  |j                          y | j                  t        j
                  |      5  | j                  t        j                  |j                         | j                  |j                         | j                  dj                  |j                                d d d        y # 1 sw Y   y xY w)Nr  z as {})
r  r|  r_   r   r   r4   r   r:   r   r   )r   r   r  r|  s       r   visit_MatchAsz_Unparser.visit_MatchAs  s    yy,,<JJsO_JJtyy!$$[%5%5t< 7##KOOT\\Bdll+

8??499567 7 7s   +A0C$$C-c                       j                  t        j                  |      5    j                  t        j                  dz   g|j                     j                   fd j                  |j                         d d d        y # 1 sw Y   y xY w)Nr   c                  &     j                  d      S )Nz | r^   r   s   r   r`   z)_Unparser.visit_MatchOr.<locals>.<lambda>  s    DJJu$5 r   )r   r   r:   r   r  rX   r   r   s   ` r   visit_MatchOrz_Unparser.visit_MatchOr  sk      $7 	UD! 3DdmmDOO5t}}dmmT	U 	U 	Us   ABB)r   Tr   )F)r   r   r   r0   r   rX   re   ri   rl   rp   r_   r   rv   rz   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-  r2  r4  r1  r'  rB  rE  rH  rJ  rN  rP  rM  rU  rW  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   r7   r@   r  r  r   r>   r?   r=   r:   r;   r<   rA   r  	frozensetr  r   r2  r4  r>  r6   r5   r?  r@  rD  rG  rN  rP  rR  rW  r\  rl  ro  rr  rv  rz  r~  r  r  r  r  r  r  r  r  __classcell__)r   s   @r   rH   rH   f   s   %
H

5" ' '    !Q=1 1
/%%')$"
&MM	%"&&O$JJ**&
&.11	%:4+1:"V
..."'-++$+%% #.$/L CN ;(:T	-//X*%
R (K+T
$
-P####%' ,6 %cBD	O
( E" __  W%L&$ F! 4(G +{~~F[	!$* "
%$15f"	%-
.%")'0(.7Ur   rH   c                 8    t               }|j                  |       S r   )rH   r   )ast_objr  s     r   unparser    s    {H>>'""r   )sysr   
contextlibr   rq  r   objectr	   rx  
float_info
max_10_expr  r   _SINGLE_QUOTESrw  r  NodeVisitorrH   r  r   r   r   <module>r     sx   h   % &  cnn//!34
4& 2 },YU YUv"#r   