B
    ¬Ra\ÒN  ã               @   sB  d dl Zd dlZd dlZd dlZd dlZd dlZd dlmZ	m
Z
mZmZmZmZmZmZ d dlmZ ye W n ek
r„   eZY nX G dd„ dejƒZG dd„ dejƒZG dd	„ d	ejƒZG d
d„ dejƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZ G dd„ deƒZ!dS )é    N)Ú
pynamesdefÚ
exceptionsÚastÚastutilsÚ	pyobjectsÚ
fscommandsÚ	argumentsÚutils)Úpycompatc               @   sŒ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zd!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dd„ Zedd „ ƒZdS )#Ú
PyFunctionc             C   s`   t jjj | ¡ t jjj | |||¡ | jj| _t	 
| j|  ¡  ¡ ¡| _t	 
| j¡| _d | _d S )N)ÚropeÚbaser   ZAbstractFunctionÚ__init__ÚPyDefinedObjectÚast_nodeÚargsr   ÚpynamesZ	_InferredÚ_infer_parametersÚ
get_moduleÚ_get_concluded_dataÚparameter_pyobjectsÚ_infer_returnedÚreturnedÚparameter_pynames)ÚselfÚpycorer   Úparent© r   ú5lib/python3.7/site-packages/rope/base/pyobjectsdef.pyr      s    

zPyFunction.__init__c             C   s   i S )Nr   )r   r   r   r   Ú_create_structural_attributes   s    z(PyFunction._create_structural_attributesc             C   s   i S )Nr   )r   r   r   r   Ú_create_concluded_attributes    s    z'PyFunction._create_concluded_attributesc             C   s   t jj | j| t¡S )N)r   r   ÚpyscopesZFunctionScoper   Ú_FunctionVisitor)r   r   r   r   Ú_create_scope#   s    zPyFunction._create_scopec             C   s   t jjj | ¡}|  |¡ |S )N)r   r   ÚoiÚsoiZinfer_parameter_objectsÚ_handle_special_args)r   r   r   r   r   r   '   s    
zPyFunction._infer_parametersNc             C   s   t jjj | |¡S )N)r   r   r$   r%   Zinfer_returned_object)r   r   r   r   r   r   ,   s    zPyFunction._infer_returnedc             C   sL   t |ƒt | jjƒkrH| jjr.| tjj ¡ ¡ | jj	rH| tjj 
¡ ¡ d S )N)Úlenr   r   ÚvarargÚappendr   r   ÚbuiltinsZget_listÚkwargZget_dict)r   r   r   r   r   r&   /   s
    zPyFunction._handle_special_argsc             C   s"   |d k	r|   |¡ | j |¡ d S )N)r&   r   Úset)r   r   r   r   r   Ú_set_parameter_pyobjects6   s    
z#PyFunction._set_parameter_pyobjectsc             C   sD   | j d kr>i }x(t|  ¡ ƒD ]\}}t | |¡||< qW || _ | j S )N)r   Ú	enumerateÚget_param_namesr   ZParameterName)r   ÚresultÚindexÚnamer   r   r   Úget_parameters;   s    
zPyFunction.get_parametersc             C   s$   |t | j ¡ ƒk r | j ¡ | S d S )N)r'   r   Úget)r   r1   r   r   r   Úget_parameterD   s    zPyFunction.get_parameterc             C   s   | j  |¡S )N)r   r4   )r   r   r   r   r   Úget_returned_objectH   s    zPyFunction.get_returned_objectc             C   s
   |   ¡ jS )N)Úget_astr2   )r   r   r   r   Úget_nameK   s    zPyFunction.get_nameTc             C   sR   dd„ | j jD ƒ}|rN| j jr2| t | j j¡¡ | j jrN| t | j j¡¡ |S )Nc             S   s"   g | ]}t |tjƒrt |¡‘qS r   )Ú
isinstancer
   Úast_arg_typeÚget_ast_arg_arg)Ú.0Únoder   r   r   ú
<listcomp>P   s    z.PyFunction.get_param_names.<locals>.<listcomp>)r   r   r(   r)   r
   r;   r+   )r   Zspecial_argsr0   r   r   r   r/   N   s    zPyFunction.get_param_namesc             C   sj   | j  ¡ }t| j tƒrfxJ| jD ]@}tjj ||¡}|tjj	j	d krHdS |tjj	j	d krdS qW dS dS )zzGet function type

        It returns one of 'function', 'method', 'staticmethod' or
        'classmethod' strs.

        ÚstaticmethodÚclassmethodÚmethodZfunction)
r   Ú	get_scoper9   ÚPyClassÚ
decoratorsr   r   ÚevaluateÚ	eval_noder*   )r   ZscopeÚ	decoratorÚpynamer   r   r   Úget_kindY   s    
zPyFunction.get_kindc             C   s0   yt | jdƒS  tk
r*   t | jdd ƒS X d S )NZdecorator_listrD   )Úgetattrr   ÚAttributeError)r   r   r   r   rD   k   s    zPyFunction.decorators)N)T)Ú__name__Ú
__module__Ú__qualname__r   r   r    r#   r   r   r&   r-   r3   r5   r6   r8   r/   rI   ÚpropertyrD   r   r   r   r   r      s   

	
r   c               @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )rC   c             C   sD   t | _tjjj | ¡ tjjj | |||¡ || _|  	¡  
¡ | _d S )N)Ú_ClassVisitorÚvisitor_classr   r   r   ZAbstractClassr   r   r   r   r   Ú_superclasses)r   r   r   r   r   r   r   r   u   s    
zPyClass.__init__c             C   s(   | j  ¡ d kr| j  |  ¡ ¡ | j  ¡ S )N)rR   r4   r,   Ú
_get_bases)r   r   r   r   Úget_superclasses}   s    zPyClass.get_superclassesc             C   s
   |   ¡ jS )N)r7   r2   )r   r   r   r   r8   ‚   s    zPyClass.get_namec             C   s,   i }x"t |  ¡ ƒD ]}| | ¡ ¡ qW |S )N)ÚreversedrT   ÚupdateÚget_attributes)r   r0   r   r   r   r   r    …   s    z$PyClass._create_concluded_attributesc             C   s`   g }xV| j jD ]J}tjj | j ¡ |¡}|d k	r| ¡  	¡ tjj
 d¡kr| | ¡ ¡ qW |S )NZType)r   Úbasesr   r   rE   rF   r   rB   Ú
