a
    V$c                     @   s   d dl mZmZmZmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlZd dlZd dlZeeZdd Ze Zdd Zdd	 Zd
d Zej de dS )    )divisionabsolute_importwith_statementprint_functionunicode_literals)PY2
basestringbchrbordchropenpystrrangeroundstrtobytesunicodeNc                 C   s   t | || f dS )zj
    Reports that the call statement ending at `position` in `filename`
    is missing a from clause.
    N)missingappend)targetfilenameposition r   renpy/add_from.pyreport_missing#   s    r   c                 C   sZ   |  dd} d}|r"d| |}n
d| }tj|sB|tvrBqL|d7 }qt| |S )zL
    Generate a reasonable and unique new label for a call to `target`.
    ._r   z_call_{}_{}z_call_{}   )replaceformatrenpyexports	has_label
new_labelsadd)r   nlabelr   r   r   generate_label0   s    


r'   c                 C   s.  t j| sdS t|  }|  t| d}| d}W d   n1 sN0    Y  d}d}|D ].\}}|||| 7 }|}|dt	|7 }qd|||d 7 }t| d d }|
|d W d   n1 s0    Y  zt | d	  W n ty   Y n0 t | | d	  t | d |  dS )
z,
    Adds missing from clauses to `fn`.
    Nrbzutf-8r    z from {}z.newwbz.bak)ospathexistsr   sortr   readdecoder   r'   writeencodeunlink	Exceptionrename)fneditsfdataconsumedoutputr   r   r   r   r   process_fileH   s*    ,.r<   c                  C   s0   t jd tD ]} | t jjrt|  qdS )Nz;Adds from clauses to call statements that are missing them.F)r    	argumentstakes_no_argumentsr   
startswithconfiggamedirr<   )r6   r   r   r   add_fromp   s
    
rB   )!
__future__r   r   r   r   r   renpy.compatr   r   r	   r
   r   r   r   r   r   r   r   r   collectionsr    r+   defaultdictlistr   r   setr#   r'   r<   rB   r=   register_commandr   r   r   r   <module>   s   8

(