
    1Vh"k                     
   d Z ddlmZmZ ddlZddlZddlZddlZddlZddlm	Z	 d e
ej                  j                  dz         z   Zd Z G d d	      Zej                   fd
Zd Zd Zedk(  r eej*                  dd        yy)z'Usage: unparse.py <path to source file>    )print_functionunicode_literalsN)StringIO1e   c                     t        |      }	  |t        |             |D ]  } |          ||        y# t        $ r Y yw xY w)z<Call f on each item in seq, calling inter() in between.
    N)iternextStopIteration)interfseqxs       C/home/dcms/DCMS/lib/python3.12/site-packages/astunparse/unparser.py
interleaver      sN     s)C	$s)  	AGaD	  s   5 	A Ac                      e Zd ZdZej
                  fdZdyd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 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, Z0dzd-Z1d. Z2d/ Z3d0 Z4d1 Z5d2 Z6d3 Z7d4 Z8d5 Z9d6 Z:d7 Z;d8 Z<d9 Z=d: Z>d; Z?d< Z@d= ZAd> ZBd? ZCd@ ZDdA ZEdB ZFdC ZGdD ZHdE ZIdF ZJdG ZKdHdIdJdKdLZLdM ZMdJdKdNdOdPdQdRdSdTdUdVdWdXdYZNdZ ZOd[d\d]d^d_d`dadbdcddde
ZPdf ZQeRj                  dgeRj                  dhiZUdi ZVdj ZWdk ZXdl ZYdm ZZdn Z[do Z\dp Z]dq Z^dr Z_ds Z`dt Zadu Zbdv Zcdw Zdyx){UnparserzMethods in this class recursively traverse an AST and
    output source code for the abstract syntax; original formatting
    is disregarded. c                     || _         g | _        d| _        | j                  |       t	        d| j                          | j                   j                          y)zTUnparser(tree, file=sys.stdout) -> None.
         Print the source for tree to file.r    fileN)r   future_imports_indentdispatchprintflush)selftreer   s      r   __init__zUnparser.__init__    sA      dbtvv    c                 `    | j                   j                  dd| j                  z  z   |z          y)zBIndent a piece of text, according to the current indentation level
z    N)r   writer   r   texts     r   fillzUnparser.fill*   s%    T&--45r    c                 `    | j                   j                  t        j                  |             y)z+Append a piece of text to the current line.N)r   r#   six	text_typer$   s     r   r#   zUnparser.write.   s    S]]4()r    c                 P    | j                  d       | xj                  dz  c_        y)z(Print ':', and increase the indentation.:r   N)r#   r   r   s    r   enterzUnparser.enter2   s    

3r    c                 .    | xj                   dz  c_         y)zDecrease the indentation level.r   N)r   r,   s    r   leavezUnparser.leave7   s    r    c                     t        |t              r|D ]  }| j                  |        yt        | d|j                  j
                  z         } ||       y)z:Dispatcher function, dispatching tree type T to method _T.N_)
isinstancelistr   getattr	__class____name__)r   r   tmeths       r   r   zUnparser.dispatch;   sL    dD! !a !tS!8!889T
r    c                 H    |j                   D ]  }| j                  |        y Nbodyr   r   r   stmts      r   _ModulezUnparser._ModuleL   !    II 	 DMM$	 r    c                 H    |j                   D ]  }| j                  |        y r:   r;   r=   s      r   _InteractivezUnparser._InteractiveP   r@   r    c                 :    | j                  |j                         y r:   )r   r<   r   r   s     r   _ExpressionzUnparser._ExpressionT   s    dii r    c                 Z    | j                          | j                  |j                         y r:   )r&   r   valuerD   s     r   _ExprzUnparser._ExprX   s    		djj!r    c                     | j                  d       | j                  |j                         | j                  d       | j                  |j                         | j                  d       y )N(z := ))r#   r   targetrG   rD   s     r   
_NamedExprzUnparser._NamedExpr\   sD    

3dkk"

6djj!