get_objectZget_typer   Zget_base_typer)   )r   r0   Z	base_namer   r   r   r   rS   ‹   s    
zPyClass._get_basesc             C   s   t jj | j| ¡S )N)r   r   r!   Z
ClassScoper   )r   r   r   r   r#   –   s    zPyClass._create_scopeN)	rL   rM   rN   r   rT   r8   r    rS   r#   r   r   r   r   rC   s   s   rC   c                   sp   e Zd Zd‡ fdd„	Zdd„ Ze dd„ ¡d	d
„ ƒZdd„ Ze	ej
dd„ ƒƒZe	ej
dd„ ƒƒZdd„ Z‡  ZS )ÚPyModuleNFc                s¢   |j j dd¡}|p| }d| _y|  |||¡\}}W n2 tjk
rh   d| _|rV‚ nd}t d¡}Y nX || _	g | _
t| _t | j	¡| _tt| ƒ |||¡ d S )NZignore_syntax_errorsFTÚ
)ÚprojectÚprefsr4   Z
has_errorsÚ_init_sourcer   ÚModuleSyntaxErrorr   ÚparseÚsource_codeÚstar_importsÚ_GlobalVisitorrQ   r   Zread_str_codingZcodingÚsuperrZ   r   )r   r   ÚsourceÚresourceÚforce_errorsÚignoreZsyntax_errorsr=   )Ú	__class__r   r   r   œ   s     
zPyModule.__init__c          
   C   sÈ   d}|r|j }yH|d kr,| ¡ }t |¡}nt|tƒrBt |¡}n|}tj||d}W nh t	k
rŠ } zt
 ||j|j¡‚W d d }~X Y n6 tk
r¾ } zt
 |dd|j ¡‚W d d }~X Y nX ||fS )NÚstring)Úfilenameé   z%s)ÚpathZ
