B
    Z`d                 @   sx  d Z ddlZye W n ek
r,   eZY nX ddlZddlmZ ddl	m
Z
mZmZmZ G dd dejZG dd deZG d	d
 d
eejZG dd deejZG dd deejZdd Zdd Zdd ZG dd deZG dd deZG dd deZeeZeeZG dd deZ ee Z!ee Z"G dd deZ#ee#Z$ee#Z%G dd  d eZ&ee&Z'ee&Z(G d!d" d"eZ)ee)Z*ee)Z+G d#d$ d$e
j,Z-G d%d& d&ejZ.ee.Z/G d'd( d(ejZ0ee0Z1G d)d* d*eZ2ee2Z3ee2Z4G d+d, d,eZ5d-d. Z6G d/d0 d0ejZ7G d1d2 d2eZ8G d3d4 d4eZ9d5d6 Z:d7d8 Z;d9d: Z<d;d< Z=d=d> Z>d?d@ Z?dAdB Z@dCdD ZAdEdF ZBdGdH ZCe-e e-e" e-e% e-e( e-e+ e-e4 e-e4 e-e+ e-ee<eDdIe-ee=eEdIe-ee>eFdIe-ee?eGdIe-ee6eHdIe-ee@eIdIe-eeAeJdIe-e8 e-e9 e-eeBeKdIe-eeCedIdJZLeejMjNeLdKZMdS )Lz8This module trys to support builtin types and functions.    N)pycompat)pynames	pyobjects	argumentsutilsc                   sb   e Zd Zdi f fdd	ZdZdd Zdd Zdd	 Zee	j
d
d Zee	j
dd Z  ZS )BuiltinModuleNc                s$   t t|   || _|| _|| _d S )N)superr   __init__namepycoreinitial)selfr
   r   r   )	__class__ 1lib/python3.7/site-packages/rope/base/builtins.pyr	      s    zBuiltinModule.__init__c             C   s   | j S )N)
attributes)r   r   r   r   get_attributes   s    zBuiltinModule.get_attributesc             C   s   | j r| j jS d S )N)module__doc__)r   r   r   r   get_doc   s    zBuiltinModule.get_docc             C   s   | j dd S )N.)r
   split)r   r   r   r   get_name   s    zBuiltinModule.get_namec             C   s\   t | j| }|| j | jd k	rX| j| j}x&| D ]\}}tj	j
|||< q:W |S )N)_object_attributesr   updater   r   Z_builtin_submodulesr
   itemsropebasebuiltinsBuiltinName)r   resultZ
submodulesr
   r   r   r   r   r   !   s    
zBuiltinModule.attributesc             C   sR   y8t | j}x(| jddd  D ]}t||d }q"W |S  tk
rL   d S X d S )Nr      )
__import__r
   r   getattrImportError)r   r!   tokenr   r   r   r   ,   s    
zBuiltinModule.module)__name__
__module____qualname__r	   parentr   r   r   propertyr   saveitr   r   __classcell__r   r   )r   r   r      s   
r   c               @   s2   e Zd Zd
ddZdd Zdd Zedd	 ZdS )_BuiltinElementNc             C   s   || _ || _d S )N)builtin_parent)r   r/   r*   r   r   r   r	   :   s    z_BuiltinElement.__init__c             C   s   | j rt| j dd S d S )Nr   )r/   r$   )r   r   r   r   r   >   s    z_BuiltinElement.get_docc             C   s   | j rt| j dd S d S )Nr'   )r/   r$   )r   r   r   r   r   B   s    z_BuiltinElement.get_namec             C   s   | j d krtS | j S )N)r0   r   )r   r   r   r   r*   F   s    
z_BuiltinElement.parent)N)r'   r(   r)   r	   r   r   r+   r*   r   r   r   r   r.   8   s   
r.   c               @   s,   e Zd ZdddZejdd Zdd ZdS )	BuiltinClassNc             C   s$   t | || tj|  || _d S )N)r.   r	   r   AbstractClassr   )r   r/   r   r*   r   r   r   r	   O   s    zBuiltinClass.__init__c             C   s   t | j| }|| j |S )N)r   r/   r   r   )r   r!   r   r   r   r   T   s    zBuiltinClass.get_attributesc             C   s   t S )N)r   )r   r   r   r   
get_moduleZ   s    zBuiltinClass.get_module)N)r'   r(   r)   r	   r   r,   r   r3   r   r   r   r   r1   M   s   
r1   c               @   s2   e Zd Zdddg dfddZdd Zd	ddZdS )
BuiltinFunctionNc             C   s0   t | || tj|  || _|| _|| _d S )N)r.   r	   r   AbstractFunctionargnamesreturnedfunction)r   r7   r8   r/   r6   r*   r   r   r   r	   `   s
    zBuiltinFunction.__init__c             C   s&   | j d k	r|  t| j|S | jS d S )N)r8   _CallContextr6   r7   )r   argsr   r   r   get_returned_objecth   s    
