ó
’›V]c           @   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 e f d „  ƒ  YZ d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d e e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e 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  e f d! „  ƒ  YZ d" S(#   iÿÿÿÿ(   t   abstractmethod(   t   search_ancestor(   t	   Parameter(   t
   ContextSett   NO_CONTEXTS(   t   memoize_methodt   AbstractNameDefinitionc           B   sƒ   e  Z d Z d Z d Z d Z e Z e	 d  „  ƒ Z
 e	 d „  ƒ Z e d „ Z d „  Z d „  Z d „  Z d „  Z e d „  ƒ Z RS(	   c         C   s
   t  ‚ d  S(   N(   t   NotImplementedError(   t   self(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt   infer   s    c         C   s   |  h S(   N(    (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt   goto   s    c         C   sJ   |  j  ƒ  } | d  k s | r# | S|  j ƒ  j } | d  k rB d  S| | S(   N(   t   _get_qualified_namest   Nonet   get_root_contextt   string_names(   R   t   include_module_namest   qualified_namest   module_names(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt   get_qualified_names   s    c         C   s   d  S(   N(   R   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   (   s    c         C   s   |  j  j ƒ  S(   N(   t   parent_contextR   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   ,   s    c         C   sC   |  j  d  k r& d |  j j |  j f Sd |  j j |  j |  j  f S(   Ns   <%s: string_name=%s>s!   <%s: string_name=%s start_pos=%s>(   t	   start_posR   t	   __class__t   __name__t   string_name(   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt   __repr__/   s    c         C   s   t  S(   N(   t   False(   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt	   is_import5   s    c         C   s
   |  j  j S(   N(   R   t   api_type(   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   8   s    N(   R   t
   __module__R   R   R   R   t	   tree_namet   Truet   is_context_nameR    R	   R
   R   R   R   R   R   R   t   propertyR   (    (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   
   s   
				t   AbstractArbitraryNamec           B   s&   e  Z d  Z e Z d „  Z d „  Z RS(   sÉ   
    When you e.g. want to complete dicts keys, you probably want to complete
    string literals, which is not really a name, but for Jedi we use this
    concept of Name for completions as well.
    c         C   s"   | |  _  | |  _ | j |  _ d  S(   N(   t	   evaluatorR   t   builtins_moduleR   (   R   R"   t   string(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt   __init__E   s    		c         C   s   t  S(   N(   R   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR	   J   s    (   R   R   t   __doc__R   R   R%   R	   (    (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR!   =   s   	t   AbstractTreeNamec           B   sV   e  Z d  „  Z e d „ Z d „  Z d „  Z d „  Z e d „  ƒ Z	 e d „  ƒ Z
 RS(   c         C   s   | |  _  | |  _ d  S(   N(   R   R   (   R   R   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR%   O   s    	c         C   s   t  |  j d d ƒ } | d  k	 rw | j d k o< |  j ƒ  j rw | rp | j rp t d „  | j |  j ƒ Dƒ ƒ Sd  Sn  t t	 |  ƒ j
 | ƒ S(   Nt   import_namet   import_fromi   c         s   s   |  ] } | j  Vq d  S(   N(   t   value(   t   .0t   n(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pys	   <genexpr>]   s    (   R   R   R   t   levelR   t
   is_packaget   tuplet   get_path_for_namet   superR'   R   (   R   R   t   import_node(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   S   s     c         C   s0   |  j  j ƒ  } | d  k r d  S| |  j j f S(   N(   R   R   R   R   R*   (   R   t   parent_names(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   c   s    c         K   s   |  j  j j |  j  |  j |  S(   N(   R   R"   R
   R   (   R   t   kwargs(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR
   i   s    c         C   s   t  |  j d d ƒ } | d  k	 S(   NR)   R(   (   R   R   R   (   R   t   imp(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   l   s    c         C   s
   |  j  j S(   N(   R   R*   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   p   s    c         C   s
   |  j  j S(   N(   R   R   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   t   s    (   R   R   R%   R   R   R   R
   R   R    R   R   (    (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR'   N   s   				t   ContextNameMixinc           B   s2   e  Z d  „  Z d „  Z d „  Z e d „  ƒ Z RS(   c         C   s   t  |  j g ƒ S(   N(   R   t   _context(   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR	   z   s    c         C   s   |  j  j ƒ  S(   N(   R7   R   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   }   s    c         C   s)   |  j  d  k r |  j St t |  ƒ j ƒ  S(   N(   R   R   R7   R1   R6   R   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   €   s    c         C   s
   |  j  j S(   N(   R7   R   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   …   s    (   R   R   R	   R   R   R    R   (    (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR6   y   s   			t   ContextNamec           B   s   e  Z d  „  Z d „  Z RS(   c         C   s)   t  t |  ƒ j | j | ƒ | |  _ d  S(   N(   R1   R8   R%   R   R7   (   R   t   contextR   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR%   ‹   s    c         C   s   t  |  j j g ƒ S(   N(   R   R7   t   name(   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR
      s    (   R   R   R%   R
   (    (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR8   Š   s   	t   TreeNameDefinitionc           B   sG   e  Z e d  d d d d d d d d d ƒ Z d „  Z e d	 „  ƒ Z RS(
   R(   t   moduleR)   t   funcdeft   functiont   paramt   classdeft   classc         C   s/   d d l  m } |  j } | | j | |  j ƒ S(   Niÿÿÿÿ(   t   tree_name_to_contexts(   t   jedi.evaluate.syntax_treeRB   R   R"   R   (   R   RB   t   parent(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR	   œ   s    	c         C   s;   |  j  j d t ƒ } | d  k r% d S|  j j | j d ƒ S(   Nt   import_name_alwayst	   statement(   R   t   get_definitionR   R   t
   _API_TYPESt   gett   type(   R   t
   definition(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   ¢   s    (   R   R   t   dictRH   R	   R    R   (    (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR;   “   s   		t   _ParamMixinc           B   s)   e  Z e d  „ Z e d „ Z d „  Z RS(   c         C   s;   t  j t  j g } | r+ | j t  j ƒ n  |  j ƒ  | k S(   N(   R   t   POSITIONAL_ONLYt   POSITIONAL_OR_KEYWORDt   appendt   VAR_POSITIONALt   get_kind(   R   t   include_start   options(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt   maybe_positional_argument«   s    c         C   s;   t  j t  j g } | r+ | j t  j ƒ n  |  j ƒ  | k S(   N(   R   t   KEYWORD_ONLYRO   RP   t   VAR_KEYWORDRR   (   R   t   include_starsRT   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt   maybe_keyword_argument±   s    c         C   s6   |  j  ƒ  } | t j k r d S| t j k r2 d Sd S(   Nt   *s   **t    (   RR   R   RQ   RW   (   R   t   kind(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt   _kind_string·   s    (   R   R   R   RU   RY   R]   (    (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyRM   ª   s   t   ParamNameInterfacec           B   s8   e  Z d  Z d „  Z d „  Z d „  Z e d „  ƒ Z RS(   u   paramc         C   s
   t  ‚ d  S(   N(   R   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyRR   Ã   s    c         C   s
   t  ‚ d  S(   N(   R   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt	   to_stringÆ   s    c         C   s   d  S(   N(   R   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt	   get_paramÉ   s    c         C   s6   |  j  ƒ  } | t j k r d S| t j k r2 d Sd S(   Ni   i   i    (   RR   R   RQ   RW   (   R   R\   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt
   star_countÏ   s    (   R   R   R   RR   R_   R`   R    Ra   (    (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR^   À   s
   			t   BaseTreeParamNamec           B   s   e  Z d Z d Z d  „  Z RS(   c         C   s{   |  j  ƒ  |  j } |  j } |  j } | d  k	 rN | d | j d t ƒ 7} n  | d  k	 rw | d | j d t ƒ 7} n  | S(   Ns   : t   include_prefixt   =(   R]   R   t   annotation_nodet   default_nodeR   t   get_codeR   (   R   t   outputt
   annotationt   default(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR_   Ý   s    		N(   R   R   R   Re   Rf   R_   (    (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyRb   Ù   s   t	   ParamNamec           B   sn   e  Z d  „  Z e d „  ƒ Z e d „ Z d „  Z e d „  ƒ Z e d „  ƒ Z	 d „  Z
 d „  Z d „  Z RS(	   c         C   s   t  |  j d ƒ S(   NR?   (   R   R   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt   _get_param_nodeé   s    c         C   s   |  j  ƒ  j S(   N(   Rl   Ri   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyRe   ì   s    c         C   sG   |  j  } | d  k r t S|  j j j | ƒ } | rC | j ƒ  } n  | S(   N(   Re   R   R   R   t	   eval_nodet   execute_annotation(   R   Rn   t   nodet   contexts(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt   infer_annotationð   s    	c         C   s,   |  j  } | d  k r t S|  j j j | ƒ S(   N(   Rf   R   R   R   Rm   (   R   Ro   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt   infer_defaultù   s    	c         C   s   |  j  ƒ  j S(   N(   Rl   Rj   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyRf   ÿ   s    c         C   s,   |  j  j } | j d ƒ r( | d } n  | S(   Nt   __i   (   R   R*   t
   startswith(   R   R:   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR     s    c         C   sä   |  j  ƒ  } | j d k r" t j S| j d k r8 t j S| j j j d ƒ rT t j S| j	 } t
 } xw | j D]l } | r | d k rÙ t j Sqm | d k r¢ t j S| j d k rm | j rÁ t j S| | k rÙ t } qÙ qm qm Wt j S(   Ni   i   Rs   t   /RZ   R?   (   Rl   Ra   R   RQ   RW   R:   R*   Rt   RN   RD   R   t   childrenRV   RJ   R   RO   (   R   t
   tree_paramRD   t   param_appearedt   p(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyRR     s*    	
	c         C   s   |  j  ƒ  j ƒ  S(   N(   R`   R	   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR	   (  s    c         C   s2   |  j  j ƒ  \ } } t |  j d ƒ } | | j S(   NR?   (   R   t   get_executed_params_and_issuesR   R   t   position_index(   R   t   paramst   _t
   param_node(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR`   +  s    (   R   R   Rl   R    Re   R   Rq   Rr   Rf   R   RR   R	   R`   (    (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyRk   è   s   						t   ParamNameWrapperc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s   | |  _  d  S(   N(   t   _wrapped_param_name(   R   t
   param_name(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR%   2  s    c         C   s   t  |  j | ƒ S(   N(   t   getattrR€   (   R   R:   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt   __getattr__5  s    c         C   s   d |  j  j |  j f S(   Ns   <%s: %s>(   R   R   R€   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   8  s    (   R   R   R%   Rƒ   R   (    (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   1  s   		t
   ImportNamec           B   s_   e  Z d Z d Z d „  Z e d „ Z e d „  ƒ Z e	 d „  ƒ Z
 d „  Z e d „  ƒ Z RS(	   i   i    c         C   s   | |  _  | |  _ d  S(   N(   t   _from_module_contextR   (   R   R   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR%   @  s    	c         C   sb   | r^ |  j  rT |  j  d k s* t d ƒ ‚ |  j j } | d  k rF | S| |  j f S|  j f Sd S(   Ni   s(   Everything else is not supported for now(    (   t   _levelt   AssertionErrorR…   R   R   R   (   R   R   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   D  s    	
c         C   s/   |  j  } |  j ƒ  } | s | St t | ƒ ƒ S(   N(   R…   R	   t   nextt   iter(   R   t   mt   import_contexts(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   O  s
    	c         C   sA   d d l  m } |  j } | | j |  j g | d |  j ƒj ƒ  S(   Niÿÿÿÿ(   t   ImporterR-   (   t   jedi.evaluate.importsRŒ   R…   R"   R   R†   t   follow(   R   RŒ   RŠ   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR	   Y  s    	c         C   s    g  |  j  ƒ  D] } | j ^ q S(   N(   R	   R:   (   R   RŠ   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR
   _  s    c         C   s   d S(   NR<   (    (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   b  s    (   i   i    (   R   R   R   R†   R%   R   R   R    R   R   R	   R
   R   (    (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR„   <  s   	
	t   SubModuleNamec           B   s   e  Z d  Z RS(   i   (   R   R   R†   (    (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   g  s   t   NameWrapperc           B   s2   e  Z d  „  Z e d „  ƒ Z d „  Z d „  Z RS(   c         C   s   | |  _  d  S(   N(   t   _wrapped_name(   R   t   wrapped_name(    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR%   l  s    c         C   s
   t  ‚ d  S(   N(   R   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR	   o  s    c         C   s   t  |  j | ƒ S(   N(   R‚   R‘   (   R   R:   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyRƒ   s  s    c         C   s   d |  j  j |  j f S(   Ns   %s(%s)(   R   R   R‘   (   R   (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   v  s    (   R   R   R%   R    R	   Rƒ   R   (    (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyR   k  s   		N(   t   abcR    t
   parso.treeR   t   jedi._compatibilityR   t   jedi.evaluate.base_contextR   R   t
   jedi.cacheR   t   objectR   R!   R'   R6   R8   R;   RM   R^   Rb   Rk   R   R„   R   R   (    (    (    s2   lib/python2.7/site-packages/jedi/evaluate/names.pyt   <module>   s$   3+	I+