a
    Sic"k  ã                   @   s®   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dd„ ZG d	d
„ d
ƒZejfdd„Zdd„ Zdd„ Zedkrªeejdd… ƒ dS )z'Usage: unparse.py <path to source file>é    )Úprint_functionÚunicode_literalsN)ÚStringIOZ1eé   c                 C   sH   t |ƒ}z|t|ƒƒ W n ty*   Y n0 |D ]}| ƒ  ||ƒ q0dS )z<Call f on each item in seq, calling inter() in between.
    N)ÚiterÚnextÚStopIteration)ÚinterÚfÚseqÚx© r   úO/var/www/html/django/DPS/env/lib/python3.9/site-packages/astunparse/unparser.pyÚ
interleave   s    r   c                   @   s2  e Zd ZdZejfdd„ZdÓdd„Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Z d9d:„ Z!d;d<„ Z"d=d>„ Z#d?d@„ Z$dAdB„ Z%dCdD„ Z&dEdF„ Z'dGdH„ Z(dIdJ„ Z)dKdL„ Z*dMdN„ Z+dOdP„ Z,dQdR„ Z-dSdT„ Z.dUdV„ Z/dWdX„ Z0dÔdZd[„Z1d\d]„ Z2d^d_„ Z3d`da„ Z4dbdc„ Z5ddde„ Z6dfdg„ Z7dhdi„ Z8djdk„ Z9dldm„ Z:dndo„ Z;dpdq„ Z<drds„ Z=dtdu„ Z>dvdw„ Z?dxdy„ Z@dzd{„ ZAd|d}„ ZBd~d„ ZCd€d„ ZDd‚dƒ„ ZEd„d…„ ZFd†d‡„ ZGdˆd‰„ ZHdŠd‹„ ZIdŒd„ ZJdŽd„ ZKdd‘d’d“d”œZLd•d–„ ZMd’d“d—d˜d™dšd›dœddždŸd d¡d¢œZNd£d¤„ ZOd¥d¦d§d¨d©dªd«d¬d­d®d¯œ
ZPd°d±„ ZQeRjSd²eRjTd³iZUd´dµ„ ZVd¶d·„ ZWd¸d¹„ ZXdºd»„ ZYd¼d½„ ZZd¾d¿„ Z[dÀdÁ„ Z\dÂdÃ„ Z]dÄdÅ„ Z^dÆdÇ„ Z_dÈdÉ„ Z`dÊdË„ ZadÌdÍ„ ZbdÎdÏ„ ZcdÐdÑ„ ZddÒS )ÕÚUnparserzŽMethods in this class recursively traverse an AST and
    output source code for the abstract syntax; original formatting
    is disregarded. c                 C   s8   || _ g | _d| _|  |¡ td| j d | j  ¡  dS )zTUnparser(tree, file=sys.stdout) -> None.
         Print the source for tree to file.r   Ú ©ÚfileN)r
   Úfuture_importsÚ_indentÚdispatchÚprintÚflush)ÚselfÚtreer   r   r   r   Ú__init__    s    
zUnparser.__init__r   c                 C   s   | j  dd| j  | ¡ dS )zBIndent a piece of text, according to the current indentation levelÚ
z    N)r
   Úwriter   ©r   Útextr   r   r   Úfill*   s    zUnparser.fillc                 C   s   | j  t |¡¡ dS )z+Append a piece of text to the current line.N)r
   r   ÚsixÚ	text_typer   r   r   r   r   .   s    zUnparser.writec                 C   s   |   d¡ |  jd7  _dS )z(Print ':', and increase the indentation.ú:r   N)r   r   ©r   r   r   r   Úenter2   s    
zUnparser.enterc                 C   s   |  j d8  _ dS )zDecrease the indentation level.r   N)r   r$   r   r   r   Úleave7   s    zUnparser.leavec                 C   s@   t |tƒr"|D ]}|  |¡ qdS t| d|jj ƒ}||ƒ dS )z:Dispatcher function, dispatching tree type T to method _T.NÚ_)Ú
isinstanceÚlistr   ÚgetattrÚ	__class__Ú__name__)r   r   ÚtÚmethr   r   r   r   ;   s    
zUnparser.dispatchc                 C   s   |j D ]}|  |¡ qd S ©N©Úbodyr   ©r   r   Ústmtr   r   r   Ú_ModuleL   s    
zUnparser._Modulec                 C   s   |j D ]}|  |¡ qd S r/   r0   r2   r   r   r   Ú_InteractiveP   s    
zUnparser._Interactivec                 C   s   |   |j¡ d S r/   )r   r1   ©r   r   r   r   r   Ú_ExpressionT   s    zUnparser._Expressionc                 C   s   |   ¡  |  |j¡ d S r/   )r    r   Úvaluer6   r   r   r   Ú_ExprX   s    zUnparser._Exprc                 C   s:   |   d¡ |  |j¡ |   d¡ |  |j¡ |   d¡ d S )Nú(z := ú))r   r   Útargetr8   r6   r   r   r   Ú
_NamedExpr\   s
    

zUnparser._NamedExprc                    s&   ˆ   d¡ t‡ fdd„ˆ j|jƒ d S )Nzimport c                      s
   ˆ   d¡S ©Nú, ©r   r   r$   r   r   Ú<lambda>e   ó    z"Unparser._Import.<locals>.<lambda>)r    r   r   Únames©r   r-   r   r$   r   Ú_Importc   s    
zUnparser._Importc                    sz   |j r(|j dkr(ˆ j dd„ |jD ƒ¡ ˆ  d¡ ˆ  d|j ¡ |j rTˆ  |j ¡ ˆ  d¡ t‡ fdd„ˆ j|jƒ d S )	NÚ
__future__c                 s   s   | ]}|j V  qd S r/   )Úname©Ú.0Únr   r   r   Ú	<genexpr>j   rB   z'Unparser._ImportFrom.<locals>.<genexpr>zfrom Ú.z import c                      s
   ˆ   d¡S r>   r@   r   r$   r   r   rA   q   rB   z&Unparser._ImportFrom.<locals>.<lambda>)	Úmoduler   ÚextendrC   r    r   Úlevelr   r   rD   r   r$   r   Ú_ImportFromg   s    

zUnparser._ImportFromc                 C   s8   |   ¡  |jD ]}|  |¡ |  d¡ q|  |j¡ d S )Nú = )r    Útargetsr   r   r8   )r   r-   r<   r   r   r   Ú_Assigns   s
    

zUnparser._Assignc                 C   sB   |   ¡  |  |j¡ |  d| j|jjj  d ¡ |  |j¡ d S )Nú z= )	r    r   r<   r   ÚbinopÚopr+   r,   r8   rD   r   r   r   Ú
_AugAssignz   s    zUnparser._AugAssignc                 C   s†   |   ¡  |js&t|jtjƒr&|  d¡ |  |j¡ |jsPt|jtjƒrP|  d¡ |  d¡ |  |j¡ |j	r‚|  d¡ |  |j	¡ d S )Nr:   r;   ú: rQ   )
r    Úsimpler(   r<   ÚastÚNamer   r   Ú
annotationr8   rD   r   r   r   Ú
_AnnAssign€   s    



zUnparser._AnnAssignc                 C   s*   |   d¡ |jr&|  d¡ |  |j¡ d S )NÚreturnrT   )r    r8   r   r   rD   r   r   r   Ú_Return   s    

zUnparser._Returnc                 C   s   |   d¡ d S )NÚpass©r    rD   r   r   r   Ú_Pass“   s    zUnparser._Passc                 C   s   |   d¡ d S )NÚbreakra   rD   r   r   r   Ú_Break–   s    zUnparser._Breakc                 C   s   |   d¡ d S )NÚcontinuera   rD   r   r   r   Ú	_Continue™   s    zUnparser._Continuec                    s&   ˆ   d¡ t‡ fdd„ˆ j|jƒ d S )Nzdel c                      s
   ˆ   d¡S r>   r@   r   r$   r   r   rA   ž   rB   z"Unparser._Delete.<locals>.<lambda>)r    r   r   rR   rD   r   r$   r   Ú_Deleteœ   s    
zUnparser._Deletec                 C   s6   |   d¡ |  |j¡ |jr2|  d¡ |  |j¡ d S )Nzassert r?   )r    r   ÚtestÚmsgr   rD   r   r   r   Ú_Assert    s
    

zUnparser._Assertc                 C   sR   |   d¡ |  |j¡ |jr2|  d¡ |  |j¡ |jrN|  d¡ |  |j¡ d S )Nzexec ú in r?   )r    r   r1   Úglobalsr   ÚlocalsrD   r   r   r   Ú_Exec§   s    


zUnparser._Execc                 C   sl   |   d¡ d}|jr.|  d¡ |  |j¡ d}|jD ]"}|rH|  d¡ nd}|  |¡ q4|jsh|  d¡ d S )Nzprint Fú>>Tr?   ú,)r    Údestr   r   ÚvaluesÚnl)r   r-   Zdo_commaÚer   r   r   Ú_Print±   s    


zUnparser._Printc                    s&   ˆ   d¡ t‡ fdd„ˆ j|jƒ d S )Nzglobal c                      s
   ˆ   d¡S r>   r@   r   r$   r   r   rA   Á   rB   z"Unparser._Global.<locals>.<lambda>©r    r   r   rC   rD   r   r$   r   Ú_Global¿   s    
zUnparser._Globalc                    s&   ˆ   d¡ t‡ fdd„ˆ j|jƒ d S )Nz	nonlocal c                      s
   ˆ   d¡S r>   r@   r   r$   r   r   rA   Å   rB   z$Unparser._Nonlocal.<locals>.<lambda>rv   rD   r   r$   r   Ú	_NonlocalÃ   s    
zUnparser._Nonlocalc                 C   s>   |   d¡ |   d¡ |jr0|   d¡ |  |j¡ |   d¡ d S )Nr:   ÚawaitrT   r;   ©r   r8   r   rD   r   r   r   Ú_AwaitÇ   s    


zUnparser._Awaitc                 C   s>   |   d¡ |   d¡ |jr0|   d¡ |  |j¡ |   d¡ d S )Nr:   ÚyieldrT   r;   rz   rD   r   r   r   Ú_YieldÏ   s    


zUnparser._Yieldc                 C   s>   |   d¡ |   d¡ |jr0|   d¡ |  |j¡ |   d¡ d S )Nr:   z
yield fromrT   r;   rz   rD   r   r   r   Ú
_YieldFrom×   s    


zUnparser._YieldFromc                 C   s°   |   d¡ tjrX|js$|jr J ‚d S |  d¡ |  |j¡ |jr¬|  d¡ |  |j¡ nT|  d¡ |jrt|  |j¡ |jr|  d¡ |  |j¡ |j	r¬|  d¡ |  |j	¡ d S )NÚraiserT   z from r?   )
r    r!   ÚPY3ÚexcÚcauser   r   ÚtypeÚinstZtbackrD   r   r   r   Ú_Raiseß   s&    






zUnparser._Raisec                 C   s˜   |   d¡ |  ¡  |  |j¡ |  ¡  |jD ]}|  |¡ q,|jrh|   d¡ |  ¡  |  |j¡ |  ¡  |jr”|   d¡ |  ¡  |  |j¡ |  ¡  d S )NÚtryÚelseÚfinally)r    r%   r   r1   r&   ÚhandlersÚorelseÚ	finalbody©r   r-   Úexr   r   r   Ú_Tryõ   s     



zUnparser._Tryc                 C   sl   |   d¡ |  ¡  |  |j¡ |  ¡  |jD ]}|  |¡ q,|jrh|   d¡ |  ¡  |  |j¡ |  ¡  d S )Nr†   r‡   )r    r%   r   r1   r&   r‰   rŠ   rŒ   r   r   r   Ú
_TryExcept  s    


zUnparser._TryExceptc                 C   s~   t |jƒdkr.t|jd tjƒr.|  |j¡ n&|  d¡ |  ¡  |  |j¡ |  ¡  |  d¡ |  ¡  |  |j	¡ |  ¡  d S )Nr   r   r†   rˆ   )
Úlenr1   r(   rZ   Z	TryExceptr   r    r%   r&   r‹   rD   r   r   r   Ú_TryFinally  s     

zUnparser._TryFinallyc                 C   sv   |   d¡ |jr&|  d¡ |  |j¡ |jrV|  d¡ tjrJ|  |j¡ n|  |j¡ |  ¡  |  |j¡ |  	¡  d S )NÚexceptrT   ú as )
r    rƒ   r   r   rG   r!   r€   r%   r1   r&   rD   r   r   r   Ú_ExceptHandler$  s    


zUnparser._ExceptHandlerc                 C   s†  |   d¡ |jD ]}|  d¡ |  |¡ q|  d|j ¡ tjr(|   d¡ d}|jD ]"}|rj|   d¡ nd}|  |¡ qV|jD ]"}|r”|   d¡ nd}|  |¡ q€t	j
d d… d	k r|jrè|rÎ|   d¡ nd}|   d
¡ |  |j¡ |jr|r|   d¡ nd}|   d¡ |  |j¡ |   d¡ n>|jrf|   d¡ |jD ]}|  |¡ |   d¡ q@|   d¡ |  ¡  |  |j¡ |  ¡  d S )Nr   ú@zclass r:   Fr?   Té   ©é   é   Ú*ú**r;   )r   Údecorator_listr    r   rG   r!   r€   ÚbasesÚkeywordsÚsysÚversion_infoÚstarargsÚkwargsr%   r1   r&   )r   r-   ÚdecoÚcommart   Úar   r   r   Ú	_ClassDef3  sJ    











zUnparser._ClassDefc                 C   s   |   |d¡ d S )NÚdef©Ú_Unparser__FunctionDef_helperrD   r   r   r   Ú_FunctionDefZ  s    zUnparser._FunctionDefc                 C   s   |   |d¡ d S )Nz	async defr¨   rD   r   r   r   Ú_AsyncFunctionDef]  s    zUnparser._AsyncFunctionDefc                 C   sž   |   d¡ |jD ]}|  d¡ |  |¡ q|d |j d }|  |¡ |  |j¡ |   d¡ t|ddƒr~|   d¡ |  |j¡ |  ¡  |  |j	¡ |  
¡  d S )	Nr   r•   rT   r:   r;   ÚreturnsFz -> )r   rœ   r    r   rG   Úargsr*   r¬   r%   r1   r&   )r   r-   Úfill_suffixr£   Údef_strr   r   r   Z__FunctionDef_helper`  s    