3r    c                 p      j                  d       t         fd j                  |j                         y )Nzimport c                  &     j                  d      S N, r#   r,   s   r   <lambda>z"Unparser._Import.<locals>.<lambda>e       4::d+ r    )r&   r   r   namesr   r7   s   ` r   _ImportzUnparser._Importc   s$    		)+T]]AGGDr    c                     |j                   r;|j                   dk(  r, j                  j                  d |j                  D                j	                  d        j                  d|j                  z         |j                   r j                  |j                           j                  d       t         fd j                  |j                         y )N
__future__c              3   4   K   | ]  }|j                     y wr:   )name).0ns     r   	<genexpr>z'Unparser._ImportFrom.<locals>.<genexpr>j   s     &?!qvv&?s   zfrom .z import c                  &     j                  d      S rP   rR   r,   s   r   rS   z&Unparser._ImportFrom.<locals>.<lambda>q   rT   r    )	moduler   extendrU   r&   r#   levelr   r   rV   s   ` r   _ImportFromzUnparser._ImportFromg   s    88L0&&&?qww&??		'

3=!88JJqxx 

:+T]]AGGDr    c                     | j                          |j                  D ]$  }| j                  |       | j                  d       & | j                  |j                         y )N = )r&   targetsr   r#   rG   )r   r7   rL   s      r   _AssignzUnparser._Assigns   sH    		ii 	FMM&!JJu	 	aggr    c                    | j                          | j                  |j                         | j                  d| j                  |j
                  j                  j                     z   dz          | j                  |j                         y )N z= )	r&   r   rL   r#   binopopr5   r6   rG   rV   s     r   
_AugAssignzUnparser._AugAssignz   sX    		ahh

3tzz!$$.."9"9::4?@aggr    c                 (   | j                          |j                  s5t        |j                  t        j
                        r| j                  d       | j                  |j                         |j                  s5t        |j                  t        j
                        r| j                  d       | j                  d       | j                  |j                         |j                  r-| j                  d       | j                  |j                         y y )NrJ   rK   : rf   )
r&   simpler2   rL   astNamer#   r   
annotationrG   rV   s     r   
_AnnAssignzUnparser._AnnAssign   s    		xxJqxx:JJsOahhxxJqxx:JJsO

4all#77JJuMM!''" r    c                     | j                  d       |j                  r-| j                  d       | j                  |j                         y y )Nreturnrj   )r&   rG   r#   r   rV   s     r   _ReturnzUnparser._Return   s5    		(77JJsOMM!''" r    c                 &    | j                  d       y )Npassr&   rV   s     r   _PasszUnparser._Pass   s    		&r    c                 &    | j                  d       y )Nbreakrz   rV   s     r   _BreakzUnparser._Break   s    		'r    c                 &    | j                  d       y )Ncontinuerz   rV   s     r   	_ContinuezUnparser._Continue   s    		*r    c                 p      j                  d       t         fd j                  |j                         y )Nzdel c                  &     j                  d      S rP   rR   r,   s   r   rS   z"Unparser._Delete.<locals>.<lambda>   rT   r    )r&   r   r   rg   rV   s   ` r   _DeletezUnparser._Delete   s$    		&+T]]AIIFr    c                     | j                  d       | j                  |j                         |j                  r-| j	                  d       | j                  |j                         y y )Nzassert rQ   )r&   r   testmsgr#   rV   s     r   _AssertzUnparser._Assert   sF    		)aff55JJtMM!%%  r    c                 >   | j                  d       | j                  |j                         |j                  r,| j	                  d       | j                  |j                         |j
                  r-| j	                  d       | j                  |j
                         y y )Nzexec  in rQ   )r&   r   r<   globalsr#   localsrV   s     r   _ExeczUnparser._Exec   si    		'aff99JJvMM!))$88JJtMM!((# r    c                 J   | j                  d       d}|j                  r.| j                  d       | j                  |j                         d}|j                  D ])  }|r| j                  d       nd}| j                  |       + |j
                  s| j                  d       y y )Nzprint F>>TrQ   ,)r&   destr#   r   valuesnl)r   r7   do_commaes       r   _PrintzUnparser._Print   s    		(66JJtMM!&&!H 	A

4(MM!	 ttJJsO r    c                 p      j                  d       t         fd j                  |j                         y )Nzglobal c                  &     j                  d      S rP   rR   r,   s   r   rS   z"Unparser._Global.<locals>.<lambda>   rT   r    r&   r   r#   rU   rV   s   ` r   _GlobalzUnparser._Global   s$    		)+TZZAr    c                 p      j                  d       t         fd j                  |j                         y )Nz	nonlocal c                  &     j                  d      S rP   rR   r,   s   r   rS   z$Unparser._Nonlocal.<locals>.<lambda>   rT   r    r   rV   s   ` r   	_NonlocalzUnparser._Nonlocal   s$    		++TZZAr    c                     | j                  d       | j                  d       |j                  r,| j                  d       | j                  |j                         | j                  d       y )NrJ   awaitrj   rK   r#   rG   r   rV   s     r   _AwaitzUnparser._Await   F    

