3
Xw^G]                 @   sh   d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZmZmZmZ dd Zd	d
 ZdS )z;Isolate Python 3.6 version-specific semantic actions here.
    )iscode)#GenericASTTraversalPruningException)Token)flatten_listescape_stringstrip_quotes)INDENT_PER_LEVEL
PRECEDENCETABLE_DIRECTTABLE_Rc             C   s   | j ddj ddj ddS )Nz\r
z\nz'''z""")replace)s r   ]/home/psgendb/BIRCHDEV/python/lib/python3.6/site-packages/uncompyle6/semantics/customize36.pyescape_format   s    r   c                s  dt d< dt d< dt d< dt d< dt d< dt d< dt d	< dt d
< dt d< tjd^d`dddgdhdidkdndpdrdsdudvd( tjdxdzd- fd.d/}|_fd0d1}|_fd2d3}|_fd4d5}|_fd6d7}|_fd8d9}|_	fd:d;}|_
fd<d=}	|	_fd>d?}
|
_fd@dA}|_fdBdC}|_dDdEdFdGdH fdIdJ}|_fdKdL}|_fdMdN}|_ fdOdPfdQdR}|_ fdSdT}|_fdUdV}|_fdWdX}|_fdYdZ}|_d S ){Nr   Zcall_kw   	call_kw36call_ex
call_ex_kwcall_ex_kw2call_ex_kw3call_ex_kw4Z
unmap_dictd   formatted_value1
%|%c = %p
store_annotationexpr   %|%c
%|async for %c in %c:
%+%c%-

	   store   	for_block%c(%p)%|except:
%+%c%-   %c(**%p if %c else %c   %|if %c:
%+%c%-testexpr_ifstmts_jumpl%|try:
%+%c%-%c

    %|try:
%+%c%-%|finally:
%+%c%-

returns&%|try:
%+%c%-%|finally:
%+%|return%-

*%clist%[1]{pattr}: %c)Zann_assign_init_valueZann_assign_no_initZasync_for_stmt36r   Zexcept_returnZfunc_args36Zif_exp37ZifstmtlZtry_except36Ztryfinally36Ztryfinally_return_stmtZunpack_listr   %c(*%P), %c(**%C),)CALL_FUNCTION_EXCALL_FUNCTION_EX_KWc                s   | d }|dkr|d }|dkr4 j | d}d}n0|dkr\ j|} jj| d}d}nd}d}| d	 }|jjds|tx.| |d
 D ]} jj|  j| d}qW  j  d S )Nr   r   tupler   z, *LOAD_STR*BUILD_TUPLE_UNPACK_WITH_CALLrA   )	call36_tupleformat_pos_argsfwritekind
startswithAssertionErrorpreorderprune)nodenfirstsepvalueZbuwc)selfr   r   build_unpack_tuple_with_callW   s.    


z=customize_for_version36.<locals>.build_unpack_tuple_with_callc                sx   | d }|dkr|d }|dkr4 j | d}d}nd}d}x.| |d D ]} jj|  j| d}qJW  j  d S )Nr   r   dictr   z, **z**rA   )call36_dictrD   rE   rI   rJ   )rK   rL   rM   rN   )rP   r   r   build_unpack_map_with_callt   s     

z;customize_for_version36.<locals>.build_unpack_map_with_callc       
         s   j }d }| dkrJt| d d jtr6| d d j}n| d d j}| }n| d }|dkr|d }|dksnt|}t|d drt|d jr|d j}n&|d dkst|d j}t|st|d d dkr|d d }n|d d }|jj}d|d kst|d }|d dkrfx.|D ]&}t|dr t|jr |j}P q W | dkrZ| }n| d } n|d d dkr|d }	t|	d dr|	d j}n t|	d dr|	d j}ndt|d dr|s|d }nt|d dr|d }ndn`| dkr| }|d d j}nB|s\|d dkr:|d j}n
|d j}| dkrT| }n| d }| dkrr jd n
 jd t| _  j j	d j   j
|  jd  j   j|  j  | _ t jdkr jd n
 jd  j  d S )NZclassdefdeco2r   r0   r   Zbuild_class_kwmkfuncattrload_closurekwargs	no_kwargsr(   z1Internal Error n_classdef: cannot find class body__len__z1Internal Error n_classdef: cannot superclass namer   z

zclass :z


)rX   rY   r\   r]   )rY   rX   )Zcurrentclass
isinstancerV   strrH   hasattrr   co_namerE   indentZprint_super_classes3Zprintlnindent_morebuild_classindent_lesslenZparam_stackrJ   )
rK   ZcclassZsubclass_info
class_namerd   rU   Zsubclass_codeZ	code_noderL   rW   )rP   r   r   n_classdef36   s    














z-customize_for_version36.<locals>.n_classdef36c                sR   | d }|dkst  j|}|dkr,d}nd| } j|ddf|   j  d
S )zOHandle CALL_FUNCTION_EX 1 (have KW) but with
        BUILD_MAP_UNPACK_WITH_CALLr   r    z%c(%p)z%%c(%s, %%p)r   r0   build_map_unpack_with_callr   N)r   r   )r0   rj   r   )rH   rC   template_enginerJ   )rK   r   rO   fmt)rP   r   r   r      s    
z+customize_for_version36.<locals>.call_ex_kwc                sR   | d dkst  j| d }|dkr,d}nd| } j|ddf|   j  dS )zXHandle CALL_FUNCTION_EX 2  (have KW) but with
        BUILD_{MAP,TUPLE}_UNPACK_WITH_CALLr   Zbuild_tuple_unpack_with_callri   z%c(%p)z%%c(%s, %%p)r   r   r0   rj   r   N)r   r   )r0   rj   r   )rH   rC   rk   rJ   )rK   rO   rl   )rP   r   r   r     s    z,customize_for_version36.<locals>.call_ex_kw2c                s    j | d   jd  j| d d }|dkr4n j|  jd  jd  j | d d   jd | d }|dkr|d d	kr|d }|d	kr j| n jd
  j |  jd  j  dS )zRHandle CALL_FUNCTION_EX 1 (have KW) but without
        BUILD_MAP_UNPACK_WITH_CALLr   (r   ri   z, r?   r0   r   rR   z**)N)rI   rE   rC   rS   rJ   )rK   rO   rX   )rP   r   r   r     s&    







z,customize_for_version36.<locals>.call_ex_kw3c                s   j | d   jd | d d }|dkrF j|dkrd jd n jd  j |  jd | d }|dkr||d }| d }|d	ks jd
kr|dkst|jd@ rt|t r|dkr|dkr|d jj	d r j
| n jd  j |  jd  j  dS )zWHandle CALL_FUNCTION_EX {1 or 2} but without
        BUILD_{MAP,TUPLE}_UNPACK_WITH_CALLr   rm   r   r=   z, r?   r0   r   r<   g@r;   	attributer   kvlistz**rn   NrA   )rI   rE   rB   versionrH   rV   r^   r   rF   rG   rS   rJ   )rK   argsrX   Zcall_function_ex)rP   r   r   r   9  s2    








z,customize_for_version36.<locals>.call_ex_kw4c                s\    j | dd}|jdrX|jds&t|dd	 jd}|dkrBn|jdrX|dd
 }|S )z
        Positional args should format to:
        (*(2, ), ...) -> (2, ...)
        We remove starting and trailing parenthesis and ', ' if
        tuple has only one element.
        ri   )rb   rm   rn   r    r:   NrA   rA   )traverserG   endswithrH   rstrip)rK   rO   )rP   r   r   rC   a  s    

z0customize_for_version36.<locals>.format_pos_argsc                s   | dkst t| dd
 } jt d}xf|D ]^}|dkr>q0|dksJt  j} j|}| jkr~|d j tdd  7 } j|| d	}q0W  jt t	|S )z}
        A tuple used in a call, these are like normal tuples but they
        don't have the enclosing parenthesis.
        r=   Nr   ri   	ROT_THREEEXTENDED_ARGr   r   z, rA   )rw   rx   rA   )
rH   r   rc   r   line_numberrt   rb   rE   re   rf   )rK   Z
flat_elemsrN   elemry   rO   )rP   r   r   rB   w  s     




z-customize_for_version36.<locals>.call36_tuplec                sF   j }d _  jt tdd } j}| d jjdrF| d }t|}d}t|}|d jjdrn|d8 }x||k rB j|  j	|| dd}|dd }|dkrĈ j
| jtdd  } j} j|d	  j	||d   jt|d
 d  d}	 j|	 d}| jkr8|d j tdd  7 } j}|d
7 }qpW n| d jjdr| d }
|
j}|
dkr|t|tstxt| d jD ]l} j|  j|| d	  j	| | dd}	 j|	 d}| jkr|d j tdd  7 } j}qW n0 jd y j|  W n tk
r0   Y nX | _  jt dS )a4  
        A dict used in a call_ex_kw2, which are a dictionary items expressed
        in a call. This should format to:
             a=1, b=2
        In other words, no braces, no quotes around keys and ":" becomes
        "=".

        We will source-code use line breaks to guide us when to break.
        r   Nr   r   rp   	BUILD_MAPri   )rb   =r0   rs   z, r   BUILD_CONST_KEY_MAP
LOAD_CONSTz**rA   rA   rA   rA   rA   rA   r]   rA   rA   )precrc   r   ry   rF   rG   r5   rf   rE   rt   Zindent_if_source_nlrb   rV   r^   r=   rH   rangedefaultr   re   )rK   prN   ry   Zkv_nodelilengthnamerO   Z	keys_nodekeys)rP   r   r   rS     sh    


$




z,customize_for_version36.<locals>.call36_dictc       	         s4   j d|  | d j}t|}t| |d  }t| }|t|d ksNtdd} j}xNtd|D ]@} j|  j| |  | jkrd j d	 }nd
} j}qdW |}d}xl||d k r j|  j|| d   j| |  | jkrd j d	 }nd
}|d7 }|d7 }qW  jd  j	  d S )N%p(r   r   r0   r   z*not enough parameters keyword-tuple valuesri   z,
z  z, r|   rn   r   r   )r   r   r]   )
rk   rV   rf   rH   ry   r   rE   rI   rb   rJ   )	rK   r   Z
num_kwargsZnum_posargsrL   rN   ry   r   j)rP   r   r   n_call_kw36  s:    





z,customize_for_version36.<locals>.n_call_kw36z!sz!rz!az:X)r   r0   r(   Xc                sH   | d dkr2 j r2 j   j| d   j  n
 j|   j  d S )Nr   r2   )Zhide_internalrc   rI   re   r   rJ   )rK   )rP   r   r   n_except_suite_finalize  s    

z8customize_for_version36.<locals>.n_except_suite_finalizec                s^   | d dkrP| d j }t|tr2 j| d j  n jt| d j   j  n
 j|  d S )Nr   r>   r~   )r>   r~   )rV   r^   r=   rE   r   rJ   r   )rK   rO   )rP   r   r   n_formatted_value  s    


z2customize_for_version36.<locals>.n_formatted_valuec                sL    |  | j d }|dkr8|d dkr8t|d j| _n|| _j|  d S )Nr(   r   r   r>   )datar   rV   stringr   )rK   fmt_node)f_conversionrP   r   r   n_formatted_value_attr+  s    
z7customize_for_version36.<locals>.n_formatted_value_attrc                sD   | j d }|dkr*|d dkr*|d j}n|j} j|d| _| jS )Nr   r   r   r>   ri   )r   rV   get
conversion)rK   r   r   )FSTRING_CONVERSION_MAPr   r   r   6  s    
z-customize_for_version36.<locals>.f_conversionc                s   | d }|dkst  | }jrjjdkrjj|dd}|d dkrLd}nd}t|||f }d	| }n8j}d_j|dd}|_td||f }d
| }j| j  d S )Nr   r   r   ri   )rb   {z{ %s%s }z{%s%s}z%szf%s)rH   in_format_stringrt   r   rE   rJ   )rK   r   r   rO   rl   esf_strold_in_format_string)r   rP   r   r   n_formatted_value1?  s$    

z3customize_for_version36.<locals>.n_formatted_value1c                s   j }d_ | d }|dks tj}d_j|dd}| d }|dksNt|j}|d	@ r| d dkslttj| d dd}|d
@ }|rd j|d|f }	qd| }	n j|d}	|_dtd||	f  }
j|
 |_ j	  d S )Nr   r   r   Zformatted_value2ri   )rb   r   ZFORMAT_VALUE_ATTR   r(   z%s:%sz:%szf%sz{%s%s}rA   )
r   rH   r   rt   rV   r   r   r   rE   rJ   )rK   r   r   r   rO   Zformat_value_attrrV   rl   Z
attr_flagsr   r   )r   rP   r   r   n_formatted_value2Z  s.    

z3customize_for_version36.<locals>.n_formatted_value2c                s    j }d _  j}d _d}x| d d D ]}|dks:t j|dd}|d jjdrp|jd	r|dd  }n@|d d
ks|d dkrt|d jtst|j	ddj	dd}|t
|7 }q*W | _ jr؈ j| n jdt|  | _  j  d S )Nr   Z
joined_strri   r   r   )rb   r   Zformatted_valuerD   r>   r~   r   z{{}z}}zf%srA   )r   r   rH   rt   rF   rG   r^   rV   unicoder   r   rE   r   rJ   )rK   r   r   resultr   rO   )rP   r   r   n_joined_strz  s0    
	z-customize_for_version36.<locals>.n_joined_strc                s   t | }|dkst| d }|dkr,|d }|dkr|d }|jjdrNd}nt | d }d}d} j|| |dkr jd  j   jd nd}|dkrd	|dd
ff}nd|dff} j||   j  d S )Nr   r   r=   BUILD_TUPLEr   %C, z*()z*%Cz, *z*%crA   r   rA   r   )r   r   rA   )rf   rH   rF   rG   rk   rE   rJ   )rK   r   Zpos_argsZbuild_tupleZ	tuple_lenZ
star_starttemplate)rP   r   r   starred  s.    
z(customize_for_version36.<locals>.starredc                s    j   d S )N)rJ   )rK   )rP   r   r   return_closure  s    z/customize_for_version36.<locals>.return_closurerA   rA   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/   r   r]   r   r2   )r1   r   r(   )r3   r   r   r5   )r4   r   )r6   r   r   r0   r8   r   )r7   r   r   r0   r(   r:   )r9   r   r   )r	   r
   updater   Zn_build_tuple_unpack_with_callZn_build_map_unpack_with_callrh   Zn_call_ex_kwZn_call_ex_kw2Zn_call_ex_kw3Zn_call_ex_kw4rC   rB   rS   r   r   r   r   r   r   r   Z	n_starredZn_return_closure)rP   rq   rQ   rT   rh   r   r   r   r   rC   rB   rS   r   r   r   r   r   r   r   r   r   r   )r   r   rP   r   customize_for_version36'   s         

h&O$		)r   N)__doc__Zxdisr   Zspark_parser.astr   Zuncompyle6.scanners.tokr   Zuncompyle6.semantics.helperr   r   r   Zuncompyle6.semantics.constsr   r	   r
   r   r   r   r   r   r   r   <module>   s   	