zUnparser.__FunctionDef_helperc                 C   s   |   d|¡ d S )Nzfor ©Ú_Unparser__For_helperrD   r   r   r   Ú_Forp  s    zUnparser._Forc                 C   s   |   d|¡ d S )Nz
async for r°   rD   r   r   r   Ú	_AsyncFors  s    zUnparser._AsyncForc                 C   sx   |   |¡ |  |j¡ |  d¡ |  |j¡ |  ¡  |  |j¡ |  ¡  |jrt|   d¡ |  ¡  |  |j¡ |  ¡  d S )Nrk   r‡   )	r    r   r<   r   r   r%   r1   r&   rŠ   )r   r    r-   r   r   r   Z__For_helperv  s    


zUnparser.__For_helperc                 C   sÆ   |   d¡ |  |j¡ |  ¡  |  |j¡ |  ¡  |jr–t|jƒdkr–t|jd t	j
ƒr–|jd }|   d¡ |  |j¡ |  ¡  |  |j¡ |  ¡  q2|jrÂ|   d¡ |  ¡  |  |j¡ |  ¡  d S )Nzif r   r   zelif r‡   )r    r   rh   r%   r1   r&   rŠ   r   r(   rZ   ÚIfrD   r   r   r   Ú_If„  s&    
ÿ



zUnparser._Ifc                 C   sb   |   d¡ |  |j¡ |  ¡  |  |j¡ |  ¡  |jr^|   d¡ |  ¡  |  |j¡ |  ¡  d S )Nzwhile r‡   )r    r   rh   r%   r1   r&   rŠ   rD   r   r   r   Ú_Whileš  s    