3

777JJsOMM!''"

3r    c                     | j                  d       | j                  d       |j                  r,| j                  d       | j                  |j                         | j                  d       y )NrJ   yieldrj   rK   r   rV   s     r   _YieldzUnparser._Yield   r   r    c                     | j                  d       | j                  d       |j                  r,| j                  d       | j                  |j                         | j                  d       y )NrJ   z
yield fromrj   rK   r   rV   s     r   
_YieldFromzUnparser._YieldFrom   sF    

3

< 77JJsOMM!''"

3r    c                    | j                  d       t        j                  r|j                  s|j                  rJ y | j                  d       | j                  |j                         |j                  r-| j                  d       | j                  |j                         y y | j                  d       |j                  r| j                  |j                         |j                  r,| j                  d       | j                  |j                         |j                  r-| j                  d       | j                  |j                         y y )Nraiserj   z from rQ   )
r&   r(   PY3exccauser#   r   typeinsttbackrV   s     r   _RaisezUnparser._Raise   s    		'775577"{JJsOMM!%% ww

8$agg&  JJsOvvaff%vv

4 aff%ww

4 agg& r    c                 B   | j                  d       | j                          | j                  |j                         | j	                          |j
                  D ]  }| j                  |        |j                  rL| j                  d       | j                          | j                  |j                         | j	                          |j                  rM| j                  d       | j                          | j                  |j                         | j	                          y y )Ntryelsefinally)r&   r-   r   r<   r/   handlersorelse	finalbodyr   r7   exs      r   _TryzUnparser._Try   s    		%

aff

** 	BMM"	88IIfJJLMM!((#JJL;;IIi JJLMM!++&JJL	 r    c                    | j                  d       | j                          | j                  |j                         | j	                          |j
                  D ]  }| j                  |        |j                  rM| j                  d       | j                          | j                  |j                         | j	                          y y )Nr   r   )r&   r-   r   r<   r/   r   r   r   s      r   
_TryExceptzUnparser._TryExcept  s    		%

aff

** 	BMM"	88IIfJJLMM!((#JJL	 r    c                    t        |j                        dk(  rCt        |j                  d   t        j                        r| j                  |j                         nL| j                  d       | j                          | j                  |j                         | j                          | j                  d       | j                          | j                  |j                         | j                          y )Nr   r   r   r   )
lenr<   r2   rq   	TryExceptr   r&   r-   r/   r   rV   s     r   _TryFinallyzUnparser._TryFinally  s    qvv;!
166!9cmm DMM!&&!IIeJJLMM!&&!JJL		)

akk"

r    c                    | j                  d       |j                  r,| j                  d       | j                  |j                         |j                  rX| j                  d       t
        j                  r| j                  |j                         n| j                  |j                         | j                          | j                  |j                         | j                          y )Nexceptrj    as )
r&   r   r#   r   r[   r(   r   r-   r<   r/   rV   s     r   _ExceptHandlerzUnparser._ExceptHandler$  s    		(66JJsOMM!&&!66JJvww

166"aff%

aff

r    c                    | j                  d       |j                  D ]$  }| j                  d       | j                  |       & | j                  d|j                  z          t
        j                  rG| j                  d       d}|j                  D ])  }|r| j                  d       nd}| j                  |       + |j                  D ])  }|r| j                  d       nd}| j                  |       + t        j                  d d d	k  r|j                  rB|r| j                  d       nd}| j                  d
       | j                  |j                         |j                  rB|r| j                  d       nd}| j                  d       | j                  |j                         | j                  d       na|j                  rU| j                  d       |j                  D ]$  }| j                  |       | j                  d       & | j                  d       | j                          | j                  |j                         | j                          y )Nr"   @zclass rJ   FrQ   T         ***rK   )r#   decorator_listr&   r   r[   r(   r   baseskeywordssysversion_infostarargskwargsr-   r<   r/   )r   r7   decocommar   as         r   	_ClassDefzUnparser._ClassDef3  s   