z#BuiltinFunction.get_returned_objectTc             C   s   | j S )N)r6   )r   special_argsr   r   r   get_param_namesn   s    zBuiltinFunction.get_param_names)T)r'   r(   r)   r	   r;   r=   r   r   r   r   r4   ^   s   r4   c                   s2   e Zd Z fddZdd Zejdd Z  ZS )BuiltinUnknownc                s(   t t| t  || _t | _d S )N)r   r>   r	   r   get_unknownr/   type)r   r/   )r   r   r   r	   t   s    zBuiltinUnknown.__init__c             C   s   t t| jdd S )Nr'   )r$   r@   r/   )r   r   r   r   r   y   s    zBuiltinUnknown.get_namec             C   s   t | j| S )N)r   r/   )r   r   r   r   r   |   s    zBuiltinUnknown.get_attributes)	r'   r(   r)   r	   r   r   r,   r   r-   r   r   )r   r   r>   r   s   r>   c          	   C   s   i }xt | D ]}|dkrqyt| |}W n tk
r@   wY nX d }t|r`t|i |d}n"t|rxt||d}n
t|d}t	|||< qW |S )NNone)r*   )r/   r*   )r/   )
dirr$   AttributeErrorinspectZisclassr1   Z	isroutiner4   r>   r    )objr*   r   r
   Zchildpyobjectr   r   r   r      s     


r   c                s    fdd}|S )Nc                 s2   t  dsi  _|  jkr( |   j| <  j|  S )N
_generated)hasattrrG   )r:   )clsr   r   _get_builtin   s
    

z1_create_builtin_type_getter.<locals>._get_builtinr   )rI   rJ   r   )rI   r   _create_builtin_type_getter   s    rK   c                s   t |   fdd}|S )Nc                 s   t  |  S )N)r   PyObject)r:   )type_getterr   r   rJ      s    z,_create_builtin_getter.<locals>._get_builtin)rK   )rI   rJ   r   )rM   r   _create_builtin_getter   s    rN   c               @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )r9   c             C   s   || _ || _d S )N)r6   r:   )r   r6   r:   r   r   r   r	      s    z_CallContext.__init__c             C   s   |d k	rt |tjr| \}}|d kr,dS |d kr8d}| |}d }x>|d kr|d k	rx(| D ]}|| |krf|}P qfW |j}qLW ||fS dS )N)NNr"   )
isinstancer   ZAssignedNameget_definition_location	get_scopeZget_inner_scope_for_lineZ	get_namesr*   )r   pynamepymodulelinenoscoper
   Zcurrentr   r   r   _get_scope_and_pyname   s     
z"_CallContext._get_scope_and_pynamec             C   s(   | j r$| j | j}|| j| S d S )N)r:   get_argumentsr6   index)r   r
   r:   r   r   r   get_argument   s    z_CallContext.get_argumentc             C   s2   | j r.| j | j}|| jkr.|| j| S d S )N)r:   get_pynamesr6   rX   )r   r
   r:   r   r   r   
get_pyname   s    
z_CallContext.get_pynamec             C   s   | j r| j |S d S )N)r:   rW   )r   r6   r   r   r   rW      s    z_CallContext.get_argumentsc             C   s   | j r| j |S d S )N)r:   rZ   )r   r6   r   r   r   rZ      s    z_CallContext.get_pynamesc             C   sN   | j d krd S | j  }| |\}}|d k	rJ| d }|jj||S d S )Nr   )r:   get_instance_pynamerV   rP   r   object_infoget_per_name)r   rR   rU   r
   rS   r   r   r   r^      s    

z_CallContext.get_per_namec             C   sP   | j d krd S | j  }| |\}}|d k	rL| d }|jj||| d S )Nr   )r:   r\   rV   rP   r   r]   save_per_name)r   valuerR   rU   r
   rS   r   r   r   r_      s    

z_CallContext.save_per_nameN)r'   r(   r)   r	   rV   rY   r[   rW   rZ   r^   r_   r   r   r   r   r9      s   
r9   c               @   s0   e Zd Zdd ZdddgdfddZdd	 ZdS )
_AttributeCollectorc             C   s   i | _ || _d S )N)r   r@   )r   r@   r   r   r   r	      s    z_AttributeCollector.__init__Nr   Tc             C   sN   yt | j|}W n tk
r.   |r& d }Y nX tt||||d| j|< d S )N)r7   r8   r6   r/   )r$   r@   rC   r    r4   r   )r   r
   r7   r8   r6   check_existencer/   r   r   r   __call__   s    
z_AttributeCollector.__call__c             C   s   || j |< d S )N)r   )r   r
   r`   r   r   r   __setitem__   s    z_AttributeCollector.__setitem__)r'   r(   r)   r	   rc   rd   r   r   r   r   ra      s   ra   c                   sN   e Zd Zd fdd	Zdd Zdd Zdd	 Zd
