ó
V]c           @   s¸   d  d l  m Z d  d l m Z d  d l m Z m Z d  d l m Z d e f d     YZ	 d e	 f d     YZ
 d	 e f d
     YZ d e f d     YZ d e f d     YZ d S(   i˙˙˙˙(   t   ContextWrapper(   t   ModuleContext(   t   ParserTreeFiltert   TreeNameDefinition(   t   TypingModuleFilterWrappert   StubModuleContextc           B   sG   e  Z d    Z d   Z d   Z d   Z d   Z e d d d  Z	 RS(   c         O   s&   t  t |   j | |   | |  _ d  S(   N(   t   superR   t   __init__t   non_stub_context_set(   t   selfR   t   argst   kwargs(    (    sA   lib/python2.7/site-packages/jedi/evaluate/gradual/stub_context.pyR   	   s    c         C   s   t  S(   N(   t   True(   R	   (    (    sA   lib/python2.7/site-packages/jedi/evaluate/gradual/stub_context.pyt   is_stub   s    c         C   sk   i  } xB |  j  D]7 } y | j } Wn t k
 r6 q X| j |    q W| j t t |   j    | S(   sÜ   
        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   t   sub_modules_dictt   AttributeErrort   updateR   R   (   R	   t   namest   contextt   method(    (    sA   lib/python2.7/site-packages/jedi/evaluate/gradual/stub_context.pyR      s    c         c   s/   x( |  j  D] } t | j d t   Vq
 Wd  S(   Nt   search_global(   R   t   nextt   get_filterst   False(   R	   R   (    (    sA   lib/python2.7/site-packages/jedi/evaluate/gradual/stub_context.pyt   _get_first_non_stub_filters!   s    c         K   s5   t  |  j d |  d | | g t |  j d |   S(   NR   R   (   t
   StubFiltert	   evaluatort   listt   iter_star_filters(   R	   R   t   filter_kwargs(    (    sA   lib/python2.7/site-packages/jedi/evaluate/gradual/stub_context.pyt   _get_stub_filters%   s    		c         k   sy   t  t |   j | | | |  } t |  |  j d | d | d |  } x | D] } | VqP Wx | D] } | Vqf Wd  S(   NR   t   until_positiont   origin_scope(   R   R   R   R   R   (   R	   R   R   R    R   t   filterst   stub_filterst   f(    (    sA   lib/python2.7/site-packages/jedi/evaluate/gradual/stub_context.pyR   -   s    
			N(
   t   __name__t
   __module__R   R   R   R   R   R   t   NoneR   (    (    (    sA   lib/python2.7/site-packages/jedi/evaluate/gradual/stub_context.pyR      s   					t   TypingModuleWrapperc           B   s   e  Z d    Z RS(   c         o   sF   t  t |   j | |   } t t |   Vx | D] } | Vq3 Wd  S(   N(   R   R'   R   R   R   (   R	   R
   R   R!   R#   (    (    sA   lib/python2.7/site-packages/jedi/evaluate/gradual/stub_context.pyR   @   s    (   R$   R%   R   (    (    (    sA   lib/python2.7/site-packages/jedi/evaluate/gradual/stub_context.pyR'   ?   s   t	   _StubNamec           B   s   e  Z d    Z RS(   c         C   s]   t  t |   j   } |  j d k rY |  j   j   d k rY g  | D] } t |  ^ qC S| S(   Nt   version_infot   sys(   R   R(   t   infert   string_namet   get_root_contextt
   py__name__t   VersionInfo(   R	   t   inferredt   c(    (    sA   lib/python2.7/site-packages/jedi/evaluate/gradual/stub_context.pyR+   I   s    '(   R$   R%   R+   (    (    (    sA   lib/python2.7/site-packages/jedi/evaluate/gradual/stub_context.pyR(   H   s   R   c           B   s    e  Z e Z d    Z d   Z RS(   c         O   s/   | j  d  |  _ t t |   j | |   d  S(   NR   (   t   popt   _search_globalR   R   R   (   R	   R
   R   (    (    sA   lib/python2.7/site-packages/jedi/evaluate/gradual/stub_context.pyR   S   s    c         C   s   t  t |   j |  s t S|  j s | j   } | j d k rY | j j d k rY t Sn  | j } | j	 d  r | j	 d  o | j
 d  r t Sn  t S(	   Nt   import_fromt   import_namet   import_as_namet   dotted_as_namet   _t   __(   R4   R5   (   R6   R7   (   R   R   t   _is_name_reachableR   R3   t   get_definitiont   typet   parentt   valuet
   startswitht   endswithR   (   R	   t   namet
   definitiont   n(    (    sA   lib/python2.7/site-packages/jedi/evaluate/gradual/stub_context.pyR:   W   s    		.(   R$   R%   R(   t
   name_classR   R:   (    (    (    sA   lib/python2.7/site-packages/jedi/evaluate/gradual/stub_context.pyR   P   s   	R/   c           B   s   e  Z RS(    (   R$   R%   (    (    (    sA   lib/python2.7/site-packages/jedi/evaluate/gradual/stub_context.pyR/   h   s   N(   t   jedi.evaluate.base_contextR    t   jedi.evaluate.context.moduleR   t   jedi.evaluate.filtersR   R   t   jedi.evaluate.gradual.typingR   R   R'   R(   R   R/   (    (    (    sA   lib/python2.7/site-packages/jedi/evaluate/gradual/stub_context.pyt   <module>   s   7	