4$$ 	 DIIcNMM$	  			(166/"77JJsOEWW !$**T*"ea ! ZZ !$**T*"ea ! #f,::djj."&%JJsOMM!**-88djj."&%JJt$MM!((+JJsOWW

3 %AMM!$JJt$% 

3

aff

r    c                 (    | j                  |d       y )Ndef_Unparser__FunctionDef_helperrV   s     r   _FunctionDefzUnparser._FunctionDefZ  s    !!!U+r    c                 (    | j                  |d       y )Nz	async defr   rV   s     r   _AsyncFunctionDefzUnparser._AsyncFunctionDef]  s    !!![1r    c                    | j                  d       |j                  D ]$  }| j                  d       | j                  |       & |dz   |j                  z   dz   }| j                  |       | j                  |j
                         | j                  d       t        |dd      r,| j                  d       | j                  |j                         | j                          | j                  |j                         | j                          y )	Nr"   r   rj   rJ   rK   returnsFz -> )r#   r   r&   r   r[   argsr4   r   r-   r<   r/   )r   r7   fill_suffixr   def_strs        r   __FunctionDef_helperzUnparser.__FunctionDef_helper`  s    

4$$ 	 DIIcNMM$	  c/!&&(3.		'aff

31i'JJvMM!))$

aff

r    c                 (    | j                  d|       y )Nzfor _Unparser__For_helperrV   s     r   _ForzUnparser._Forp  s    &!$r    c                 (    | j                  d|       y )Nz
async for r   rV   s     r   	_AsyncForzUnparser._AsyncFors  s    ,*r    c                    | j                  |       | j                  |j                         | j                  d       | j                  |j                         | j                          | j                  |j                         | j                          |j                  rM| j                  d       | j                          | j                  |j                         | j                          y y )Nr   r   )	r&   r   rL   r#   r	   r-   r<   r/   r   )r   r&   r7   s      r   __For_helperzUnparser.__For_helperv  s    		$ahh

6aff

aff

88IIfJJLMM!((#JJL	 r    c                    | j                  d       | j                  |j                         | j                          | j                  |j                         | j                          |j                  rt        |j                        dk(  rt        |j                  d   t        j                        r|j                  d   }| j                  d       | j                  |j                         | j                          | j                  |j                         | j                          |j                  r@t        |j                        dk(  r(t        |j                  d   t        j                        r|j                  rM| j                  d       | j                          | j                  |j                         | j                          y y )Nzif r   r   zelif r   )r&   r   r   r-   r<   r/   r   r   r2   rq   IfrV   s     r   _IfzUnparser._If  s!   		%aff

aff

xxCMQ.!((1+svv.AIIgMM!&&!JJLMM!&&!JJL xxCMQ.!((1+svv. 88IIfJJLMM!((#JJL	 r    c                    | j                  d       | j                  |j                         | j                          | j                  |j                         | j                          |j                  rM| j                  d       | j                          | j                  |j                         | j                          y y )Nzwhile r   )r&   r   r   r-   r<   r/   r   rV   s     r   _WhilezUnparser._While  sz    		(aff

aff

88IIfJJLMM!((#JJL	 r    c                      j                  |rdnd       t        |d      r%t         fd j                  |j                         nS j                  |j
                         |j                  r, j                  d        j                  |j                          j                           j                  |j                          j                          y )Nzasync with zwith itemsc                  &     j                  d      S rP   rR   r,   s   r   rS   z(Unparser._generic_With.<locals>.<lambda>      tzz$/ r    r   )r&   hasattrr   r   r   context_exproptional_varsr#   r-   r<   r/   )r   r7   async_s   `  r   _generic_WithzUnparser._generic_With  s    		6-w71g/HMM!..)

6"aoo.

aff

r    c                 &    | j                  |       y r:   r   rV   s     r   _WithzUnparser._With  s    1r    c                 *    | j                  |d       y )NT)r   r   rV   s     r   
_AsyncWithzUnparser._AsyncWith  s    1T*r    c                 L    | j                  t        |j                               y r:   )r#   reprsrV   s     r   _ByteszUnparser._Bytes  s    

49r    c                     t         j                  r%| j                  t        |j                               y d| j
                  vr%| j                  t        |j                               y t        |j                  t              r(| j                  dt        |j                        z          y t        |j                  t              r4| j                  t        |j                        j                  d             y J d       )Nr   buzshouldn't get here)
r(   r   r#   r  r  r   r2   strunicodelstriprD   s     r   _StrzUnparser._Str  s    77JJtDFF|$
 ")<)<<

4<(DFFC(

3dff-.DFFG,

4<..s34222ur    c                 ,   | j                  d       t               }| j                  ||j                          |j                         }d|v sd|v rddg}ng d}|D ]  }||vsdj	                  ||      } n t        |      }| j                  |       y )	Nr   r"   '''""")'"r  r  z{quote_type}{v}{quote_type})
quote_typev)r#   r   _fstring_JoinedStrgetvalueformatr  )r   r7   stringr  quote_typesr  s         r   
_JoinedStrzUnparser._JoinedStr  s    

