B
    7r\                 @   sr   d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZ G dd de
e	ZG d	d
 d
eZdS )    N)chain)evaluator_method_cache)imports)
DictFilterAbstractNameDefinitionContextNameMixin)Contextc               @   s   e Zd ZdZdd ZdS )ImplicitNSNamez
    Accessing names for implicit namespace packages should infer to nothing.
    This object will prevent Jedi from raising exceptions
    c             C   s   || _ || _d S )N)Z_contextstring_name)selfZimplicit_ns_contextr
    r   >lib/python3.7/site-packages/jedi/evaluate/context/namespace.py__init__   s    zImplicitNSName.__init__N)__name__
__module____qualname____doc__r   r   r   r   r   r	   
   s   r	   c                   sr   e Zd ZdZdZdZ fddZdddZee	 dd	 Z
d
d Zdd Zdd Zdd Ze	 dd Z  ZS )ImplicitNamespaceContextz:
    Provides support for implicit namespace packages
    moduleNc                s*   t t| j|d d || _|| _|| _d S )N)parent_context)superr   r   	evaluator	_fullnamepaths)r   r   fullnamer   )	__class__r   r   r      s    z!ImplicitNamespaceContext.__init__c             c   s   t |  V  d S )N)r   _sub_modules_dict)r   Zsearch_globalZuntil_positionZorigin_scoper   r   r   get_filters$   s    z$ImplicitNamespaceContext.get_filtersc             C   s   |   dd }t| |S )N.)py__package__
rpartitionr	   )r   r
   r   r   r   name'   s    zImplicitNamespaceContext.namec             C   s   d S )Nr   )r   r   r   r   
py__file__-   s    z#ImplicitNamespaceContext.py__file__c             C   s   | j S )zReturn the fullname
        )r   )r   r   r   r   r    0   s    z&ImplicitNamespaceContext.py__package__c             C   s   | j gS )N)r   )r   r   r   r   
py__path__5   s    z#ImplicitNamespaceContext.py__path__c             C   s   | j S )N)r   )r   r   r   r   
py__name__8   s    z#ImplicitNamespaceContext.py__name__c             C   sJ   i }t dd | jD }dd |D }x|D ]}t| |||< q.W |S )Nc             s   s   | ]}t |V  qd S )N)oslistdir).0pathr   r   r   	<genexpr>?   s    z=ImplicitNamespaceContext._sub_modules_dict.<locals>.<genexpr>c             S   s.   g | ]&}|d krd|kr&| dd n|qS )__pycache__r   r   )r!   )r(   	file_namer   r   r   
<listcomp>A   s   z>ImplicitNamespaceContext._sub_modules_dict.<locals>.<listcomp>)r   from_iterabler   r   ZSubModuleName)r   namesZ
file_namesZmodsr"   r   r   r   r   ;   s    
z*ImplicitNamespaceContext._sub_modules_dict)NN)r   r   r   r   Zapi_typer   r   r   propertyr   r"   r#   r    r$   r%   r   __classcell__r   r   )r   r   r      s   
r   )r&   	itertoolsr   Zjedi.evaluate.cacher   Zjedi.evaluater   Zjedi.evaluate.filtersr   r   r   Zjedi.evaluate.base_contextr   r	   r   r   r   r   r   <module>   s   
