3
Xw^u                 @   s   d dl Z d dlmZmZmZmZmZ d dlmZ	 d dl
mZ G dd deeZd dlmZ d dlmZ d d	lmZ d
d
d
dZe jddei dfddZedkrdd Zeej dS )    N)SourceWalkerSourceWalkerErrorfind_globalsASSIGN_DOC_STRINGRETURN_NONE)DEFAULT_DEBUG)IS_PYPYc               @   s6   e Zd ZdeddfddZdd Zdd Zd	d
 ZdS )AligningWalkerFexecc          	   C   s(   t j| ||||||| d| _d| _d S )Nr   )r   __init__desired_line_numbercurrent_line_number)selfversionoutscannershowastdebug_parsercompile_modeis_pypy r   Y/home/psgendb/BIRCHDEV/python/lib/python3.6/site-packages/uncompyle6/semantics/aligner.pyr      s    zAligningWalker.__init__c             G   s:   |r(t |dko|d dk r(| j|  t| jd| _d S )N   r    )lenwritemaxpending_newlines)r   datar   r   r   println    s    
zAligningWalker.printlnc             G   s  t |dkrR|d | jkrRt| j| j| j }| jjd|  |  j|7  _d| _t |dksvt |dkrz|d dkrzd S djdd |D }d}x`|D ]X}|dkr|d7 }|t |krt| j|| _d S q|rt| j|| _||d  }P qP qW | jdkr8t| j| j| j }| jjd|  |  j|7  _d| _x4|d d d D ]"}|dkrf|  jd7  _nP qHW | jr|d | j  }| jj| d S )Nr   r   
r   c             s   s   | ]}t |V  qd S )N)str).0jr   r   r   	<genexpr>0   s    z'AligningWalker.write.<locals>.<genexpr>)	r   indentr   r   r   r   fr   join)r   r   Zdiffr   nir   r   r   r   &   sD    $

zAligningWalker.writec             C   st   | j |}t|dr"|jr"|j| _|d }|}x|dd  D ]}|| }q<W |j|krp| j||j | | j  d S )N	linestartr   r   )Z_get_mappinghasattrr+   r   typeZengineprune)r   nodemappingtablekeyr*   r   r   r   defaultP   s    


zAligningWalker.defaultN)__name__
__module____qualname__PARSER_DEFAULT_DEBUGr   r   r   r3   r   r   r   r   r	      s   *r	   )iscode)get_scanner)maybe_show_asmF)asmtreegrammarr
   c          
   C   s  t | st|dkr&ttjdd }|dkr2t}t||d}|j| |d\}}	|jdd}
t	|
| t
t}|jdd}|jdd}|r||d< d	|d
< |jdd}t|||||||d}| jdk}|j||	|d|_|jdkstd~t|jt |_yV|jd d t| jd kr6|jd| jd  |jd= |jd tkrP|jj  W n   Y nX |j|j| j|	 x"t|jD ]}|jd|  q~W |jrtd|S )z6
    ingests and deparses a given code block 'co'
    Nr      )r   )code_objectsr;   r=   reduceTZ
errorstackast)r   r   r   r   z<module>)
isTopLevelZstmtsz Should have parsed grammar startr   r   z&# global %s ## Warning: Unused global
z$Deparsing stopped due to parse errorr%   )r8   AssertionErrorfloatsysr   r   r9   Zingestgetr:   dictr7   r	   co_nameZ	build_astrA   r   setZ	mod_globsr   	co_constsZprint_docstringr   popZ
gen_sourcesortedr   ERRORr   )cor   r   r   Z
debug_optsr?   r   r   tokensZ	customizeZshow_asmr   Zshow_grammarZshow_astdeparsedrB   gr   r   r   code_deparse_alignm   sL    


rR   __main__c             C   s   t | }t|j dS )zThis is a docstringN)rR   printtext)rN   rP   r   r   r   deparse_test   s    
rV   )rE   Zuncompyle6.semantics.pysourcer   r   r   r   r   Zspark_parserr   r7   
uncompyle6r   objectr	   Zxdisr8   Zuncompyle6.scannerr9   Zuncompyle6.showr:   ZDEFAULT_DEBUG_OPTSstderrrR   r4   rV   __code__r   r   r   r   <module>   s    I?