36<<0 OO19	 %.K2K% 	J"188JRS8T	
 QA

1r    c                     | j                  d       t               }| j                  ||j                          | j                  t        |j	                                      y )Nr   )r#   r   r  r  r  )r   r7   r  s      r   _FormattedValuezUnparser._FormattedValue  s@    

36<<0

4)*+r    c                 |    |j                   D ]-  }t        | dt        |      j                  z         } |||       / y )N	_fstring_)r   r4   r   r6   )r   r7   r#   rG   r8   s        r   r  zUnparser._fstring_JoinedStr  s:    XX 	E4tE{/C/C!CDD	r    c                 l    |j                   j                  dd      j                  dd      } ||       y N{z{{}z}})r  replacer   r7   r#   rG   s       r   _fstring_StrzUnparser._fstring_Str  s*    C&..sD9er    c                     t        |j                  t              sJ |j                  j                  dd      j                  dd      } ||       y r  )r2   rG   r  r!  r"  s       r   _fstring_ConstantzUnparser._fstring_Constant  s>    !''3'''T*223=er    c                     |d       t               }t        |j                  |       |j                         j	                  d      }|j                  d      r |d        ||       |j                  dk7  r3t        |j                        }|dv sJ  |dj                  |             |j                  rG |d       t        | d	t        |j                        j                  z         } ||j                  |        |d
       y )Nr  r"   rj   sraz!{conversion})
conversionr+   r  r   )r   r   rG   r  rstrip
startswithr)  chrr  format_specr4   r   r6   )r   r7   r#   exprr)  r8   s         r   _fstring_FormattedValuez Unparser._fstring_FormattedValue  s    c
z$}}%%d+??3#Jd<<2Q\\*J&&&/((J(?@==#J4tAMM/B/K/K!KLD&c
r    c                 :    | j                  |j                         y r:   )r#   idrV   s     r   _NamezUnparser._Name  s    

144r    c                 L    | j                  t        |j                               y r:   )r#   r  rG   rV   s     r   _NameConstantzUnparser._NameConstant  s    

4=!r    c                 ~    | j                  d       | j                  |j                         | j                  d       y )N`r#   r   rG   rV   s     r   _ReprzUnparser._Repr  s(    

3agg

3r    c                     t        |t        t        f      r/| j                  t	        |      j                  dt                     y | j                  t	        |             y )Ninf)r2   floatcomplexr#   r  r!  INFSTR)r   rG   s     r   _write_constantzUnparser._write_constant  s>    eeW-.JJtE{**5&9:JJtE{#r    c                     |j                   }t        |t              rq j                  d       t	        |      dk(  r& j                  |d           j                  d       nt         fd j
                  |        j                  d       y |t        u r j                  d       y |j                  dk(  r j                  d        j                  |j                          y )	NrJ   r   r   r   c                  &     j                  d      S rP   rR   r,   s   r   rS   z$Unparser._Constant.<locals>.<lambda>"  s    4::d#3 r    rK   ...r  )	rG   r2   tupler#   r   r>  r   Ellipsiskind)r   r7   rG   s   `  r   	_ConstantzUnparser._Constant  s    eU#JJsO5zQ$$U1X.

33T5I5I5QJJsOhJJuvv}

3  )r    c                    t        |j                        }t        j                  r&| j	                  |j                  dt                     y |j                  d      r| j	                  d       d|v r#|j                  d      r|j                  dd      }| j	                  |j                  dt                     |j                  d      r| j	                  d       y y )Nr:  -rJ   z*jjrK   )	r  r]   r(   r   r#   r!  r=  r+  endswith)r   r7   repr_ns      r   _NumzUnparser._Num+  s    acc77JJv~~eV45   %

36??4#8c2JJv~~eV45  %

3 &r    c                       j                  d       t         fd j                  |j                          j                  d       y )N[c                  &     j                  d      S rP   rR   r,   s   r   rS   z Unparser._List.<locals>.<lambda><  rT   r    ])r#   r   r   eltsrV   s   ` r   _ListzUnparser._List:  s.    

3+T]]AFFC

3r    c                     | j                  d       | j                  |j                         |j                  D ]  }| j                  |        | j                  d       y NrM  rO  r#   r   elt
generatorsr   r7   gens      r   	_ListCompzUnparser._ListComp?  G    

3aee<< 	CMM#	

