B
    7r\#                 @   sl   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 dd ZG d	d
 d
eZG dd de
ZdS )z?
TODO Some parts of this module are still not well documented.
    )ModuleContext)compiled)mixed)create_access_path)Contextc             C   s   t | t| |S )N)r   Zcreate_from_access_pathr   )	evaluatorobj r	   3lib/python3.7/site-packages/jedi/api/interpreter.py_create   s    r   c               @   s   e Zd Zdd ZdS )NamespaceObjectc             C   s
   || _ d S )N)__dict__)selfZdctr	   r	   r
   __init__   s    zNamespaceObject.__init__N)__name__
__module____qualname__r   r	   r	   r	   r
   r      s   r   c               @   s<   e Zd ZdZdd Zdd Zdd Zedd	 Zd
d Z	dS )MixedModuleContextZmixed_modulec             C   s8   || _ || _dd |D | _t||||d| _|| _d S )Nc             S   s   g | ]}t |qS r	   )r   ).0nr	   r	   r
   
<listcomp>   s    z/MixedModuleContext.__init__.<locals>.<listcomp>)path
code_lines)r   Z_namespaces_namespace_objectsr   _module_context	tree_node)r   r   Ztree_moduleZ
namespacesr   r   r	   r	   r
   r      s    
zMixedModuleContext.__init__c             C   s   | j S )N)r   )r   r	   r	   r
   get_node&   s    zMixedModuleContext.get_nodec             o   sp   x| j j||D ]
}|V  qW xL| jD ]B}t| j|}tj| j| || j d}x|j||D ]
}|V  qZW q&W d S )N)Zparent_contextcompiled_objectZtree_context)r   get_filtersr   r   r   r   ZMixedObject)r   argskwargsfilterZnamespace_objr   Zmixed_objectr	   r	   r
   r   )   s    

zMixedModuleContext.get_filtersc             C   s   | j jS )N)r   r   )r   r	   r	   r
   r   8   s    zMixedModuleContext.code_linesc             C   s   t | j|S )N)getattrr   )r   namer	   r	   r
   __getattr__<   s    zMixedModuleContext.__getattr__N)
r   r   r   typer   r   r   propertyr   r$   r	   r	   r	   r
   r      s   r   N)__doc__Zjedi.evaluate.contextr   Zjedi.evaluater   Zjedi.evaluate.compiledr   Zjedi.evaluate.compiled.accessr   Zjedi.evaluate.base_contextr   r   objectr   r   r	   r	   r	   r
   <module>   s   