d Zdd Zdd Z	  Z
S )ListNc                s   || _ tt}|d| jd |d| jd |d| jddgd |d| jdd	dgd |d
| jdd	dgd |d| jddgd |d| jd |d| jd y|d| jd W n tk
r   Y nX t	t
| t|j d S )N__iter__)r8   __new__appendr   r`   )r8   r6   rd   rX   insertextenditerable__getitem__pop__getslice__)holdingra   list_iterator_get	_new_list	_list_add	_self_set	_list_getrC   r   re   r	   r   )r   ro   	collector)r   r   r   r	     s&    zList.__init__c             C   s
   t |tS )N)_create_builtinget_list)r   r:   r   r   r   rr     s    zList._new_listc             C   s:   | j d k	rd S |d}|d k	r6|t kr6|| d S )Nr`   )ro   rY   r   r?   r_   )r   contextro   r   r   r   rs     s
    

zList._list_addc             C   sB   | j d k	rd S |d}t|}|d k	r>|t kr>|| d S )Nrk   )ro   r[   _infer_sequence_for_pynamer   r?   r_   )r   ry   rk   ro   r   r   r   rt   &  s    

zList._self_setc             C   s`   | j d k	rX|ddg}t|dkrR|d d k	rR|d  td  krRt| j S | j S | S )Nr   keyr"   slice)ro   rW   lenget_typer   
get_objectrx   r^   )r   ry   r:   r   r   r   ru   .  s    

zList._list_getc             C   s   t | |S )N)get_iteratorru   )r   ry   r   r   r   rq   7  s    zList._iterator_getc             C   s   t | |S )N)rx   ru   )r   ry   r   r   r   	_self_get:  s    zList._self_get)N)r'   r(   r)   r	   rr   rs   rt   ru   rq   r   r-   r   r   )r   r   re      s   	re   c                   s   e Zd Zd fdd	Zdd Zdd Zdd	 Zd
d Zdd Zd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 )DictNc                s   || _ || _tt}|d| jd |d| jd |d| jd |d| jd |d| jd |d| j	d |d| j
d |d	| jd |d
| jd |d| jd |d| jd |d| jd tt| t|j d S )Nrg   )r8   rd   popitemrm   getkeysvaluesr   copyrl   rf   r   )r   r   ra   dict	_new_dict	_dict_add	_item_get
_value_get_key_get	_key_list_value_list
_item_listr   	_key_iterrt   r   r   r	   r   )r   r   r   rv   )r   r   r   r	   D  s     zDict.__init__c             C   s   ddd}t ||S )Nc             S   s@   | d krt  S |  }t|tr<t| dkr<t |  S d S )N   )get_dictr~   rO   Tupler}   get_holding_objects)ro   r@   r   r   r   	do_createW  s    
z!Dict._new_dict.<locals>.do_create)N)rw   )r   r:   r   r   r   r   r   V  s    
zDict._new_dictc             C   sR   | j d k	rd S |dddgdd  \}}|d k	rN|t krN|t|| d S )Nr   r{   r`   r"   )r   rW   r   r?   r_   	get_tuple)r   ry   r{   r`   r   r   r   r   `  s
    