3r    c                     | j                  d       | j                  |j                         |j                  D ]  }| j                  |        | j                  d       y )NrJ   rK   rT  rW  s      r   _GeneratorExpzUnparser._GeneratorExpF  rZ  r    c                     | j                  d       | j                  |j                         |j                  D ]  }| j                  |        | j                  d       y )Nr  r   rT  rW  s      r   _SetCompzUnparser._SetCompM  rZ  r    c                    | j                  d       | j                  |j                         | j                  d       | j                  |j                         |j                  D ]  }| j                  |        | j                  d       y )Nr  ro   r   )r#   r   keyrG   rV  rW  s      r   	_DictCompzUnparser._DictCompT  sc    

3aee

4agg<< 	CMM#	

3r    c                 X   t        |dd      r| j                  d       n| j                  d       | j                  |j                         | j                  d       | j                  |j                         |j
                  D ]$  }| j                  d       | j                  |       & y )Nis_asyncFz async for z for r    if )r4   r#   r   rL   r	   ifs)r   r7   	if_clauses      r   _comprehensionzUnparser._comprehension]  s}    1j%(JJ}%JJwahh

6aff 	%IJJvMM)$	%r    c                 .   | j                  d       | j                  |j                         | j                  d       | j                  |j                         | j                  d       | j                  |j                         | j                  d       y )NrJ   rd  z else rK   )r#   r   r<   r   r   rV   s     r   _IfExpzUnparser._IfExpi  s`    

3aff

6aff

8ahh

3r    c                      |j                   sJ  j                  d       t         fd j                  |j                           j                  d       y )Nr  c                  &     j                  d      S rP   rR   r,   s   r   rS   zUnparser._Set.<locals>.<lambda>u  rT   r    r   )rP  r#   r   r   rV   s   ` r   _SetzUnparser._Setr  s9    vvv

3+T]]AFFC

3r    c                       j                  d        fd fd}t         fd|t        |j                  |j                                j                  d       y )Nr  c                 l    j                  |        j                  d       j                  |       y Nro   )r   r#   )kr  r   s     r   write_key_value_pairz,Unparser._Dict.<locals>.write_key_value_pairz  s'    MM!JJtMM!r    c                 l    | \  }}|#j                  d       j                  |       y  ||       y )Nr   )r#   r   )itemrp  r  r   rq  s      r   
write_itemz"Unparser._Dict.<locals>.write_item  s5    DAqy 

4 a $Q*r    c                  &     j                  d      S rP   rR   r,   s   r   rS   z Unparser._Dict.<locals>.<lambda>  rT   r    r   )r#   r   zipkeysr   )r   r7   rt  rq  s   `  @r   _DictzUnparser._Dictx  sA    

3	
	+ 	+ZQVVQXX9NO

3r    c                 &     j                  d       t        |j                        dk(  r2|j                  d   } j                  |        j                  d       n$t	         fd j                  |j                          j                  d       y )NrJ   r   r   r   c                  &     j                  d      S rP   rR   r,   s   r   rS   z!Unparser._Tuple.<locals>.<lambda>  r   r    rK   )r#   r   rP  r   r   )r   r7   rU  s   `  r   _TuplezUnparser._Tuple  sb    

3qvv;!&&)CMM#JJsO/G

3r    ~not+rG  )InvertNotUAddUSubc                 D   | j                  d       | j                  | j                  |j                  j                  j                            | j                  d       t
        j                  rt        |j                  t        j                        rbt        |j                  t        j                        r>| j                  d       | j                  |j                         | j                  d       n| j                  |j                         | j                  d       y NrJ   rj   rK   )r#   unoprl   r5   r6   r(   PY2r2   rq   r  operandNumr   rV   s     r   _UnaryOpzUnparser._UnaryOp  s    

3

499QTT^^4456

377z!$$1jCGG6T JJsOMM!))$JJsOMM!))$

3r    r   r   /%z<<r   |^&z//r   )AddSubMultMatMultDivModLShiftRShiftBitOrBitXorBitAndFloorDivPowc                 8   | j                  d       | j                  |j                         | j                  d| j                  |j                  j
                  j                     z   dz          | j                  |j                         | j                  d       y r  )r#   r   leftrk   rl   r5   r6   rightrV   s     r   _BinOpzUnparser._BinOp  se    

3aff

3ADDNN$;$;<<sBCagg

