o
    ¯N iq¨  ã                   @   sˆ   d dl Z ddlT d dlmZ d dlmZ G dd„ deƒZdee j	j
d ƒ ZG d	d
„ d
eƒZdZdZee ZG dd„ deƒZdd„ ZdS )é    Né   )Ú*)Úcontextmanager©Ú	printablec                   @   s&   e Zd Zddd„Zdd„ Zdd„ ZdS )	ÚnullcontextNc                 C   s
   || _ d S ©N©Úenter_result)Úselfr
   © r   úA/home/ubuntu/.local/lib/python3.10/site-packages/gast/unparser.pyÚ__init__;   s   
znullcontext.__init__c                 C   s   | j S r   r	   ©r   r   r   r   Ú	__enter__>   s   znullcontext.__enter__c                 G   s   d S r   r   )r   Úexcinfor   r   r   Ú__exit__A   s   znullcontext.__exit__r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   :   s    
r   Ú1ec                   @   s\   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dS )Ú_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   s*    r   )ú'ú")z"""ú'''c                       s€  e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zddd„Z	dd„ Z
eddd„ƒZeddd„ƒZedd„ ƒZdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Z‡ f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„ Z.dYdZ„ Z/d[d\„ Z0d]d^„ Z1d_d`„ Z2dadb„ Z3dcdd„ Z4dedf„ Z5dgdh„ Z6didj„ Z7dkdl„ Z8dmdn„ Z9dodp„ Z:dqdr„ Z;dsdt„ Z<dudv„ Z=dwdx„ Z>dydz„ Z?d{d|„ Z@d}d~„ ZAeBdfd€d„ZCeBfd‚dƒ„ZDd„d…„ ZEd†d‡„ ZFdˆd‰„ ZGdŠd‹„ ZHd	dŒd„ZIdŽd„ ZJd	dd‘„ZKd’d“„ ZLd”d•„ ZMd–d—„ ZNd˜d™„ ZOdšd›„ ZPdœd„ ZQdždŸ„ ZRd d¡„ ZSd¢d£„ ZTd¤d¥„ ZUd¦d§„ ZVd¨d©„ ZWdªd«„ ZXd¬d­„ ZYd®d¯„ ZZd°d±„ Z[d²d³d´dµd¶œZ\e]j^e]j_e]j_e]j_d·œZ`d¸d¹„ Zad´dµdºd»d¼d½d¾d¿dÀdÁdÂdÃdÄdÅœZbe]jce]jce]jde]jde]jde]jde]jee]jee]jfe]jge]jhe]jde]jidÆœZjekdÇƒZldÈdÉ„ ZmdÊdËdÌdÍdÎdÏdÐdÑdÒdÓdÔœ
ZndÕdÖ„ Zod×dØdÙœZpe]jqe]jrdÚœZsdÛdÜ„ ZtdÝdÞ„ 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ö„ Zd÷dø„ Z‚dùdú„ Zƒdûdü„ Z„dýdþ„ Z…dÿd „ Z†dd„ Z‡dd„ Zˆdd„ Z‰‡  ZŠS (
  Ú	_UnparserzMethods in this class recursively traverse an AST and
    output source code for the abstract syntax; original formatting
    is disregarded.c                 C   s(   g | _ i | _i | _d| _d| _d| _d S )Nr   F)Ú_sourceÚ_precedencesÚ_type_ignoresÚ_indentÚ_in_try_starÚ_in_interactiver   r   r   r   r   k   s   
z_Unparser.__init__c                 C   sJ   t |ƒ}z|t|ƒƒ W n
 ty   Y dS w |D ]	}|ƒ  ||ƒ qdS )z7Call f on each item in seq, calling inter() in between.N)ÚiterÚnextÚStopIteration)r   ÚinterÚfÚseqÚxr   r   r   Ú
interleaves   s   ÿ
þz_Unparser.interleavec                    s@   t |ƒdkr||d ƒ ˆ  d¡ dS ˆ  ‡ fdd„||¡ dS )z§Traverse 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                      ó
   ˆ   d¡S ©Nú, ©Úwriter   r   r   r   Ú<lambda>‡   ó   
 z&_Unparser.items_view.<locals>.<lambda>N)ÚlenrT   rN   )r   Ú	traverserÚitemsr   r   r   Ú