zDict._dict_addc             C   sH   | j d k	rt| j | jS | }|d ks6t| tsDt| j | jS |S )N)r   r   r   r^   rO   r~   r   )r   ry   itemr   r   r   r   g  s    
zDict._item_getc             C   s   |  | }| d S )Nr"   )r   r~   r   )r   ry   r   r   r   r   r   o  s    zDict._value_getc             C   s   |  | }| d S )Nr   )r   r~   r   )r   ry   r   r   r   r   r   s  s    zDict._key_getc             C   s   t | |S )N)rx   r   )r   ry   r   r   r   r   w  s    zDict._value_listc             C   s   t | |S )N)rx   r   )r   ry   r   r   r   r   z  s    zDict._key_listc             C   s   t | |S )N)rx   r   )r   ry   r   r   r   r   }  s    zDict._item_listc             C   s   t | |S )N)r   r   )r   ry   r   r   r   _value_iter  s    zDict._value_iterc             C   s   t | |S )N)r   r   )r   ry   r   r   r   r     s    zDict._key_iterc             C   s   t | |S )N)r   r   )r   ry   r   r   r   
_item_iter  s    zDict._item_iterc             C   s,   |  | }| d d \}}t||S )Nr   )r   r~   r   r   )r   ry   r   r{   r`   r   r   r   r     s    zDict._self_getc             C   s   | j d k	rd S |ddgd }|rdt|  trdt|g}| d  |}|	| n(t
|}|d k	rt| tr|	| d S )Nr   dr"   r   )r   rZ   rO   r   r~   r   r   ObjectArgumentsr;   r_   rz   r   )r   ry   Znew_dictr:   r   ro   r   r   r   rt     s    
zDict._self_set)NN)r'   r(   r)   r	   r   r   r   r   r   r   r   r   r   r   r   r   rt   r-   r   r   )r   r   r   B  s   
r   c                   s,   e Zd Z fddZdd Zdd Z  ZS )r   c                sh   || _ d }|r|d }tt|ttt| tt| jdttt|d}tt| 	t
| d S )Nr   )r8   )rl   rn   rg   rf   )objectsr    r4   r   rL   
_new_tupler   r   r   r	   tuple)r   r   firstr   )r   r   r   r	     s    
zTuple.__init__c             C   s   | j S )N)r   )r   r   r   r   r     s    zTuple.get_holding_objectsc             C   s
   t |tS )N)rw   r   )r   r:   r   r   r   r     s    zTuple._new_tuple)r'   r(   r)   r	   r   r   r-   r   r   )r   r   r     s   r   c                   sN   e Zd Zd fdd	Zdd Zdd Zdd	 Zd
d Zdd Zdd Z	  Z
S )SetNc                s   || _ tt}|d| jd dddddg}x|D ]}||| jd q0W |d| jd |d	| jd |d	| jd |d
| jd |d| jd |d| jd |d| jd t	t
| t|j d S )Nrg   )r8   r   
differenceintersectionsymmetric_differenceunionaddr   symmetric_difference_updatedifference_updaterm   rf   )ro   ra   set_new_setr   _set_addrt   _set_getrq   r   r   r	   r   )r   ro   rv   self_methodsmethod)r   r   r   r	     s    
zSet.__init__c             C   s
   t |tS )N)rw   get_set)r   r:   r   r   r   r     s    zSet._new_setc             C   sB   | j d k	rd S |ddgd }|d k	r>|t kr>|| d S )Nr   r`   r"   )ro   rW   r   r?   r_   )r   ry   ro   r   r   r   r     s
    
zSet._set_addc             C   sB   | j d k	rd S |d}t|}|d k	r>|t kr>|| d S )Nrk   )ro   r[   rz   r   r?   r_   )r   ry   rk   ro   r   r   r   rt     s    

zSet._self_setc             C   s   | j d k	r| j S | S )N)ro   r^   )r   ry   r   r   r   r     s    
zSet._set_getc             C   s   t | |S )N)r   r   )r   ry   r   r   r   rq     s    zSet._iterator_getc             C   s   t | |S )N)rx   r   )r   ry   r   r   r   r     s    zSet._self_get)N)r'   r(   r)   r	   r   r   rt   r   rq   r   r-   r   r   )r   r   r     s   r   c                   s$   e Zd Z fddZdd Z  ZS )Strc                s   t | }tt}|dt|dd dddddd	d
dddddddddddg}x|D ]}||| qRW ddg}x0|D ](}y||| W qr tk
r   Y qrX qrW xdD ]}||t| qW tt| 	t|j
 d S )Nrf   F)rb   rl   
