3
^|+                 @   sD   d Z ddlmZmZ ddlmZmZmZ ddlm	Z	m
Z
 dd ZdS )z;Isolate Python 3.5 version-specific semantic actions here.
    )co_flags_is_asynciscode)INDENT_PER_LEVEL
PRECEDENCETABLE_DIRECT)flatten_listgen_function_parens_adjustc       	         s   t jddtd d ffd%d&d(d*d-d0d fdd}|_fdd}|_fdd}|_dd   fdd}|_ fdd }|_fd!d"}|_fd#d$}|_	d S )1Nzawait %pr   
await_expr   %|%c
 %|async for %c in %c:
%+%|%c%-

	      ,%|async for %c in %c:
%+%c%-%|else:
%+%c%-

   
else_suite%|async with %c:
%+%c%-expr   %|async with %c as %c:
%+%c%-   store{**%C}, **)r	   Z
await_stmtZasync_for_stmtZasync_forelse_stmtZasync_with_stmtZasync_with_as_stmtZ
unmap_dictc                sJ    j jd | jdk  j}d _ jd|  | _| jd
k  j  d S )Nzasync callP   %c(%P)r   r
      , d   
async_callr
   r!   r   r   )r   r   r"   )fwritekindprectemplate_engineprune)nodep)self ]/home/psgendb/BIRCHDEV/python/lib/python3.6/site-packages/uncompyle6/semantics/customize35.pyr    ;   s    

z+customize_for_version35.<locals>.async_callc                sj   j }d _ | j }|j} jj jd}|jdrB jd d}t| } j	t
 d}x|D ]}|dkrlq^|d	ksxt j}	d
}
 j|}|jdr|jdstd}
|dd jd}|dkrn|jdr|dd }|	 jkr|d j t
dd  7 }n|dkr|d7 }| r,|
r,|d7 }nd} j|| d}q^W  j|  jt
 | _  j  dS )z-
        prettyprint a list or tuple
        r   *
BUILD_LIST[] 	ROT_THREEEXTENDED_ARGr   T()Fr
    ,N
)r3   r4   r:   r:   )r&   popr%   r#   getvalueendswith
startswithr$   r   indent_morer   AssertionErrorline_numbertraverserstripindentindent_lessr(   )r)   r*   lastnodelastnodetypelast_was_starendchar
flat_elemssepelemrA   Zuse_starvalue)r+   r,   r-   n_build_list_unpackG   sT    









z4customize_for_version35.<locals>.n_build_list_unpackc                s   j }d _  j| }|d }| }x|dd  D ]}|| }q0W |jjdr||j }|d d }|d }xB| | dkr|t| k r| | | |  | |< | |< |}|d7 }qlW n|jjdr| d j}	|	d@ }
|	d	? d@ }|
dkr d
dd|
d ddff}nd} j||  | d }|dkr*|d }|dkrZddt|d ddff} j|| nJt| |
 dkrd|
d |
| d dddff}nd|
d f} j||  | _  j  n
t||  d _  j	|  d S )Nr   r   r
   ZCALL_FUNCTION_VAR_KWr   kwargZCALL_FUNCTION_VAR      z%c(%P, z, %c(pos_argr   Zbuild_list_unpackz*%P)z, *r   z*%c, %P)z*%c)r:   )rR   r   )rS   r   r:   )
r&   Z_get_mappingr%   r>   lenattrr'   r(   r   default)r)   r*   mappingtablekeyientryZ	kwarg_posZargs_posZargcnargskwargstemplateZ	args_node)r+   r,   r-   n_call   sN    






 

z'customize_for_version35.<locals>.n_callc             S   s\   | d d }x*| d D ]}t |drt|jr|}P qW t |doJt|j}|oZt|jjS )Nr   rV   )hasattrr   rV   r   co_flags)r)   Z	code_nodenZis_coder,   r,   r-   is_async_fn   s    z,customize_for_version35.<locals>.is_async_fnc                s,    | rj d|  n
j|  j  d S )N

%|async def %c
r   rT   )re   rT   )r'   rW   r(   )r)   )rd   r+   r,   r-   n_function_def   s    
z/customize_for_version35.<locals>.n_function_defc                s,    | rj d|  n
j|  j  d S )N%|async def %c
r   )rg   r   )r'   rW   r(   )r)   )rd   r+   r,   r-   n_mkfuncdeco0   s    
z.customize_for_version35.<locals>.n_mkfuncdeco0c                sH   | d d }x.| d D ]"} j | ||kr jjd qW  j  d S )Nr   r
   z, **r:   )Zpreorderr#   r$   r(   )r)   Zlast_nrc   )r+   r,   r-   	unmapexpr   s    
z*customize_for_version35.<locals>.unmapexprc                sB   j }d _ | j }|j} jj jd}|jdrD jd d}n|jdrd}x*| D ]"}|dkrX|d	 jjd
rXd}P qXW |rd}q jd d}nV|jdr jd d}n<|jdr̈ jd d}n"|jdr jd d}ntdt	| } j
t d}	 x|D ]}
|
dkrq|
dks,t j} j|
}|
d	 dkr|d	 dks\t|d dksnt|dd  }|d! dkr|dd" }nd| }| jkr|	d j tdd#  7 }	n|	dkr|	d7 }	|snd} j|	| d}	qW |jdkr|jdr jd  j|  jt | _  j  dS )$z7
        prettyprint an unpacked list or tuple
        r   r.   r/   r0   r1   BUILD_TUPLEFr   r   Zbuild_sliceTr2   r5   r6   	BUILD_SET{}BUILD_MAP_UNPACKz{*ROT_TWOz@Internal Error: n_build_list expects list, tuple, set, or unpackr3   r4   tupler
   r8   Nr9   r7   )r3   r4   r:   r:   r:   r:   r:   )r&   r;   r%   r#   r<   r=   r>   r$   	TypeErrorr   r?   r   r@   rA   rB   rD   rV   rE   r(   )r)   r*   rF   rG   rH   rI   Z	no_parensrc   rJ   rK   rL   rA   rM   )r+   r,   r-   n_list_unpack   s~    


















z.customize_for_version35.<locals>.n_list_unpack)r   r   )r   r   r
   r   r   r   )r   r   r
   r   rs   r   r   )r   rt   r   r   r   r   r   )r   ru   rv   r   r:   r   r:   r   )r   rw   )
r   updater   Zn_async_callrN   r`   rf   rh   Zn_unmapexprZn_tuple_unpack)	r+   versionr    rN   r`   rf   rh   ri   rr   r,   )rd   r+   r-   customize_for_version35   s<           

<@Yrz   N)__doc__Zxdisr   r   Zuncompyle6.semantics.constsr   r   r   Zuncompyle6.semantics.helperr   r   rz   r,   r,   r,   r-   <module>   s   