3r    z==z!=<z<=>z>=iszis notinznot in)
EqNotEqLtLtEGtGtEIsIsNotInNotInc                 `   | j                  d       | j                  |j                         t        |j                  |j
                        D ]N  \  }}| j                  d| j                  |j                  j                     z   dz          | j                  |       P | j                  d       y r  )	r#   r   r  rv  opscomparatorscmpopsr5   r6   )r   r7   or   s       r   _ComparezUnparser._Compare  s    

3affq}}- 	DAqJJsT[[)=)=>>DEMM!	 	

3r    andorc                       j                  d       d j                  |j                  j                     z  t	         fd j
                  |j                          j                  d       y )NrJ   z %s c                  &    j                         S r:   rR   )r  r   s   r   rS   z"Unparser._BoolOp.<locals>.<lambda>  s    4::a= r    rK   )r#   boolopsrl   r5   r   r   r   )r   r7   r  s   ` @r   _BoolOpzUnparser._BoolOp  sI    

3T\\!$$..11($--B

3r    c                 d   | j                  |j                         t        |j                  t        t        dt        t        dd                   r5t        |j                  j
                  t              r| j                  d       | j                  d       | j                  |j                         y )NConstantr  rj   r_   )	r   rG   r2   r4   rq   r]   intr#   attrrV   s     r   
_AttributezUnparser._Attribute  sr    agg aggwsJUD8QRSXbcdcjcjclclnqXrJJsO

3

166r    c                    | j                  |j                         | j                  d       d}|j                  D ])  }|r| j                  d       nd}| j                  |       + |j                  D ])  }|r| j                  d       nd}| j                  |       + t
        j                  d d dk  r|j                  rB|r| j                  d       nd}| j                  d       | j                  |j                         |j                  rB|r| j                  d       nd}| j                  d       | j                  |j                         | j                  d	       y )
NrJ   FrQ   Tr   r   r   r   rK   )	r   funcr#   r   r   r   r   r   r   )r   r7   r   r   s       r   _CallzUnparser._Call  s   aff

3 	Adjj&%MM!	  	Adjj&%MM!	 BQ&(zz$**T*"e

3ajj)xx$**T*"e

4 ahh'

3r    c                     | j                  |j                         | j                  d       | j                  |j                         | j                  d       y rS  )r   rG   r#   slicerV   s     r   
_SubscriptzUnparser._Subscript  s8    agg

3agg

3r    c                 \    | j                  d       | j                  |j                         y )Nr   r7  rV   s     r   _StarredzUnparser._Starred  s    

3aggr    c                 &    | j                  d       y )NrA  rR   rV   s     r   	_EllipsiszUnparser._Ellipsis  s    

5r    c                 :    | j                  |j                         y r:   )r   rG   rV   s     r   _IndexzUnparser._Index  s    aggr    c                 4   |j                   r| j                  |j                          | j                  d       |j                  r| j                  |j                         |j                  r-| j                  d       | j                  |j                         y y )Nr+   )lowerr   r#   uppersteprV   s     r   _SlicezUnparser._Slice  sb    77MM!''"

377MM!''"66JJsOMM!&&! r    c                 N     t         fd j                  |j                         y )Nc                  &     j                  d      S rP   rR   r,   s   r   rS   z$Unparser._ExtSlice.<locals>.<lambda>  rT   r    )r   r   dimsrV   s   ` r   	_ExtSlicezUnparser._ExtSlice   s    +T]]AFFCr    c                     | j                  |j                         |j                  r-| j                  d       | j                  |j                         y y ro  )r#   argrs   r   rV   s     r   _argzUnparser._arg  s:    

155<<JJtMM!,,' r    c           	      6   d}t        |dg       |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        t        |dd            k(  sp| j                  d        |j                  st        |d	d      r|rd}n| j                  d       | j                  d
       |j                  rt        |j                  d      rr| j                  |j                  j                         |j                  j                  r| j                  d       | j                  |j                  j                         nT| j                  |j                         t        |dd       r,| j                  d       | j                  |j                         t        |d	d      rut        |j                  |j                        D ]R  \  }}|rd}n| j                  d       | j                  |      f |s1| j                  d       | j                  |       T |j                  r|rd}n| j                  d       t        |j                  d      rv| j                  d|j                  j                  z          |j                  j                  r7| j                  d       | j                  |j                  j                         y y | j                  d|j                  z          t        |dd       r-| j                  d       | j                  |j                          y y y )NTposonlyargsr   FrQ   = z, /
kwonlyargsr   r  ro   varargannotationr   kwargannotation)r4   r   r   defaults	enumeraterv  r#   r   varargr   r  rs   r  r  kw_defaultskwargr  )	r   r7   firstall_argsr  indexelementsr   ds	            r   
_argumentszUnparser._arguments  s   1mR016696S]S_<=

