o
    ˷e                     @   s   d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlm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 )    )ValueWrapper)ModuleValue)ParserTreeFilter)StubNameStubModuleName)TypingModuleFilterWrapper)ModuleContextc                       sR   e Zd ZeZ fddZdd Z fddZdd Zd fd
d	Z	dd Z
  ZS )StubModuleValuec                    s   t  j|i | || _d S N)super__init__non_stub_value_set)selfr   argskwargs	__class__ X/var/www/ideatree/venv/lib/python3.10/site-packages/jedi/inference/gradual/stub_value.pyr      s   
zStubModuleValue.__init__c                 C   s   dS )NTr   r   r   r   r   is_stub   s   zStubModuleValue.is_stubc              	      sN   i }| j D ]}z|j}W n	 ty   Y qw ||  q|t   |S )z
        We have to overwrite this, because it's possible to have stubs that
        don't have code for all the child modules. At the time of writing this
        there are for example no stubs for `json.tool`.
        )r   sub_modules_dictAttributeErrorupdater   )r   namesvaluemethodr   r   r   r      s   

z StubModuleValue.sub_modules_dictc                 C   s   t |  |dgt|   S )N)parent_contextorigin_scope)
StubFilter
as_contextlistiter_star_filters)r   r   r   r   r   _get_stub_filters$   s   
z!StubModuleValue._get_stub_filtersNc                 #   s<    t  |}t|d  | j|d}|E d H  |E d H  d S N)r   )r   get_filtersnextr#   )r   r   filtersstub_filtersr   r   r   r%   *   s   

zStubModuleValue.get_filtersc                 C      t | S r
   )StubModuleContextr   r   r   r   _as_context1      zStubModuleValue._as_contextr
   )__name__
__module____qualname__r   _module_name_classr   r   r   r#   r%   r+   __classcell__r   r   r   r   r	   	   s    r	   c                       s   e Zd Zd fdd	Z  ZS )r*   Nc                    s   t  j|dS r$   )r   r%   )r   until_positionr   r   r   r   r%   6   s   zStubModuleContext.get_filters)NNr-   r.   r/   r%   r1   r   r   r   r   r*   5   s    r*   c                       s$   e Zd Z fddZdd Z  ZS )TypingModuleWrapperc                 /   sB    t  j|i |}t|d }|d usJ t|V  |E d H  d S r
   )r   r%   r&   r   )r   r   r   r'   fr   r   r   r%   =   s   

zTypingModuleWrapper.get_filtersc                 C   r)   r
   )TypingModuleContextr   r   r   r   r+   D   r,   zTypingModuleWrapper._as_context)r-   r.   r/   r%   r+   r1   r   r   r   r   r4   <   s    r4   c                       s   e Zd Z fddZ  ZS )r6   c                 /   s2    t  j|i |}tt|d V  |E d H  d S r
   )r   r%   r   r&   )r   r   r   r'   r   r   r   r%   I   s   zTypingModuleContext.get_filtersr3   r   r   r   r   r6   H   s    r6   c                       s    e Zd ZeZ fddZ  ZS )r   c                    s^   t  |sdS | }|jdv r|jjdvrdS |j}|dr-|dr+|ds-dS dS )NF)import_fromimport_name)import_as_namedotted_as_name___T)r   _is_name_reachableget_definitiontypeparentr   
startswithendswith)r   name
definitionnr   r   r   r=   R   s   
zStubFilter._is_name_reachable)r-   r.   r/   r   
name_classr=   r1   r   r   r   r   r   O   s    r   c                   @   s   e Zd ZdS )VersionInfoN)r-   r.   r/   r   r   r   r   rG   c   s    rG   N)jedi.inference.base_valuer   jedi.inference.value.moduler   jedi.inference.filtersr   jedi.inference.namesr   r   jedi.inference.gradual.typingr   jedi.inference.contextr   r	   r*   r4   r6   r   rG   r   r   r   r   <module>   s    ,