items_view   s   z_Unparser.items_viewc                 C   ó   | j r
|  d¡ dS dS )z8Adds a newline if it isn't the start of generated sourceÚ
N©rA   rT   r   r   r   r   Úmaybe_newline‰   ó   ÿz_Unparser.maybe_newlinec                 C   r[   )z?Adds a "; " delimiter if it isn't the start of generated sourcez; Nr]   r   r   r   r   Úmaybe_semicolonŽ   r_   z_Unparser.maybe_semicolonÚ Tc                 C   sF   | j r| js|r|  ¡  |  |¡ dS |  ¡  |  d| j | ¡ dS )zˆIndent a piece of text and append it, according to the current
        indentation level, or only delineate with semicolon if applicablez    N)rF   rD   r`   rT   r^   )r   ÚtextÚallow_semicolonr   r   r   Úfill“   s
   z_Unparser.fillc                 G   s   | j  |¡ dS )zAdd new source partsN)rA   Úextend)r   rb   r   r   r   rT      s   z_Unparser.writeNc                 c   s*    |d u rg }| j }|| _ |V  || _ d S r   )rA   )r   ÚbufferÚoriginal_sourcer   r   r   Úbuffered¡   s   €
z_Unparser.bufferedc                 c   s@    |   d¡ |r|   |¡ |  jd7  _dV  |  jd8  _dS )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)rT   rD   )r   Úextrar   r   r   Úblock«   s   €

z_Unparser.blockc                 c   s     |   |¡ dV  |   |¡ dS )z‡A context manager for preparing the source for expressions. It adds
        *start* to the buffer and enters, after exit it adds *end*.NrS   )r   ÚstartÚendr   r   r   Údelimit¹   s   €
z_Unparser.delimitc                 C   s   |r|   ||¡S tƒ S r   )rn   r   )r   rl   rm   Ú	conditionr   r   r   Ú
delimit_ifÂ   s   z_Unparser.delimit_ifc                 C   s   |   dd|  |¡|k¡S )z,Shortcut to adding precedence related parensú(ú))rp   Úget_precedence)r   Ú
precedenceÚnoder   r   r   Úrequire_parensÈ   ó   z_Unparser.require_parensc                 C   s   | j  |tj¡S r   )rB   Úgetr   r-   ©r   ru   r   r   r   rs   Ì   ó   z_Unparser.get_precedencec                 G   s   |D ]}|| j |< qd S r   )rB   )r   rt   Únodesru   r   r   r   Úset_precedenceÏ   s   ÿz_Unparser.set_precedencec                 C   sd   t |ttttfƒrt|jƒdk rdS |jd }t |tƒsdS |j}t |t	ƒr.t |jt
ƒr0|S dS dS )z«If 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ÚModulerW   ÚbodyÚExprÚvalueÚConstantÚstrry   r   r   r   Úget_raw_docstringÓ   s   ÿ

ÿz_Unparser.get_raw_docstringc                 C   s*   | j  |j¡p	|j}|d urd |¡S d S )Nz # type: {})rC   rx   ÚlinenoÚtype_commentÚformat)r   ru   Úcommentr   r   r   Úget_type_commentã   s   
ÿz_Unparser.get_type_commentc                    s6   t |tƒr|D ]}|  |¡ qd S tt| ƒ |¡ d S r   )r}   ÚlistÚtraverseÚsuperr@   Úvisit)r   ru   Úitem©Ú	__class__r   r   rŽ   è   s
   
ÿz_Unparser.traversec                 C   s   g | _ |  |¡ d | j ¡S )z‚Outputs a source code string that, if converted back to an ast
        (using ast.parse) will generate an AST equivalent to *node*ra   )rA   rŽ   Újoinry   r   r   r   r   ò   s   
z_Unparser.visitc                 C   s@   |   |¡}|r|  |¡ |  |jdd … ¡ d S |  |j¡ d S ©Nr   )r‡   Ú_write_docstringrŽ   r‚   )r   ru   Ú	docstringr   r   r   Ú"_write_docstring_and_traverse_bodyù   s
   

z,_Unparser._write_docstring_and_traverse_bodyc                 C   s:   dd„ |j D ƒ| _z|  |¡ W | j ¡  d S | j ¡  w )Nc                 S   s   i | ]
}|j d  |j¡“qS )zignore{})rˆ   rŠ   Útag)Ú.0Úignorer   r   r   Ú
<dictcomp>  s    ÿÿz*_Unparser.visit_Module.<locals>.<dictcomp>)Útype_ignoresrC   r˜   Úclearry   r   r   r   Úvisit_Module  s   þz_Unparser.visit_Modulec                 C   s&   d| _ z|  |¡ W d| _ d S d| _ w )NTF)rF   r˜   ry   r   r   r   Úvisit_Interactive  s   z_Unparser.visit_Interactivec                    s`   ˆ   dd¡ ˆ  ‡ fdd„ˆ j|j¡ W d   ƒ n1 sw   Y  ˆ  d¡ ˆ  |j¡ d S )Nrq   rr   c                      rP   rQ   rS   r   r   r   r   rU     rV   z._Unparser.visit_FunctionType.<locals>.<lambda>ú -> )rn   rN   rŽ   ÚargtypesrT   Úreturnsry   r   r   r   Úvisit_FunctionType  s   ÿÿ
z_Unparser.visit_FunctionTypec                 C   s(   |   ¡  |  tj|j¡ |  |j¡ d S r   )rd   r|   r   r,   r„   rŽ   ry   r   r   r   Ú
visit_Expr  s   z_Unparser.visit_Exprc                 C   sj   |   tj|¡$ |  tj|j|j¡ |  |j¡ |  d¡ |  |j¡ W d   ƒ d S 1 s.w   Y  d S )Nz := )	rv   r   r*   r|   r<   Útargetr„   rŽ   rT   ry   r   r   r   Úvisit_NamedExpr   s   
"üz_Unparser.visit_NamedExprc                    ó(   ˆ   d¡ ˆ  ‡ fdd„ˆ j|j¡ d S )Nzimport c                      rP   rQ   rS   r   r   r   r   rU   )  rV   z(_Unparser.visit_Import.<locals>.<lambda>)rd   rN   rŽ   Únamesry   r   r   r   Úvisit_Import'  ó   
z_Unparser.visit_Importc                    sX   ˆ   d¡ ˆ  d|jpd ¡ |jrˆ  |j¡ ˆ  d¡ ˆ  ‡ fdd„ˆ j|j¡ d S )Nzfrom Ú.r   z import c                      rP   rQ   rS   r   r   r   r   rU   1  rV   z,_Unparser.visit_ImportFrom.<locals>.<lambda>)rd   rT   ÚlevelÚmodulerN   rŽ   r©   ry   r   r   r   Úvisit_ImportFrom+  s   

z_Unparser.visit_ImportFromc                 C   sb   |   ¡  |jD ]}|  tj|¡ |  |¡ |  d¡ q|  |j¡ |  |¡}|r/|  |¡ d S d S )Nú = )	rd   Útargetsr|   r   r+   rŽ   rT   r„   rŒ   )r   ru   r¦   r‰   r   r   r   Úvisit_Assign3  s   


ÿz_Unparser.visit_Assignc                 C   sB   |   ¡  |  |j¡ |  d| j|jjj  d ¡ |  |j¡ d S )Nú z= )	rd   rŽ   r¦   rT   ÚbinopÚopr“   r   r„   ry   r   r   r   Úvisit_AugAssign>  s   z_Unparser.visit_AugAssignc                 C   sŒ   |   ¡  |  dd|j ot|jtƒ¡ |  |j¡ W d   ƒ n1 s$w   Y  |  d¡ |  |j¡ |j	rD|  d¡ |  |j	¡ d S d S )Nrq   rr   ú: r°   )
rd   rp   Úsimpler}   r¦   ÚNamerŽ   rT   Ú
annotationr„   ry   r   r   r   Úvisit_AnnAssignD  s    ÿ

þz_Unparser.visit_AnnAssignc                 C   s.   |   d¡ |jr|  d¡ |  |j¡ d S d S )NÚreturnr³   )rd   r„   rT   rŽ   ry   r   r   r   Úvisit_ReturnN  s
   