read_bytesr   Zfile_data_to_unicoder9   ÚunicodeZunicode_to_file_datar   r`   ÚSyntaxErrorr   r_   ÚlinenoÚmsgÚUnicodeDecodeErrorÚreason)r   r   ra   rf   rk   Úsource_bytesr   Úer   r   r   r^   °   s     
"&zPyModule._init_sourcec               C   s   i S )Nr   r   r   r   r   Ú<lambda>Ä   s    zPyModule.<lambda>c             C   s&   i }x| j D ]}| | ¡ ¡ qW |S )N)rb   rV   Ú	get_names)r   r0   Zstar_importr   r   r   r    Ä   s    z%PyModule._create_concluded_attributesc             C   s   t jj | j| ¡S )N)r   r   r!   ZGlobalScoper   )r   r   r   r   r#   Ë   s    zPyModule._create_scopec             C   s   t jj | j¡S )zA `SourceLinesAdapter`)r   r   ÚcodeanalyzeZSourceLinesAdapterra   )r   r   r   r   ÚlinesÎ   s    zPyModule.linesc             C   s   t jj | j¡S )zA `LogicalLinesFinder`)r   r   rx   ZCachingLogicalLineFinderry   )r   r   r   r   Úlogical_linesÔ   s    zPyModule.logical_linesc             C   s   t jj |  ¡ ¡S )N)r   r   ÚlibutilsÚmodnameZget_resource)r   r   r   r   r8   Ú   s    zPyModule.get_name)NNF)rL   rM   rN   r   r^   r	   Zprevent_recursionr    r#   rO   Zsaveitry   rz   r8   Ú__classcell__r   r   )ri   r   rZ   š   s    rZ   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 )Ú	PyPackageNFc                sN   || _ |  ¡ }|d k	r,|jj||d ¡ }n
t d¡}tt| ƒ 	|||¡ d S )N)rg   r[   )
rf   Ú_get_init_dot_pyr\   Úget_pymoduler7   r   r`   rd   r~   r   )r   r   rf   rg   Úinit_dot_pyr   )ri   r   r   r   ß   s    
zPyPackage.__init__c             C   s†   i }t jj | j¡}| j |¡}x&| ¡ D ]\}}t jj 	|¡||< q*W | jd krV|S x*|  
¡  ¡ D ]\}}tj| |d||< qdW |S )N)rf   )r   r   r{   r|   rf   r   Z_builtin_submodulesÚitemsr*   ZBuiltinNameÚ_get_child_resourcesr   ÚImportedModule)r   r0   r|   Zextension_submodulesr2   Úmodulerf   r   r   r   r   é   s    
z'PyPackage._create_structural_attributesc             C   s0   i }|   ¡ }|r,| jj |¡}| | ¡ ¡ |S )N)r   r   r\   r€   rV   rW   )r   r0   r   Zinit_objectr   r   r   r    õ   s    z&PyPackage._create_concluded_attributesc             C   s\   i }xR| j  ¡ D ]D}| ¡ r(|||j< q|j d¡r|jdkr|jd d… }|||< qW |S )Nz.pyz__init__.pyéýÿÿÿ)rf   Zget_childrenZ	is_folderr2   Úendswith)r   r0   Úchildr2   r   r   r   rƒ   ý   s    
zPyPackage._get_child_resourcesc             C   s*   | j d k	r"| j  d¡r"| j  d¡S d S d S )Nz__init__.py)rf   Z	has_childZ	get_child)r   r   r   r   r     s    
zPyPackage._get_init_dot_pyc             C   s   |   ¡  ¡ S )N)r   rB   )r   r   r   r   r#     s    zPyPackage._create_scopec             C   s   |   ¡ }|r| jj |¡S | S )N)r   r   r\   r€   )r   r   r   r   r   r     s    zPyPackage.get_module)NF)rL   rM   rN   r   r   r    rƒ   r   r#   r   r}   r   r   )ri   r   r~   Ý   s   
r~   c               @   sN   e Zd Zdd„ Zdd„ Zddd„Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dS )Ú_AssignVisitorc             C   s   || _ d | _d S )N)Úscope_visitorÚassigned_ast)r   rŠ   r   r   r   r     s    z_AssignVisitor.__init__c             C   s(   |j | _x|jD ]}t || ¡ qW d S )N)Úvaluer‹   Útargetsr   Úwalk)r   r=   Z
child_noder   r   r   Ú_Assign  s    z_AssignVisitor._AssignNc             C   s   | j  ||¡ d S )N)rŠ   Ú	_assigned)r   r2   Ú
assignmentr   r   r   r   $  s    z_AssignVisitor._assignedc             C   s,   d }| j d k	rt | j ¡}|  |j|¡ d S )N)r‹   r   ÚAssignmentValuer   Úid)r   r=   r‘   r   r   r   Ú_Name'  s    
z_AssignVisitor._Namec             C   sH   t  |¡}x8|D ]0\}}d }| jd k	r4t | j|¡}|  ||¡ qW d S )N)r   Úget_name_levelsr‹   r   r’   r   )r   r=   Únamesr2   Úlevelsr‘   r   r   r   Ú_Tuple-  s    