capitalizecenterencode
expandtabsjoinljustlowerlstripreplacerjustrstripstripswapcasetitle	translateupperzfillrn   decode)rsplitr   
splitlines)r   rL   ra   strr   rC   rx   r   r   r	   r   )r   Zself_objectrv   r   r   Zpy2_self_methods)r   r   r   r	     s&    






zStr.__init__c             C   s   t jS )N)r   r   )r   r   r   r   r     s    zStr.get_doc)r'   r(   r)   r	   r   r-   r   r   )r   r   r     s   r   c               @   s$   e Zd Zdd Zdd Zdd ZdS )r    c             C   s
   || _ d S )N)rF   )r   rF   r   r   r   r	     s    zBuiltinName.__init__c             C   s   | j S )N)rF   )r   r   r   r   r     s    zBuiltinName.get_objectc             C   s   dS )N)NNr   )r   r   r   r   rP     s    z#BuiltinName.get_definition_locationN)r'   r(   r)   r	   r   rP   r   r   r   r   r      s   r    c                   s.   e Zd Zd fdd	Zdd Zdd Z  ZS )	IteratorNc                s6   t t|   || _tt| jtt| d| _d S )N)nextrf   )r   r   r	   ro   r    r4   r   )r   ro   )r   r   r   r	   #  s    zIterator.__init__c             C   s   | j S )N)r   )r   r   r   r   r   *  s    zIterator.get_attributesc             C   s   | j S )N)ro   )r   r:   r   r   r   r;   -  s    zIterator.get_returned_object)N)r'   r(   r)   r	   r   r;   r-   r   r   )r   r   r   !  s   r   c                   s.   e Zd Zd fdd	Zdd Zdd Z  ZS )		GeneratorNc                sT   t t|   || _tt| jttt| jtt tt tt d| _d S )N)r   rf   closesendthrow)r   r   r	   ro   r    r4   r   r   )r   ro   )r   r   r   r	   5  s    zGenerator.__init__c             C   s   | j S )N)r   )r   r   r   r   r   @  s    zGenerator.get_attributesc             C   s   | j S )N)ro   )r   r:   r   r   r   r;   C  s    zGenerator.get_returned_object)N)r'   r(   r)   r	   r   r;   r-   r   r   )r   r   r   3  s   r   c                   s   e Zd Z fddZ  ZS )Filec                st   t  }tt  }i  d fdd	}|dt| xdD ]}||| q6W xdD ]}|| qNW tt| t  d S )Nc                s&   t t| d }tt|||d | < d S )N)r7   r8   r/   )r$   openr    r4   )r
   r7   r8   r/   )r   r   r   r   P  s    zFile.__init__.<locals>.addrf   )r   readreadline	readlines)	r   flushrT   isattyseektelltruncatewrite
writelines)NN)get_strrx   r   r   r   r	   r   )r   Z
str_objectZstr_listr   r   )r   )r   r   r	   K  s    


zFile.__init__)r'   r(   r)   r	   r-   r   r   )r   r   r   I  s   r   c                   s&   e Zd Zd fdd	Zdd Z  ZS )PropertyNc                sP   || _ || _tt tt tt tttdd}tt| 	t
| d S )N)r8   )fgetfsetfdelrg   )_fgetZ_fdocr    r4   r   ZUnboundName_property_functionr   r   r	   r+   )r   r   r   r   fdocr   )r   r   r   r	   d  s    

zProperty.__init__c             C   s   t | jtjr| j|S d S )N)rO   r   r   r5   r;   )r   r:   r   r   r   get_property_objecto  s    zProperty.get_property_object)NNNN)r'   r(   r)   r	   r   r-   r   r   )r   r   r   b  s   r   c             C   s$   |  ddddg}tt|d S )Nr   r   r   r   r   )rW   r   rL   r   )r:   Z
parametersr   r   r   r   t  s    r   c                   sj   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dddZedd Z  ZS )Lambdac                s&   t t|   || _|j| _|| _d S )N)r   r   r	   noder:   r   rU   )r   r   rU   )r   r   r   r	   {  s    zLambda.__init__c             C   s2   t jj| j| jj}|d k	r&| S t	 S d S )N)
r   r   ZevaluateZ	eval_noderU   r   Zbodyr   r   r?   )r   r:   r!   r   r   r   r;     s    zLambda.get_returned_objectc             C   s
   | j  S )N)r*   r3   )r   r   r   r   r3     s    zLambda.get_modulec             C   s   | j S )N)rU   )r   r   r   r   rQ     s    zLambda.get_scopec             C   s   dS )Nlambdar   )r   r   r   r   get_kind  s    zLambda.get_kindc             C   s   | j S )N)r   )r   r   r   r   get_ast  s    zLambda.get_astc             C   s   i S )Nr   )r   r   r   r   r     s    zLambda.get_attributesc             C   s   dS )Nr   r   )r   r   r   r   r     s    zLambda.get_nameTc             C   sV   dd | j jD }| j jr2|dt| j j  | j jrR|dt| j j  |S )Nc             S   s"   g | ]}t |tjrt|qS r   )rO   r   Zast_arg_typeget_ast_arg_arg).0r   r   r   r   