þz_Unparser.visit_Returnc                 C   ó   |   d¡ d S )NÚpass©rd   ry   r   r   r   Ú
visit_PassT  ó   z_Unparser.visit_Passc                 C   r¾   )NÚbreakrÀ   ry   r   r   r   Úvisit_BreakW  rÂ   z_Unparser.visit_Breakc                 C   r¾   )NÚcontinuerÀ   ry   r   r   r   Úvisit_ContinueZ  rÂ   z_Unparser.visit_Continuec                    r¨   )Nzdel c                      rP   rQ   rS   r   r   r   r   rU   _  rV   z(_Unparser.visit_Delete.<locals>.<lambda>)rd   rN   rŽ   r±   ry   r   r   r   Úvisit_Delete]  r«   z_Unparser.visit_Deletec                 C   s:   |   d¡ |  |j¡ |jr|  d¡ |  |j¡ d S d S )Nzassert rR   )rd   rŽ   ÚtestÚmsgrT   ry   r   r   r   Úvisit_Asserta  s   

þz_Unparser.visit_Assertc                    r¨   )Nzglobal c                      rP   rQ   rS   r   r   r   r   rU   j  rV   z(_Unparser.visit_Global.<locals>.<lambda>©rd   rN   rT   r©   ry   r   r   r   Úvisit_Globalh  r«   z_Unparser.visit_Globalc                    r¨   )Nz	nonlocal c                      rP   rQ   rS   r   r   r   r   rU   n  rV   z*_Unparser.visit_Nonlocal.<locals>.<lambda>rË   ry   r   r   r   Úvisit_Nonlocall  r«   z_Unparser.visit_Nonlocalc                 C   óz   |   tj|¡, |  d¡ |jr+|  d¡ |  tj|j¡ |  |j¡ W d   ƒ d S W d   ƒ d S 1 s6w   Y  d S )NÚawaitr³   )rv   r   r;   rT   r„   r|   r<   rŽ   ry   r   r   r   Úvisit_Awaitp  ó   

û"þz_Unparser.visit_Awaitc                 C   rÎ   )NÚyieldr³   )rv   r   r,   rT   r„   r|   r<   rŽ   ry   r   r   r   Úvisit_Yieldx  rÑ   z_Unparser.visit_Yieldc                 C   sh   |   tj|¡# |  d¡ |jstdƒ‚|  tj|j¡ |  |j¡ W d   ƒ d S 1 s-w   Y  d S )Nzyield from z-Node can't be used without a value attribute.)	rv   r   r,   rT   r„   Ú
ValueErrorr|   r<   rŽ   ry   r   r   r   Úvisit_YieldFrom€  s   
"ûz_Unparser.visit_YieldFromc                 C   s\   |   d¡ |js|jrtdƒ‚d S |  d¡ |  |j¡ |jr,|  d¡ |  |j¡ d S d S )NÚraisez*Node can't use cause without an exception.r³   z from )rd   ÚexcÚcauserÔ   rT   rŽ   ry   r   r   r   Úvisit_Raiseˆ  s   


þz_Unparser.visit_Raisec                 C   sò   | j ddd |  ¡  |  |j¡ W d   ƒ n1 sw   Y  |jD ]}|  |¡ q$|jrP| j ddd |  ¡  |  |j¡ W d   ƒ n1 sKw   Y  |jrw| j ddd |  ¡  |  |j¡ W d   ƒ d S 1 spw   Y  d S d S )NÚtryF©rc   ÚelseÚfinally)rd   rk   rŽ   r‚   ÚhandlersÚorelseÚ	finalbody)r   ru   Úexr   r   r   Údo_visit_try”  s"   
ÿ

ÿ
"ÿþz_Unparser.do_visit_tryc                 C   ó,   | j }zd| _ |  |¡ W || _ d S || _ w )NF©rE   râ   ©r   ru   Úprev_in_try_starr   r   r   Ú	visit_Try£  ó
   z_Unparser.visit_Tryc                 C   rã   )NTrä   rå   r   r   r   Úvisit_TryStar«  rè   z_Unparser.visit_TryStarc                 C   sŒ   | j | jrdnddd |jr|  d¡ |  |j¡ |jr)|  d¡ |  |jj¡ |  ¡  |  |j¡ W d   ƒ d S 1 s?w   Y  d S )Nzexcept*ÚexceptFrÛ   r³   ú as )	rd   rE   ÚtyperT   rŽ   ÚnameÚidrk   r‚   ry   r   r   r   Úvisit_ExceptHandler³  s   


"ÿz_Unparser.visit_ExceptHandlerc                 C   s  |   ¡  |jD ]}| jddd |  |¡ q| jd|j dd t|dƒr+|  |j¡ | jdd|j	p4|j
d4 d}|j	D ]}|rG|  d	¡ nd
}|  |¡ q=|j
D ]}|r\|  d	¡ nd
}|  |¡ qRW d   ƒ n1 snw   Y  |  ¡  |  |¡ W d   ƒ d S 1 sˆw   Y  d S )Nú@FrÛ   zclass Útype_paramsrq   rr   )ro   rR   T)r^   Údecorator_listrd   rŽ   rí   ÚhasattrÚ_type_params_helperrñ   rp   ÚbasesÚkeywordsrT   rk   r˜   )r   ru   ÚdecoÚcommaÚer   r   r   Úvisit_ClassDef¾  s0   



ûø
"ÿz_Unparser.visit_ClassDefc                 C   ó   |   |d¡ d S )NÚdef©Ú_function_helperry   r   r   r   Úvisit_FunctionDefØ  rz   z_Unparser.visit_FunctionDefc                 C   rû   )Nz	async defrý   ry   r   r   r   Úvisit_AsyncFunctionDefÛ  rz   z _Unparser.visit_AsyncFunctionDefc                 C   sô   |   ¡  |jD ]}| jddd |  |¡ q|d |j }| j|dd t|dƒr/|  |j¡ |  dd¡ |  |j	¡ W d   ƒ n1 sFw   Y  |j
rY|  d¡ |  |j
¡ | j|  |¡d	 |  |¡ W d   ƒ d S 1 ssw   Y  d S )
Nrð   FrÛ   r³   rñ   rq   rr   r¡   ©rj   )r^   rò   rd   rŽ   rí   ró   rô   rñ   rn   Úargsr£   rT   rk   rŒ   r˜   )r   ru   Úfill_suffixr÷   Údef_strr   r   r   rþ   Þ  s"   