z_AssignVisitor._Tuplec             C   s   d S )Nr   )r   r=   r   r   r   Ú
_Attribute5  s    z_AssignVisitor._Attributec             C   s   d S )Nr   )r   r=   r   r   r   Ú
_Subscript8  s    z_AssignVisitor._Subscriptc             C   s   d S )Nr   )r   r=   r   r   r   Ú_Slice;  s    z_AssignVisitor._Slice)N)rL   rM   rN   r   r   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d„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zd*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)S )+Ú_ScopeVisitorc             C   s   || _ || _i | _g | _d S )N)r   Úowner_objectr–   Údefineds)r   r   r   r   r   r   r   A  s    z_ScopeVisitor.__init__c             C   s   | j d k	r| j  ¡ S d S d S )N)r   r   )r   r   r   r   r   G  s    

z_ScopeVisitor.get_modulec             C   s2   t | j|| jƒ}t |¡| j|j< | j |¡ d S )N)	rC   r   r   r   ÚDefinedNamer–   r2   rž   r)   )r   r=   Zpyclassr   r   r   Ú	_ClassDefM  s    z_ScopeVisitor._ClassDefc             C   s´   t | j|| jƒ}x’|jD ]v}t|tjƒr|jdkrt| tƒrt	j
j |¡}t t	j
j | j¡¡}||fdd„}tj||  ¡ |jd| j|j< P qW t |¡| j|j< | j |¡ d S )NrO   c             S   s   |   t |g¡¡S )N)Zget_property_objectr   ZObjectArguments)Útype_Úargr   r   r   Ú_eval[  s    z)_ScopeVisitor._FunctionDef.<locals>._eval)r…   rp   )r   r   r   rD   r9   r   ÚNamer“   rP   r   r   r*   ZPropertyr   ZUnboundNamer   ZPyObjectZEvaluatedNamer   rp   r–   r2   rŸ   rž   r)   )r   r=   Z
pyfunctionrG   r¡   r¢   r£   r   r   r   Ú_FunctionDefR  s    
z_ScopeVisitor._FunctionDefc             C   s
   |   |¡S )N)r¥   )r   r=   r   r   r   Ú_AsyncFunctionDefe  s    z_ScopeVisitor._AsyncFunctionDefc             C   s   t  |t| ƒ¡ d S )N)r   rŽ   r‰   )r   r=   r   r   r   r   h  s    z_ScopeVisitor._Assignc             C   s   d S )Nr   )r   r=   r   r   r   Ú
_AugAssignk  s    z_ScopeVisitor._AugAssignc             C   s8   |   |j|jd¡}x |j|j D ]}t || ¡ q W d S )Nz.__iter__().next())Ú_update_evaluatedÚtargetÚiterÚbodyZorelser   rŽ   )r   r=   r–   rˆ   r   r   r   Ú_Forn  s    z_ScopeVisitor._Forc             C   s
   |   |¡S )N)r¬   )r   r=   r   r   r   Ú	_AsyncFort  s    z_ScopeVisitor._AsyncForc             C   sT   | j  |d ¡}|d kr&tj|  ¡ d}t|tjƒrP|d k	rF|j |¡ || j |< d S )N)r…   )r–   r4   r   ÚAssignedNamer   r9   Úassignmentsr)   )r   r2   r‘   rH   r   r   r   r   w  s    z_ScopeVisitor._assignedÚ Fc       
      C   sh   i }t |tƒr,t |g ||¡}|  ||¡ n8t |¡}x,|D ]$\}}	t ||	||¡}|  ||¡ q<W |S )N)r9   Ústrr   r’   r   r   r•   )