<listcomp>  s    z*Lambda.get_param_names.<locals>.<listcomp>*z**)r   r:   Zvarargrh   r   r   Zkwarg)r   r<   r!   r   r   r   r=     s    zLambda.get_param_namesc             C   s   | j jS )N)rU   rF   )r   r   r   r   r*     s    zLambda.parent)T)r'   r(   r)   r	   r;   r3   rQ   r   r   r   r   r=   r+   r*   r-   r   r   )r   r   r   y  s   
	r   c                   s   e Zd Z fddZ  ZS )BuiltinObjectc                s   t t| ti  d S )N)r   r   r	   object)r   )r   r   r   r	     s    zBuiltinObject.__init__)r'   r(   r)   r	   r-   r   r   )r   r   r     s   r   c                   s   e Zd Z fddZ  ZS )BuiltinTypec                s   t t| ti  d S )N)r   r   r	   r@   )r   )r   r   r   r	     s    zBuiltinType.__init__)r'   r(   r)   r	   r-   r   r   )r   r   r     s   r   c             C   sx   | d krd S |   }t| g}d|krt|d   }t|tjsDd S ||}|d k	rtd|krt|d   |}|S d S )Nrf   r   )r   r   r   rO   r   r5   r;   )rR   seqr:   rE   iterro   r   r   r   rz     s    
rz   c             C   s@   |  dgd }|d krd }nt|}|d k	r6||S | S d S )Nsequencer   )rZ   rz   )r:   Zcreatorpassedro   r   r   r   rw     s    rw   c             C   s   t  S )N)rx   )r:   r   r   r   _range_function  s    r   c             C   s
   t | tS )N)rw   r   )r:   r   r   r   _reversed_function  s    r   c             C   s
   t | tS )N)rw   rx   )r:   r   r   r   _sorted_function  s    r   c             C   sP   |  ddg\}}|d kr|S |}t|tjrH| }|rHt|d S |S d S )Nr@   r   r   )rW   rO   r   r2   Zget_superclassesrL   )r:   Zpassed_classZpassed_selfZpyclassZsupersr   r   r   _super_function  s    r   c             C   sN   |  dg} g }x,| D ]$}|d kr(d }nt|}|| qW t| }t|S )Nr   )rZ   rz   rh   r   rx   )r:   r   r   ro   r   r   r   r   _zip_function  s    
r   c             C   s8   |  dgd }|d krd }nt|}td |}t|S )Nr   r   )rZ   rz   r   r   )r:   r   ro   r   r   r   r   _enumerate_function  s    
r   c             C   s.   |  dgd }|d krd }nt|}t|S )Nr   r   )rZ   rz   r   )r:   r   ro   r   r   r   _iter_function  s
    r   c             C   s   t  S )N)r   )r:   r   r   r   _input_function
  s    r   )r8   r/   )rp   r   r   r   r   filer   Zunicoderangereversedsortedr   r+   zip	enumerater   r@   r   	raw_input)r   )Or   rD   r   	NameErrorinputZrope.base.evaluater   Zrope.base.utilsr   Z	rope.baser   r   r   r   ZAbstractModuler   r   r.   r2   r1   r5   r4   rL   r>   r   rK   rN   r9   ra   re   rx   Zget_list_typer   r   Zget_dict_typer   r   Zget_tuple_typer   r   Zget_set_typer   r   Zget_str_typeZPyNamer    r   r   r   Zget_generatorr   Zget_fileZget_file_typer   r   r   r   r   rz   rw   r   r   r   r   r   r   r   r   r   r   r   r   r+   r   r   r   Z_initial_builtinsr   r'   r   r   r   r   <module>   s   
+
@?[3/
	