ÿ
"ÿz_Unparser._function_helperc                    sf   |d ur/t |ƒdkr1ˆ  dd¡ ˆ  ‡ fdd„ˆ j|¡ W d   ƒ d S 1 s(w   Y  d S d S d S )Nr   ú[ú]c                      rP   rQ   rS   r   r   r   r   rU   ò  rV   z/_Unparser._type_params_helper.<locals>.<lambda>)rW   rn   rN   rŽ   )r   rñ   r   r   r   rô   ï  s
   "ÿÿz_Unparser._type_params_helperc                 C   sL   |   |j¡ |jr|   d¡ |  |j¡ |jr$|   d¡ |  |j¡ d S d S )Nr·   r°   )rT   rí   ÚboundrŽ   Údefault_valuery   r   r   r   Úvisit_TypeVarô  s   

þz_Unparser.visit_TypeVarc                 C   ó4   |   d|j ¡ |jr|   d¡ |  |j¡ d S d S )Nr   r°   ©rT   rí   r  rŽ   ry   r   r   r   Úvisit_TypeVarTupleý  ó
   
þz_Unparser.visit_TypeVarTuplec                 C   r
  )Nú**r°   r  ry   r   r   r   Úvisit_ParamSpec  r  z_Unparser.visit_ParamSpecc                 C   s<   |   d¡ |  |j¡ |  |j¡ |  d¡ |  |j¡ d S )Nztype r°   )rd   rŽ   rí   rô   rñ   rT   r„   ry   r   r   r   Úvisit_TypeAlias	  s
   