zUnparser._WhileFc                    s~   ˆ   |rdnd¡ t|dƒr6t‡ fdd„ˆ j|jƒ n(ˆ  |j¡ |jr^ˆ  d¡ ˆ  |j¡ ˆ  ¡  ˆ  |j	¡ ˆ  
¡  d S )Nzasync with zwith Úitemsc                      s
   ˆ   d¡S r>   r@   r   r$   r   r   rA   ©  rB   z(Unparser._generic_With.<locals>.<lambda>r“   )r    Úhasattrr   r   r·   Úcontext_exprÚoptional_varsr   r%   r1   r&   )r   r-   Úasync_r   r$   r   Ú_generic_With¦  s    

zUnparser._generic_Withc                 C   s   |   |¡ d S r/   ©r¼   rD   r   r   r   Ú_With³  s    zUnparser._Withc                 C   s   | j |dd d S )NT)r»   r½   rD   r   r   r   Ú
_AsyncWith¶  s    zUnparser._AsyncWithc                 C   s   |   t|jƒ¡ d S r/   )r   ÚreprÚsrD   r   r   r   Ú_Bytesº  s    zUnparser._Bytesc                 C   sŠ   t jr|  t|jƒ¡ nnd| jvr4|  t|jƒ¡ nRt|jtƒrV|  dt|jƒ ¡ n0t|jtƒrz|  t|jƒ 	d¡¡ nds†J dƒ‚d S )Nr   ÚbÚuFzshouldn't get here)
r!   r€   r   rÀ   rÁ   r   r(   ÚstrÚunicodeÚlstripr6   r   r   r   Ú_Str½  s    
zUnparser._Strc                 C   s‚   |   d¡ tƒ }|  ||j ¡ | ¡ }d|v s6d|v r@ddg}ng d¢}|D ]}||vrLdj||d} qtqLt|ƒ}|   |¡ d S )	Nr
   r   úú'''ú""")ú'ú"rË   rÊ   z{quote_type}{v}{quote_type})Ú
quote_typeÚv)r   r   Ú_fstring_JoinedStrÚgetvalueÚformatrÀ   )r   r-   ÚstringrÏ   Úquote_typesrÎ   r   r   r   Ú
_JoinedStrÍ  s    

zUnparser._JoinedStrc                 C   s4   |   d¡ tƒ }|  ||j ¡ |   t| ¡ ƒ¡ d S )Nr
   )r   r   rÐ   rÀ   rÑ   )r   r-   rÓ   r   r   r   Ú_FormattedValueá  s    
zUnparser._FormattedValuec                 C   s.   |j D ]"}t| dt|ƒj ƒ}|||ƒ qd S )NÚ	_fstring_)rr   r*   rƒ   r,   )r   r-   r   r8   r.   r   r   r   rÐ   è  s    
zUnparser._fstring_JoinedStrc                 C   s"   |j  dd¡ dd¡}||ƒ d S ©NÚ{z{{Ú}z}})rÁ   Úreplace©r   r-   r   r8   r   r   r   Ú_fstring_Strí  s    zUnparser._fstring_Strc                 C   s2   t |jtƒsJ ‚|j dd¡ dd¡}||ƒ d S rØ   )r(   r8   rÅ   rÛ   rÜ   r   r   r   Ú_fstring_Constantñ  s    zUnparser._fstring_Constantc                 C   s®   |dƒ t ƒ }t|j|ƒ | ¡  d¡}| d¡r:|dƒ ||ƒ |jdkrrt|jƒ}|dv sbJ ‚|dj|dƒ |j	r¢|dƒ t
| d	t|j	ƒj ƒ}||j	|ƒ |d
ƒ d S )NrÙ   r   rT   éÿÿÿÿÚsraz!{conversion})Ú
conversionr#   r×   rÚ   )r   r   r8   rÑ   ÚrstripÚ
startswithrá   ÚchrrÒ   Úformat_specr*   rƒ   r,   )r   r-   r   Úexprrá   r.   r   r   r   Ú_fstring_FormattedValueö  s     


z Unparser._fstring_FormattedValuec                 C   s   |   |j¡ d S r/   )r   ÚidrD   r   r   r   Ú_Name  s    zUnparser._Namec                 C   s   |   t|jƒ¡ d S r/   )r   rÀ   r8   rD   r   r   r   Ú_NameConstant  s    zUnparser._NameConstantc                 C   s$   |   d¡ |  |j¡ |   d¡ d S )Nú`©r   r   r8   rD   r   r   r   Ú_Repr  s    
zUnparser._Reprc                 C   s8   t |ttfƒr&|  t|ƒ dt¡¡ n|  t|ƒ¡ d S )NÚinf)r(   ÚfloatÚcomplexr   rÀ   rÛ   ÚINFSTR)r   r8   r   r   r   Ú_write_constant  s    zUnparser._write_constantc                    sš   |j }t|tƒrbˆ  d¡ t|ƒdkr@ˆ  |d ¡ ˆ  d¡ nt‡ fdd„ˆ j|ƒ ˆ  d¡ n4|tu rvˆ  d¡ n |jd	krŠˆ  d	¡ ˆ  |j ¡ d S )
Nr:   r   r   rp   c                      s
   ˆ   d¡S r>   r@   r   r$   r   r   rA   "  rB   z$Unparser._Constant.<locals>.<lambda>r;   ú...rÄ   )	r8   r(   Útupler   r   rò   r   ÚEllipsisÚkind)r   r-   r8   r   r$   r   Ú	_Constant  s    



zUnparser._Constantc                 C   s€   t |jƒ}tjr$|  | dt¡¡ nX| d¡r8|  d¡ d|v rV| d¡rV| dd¡}|  | dt¡¡ | d¡r||  d¡ d S )Nrî   ú-r:   z*jÚjr;   )	rÀ   rJ   r!   r€   r   rÛ   rñ   rã   Úendswith)r   r-   Zrepr_nr   r   r   Ú_Num+  s    



zUnparser._Numc                    s0   ˆ   d¡ t‡ fdd„ˆ j|jƒ ˆ   d¡ d S )Nú[c                      s
   ˆ   d¡S r>   r@   r   r$   r   r   rA   <  rB   z Unparser._List.<locals>.<lambda>ú])r   r   r   ÚeltsrD   r   r$   r   Ú_List:  s    
zUnparser._Listc                 C   s:   |   d¡ |  |j¡ |jD ]}|  |¡ q|   d¡ d S ©Nrü   rý   ©r   r   ÚeltÚ
generators©r   r-   Úgenr   r   r   Ú	_ListComp?  s
    

zUnparser._ListCompc                 C   s:   |   d¡ |  |j¡ |jD ]}|  |¡ q|   d¡ d S )Nr:   r;   r  r  r   r   r   Ú_GeneratorExpF  s
    

zUnparser._GeneratorExpc                 C   s:   |   d¡ |  |j¡ |jD ]}|  |¡ q|   d¡ d S )NrÙ   rÚ   r  r  r   r   r   Ú_SetCompM  s
    

zUnparser._SetCompc                 C   sP   |   d¡ |  |j¡ |   d¡ |  |j¡ |jD ]}|  |¡ q2|   d¡ d S )NrÙ   rX   rÚ   )r   r   Úkeyr8   r  r  r   r   r   Ú	_DictCompT  s    


zUnparser._DictCompc                 C   sh   t |ddƒr|  d¡ n
|  d¡ |  |j¡ |  d¡ |  |j¡ |jD ]}|  d¡ |  |¡ qJd S )NÚis_asyncFz async for z for rk   ú if )r*   r   r   r<   r   Úifs)r   r-   Ú	if_clauser   r   r   Ú_comprehension]  s    



zUnparser._comprehensionc                 C   sP   |   d¡ |  |j¡ |   d¡ |  |j¡ |   d¡ |  |j¡ |   d¡ d S )Nr:   r  z else r;   )r   r   r1   rh   rŠ   rD   r   r   r   Ú_IfExpi  s    


zUnparser._IfExpc                    s:   |j s
J ‚ˆ  d¡ t‡ fdd„ˆ j|j ƒ ˆ  d¡ d S )NrÙ   c                      s
   ˆ   d¡S r>   r@   r   r$   r   r   rA   u  rB   zUnparser._Set.<locals>.<lambda>rÚ   )rþ   r   r   r   rD   r   r$   r   Ú_Setr  s    

zUnparser._Setc                    sP   ˆ   d¡ ‡ fdd„‰‡ ‡fdd„}t‡ fdd„|t|j|jƒƒ ˆ   d¡ d S )	NrÙ   c                    s"   ˆ   | ¡ ˆ  d¡ ˆ   |¡ d S ©NrX   )r   r   )ÚkrÏ   r$   r   r   Úwrite_key_value_pairz  s    

z,Unparser._Dict.<locals>.write_key_value_pairc                    s4   | \}}|d u r&ˆ   d¡ ˆ  |¡ n
ˆ||ƒ d S )Nr›   )r   r   )Úitemr  rÏ   ©r   r  r   r   Ú
write_item  s
    
z"Unparser._Dict.<locals>.write_itemc                      s
   ˆ   d¡S r>   r@   r   r$   r   r   rA   ˆ  rB   z Unparser._Dict.<locals>.<lambda>rÚ   )r   r   ÚzipÚkeysrr   )r   r-   r  r   r  r   Ú_Dictx  s
    
	zUnparser._Dictc                    s^   ˆ   d¡ t|jƒdkr8|jd }ˆ  |¡ ˆ   d¡ nt‡ fdd„ˆ j|jƒ ˆ   d¡ d S )Nr:   r   r   rp   c                      s
   ˆ   d¡S r>   r@   r   r$   r   r   rA   ’  rB   z!Unparser._Tuple.<locals>.<lambda>r;   )r   r   rþ   r   r   )r   r-   r  r   r$   r   Ú_Tuple‹  s    


zUnparser._Tupleú~Únotú+rø   )ÚInvertÚNotÚUAddÚUSubc                 C   sˆ   |   d¡ |   | j|jjj ¡ |   d¡ tjrnt|jtj	ƒrnt|j
tjƒrn|   d¡ |  |j
¡ |   d¡ n|  |j
¡ |   d¡ d S ©Nr:   rT   r;   )r   ÚunoprV   r+   r,   r!   ÚPY2r(   rZ   r"  ÚoperandÚNumr   rD   r   r   r   Ú_UnaryOp–  s    

"
zUnparser._UnaryOprš   r•   ú/ú%z<<ro   ú|ú^ú&z//r›   )ÚAddÚSubÚMultÚMatMultÚDivÚModÚLShiftÚRShiftÚBitOrÚBitXorÚBitAndÚFloorDivÚPowc                 C   sN   |   d¡ |  |j¡ |   d| j|jjj  d ¡ |  |j¡ |   d¡ d S r#  )r   r   ÚleftrU   rV   r+   r,   ÚrightrD   r   r   r   Ú_BinOpª  s
    
zUnparser._BinOpz==z!=ú<z<=ú>z>=Úiszis notÚinznot in)
ÚEqÚNotEqÚLtÚLtEÚGtÚGtEÚIsÚIsNotÚInÚNotInc                 C   sb   |   d¡ |  |j¡ t|j|jƒD ].\}}|   d| j|jj  d ¡ |  |¡ q$|   d¡ d S r#  )	r   r   r;  r  ÚopsÚcomparatorsÚcmpopsr+   r,   )r   r-   Úort   r   r   r   Ú_Compare³  s    
zUnparser._CompareÚandÚorc                    sD   ˆ  d¡ dˆj|jj  ‰ t‡ ‡fdd„ˆj|jƒ ˆ  d¡ d S )Nr:   z %s c                      s
   ˆ  ˆ ¡S r/   r@   r   ©rÁ   r   r   r   rA   ¿  rB   z"Unparser._BoolOp.<locals>.<lambda>r;   )r   ÚboolopsrV   r+   r   r   rr   rD   r   rS  r   Ú_BoolOp¼  s    
zUnparser._BoolOpc              	   C   sZ   |   |j¡ t|jttdttdd ƒƒƒr@t|jjtƒr@|  d¡ |  d¡ |  |j¡ d S )NÚConstantr'  rT   rL   )	r   r8   r(   r*   rZ   rJ   Úintr   ÚattrrD   r   r   r   Ú
_AttributeÂ  s
    *

zUnparser._Attributec                 C   sî   |   |j¡ |  d¡ d}|jD ]"}|r4|  d¡ nd}|   |¡ q |jD ]"}|r^|  d¡ nd}|   |¡ qJtjd d… dk rà|jr°|r–|  d¡ nd}|  d¡ |   |j¡ |jrà|rÆ|  d¡ nd}|  d¡ |   |j¡ |  d	¡ d S )
Nr:   Fr?   Tr–   r—   rš   r›   r;   )	r   Úfuncr   r­   rž   rŸ   r    r¡   r¢   )r   r-   r¤   rt   r   r   r   Ú_CallÌ  s.    




zUnparser._Callc                 C   s0   |   |j¡ |  d¡ |   |j¡ |  d¡ d S r   )r   r8   r   ÚslicerD   r   r   r   Ú
_Subscriptå  s    
zUnparser._Subscriptc                 C   s   |   d¡ |  |j¡ d S )Nrš   rì   rD   r   r   r   Ú_Starredë  s    
zUnparser._Starredc                 C   s   |   d¡ d S )Nró   r@   rD   r   r   r   Ú	_Ellipsisð  s    zUnparser._Ellipsisc                 C   s   |   |j¡ d S r/   )r   r8   rD   r   r   r   Ú_Indexó  s    zUnparser._Indexc                 C   sN   |j r|  |j ¡ |  d¡ |jr.|  |j¡ |jrJ|  d¡ |  |j¡ d S )Nr#   )Úlowerr   r   ÚupperÚsteprD   r   r   r   Ú_Sliceö  s    

zUnparser._Slicec                    s   t ‡ fdd„ˆ j|jƒ d S )Nc                      s
   ˆ   d¡S r>   r@   r   r$   r   r   rA     rB   z$Unparser._ExtSlice.<locals>.<lambda>)r   r   ÚdimsrD   r   r$   r   Ú	_ExtSlice   s    zUnparser._ExtSlicec                 C   s,   |   |j¡ |jr(|   d¡ |  |j¡ d S r  )r   Úargr\   r   rD   r   r   r   Ú_arg  s    
zUnparser._argc           	      C   sR  d}t |dg ƒ|j }d gt|ƒt|jƒ  |j }tt||ƒdƒD ]d\}}|\}}|r^d}n
|  d¡ |  |¡ |rŠ|  d¡ |  |¡ |tt |ddƒƒkrD|  d¡ qD|js¾t |d	dƒrT|rÈd}n
|  d¡ |  d
¡ |jrTt	|jdƒr$|  |jj
¡ |jjrT|  d¡ |  |jj¡ n0|  |j¡ t |dd ƒrT|  d¡ |  |j¡ t |d	dƒr¸t|j|jƒD ]F\}}|r„d}n
|  d¡ |  |¡f |rp|  d¡ |  |¡ qp|jrN|rÌd}n
|  d¡ t	|jdƒr|  d|jj
 ¡ |jjrN|  d¡ |  |jj¡ n4|  d|j ¡ t |dd ƒrN|  d¡ |  |j¡ d S )NTÚposonlyargsr   Fr?   ú=r   z, /Ú
kwonlyargsrš   rg  rX   Úvarargannotationr›   Úkwargannotation)r*   r­   r   ÚdefaultsÚ	enumerater  r   r   Úvarargr¸   rg  r\   rl  rk  Úkw_defaultsÚkwargrm  )	r   r-   ÚfirstÚall_argsrn  ÚindexÚelementsr¥   Údr   r   r   Ú
_arguments  s^    
















zUnparser._argumentsc                 C   s<   |j d u r|  d¡ n|  |j ¡ |  d¡ |  |j¡ d S )Nr›   rj  )rg  r   r   r8   rD   r   r   r   Ú_keywordE  s
    

zUnparser._keywordc                 C   sD   |   d¡ |   d¡ |  |j¡ |   d¡ |  |j¡ |   d¡ d S )Nr:   zlambda rX   r;   )r   r   r­   r1   rD   r   r   r   Ú_LambdaN  s    


zUnparser._Lambdac                 C   s&   |   |j¡ |jr"|   d|j ¡ d S ©Nr“   )r   rG   ÚasnamerD   r   r   r   Ú_aliasV  s    zUnparser._aliasc                 C   s,   |   |j¡ |jr(|  d¡ |   |j¡ d S r{  )r   r¹   rº   r   rD   r   r   r   Ú	_withitem[  s    
zUnparser._withitemN)r   )F)er,   Ú
__module__Ú__qualname__Ú__doc__rŸ   Ústdoutr   r    r   r%   r&   r   r4   r5   r7   r9   r=   rE   rP   rS   rW   r]   r_   rb   rd   rf   rg   rj   rn   ru   rw   rx   r{   r}   r~   r…   rŽ   r   r‘   r”   r¦   rª   r«   r©   r²   r³   r±   rµ   r¶   r¼   r¾   r¿   rÂ   rÈ   rÕ   rÖ   rÐ   rÝ   rÞ   rç   ré   rê   rí   rò   r÷   rû   rÿ   r  r  r  r
  r  r  r  r  r  r$  r(  rU   r=  rN  rP  rZ   ÚAndÚOrrT  rU  rY  r[  r]  r^  r_  r`  rd  rf  rh  rx  ry  rz  r}  r~  r   r   r   r   r      sÄ   


'
		

þÿ

:	r   c                 C   sÌ   t jrxt| dƒ }t |j¡d }W d   ƒ n1 s60    Y  t| d|d}| ¡ }W d   ƒ qª1 sl0    Y  n2t| dƒ}| ¡ }W d   ƒ n1 s 0    Y  t|| dtj	dd}t
||ƒ d S )NÚrbr   Úr)ÚencodingÚexecT)Údont_inherit)r!   r€   ÚopenÚtokenizeÚdetect_encodingÚreadlineÚreadÚcompilerZ   ÚPyCF_ONLY_ASTr   )ÚfilenameÚoutputZpyfiler‡  Úsourcer   r   r   r   Ú	roundtripa  s    .(&r”  c                 C   sÒ   zdd„ t  | ¡D ƒ}W n$ ty<   td|  tjd Y n’0 |D ]Š}t j | |¡}t j |¡r¸t	ƒ }td| ƒ zt
||ƒ W qÌ ty´ } ztdt|ƒ ƒ W Y d }~qÌd }~0 0 qBt j |¡rBt|ƒ qBd S )Nc                 S   s   g | ]}|  d ¡r|‘qS )z.py)rú   rH   r   r   r   Ú
<listcomp>q  rB   ztestdir.<locals>.<listcomp>zDirectory not readable: %sr   z
Testing %sz$  Failed to compile, exception is %s)ÚosÚlistdirÚOSErrorr   rŸ   ÚstderrÚpathÚjoinÚisfiler   r”  Ú	ExceptionrÀ   ÚisdirÚtestdir)r¥   rC   rJ   Úfullnamer’  rt   r   r   r   rŸ  o  s    (rŸ  c                 C   s>   | d dkr(| dd … D ]}t |ƒ qn| D ]}t|ƒ q,d S )Nr   z	--testdirr   )rŸ  r”  )r­   r¥   r   r   r   Úmain  s
    r¡  Ú__main__)r  rF   r   r   r!   rŸ   rZ   r–  r‹  r   rÀ   Ú
float_infoÚ
max_10_exprñ   r   r   r‚  r”  rŸ  r¡  r,   Úargvr   r   r   r   Ú<module>   s*         L