r   r   ÚassignedZ
evaluationÚ	eval_typer0   r‘   r–   r2   r—   r   r   r   r¨   €  s    

z_ScopeVisitor._update_evaluatedc             C   sL   x*t  |¡D ]}|jr|  |j|jd¡ qW x|jD ]}t || ¡ q4W d S )Nz.__enter__())r
   Zget_ast_with_itemsZoptional_varsr¨   Zcontext_exprr«   r   rŽ   )r   r=   Úitemrˆ   r   r   r   Ú_With  s    z_ScopeVisitor._Withc             C   s
   |   |¡S )N)rµ   )r   r=   r   r   r   Ú
_AsyncWith—  s    z_ScopeVisitor._AsyncWithc             C   s|   t jr
tntj}|jd k	r\t|j|ƒr\|j}t|jtjƒrJ|j	rJ|j	d }| j
|j|dd x|jD ]}t || ¡ qdW d S )Nr   T)r³   )r
   ZPY3r±   r   r¤   r2   r9   ÚtypeZTupleZeltsr¨   r«   rŽ   )r   r=   Znode_name_typeZ	type_noderˆ   r   r   r   Ú_excepthandlerš  s    
z_ScopeVisitor._excepthandlerc             C   s   |   |¡ d S )N)r¸   )r   r=   r   r   r   Ú_ExceptHandler¥  s    z_ScopeVisitor._ExceptHandlerc             C   s€   xz|j D ]p}|j}|j}| d¡d }|d k	rTt |  ¡ |¡}|  |¡sx|| j |< qt |  ¡ |¡}|  |¡s|| j |< qW d S )NÚ.r   )r–   r2   ÚasnameÚsplitr   r„   r   Ú_is_ignored_import)r   r=   Zimport_pairZmodule_nameÚaliasZfirst_packageÚimportedr   r   r   Ú_Import¨  s    



z_ScopeVisitor._Importc             C   s°   d}|j r|j }t |  ¡ |j|¡}|  |¡r2d S t|jƒdkrp|jd jdkrpt	| j
tƒr¬| j
j t|ƒ¡ n<x:|jD ]0}|j}|j}|d k	r”|}t ||j¡| j|< qxW d S )Nr   rl   Ú*)Úlevelr   r„   r   r…   r½   r'   r–   r2   r9   r   rZ   rb   r)   Ú
StarImportr»   ÚImportedName)r   r=   rÂ   Úimported_moduleZimported_namer¿   r¾   r   r   r   Ú_ImportFrom¸  s$    


z_ScopeVisitor._ImportFromc             C   s,   | j jj dd¡sdS t| ¡ tjjj	ƒ S )NZignore_bad_importsF)
r   r\   r]   r4   r9   rY   r   r   r   ZAbstractModule)r   rÅ   r   r   r   r½   Í  s    z _ScopeVisitor._is_ignored_importc          	   C   s^   |   ¡ }xP|jD ]F}|d k	rLy|| }W n" tjk
rJ   t |j¡}Y nX || j|< qW d S )N)r   r–   r   ZAttributeNotFoundErrorr   r®   rp   )r   r=   r…   r2   rH   r   r   r   Ú_GlobalÓ  s    z_ScopeVisitor._GlobalN)r°   F)rL   rM   rN   r   r   r    r¥   r¦   r   r§   r¬   r­   r   r¨   rµ   r¶   r¸   r¹   rÀ   rÆ   r½   rÇ   r   r   r   r   rœ   ?  s&   