z_Unparser.visit_TypeAliasc                 C   ó   |   d|¡ d S )Nzfor ©Ú_for_helperry   r   r   r   Ú	visit_For  rz   z_Unparser.visit_Forc                 C   r  )Nz
async for r  ry   r   r   r   Úvisit_AsyncFor  rz   z_Unparser.visit_AsyncForc                 C   sÐ   | j |dd |  tj|j¡ |  |j¡ |  d¡ |  |j¡ | j|  	|¡d |  |j
¡ W d   ƒ n1 s:w   Y  |jrf| j ddd |  ¡  |  |j¡ W d   ƒ d S 1 s_w   Y  d S d S )NFrÛ   ú in r  rÜ   )rd   r|   r   r+   r¦   rŽ   rT   rG   rk   rŒ   r‚   rß   )r   rd   ru   r   r   r   r    s   
ÿ
"ÿþz_Unparser._for_helperc                 C   s@  | j ddd |  |j¡ |  ¡  |  |j¡ W d   ƒ n1 s"w   Y  |jrwt|jƒdkrwt|jd tƒrw|jd }| j ddd |  |j¡ |  ¡  |  |j¡ W d   ƒ n1 s`w   Y  |jrwt|jƒdkrwt|jd tƒs9|jrž| j ddd |  ¡  |  |j¡ W d   ƒ d S 1 s—w   Y  d S d S )Nzif FrÛ   r   r   zelif rÜ   )	rd   rŽ   rÈ   rk   r‚   rß   rW   r}   ÚIfry   r   r   r   Úvisit_If#  s&   
ÿ$

ÿ$ü
"ÿþz_Unparser.visit_Ifc                 C   s    | j ddd |  |j¡ |  ¡  |  |j¡ W d   ƒ n1 s"w   Y  |jrN| j ddd |  ¡  |  |j¡ W d   ƒ d S 1 sGw   Y  d S d S )Nzwhile FrÛ   rÜ   )rd   rŽ   rÈ   rk   r‚   rß   ry   r   r   r   Úvisit_While5  s   
ÿ
"ÿþz_Unparser.visit_Whilec                    ól   ˆ j ddd ˆ  ‡ fdd„ˆ j|j¡ ˆ jˆ  |¡d ˆ  |j¡ W d   ƒ d S 1 s/w   Y  d S )Nzwith FrÛ   c                      rP   rQ   rS   r   r   r   r   rU   A  rV   z&_Unparser.visit_With.<locals>.<lambda>r  ©rd   rN   rŽ   rY   rk   rŒ   r‚   ry   r   r   r   Ú
visit_With?  ó
   "ÿz_Unparser.visit_Withc                    r  )Nzasync with FrÛ   c                      rP   rQ   rS   r   r   r   r   rU   G  rV   z+_Unparser.visit_AsyncWith.<locals>.<lambda>r  r  ry   r   r   r   Úvisit_AsyncWithE  r  z_Unparser.visit_AsyncWithFc                    sâ   ‡ fdd„}d  t|ˆƒ¡‰|}dˆv rdd„ |D ƒ}‡fdd„|D ƒ}|sAtˆƒ‰t‡fdd	„|D ƒˆd
 ƒ}ˆdd… |gfS ˆrm|j‡fdd„d |d
 d
 ˆd krmt|d
 ƒdksaJ ‚ˆdd… d ˆd  ‰ˆ|fS )z‹Helper for writing string literals, minimizing escapes.
        Returns the tuple (string literal to write, possible quote types).
        c                    s>   ˆ s| dv r| S | dkst dd„ | D ƒƒs|  d¡ d¡S | S )Nz
	ú\c                 s   s    | ]}|t v V  qd S r   r   )rš   Úccr   r   r   Ú	<genexpr>W  s   € zE_Unparser._str_literal_helper.<locals>.escape_char.<locals>.<genexpr>Úunicode_escapeÚascii)ÚallÚencodeÚdecode)Úc)Úescape_special_whitespacer   r   Úescape_charQ  s
   z2_Unparser._str_literal_helper.<locals>.escape_charra   r\   c                 S   ó   g | ]}|t v r|‘qS r   ©Ú_MULTI_QUOTES©rš   Úqr   r   r   Ú
<listcomp>^  ó    z1_Unparser._str_literal_helper.<locals>.<listcomp>c                    ó   g | ]}|ˆ vr|‘qS r   r   r-  ©Úescaped_stringr   r   r/  _  r0  c                 3   s     | ]}ˆ d  |v r|V  qdS )r   Nr   r-  )Ústringr   r   r!  e  s   € z0_Unparser._str_literal_helper.<locals>.<genexpr>r   r   éÿÿÿÿc                    s   | d ˆ d kS )Nr   r5  r   )r.  r2  r   r   rU   i  s    z/_Unparser._str_literal_helper.<locals>.<lambda>)Úkeyr   Nr  )r”   ÚmapÚreprrH   ÚsortrW   )r   r4  Úquote_typesr(  r)  Úpossible_quotesÚquoter   )r(  r3  r4  r   Ú_str_literal_helperK  s    
z_Unparser._str_literal_helperc                 C   s0   | j ||d\}}|d }|  d ||¡¡ dS )zKWrite string literal value with a best effort attempt to avoid backslashes.©r:  r   ú	{0}{1}{0}N)r=  rT   rŠ   )r   r4  r:  Ú
quote_typer   r   r   Ú_write_str_avoiding_backslashesq  s   z)_Unparser._write_str_avoiding_backslashesc           	         s   g }t tƒ}d}|D ]?\‰ }|r(| jˆ |dd\‰ }t|ƒ |¡r%d} n%|}ndˆ v r7dd„ |D ƒ}|s7J ‚‡ fdd„|D ƒ}|rD|}| ˆ ¡ q
|r|dg}| ¡  |D ]&\‰ }|rvtd	ˆ  ƒ‰ d
}ˆ  |¡snJ tˆ ƒƒ‚ˆ t	|ƒd… ‰ | ˆ ¡ qUd 
|¡‰ |d }|  d |ˆ ¡¡ d S )NFT)r:  r(  r\   c                 S   r*  r   r+  r-  r   r   r   r/  ˆ  r0  z._Unparser._ftstring_helper.<locals>.<listcomp>c                    r1  r   r   r-  ©r„   r   r   r/  ‹  r0  r?   r>   z'"r5  ra   r   r?  )r   Ú_ALL_QUOTESr=  ÚsetÚ
isdisjointÚappendrž   r8  Ú
startswithrW   r”   rT   rŠ   )	r   ÚpartsÚ	new_partsr:  Úfallback_to_reprÚis_constantÚnew_quote_typesÚexpected_prefixr@  r   rB  r   Ú_ftstring_helperw  sD   
ý
z_Unparser._ftstring_helperc              	   C   sr   |   |¡ g }|D ](}|  ¡ }|  |¡ W d   ƒ n1 sw   Y  | d |¡t|tƒf¡ q	|  |¡ d S )Nra   )rT   rh   Ú_write_ftstring_innerrF  r”   r}   r…   rN  )r   ÚvaluesÚprefixÚfstring_partsr„   rf   r   r   r   Ú_write_ftstring¡  s   

ÿÿz_Unparser._write_ftstringc                 C   ó   |   |jd¡ d S )NrK   ©rS  rP  ry   r   r   r   Úvisit_JoinedStr¬  ó   z_Unparser.visit_JoinedStrc                 C   rT  )NÚtrU  ry   r   r   r   Úvisit_TemplateStr¯  rW  z_Unparser.visit_TemplateStrc                 C   sØ   t |tƒr|jD ]	}| j||d qd S t |tƒrKt |jtƒrK|j dd¡ dd¡}|rD| dd¡}| dd	¡}| d
d¡}| dd¡}|  |¡ d S t |t	ƒrW|  
|¡ d S t |tƒrc|  |¡ d S td t|ƒ¡ƒ‚)N©Úis_format_specÚ{z{{Ú}z}}r  z\\r=   z\'r>   z\"r\   z\nz$Unexpected node inside JoinedStr, {})r}   Ú	JoinedStrrP  rO  r…   r„   r†   ÚreplacerT   ÚFormattedValueÚvisit_FormattedValueÚInterpolationÚvisit_InterpolationrÔ   rŠ   r8  )r   ru   r[  r„   r   r   r   rO  ²  s"   

ÿ

z_Unparser._write_ftstring_innerc                 C   s&   t | ƒƒ }| tjd |¡ | |¡S r•   )rì   r|   r   r-   r   )r   ÚinnerÚunparserr   r   r   Ú_unparse_interpolation_valueÇ  s   

z&_Unparser._unparse_interpolation_valuec                 C   s¸   |   dd¡L |r|j}n|  |j¡}| d¡r|  d¡ |  |¡ |jdkr2|  d t|jƒ¡¡ |j	rJ|  d¡ | j
|j	dd W d   ƒ d S W d   ƒ d S 1 sUw   Y  d S )	Nr\  r]  r³   r5  z!{}ri   TrZ  )rn   r†   rf  r„   rG  rT   Ú
conversionrŠ   ÚchrÚformat_specrO  )r   ru   Úuse_str_attrÚexprr   r   r   Ú_write_interpolationÌ  s   




ó"õz_Unparser._write_interpolationc                 C   s   |   |¡ d S r   )rl  ry   r   r   r   ra  Ü  rÂ   z_Unparser.visit_FormattedValuec                 C   s   | j ||jd ud d S )N)rj  )rl  r†   ry   r   r   r   rc  ß  rw   z_Unparser.visit_Interpolationc                 C   s0   |   |j¡ |jr|   d¡ |  |j¡ d S d S ©Nr·   )rT   rî   rº   rŽ   ry   r   r   r   Ú
visit_Nameã  s
   
þz_Unparser.visit_Namec                 C   s4   | j dd |jdkr|  d¡ | j|jtd d S )NFrÛ   Úur>  )rd   ÚkindrT   rA  r„   r,  ry   r   r   r   r–   ê  s   

z_Unparser._write_docstringc                 C   sH   t |ttfƒr|  t|ƒ dt¡ dd t¡¡¡ d S |  t|ƒ¡ d S )NÚinfÚnanz	({0}-{0}))r}   ÚfloatÚcomplexrT   r8  r_  Ú_INFSTRrŠ   )r   r„   r   r   r   Ú_write_constantð  s   ýz_Unparser._write_constantc                 C   sŠ   |j }t|tƒr(|  dd¡ |  | j|¡ W d   ƒ d S 1 s!w   Y  d S |tu r3|  d¡ d S |jdkr=|  d¡ |  |j ¡ d S )Nrq   rr   ú...ro  )	r„   r}   Útuplern   rZ   rv  ÚEllipsisrT   rp  )r   ru   r„   r   r   r   Úvisit_Constantü  s   
"ÿ

z_Unparser.visit_Constantc                    óL   ˆ   dd¡ ˆ  ‡ fdd„ˆ j|j¡ W d   ƒ d S 1 sw   Y  d S )Nr  r  c                      rP   rQ   rS   r   r   r   r   rU   
  rV   z&_Unparser.visit_List.<locals>.<lambda>)rn   rN   rŽ   Úeltsry   r   r   r   Ú
visit_List  s   "ÿz_Unparser.visit_Listc                 C   óT   |   dd¡ |  |j¡ |jD ]}|  |¡ qW d   ƒ d S 1 s#w   Y  d S )Nr  r  ©rn   rŽ   ÚeltÚ
generators©r   ru   Úgenr   r   r   Úvisit_ListComp  ó   
ÿ"þz_Unparser.visit_ListCompc                 C   r~  )Nrq   rr   r  r‚  r   r   r   Úvisit_GeneratorExp  r…  z_Unparser.visit_GeneratorExpc                 C   r~  )Nr\  r]  r  r‚  r   r   r   Úvisit_SetComp  r…  z_Unparser.visit_SetCompc                 C   sj   |   dd¡% |  |j¡ |  d¡ |  |j¡ |jD ]}|  |¡ qW d   ƒ d S 1 s.w   Y  d S )Nr\  r]  r·   )rn   rŽ   r6  rT   r„   r  r‚  r   r   r   Úvisit_DictComp  s   

ÿ"üz_Unparser.visit_DictCompc                 C   s   |j r	|  d¡ n|  d¡ |  tj|j¡ |  |j¡ |  d¡ | jtjd |jg|j	¢R Ž  |  |j¡ |j	D ]}|  d¡ |  |¡ q9d S )Nz async for z for r  r   ú if )
Úis_asyncrT   r|   r   r+   r¦   rŽ   r-   rG   Úifs)r   ru   Ú	if_clauser   r   r   Úvisit_comprehension&  s   



þz_Unparser.visit_comprehensionc                 C   s”   |   tj|¡9 |  tjd |j|j¡ |  |j¡ |  d¡ |  |j¡ |  d¡ |  tj|j¡ |  |j¡ W d   ƒ d S 1 sCw   Y  d S )Nr   r‰  z else )	rv   r   r-   r|   r‚   rÈ   rŽ   rT   rß   ry   r   r   r   Úvisit_IfExp4  s   

"ùz_Unparser.visit_IfExpc                    s`   |j r)ˆ  dd¡ ˆ  ‡ fdd„ˆ j|j ¡ W d   ƒ d S 1 s"w   Y  d S ˆ  d¡ d S )Nr\  r]  c                      rP   rQ   rS   r   r   r   r   rU   A  rV   z%_Unparser.visit_Set.<locals>.<lambda>z{*()})r|  rn   rN   rŽ   rT   ry   r   r   r   Ú	visit_Set>  s
   "ÿz_Unparser.visit_Setc                    sl   ‡ fdd„‰‡ ‡fdd„}ˆ   dd¡ ˆ  ‡ fdd„|t|j|jƒ¡ W d   ƒ d S 1 s/w   Y  d S )	Nc                    s"   ˆ   | ¡ ˆ  d¡ ˆ   |¡ d S rm  ©rŽ   rT   )ÚkÚvr   r   r   Úwrite_key_value_pairH  s   