J(Xx)@!D 		"OE8DAqUU**T"MM!

3a GA}b9::

5!		" 88wq,6UU**T"JJsOxx188U+JJqxx||,xx**

4(ahh&9&9:JJqxx(q"4d;

4(a&8&89 1lE*ALL!--8 %1jj&a !JJsOMM!$% 77UU**T"qww&

4+,77%%JJt$MM!''"4"45 & 

4<(1/6JJt$MM!"3"34 7 r    c                     |j                   | j                  d       n,| j                  |j                          | j                  d       | j                  |j                         y )Nr   r  )r  r#   r   rG   rV   s     r   _keywordzUnparser._keywordE  sB    55=JJtJJquuJJsOaggr    c                     | j                  d       | j                  d       | j                  |j                         | j                  d       | j                  |j                         | j                  d       y )NrJ   zlambda ro   rK   )r#   r   r   r<   rV   s     r   _LambdazUnparser._LambdaN  sP    

3

9aff

4aff

3r    c                     | j                  |j                         |j                  r| j                  d|j                  z          y y Nr   )r#   r[   asnamerV   s     r   _aliaszUnparser._aliasV  s2    

16688JJvahh' r    c                     | j                  |j                         |j                  r-| j                  d       | j                  |j                         y y r  )r   r   r   r#   rV   s     r   	_withitemzUnparser._withitem[  s:    ann%??JJvMM!//* r    N)r   )F)er6   
__module____qualname____doc__r   stdoutr   r&   r#   r-   r/   r   r?   rB   rE   rH   rM   rW   rd   rh   rm   rt   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  r
  r  r  r  r#  r%  r/  r2  r4  r8  r>  rE  rK  rQ  rY  r\  r^  ra  rg  ri  rl  rx  r{  r  r  rk   r  r  r  rq   AndOrr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r    r   r   r      s@    %(JJ 6*
"  !"E
E##G!$BB',$%N,2 %+,
+3 (,

$"
$*" 

%& s3?D" s3#SPS!D#VY#D2E Ct#T!8$RF wwsvvt,G2
"D(85t(
+r    r   c                    t         j                  r_t        | d      5 }t        j                  |j
                        d   }d d d        t        | d      5 }|j                         }d d d        n%t        | d      5 }|j                         }d d d        t        | dt        j                  d      }t        ||       y # 1 sw Y   xY w# 1 sw Y   @xY w# 1 sw Y   LxY w)Nrbr   r)encodingexecT)dont_inherit)r(   r   opentokenizedetect_encodingreadlinereadcompilerq   PyCF_ONLY_ASTr   )filenameoutputpyfiler  sourcer   s         r   	roundtripr
  a  s    
ww(D! 	DV//@CH	D(C(3 	#v[[]F	# 	# (C  	#F[[]F	#68VS->->TRDT6	D 	D	# 	#	# 	#s#   #C C<C C	CC!c                 Z   	 t        j                  |       D cg c]  }|j                  d      s| }}|D ]  }t         j                  j	                  | |      }t         j                  j                  |      r&t               }t        d|z         	 t        ||       ht         j                  j                  |      st        |        y c c}w # t        $ r!}t        dt        |      z         Y d }~d }~ww xY w# t        $ r! t        d| z  t        j                         Y y w xY w)Nz.pyz
Testing %sz$  Failed to compile, exception is %szDirectory not readable: %sr   )oslistdirrI  pathjoinisfiler   r   r
  	Exceptionr  isdirtestdirOSErrorr   stderr)r   r]   rU   fullnamer  r   s         r   r  r  o  s    "JJqM?qQZZ->??  
	"Aww||Aq)Hww~~h'!lX-.Lh/ x(!
	"	 @ ! L@47JKKL  A*Q.SZZ@As>   D  CCD  CD  	C=C88C= 'D*)D*c                 d    | d   dk(  r| dd  D ]  }t        |        y | D ]  }t        |        y )Nr   z	--testdirr   )r  r
  )r   r   s     r   mainr    sB    Aw+ab 	AAJ	  	AaL	r    __main__)r  rY   r   r   r(   r   rq   r  r   r   r  
float_info
max_10_expr=  r   r   r  r
  r  r  r6   argvr  r    r   <module>r     s    ) 7 
 
 
 	   
S^^..23	3D+ D+L  #zz 
"$ Z!" r    