rœ   c                   s   e Zd Z‡ fdd„Z‡  ZS )rc   c                s   t t| ƒ ||¡ d S )N)rd   rc   r   )r   r   r   )ri   r   r   r   à  s    z_GlobalVisitor.__init__)rL   rM   rN   r   r}   r   r   )ri   r   rc   Þ  s   rc   c                   s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )rP   c                s   t t| ƒ ||¡ d S )N)rd   rP   r   )r   r   r   )ri   r   r   r   æ  s    z_ClassVisitor.__init__c             C   st   t  | |¡ t|jjƒdkrp|jjd }d }t|tjƒrHt| t |¡ƒ}|d k	rpxt	 
|¡D ]}t	 ||¡ q\W d S )Nr   )rœ   r¥   r'   r   r9   r
   r:   Ú_ClassInitVisitorr;   r   Úget_child_nodesrŽ   )r   r=   ÚfirstZnew_visitorrˆ   r   r   r   r¥   é  s    z_ClassVisitor._FunctionDef)rL   rM   rN   r   r¥   r}   r   r   )ri   r   rP   ä  s   rP   c                   s,   e Zd Z‡ fdd„Zdd„ Zdd„ Z‡  ZS )r"   c                s"   t t| ƒ ||¡ g | _d| _d S )NF)rd   r"   r   Úreturned_astsÚ	generator)r   r   r   )ri   r   r   r   ÷  s    z_FunctionVisitor.__init__c             C   s   |j d k	r| j |j ¡ d S )N)rŒ   rË   r)   )r   r=   r   r   r   Ú_Returnü  s    
z_FunctionVisitor._Returnc             C   s"   |j d k	r| j |j ¡ d| _d S )NT)rŒ   rË   r)   rÌ   )r   r=   r   r   r   Ú_Yield   s    
z_FunctionVisitor._Yield)rL   rM   rN   r   rÍ   rÎ   r}   r   r   )ri   r   r"   õ  s   r"   c                   sT   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
‡  ZS )rÈ   c                s   t t| ƒ |¡ || _d S )N)rd   rÈ   r   Ú	self_name)r   rŠ   rÏ   )ri   r   r   r     s    z_ClassInitVisitor.__init__c             C   s˜   t |jtjƒsd S t |jtjƒr”|jj| jkr”|j| j	j
kr\tj|j| j	 ¡ d| j	j
|j< | jd k	r”| j	j
|j }t |tjƒr”|j t | j¡¡ d S )N)rp   r…   )r9   Úctxr   ÚStorerŒ   r¤   r“   rÏ   ÚattrrŠ   r–   r   r®   rp   r   r‹   r¯   r)   r’   )r   r=   rH   r   r   r   r™     s    
z_ClassInitVisitor._Attributec             C   s6   t |jtjƒsd S xt |¡D ]}t || ¡ qW d S )N)r9   rÐ   r   rÑ   rÉ   rŽ   )r   r=   rˆ   r   r   r   r˜     s    z_ClassInitVisitor._Tuplec             C   s   d S )Nr   )r   r=   r   r   r   r”      s    z_ClassInitVisitor._Namec             C   s   d S )Nr   )r   r=   r   r   r   r¥   #  s    z_ClassInitVisitor._FunctionDefc             C   s   d S )Nr   )r   r=   r   r   r   r    &  s    z_ClassInitVisitor._ClassDefc             C   s   d S )Nr   )r   r=   r   r   r   r¬   )  s    z_ClassInitVisitor._Forc             C   s   d S )Nr   )r   r=   r   r   r   rµ   ,  s    z_ClassInitVisitor._With)rL   rM   rN   r   r™   r˜   r”   r¥   r    r¬   rµ   r}   r   r   )ri   r   rÈ     s   rÈ   c               @   s   e Zd Zdd„ Zdd„ ZdS )rÃ   c             C   s
   || _ d S )N)rÅ   )r   rÅ   r   r   r   r   2  s    zStarImport.__init__c             C   s<   i }| j  ¡ }x(|D ] }| d¡st | j |¡||< qW |S )NÚ_)rÅ   rY   Ú
startswithr   rÄ   )r   r0   r¿   r2   r   r   r   rw   5  s    


zStarImport.get_namesN)rL   rM   rN   r   rw   r   r   r   r   rÃ   0  s   rÃ   )"Zrope.base.builtinsr   Zrope.base.codeanalyzeZrope.base.evaluateZrope.base.libutilsZrope.base.oi.soiZrope.base.pyscopesZ	rope.baser   r   r   r   r   r   r   r   r	   Zrope.base.utilsr
   rn   Ú	NameErrorr±   r   rC   rZ   r~   Úobjectr‰   rœ   rc   rP   r"   rÈ   rÃ   r   r   r   r   Ú<module>   s.   (
b'C<&  *