z2_Unparser.visit_Dict.<locals>.write_key_value_pairc                    sD   | \}}|d u rˆ   d¡ ˆ  tj|¡ ˆ  |¡ d S ˆ||ƒ d S )Nr  )rT   r|   r   r2   rŽ   )r‘   r‘  r’  ©r   r“  r   r   Ú
write_itemM  s   
z(_Unparser.visit_Dict.<locals>.write_itemr\  r]  c                      rP   rQ   rS   r   r   r   r   rU   Z  rV   z&_Unparser.visit_Dict.<locals>.<lambda>)rn   rN   ÚzipÚkeysrP  )r   ru   r•  r   r”  r   Ú
visit_DictG  s   ÿ"ÿz_Unparser.visit_Dictc                 C   s^   |   ddt|jƒdkp|  |¡tjk¡ |  | j|j¡ W d   ƒ d S 1 s(w   Y  d S )Nrq   rr   r   )rp   rW   r|  rs   r   r+   rZ   rŽ   ry   r   r   r   Úvisit_Tuple]  s   ý"ûz_Unparser.visit_Tupleú~Únotú+ú-)ÚInvertÚNotÚUAddÚUSub)r›  rš  rœ  r  c                 C   s„   | j |jjj }| j| }|  ||¡% |  |¡ |tjur#|  d¡ |  	||j
¡ |  |j
¡ W d   ƒ d S 1 s;w   Y  d S )Nr³   )Úunoprµ   r“   r   Úunop_precedencerv   rT   r   r9   r|   ÚoperandrŽ   )r   ru   ÚoperatorÚoperator_precedencer   r   r   Úvisit_UnaryOpm  s   



"ùz_Unparser.visit_UnaryOpr   rð   ú/ú%ú<<ú>>ú|ú^ú&ú//r  )Ú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¯  r  )r  c                 C   s´   | j |jjj }| j| }|  ||¡= || jv r |d }|}n|}|d }|  ||j¡ |  	|j¡ |  
d |¡¡ |  ||j¡ |  	|j¡ W d   ƒ d S 1 sSw   Y  d S )Nr   ú {} )r´   rµ   r“   r   Úbinop_precedencerv   Úbinop_rassocr|   ÚleftrŽ   rT   rŠ   Úright)r   ru   r¥  r¦  Úleft_precedenceÚright_precedencer   r   r   Úvisit_BinOpš  s   

"ôz_Unparser.visit_BinOpz==z!=ú<z<=ú>z>=Úiszis notÚinznot in)
ÚEqÚNotEqÚLtÚLtEÚGtÚGtEÚIsÚIsNotÚInÚNotInc                 C   sœ   |   tj|¡= | jtjd |jg|j¢R Ž  |  |j¡ t|j|jƒD ]\}}|  	d| j
|jj  d ¡ |  |¡ q$W d   ƒ d S 1 sGw   Y  d S )Nr   r³   )rv   r   r1   r|   rÀ  ÚcomparatorsrŽ   r–  ÚopsrT   Úcmpopsr“   r   )r   ru   Úorù   r   r   r   Úvisit_Compare¸  s   þ"ýz_Unparser.visit_CompareÚandÚor)ÚAndÚOr)rØ  rÙ  c                    s„   ˆj |jjj }ˆj| g‰ ‡ ‡fdd„}ˆ ˆ d |¡ d |¡‰ˆ ‡‡fdd„||j¡ W d   ƒ d S 1 s;w   Y  d S )Nc                    s.   ˆ d  d7  < ˆ  ˆ d | ¡ ˆ | ¡ d S )Nr   r   )r|   rŽ   )ru   )r¦  r   r   r   Úincreasing_level_traverseÇ  s   z9_Unparser.visit_BoolOp.<locals>.increasing_level_traverser   r½  c                      s
   ˆ  ˆ ¡S r   rS   r   )Úsr   r   r   rU   Î  rV   z(_Unparser.visit_BoolOp.<locals>.<lambda>)	Úboolopsrµ   r“   r   Úboolop_precedencerv   rŠ   rN   rP  )r   ru   r¥  rÜ  r   )r¦  rÝ  r   r   Úvisit_BoolOpÃ  s   
"þz_Unparser.visit_BoolOpc                 C   sZ   |   tj|j¡ |  |j¡ t|jtƒr t|jjtƒr |  d¡ |  d¡ |  |j	¡ d S )Nr³   r¬   )
r|   r   r<   r„   rŽ   r}   r…   ÚintrT   Úattrry   r   r   r   Úvisit_AttributeÐ  s   

z_Unparser.visit_Attributec                 C   s¦   |   tj|j¡ |  |j¡ |  dd¡5 d}|jD ]}|r$|  d¡ nd}|  |¡ q|jD ]}|r9|  d¡ nd}|  |¡ q/W d   ƒ d S 1 sLw   Y  d S )Nrq   rr   FrR   T)	r|   r   r<   ÚfuncrŽ   rn   r  rT   rö   )r   ru   rø   rù   r   r   r   Ú
visit_CallÛ  s    

û"øz_Unparser.visit_Callc                 C   s   dd„ }|   tj|j¡ |  |j¡ |  dd¡& ||jƒr(|  | j|jj¡ n|  |j¡ W d   ƒ d S W d   ƒ d S 1 sAw   Y  d S )Nc                 S   s   t | tƒo| jS r   )r}   ÚTupler|  )Úslice_valuer   r   r   Úis_non_empty_tupleî  s   
þz5_Unparser.visit_Subscript.<locals>.is_non_empty_tupler  r  )	r|   r   r<   r„   rŽ   rn   ÚslicerZ   r|  )r   ru   rè  r   r   r   Úvisit_Subscriptí  s   
û"ýz_Unparser.visit_Subscriptc                 C   s*   |   d¡ |  tj|j¡ |  |j¡ d S )Nr   )rT   r|   r   r2   r„   rŽ   ry   r   r   r   Úvisit_Starredý  s   
z_Unparser.visit_Starredc                 C   r¾   )Nrw  rS   ry   r   r   r   Úvisit_Ellipsis  rÂ   z_Unparser.visit_Ellipsisc                 C   sR   |j r	|  |j ¡ |  d¡ |jr|  |j¡ |jr'|  d¡ |  |j¡ d S d S )Nri   )ÚlowerrŽ   rT   ÚupperÚstepry   r   r   r   Úvisit_Slice  s   

þz_Unparser.visit_Slicec                 C   s^   | j ddd |  |j¡ |  ¡  |jD ]}|  |¡ qW d   ƒ d S 1 s(w   Y  d S )Nzmatch FrÛ   )rd   rŽ   Úsubjectrk   Úcases)r   ru   Úcaser   r   r   Úvisit_Match  s   

ÿ"ÿz_Unparser.visit_Matchc           	      C   sž  d}|j |j }d gt|ƒt|jƒ  |j }tt||ƒdƒD ]/\}}|\}}|r,d}n|  d¡ |  |¡ |rB|  d¡ |  |¡ |t|j ƒkrN|  d¡ q|jsU|j	r~|rZd}n|  d¡ |  d¡ |jr~|  |jj
¡ |jjr~|  d¡ |  |jj¡ |j	r£t|j	|jƒD ]\}}|  d¡ |  |¡ |r¢|  d¡ |  |¡ qˆ|jrË|r«d}n|  d¡ |  d	|jj
 ¡ |jjrÍ|  d¡ |  |jj¡ d S d S d S )
NTr   FrR   ú=z, /r   r·   r  )Úposonlyargsr  rW   ÚdefaultsÚ	enumerater–  rT   rŽ   ÚvarargÚ
kwonlyargsrî   rº   Úkw_defaultsÚkwarg)	r   ru   ÚfirstÚall_argsr÷  ÚindexÚelementsÚaÚdr   r   r   Úvisit_arguments  sV   




€






€

øz_Unparser.visit_argumentsc                 C   s<   |j d u r|  d¡ n|  |j ¡ |  d¡ |  |j¡ d S )Nr  rõ  )ÚargrT   rŽ   r„   ry   r   r   r   Úvisit_keywordK  s
   

z_Unparser.visit_keywordc              	   C   s®   |   tj|¡F |  d¡ |  ¡ }|  |j¡ W d   ƒ n1 s"w   Y  |r2| jdg|¢R Ž  |  d¡ |  tj|j¡ |  |j¡ W d   ƒ d S 1 sPw   Y  d S )NÚlambdar³   r·   )	rv   r   r-   rT   rh   rŽ   r  r|   r‚   )r   ru   rf   r   r   r   Úvisit_LambdaS  s   

ÿ
"øz_Unparser.visit_Lambdac                 C   s*   |   |j¡ |jr|   d|j ¡ d S d S ©Nrë   )rT   rí   Úasnamery   r   r   r   Úvisit_alias^  s   ÿz_Unparser.visit_aliasc                 C   s0   |   |j¡ |jr|  d¡ |   |j¡ d S d S r  )rŽ   Úcontext_exprÚoptional_varsrT   ry   r   r   r   Úvisit_withitemc  s
   
þz_Unparser.visit_withitemc                 C   sp   | j ddd |  |j¡ |jr|  d¡ |  |j¡ |  ¡  |  |j¡ W d   ƒ d S 1 s1w   Y  d S )Nzcase FrÛ   r‰  )rd   rŽ   ÚpatternÚguardrT   rk   r‚   ry   r   r   r   Úvisit_match_casei  s   

"ÿz_Unparser.visit_match_casec                 C   ó   |   |j¡ d S r   )rŽ   r„   ry   r   r   r   Úvisit_MatchValuer  rz   z_Unparser.visit_MatchValuec                 C   r  r   )rv  r„   ry   r   r   r   Úvisit_MatchSingletonu  rz   z_Unparser.visit_MatchSingletonc                    r{  )Nr  r  c                      rP   rQ   rS   r   r   r   r   rU   {  rV   z/_Unparser.visit_MatchSequence.<locals>.<lambda>)rn   rN   rŽ   Úpatternsry   r   r   r   Úvisit_MatchSequencex  s
   ÿ"ÿz_Unparser.visit_MatchSequencec                 C   s&   |j }|d u r	d}|  d |¡¡ d S )NÚ_z*{})rí   rT   rŠ   )r   ru   rí   r   r   r   Úvisit_MatchStar~  s   z_Unparser.visit_MatchStarc              
      s¢   ‡ fdd„}ˆ   dd¡; |j}ˆ  ‡ fdd„|t||jdd¡ |j}|d ur?|r/ˆ  d	¡ ˆ  d
 |¡¡ W d   ƒ d S W d   ƒ d S 1 sJw   Y  d S )Nc                    s*   | \}}ˆ   |¡ ˆ  d¡ ˆ   |¡ d S rm  r  )Úpairr‘  Úpr   r   r   Úwrite_key_pattern_pair…  s   

z<_Unparser.visit_MatchMapping.<locals>.write_key_pattern_pairr\  r]  c                      rP   rQ   rS   r   r   r   r   rU   Ž  rV   z._Unparser.visit_MatchMapping.<locals>.<lambda>T©ÚstrictrR   z**{})rn   r—  rN   r–  r  ÚrestrT   rŠ   )r   ru   r  r—  r  r   r   r   Úvisit_MatchMapping„  s    
ý
õ"øz_Unparser.visit_MatchMappingc              
      sÂ   ˆ   tj|j¡ ˆ  |j¡ ˆ  dd¡C |j}ˆ  ‡ fdd„ˆ j|¡ |j}|rO‡ fdd„}|r6ˆ  	d¡ ˆ  ‡ fdd„|t
||jd	d
¡ W d   ƒ d S W d   ƒ d S 1 sZw   Y  d S )Nrq   rr   c                      rP   rQ   rS   r   r   r   r   rU   ž  rV   z,_Unparser.visit_MatchClass.<locals>.<lambda>c                    s&   | \}}ˆ   d |¡¡ ˆ  |¡ d S )Nz{}=)rT   rŠ   rŽ   )r  râ  r  r   r   r   Úwrite_attr_pattern¢  s   z6_Unparser.visit_MatchClass.<locals>.write_attr_patternrR   c                      rP   rQ   rS   r   r   r   r   rU   ª  rV   Tr  )r|   r   r<   ÚclsrŽ   rn   r  rN   Ú	kwd_attrsrT   r–  Úkwd_patterns)r   ru   r  Úattrsr  r   r   r   Úvisit_MatchClass˜  s(   ÿ

ýò"úz_Unparser.visit_MatchClassc                 C   sœ   |j }|j}|d u r|  d¡ d S |d u r|  |j ¡ d S |  tj|¡  |  tj|j¡ |  |j¡ |  d 	|j ¡¡ W d   ƒ d S 1 sGw   Y  d S )Nr  z as {})
rí   r  rT   rv   r   r-   r|   r3   rŽ   rŠ   )r   ru   rí   r  r   r   r   Úvisit_MatchAs¯  s   "ýz_Unparser.visit_MatchAsc                    sh   ˆ   tj|¡# ˆ jtjd g|j¢R Ž  ˆ  ‡ fdd„ˆ j|j¡ W d   ƒ d S 1 s-w   Y  d S )Nr   c                      rP   )Nz | rS   r   r   r   r   rU   ¿  rV   z)_Unparser.visit_MatchOr.<locals>.<lambda>)rv   r   r3   r|   r  rN   rŽ   ry   r   r   r   Úvisit_MatchOr¼  s   "þz_Unparser.visit_MatchOr)ra   Tr   )F)‹r   r   r   r)   r   rN   rZ   r^   r`   rd   rT   r   rh   rk   rn   rp   rv   rs   r|   r‡   rŒ   rŽ   r   r˜   rŸ   r    r¤   r¥   r§   rª   r¯   r²   r¶   r»   r½   rÁ   rÄ   rÆ   rÇ   rÊ   rÌ   rÍ   rÐ   rÓ   rÕ   rÙ   râ   rç   ré   rï   rú   rÿ   r   rþ   rô   r	  r  r  r  r  r  r  r  r  r  r  rC  r=  rA  rN  rS  rV  rY  rO  rf  rl  ra  rc  rn  r–   rv  rz  r}  r„  r†  r‡  rˆ  r  rŽ  r  r˜  r™  r¢  r   r0   r9   r£  r§  r´   r7   r8   r6   r3   r4   r5   r:   r¾  Ú	frozensetr¿  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&  Ú__classcell__r   r   r’   r   r@   f   sJ   

	


	
	

ÿ&*
	üóóö

	3	
r@   c                 C   s   t ƒ }| | ¡S r   )r@   r   )Úast_objre  r   r   r   ÚunparseÁ  s   
r*  )Úsysra   Ú
contextlibr   r4  r   Úobjectr   r8  Ú
float_infoÚ
max_10_expru  r   Ú_SINGLE_QUOTESr,  rC  ÚNodeVisitorr@   r*  r   r   r   r   Ú<module>   s(   3        c