ó
’›V]c           @  s  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l	 m
 Z
 m Z m Z m Z m Z d  d l m Z e e e e
 e e e f Z e e j ƒ Z e j e j e j e j e j e j  e j! e j" e j# e j$ e j% e f Z& e r"e& e j' e j( e j) f 7Z& n  e e j ƒ Z e e* j+ ƒ Z, e j- d j. e/ ƒ Z0 e e0 d ƒ Z1 e/ ƒ  Z2 i e j3 d 6e j4 d	 6e j5 d
 6e j6 d 6e j7 d 6e j8 d 6e j9 d 6e j: d 6Z; i e j< d 6e j= d 6Z> e> j? e; ƒ e j e j  e j" e e, e1 e@ eA f ZB e2 d „ ZC e d d ƒ ZD d „  ZE d „  ZF d „  ZG d e/ f d „  ƒ  YZH d „  ZI d „  ZJ d „  ZK d e/ f d „  ƒ  YZL d „  ZM d S(    iÿÿÿÿ(   t   print_functionN(   t
   namedtuple(   t   unicodet   is_py3t   builtinst
   py_versiont   force_unicode(   t   getattr_statict   __dict__t   __subclasshook__s   ==s   !=t   iss   is nott   <s   <=t   >s   >=t   +t   -c         C  s`   y t  |  | ƒ \ } } Wn$ t k
 r? | t k r; ‚  n  | SXt | t ƒ r\ t |  | ƒ S| S(   N(   R   t   AttributeErrort	   _sentinelt
   isinstancet   ALLOWED_DESCRIPTOR_ACCESSt   getattr(   t   objt   namet   defaultt   attrt   is_get_descriptor(    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   safe_getattrO   s    t   SignatureParams]   name has_default default default_string has_annotation annotation annotation_string kind_namec           s   ‡  f d †  } | S(   Nc           s   d ‡ ‡  f d † } | S(   s¹   
        This decorator caches just the ids, oopposed to caching the object itself.
        Caching the id has the advantage that an object doesn't need to be
        hashable.
        c           s   t  |  ˆ  ƒ } t | ƒ } y | | | | d SWnU t k
 rŠ ˆ  d k rd ˆ |  | | ƒ } n ˆ |  | ƒ } | | | f | | <| SXd  S(   Ni    t   mixed_cache(   R   t   idt   KeyError(   t	   evaluatorR   t   parent_contextt   cachet   keyt   result(   t   attribute_namet   func(    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   wrapperp   s    N(   t   None(   R$   R%   (   R#   (   R$   s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt	   decoratorj   s    (    (   R#   R'   (    (   R#   s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   compiled_objects_cachei   s    c         C  s   |  j  j | ƒ S(   N(   t   compiled_subprocesst   get_or_create_access_handle(   R   R   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   create_access…   s    c         C  s¸   t  j | } t  _ z~ y t | ƒ Wni t k
 rU t d | | f d t  j ƒd  St k
 r d d  l } t d | j	 ƒ  d t  j ƒd  SXWd  | t  _ Xt  j
 | } t |  | ƒ S(   Ns$   Module %s not importable in path %s.t   fileiÿÿÿÿs   Cannot import:
%s(   t   syst   patht
   __import__t   ImportErrort   printt   stderrR&   t	   Exceptiont	   tracebackt
   format_exct   modulest   create_access_path(   R   t   dotted_namet   sys_patht   tempR4   t   module(    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   load_module‰   s     	
t
   AccessPathc           B  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C  s   | |  _  d  S(   N(   t   accesses(   t   selfR>   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   __init__¡   s    c         C  s   |  j  S(   N(   R>   (   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   __getstate__§   s    c         C  s   | |  _  d  S(   N(   R>   (   R?   t   value(    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   __setstate__ª   s    (   t   __name__t
   __module__R@   RA   RC   (    (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyR=       s   		c         C  s   t  |  | ƒ } t | j ƒ  ƒ S(   N(   R+   R=   t   get_access_path_tuples(   R   R   t   access(    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyR7   ®   s    c           s   ‡  f d †  S(   Nc            s   t  ˆ  |  | Ž  ƒ S(   N(   R   (   t   argst   kwargs(   R$   (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   <lambda>´   t    (    (   R$   (    (   R$   s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   _force_unicode_decorator³   s    c         C  sj   t  j |  ƒ r d St  j |  ƒ r& d St  j |  ƒ sb t  j |  ƒ sb t  j |  ƒ sb t  j |  ƒ rf d Sd S(   Nu   classu   moduleu   functionu   instance(   t   inspectt   isclasst   ismodulet	   isbuiltint   ismethodt   ismethoddescriptort
   isfunction(   R   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   get_api_type·   s    t   DirectObjectAccessc           B  sU  e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z e d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d „ Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d  „  Z$ d! „  Z% d" „  Z& d# „  Z' RS($   c         C  s   | |  _  | |  _ d  S(   N(   t
   _evaluatort   _obj(   R?   R   R   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyR@   Ä   s    	c         C  s   d |  j  j |  j ƒ  f S(   Ns   %s(%s)(   t	   __class__RD   t   get_repr(   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   __repr__È   s    c         C  s   t  |  j | ƒ S(   N(   R+   RV   (   R?   R   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   _create_accessË   s    c         C  s   t  |  j | ƒ S(   N(   R7   RV   (   R?   R   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   _create_access_pathÎ   s    c         C  s   t  |  j ƒ S(   N(   t   boolRW   (   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt
   py__bool__Ñ   s    c         C  s'   y |  j  j SWn t k
 r" d  SXd  S(   N(   RW   t   __file__R   R&   (   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt
   py__file__Ô   s    c         C  s   t  t j |  j ƒ ƒ p d S(   Nu    (   R   RM   t   getdocRW   (   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt	   py__doc__Ú   s    c         C  s}   t  |  j ƒ s" t j |  j ƒ r. |  j } n% y |  j j } Wn t k
 rR d  SXy t | j ƒ SWn t k
 rx d  SXd  S(   N(	   t   _is_class_instanceRW   RM   RR   RX   R   R&   R   RD   (   R?   t   cls(    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt
   py__name__Ý   s    c           s$   t  ‡  f d †  ˆ  j j d Dƒ ƒ S(   Nc         3  s   |  ] } ˆ  j  | ƒ Vq d  S(   N(   R\   (   t   .0Rd   (   R?   (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pys	   <genexpr>ï   s    i   (   t   tupleRW   t   __mro__(   R?   (    (   R?   s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   py__mro__accessesî   s    c         C  sE   t  |  j t ƒ r; g  |  j j ƒ  D] } |  j | ƒ ^ q" S|  j ƒ  S(   N(   R   RW   t   dictt   valuesR\   t   py__iter__list(   R?   t   v(    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   py__getitem__all_valuesñ   s    )c         C  s-   t  |  j ƒ t k r d  S|  j |  j | ƒ S(   N(   t   typeRW   t   ALLOWED_GETITEM_TYPESR&   R\   (   R?   t   index(    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   py__simple_getitem__ö   s    c         C  s   t  |  j d ƒ s d  St |  j ƒ t k r/ g  Sg  } xC t |  j ƒ D]2 \ } } | d k ra Pn  | j |  j | ƒ ƒ qE W| S(   Nt   __getitem__i   (   t   hasattrRW   R&   Ro   Rp   t	   enumeratet   appendR\   (   R?   t   lstt   it   part(    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyRl   ý   s    c         C  s   |  j  |  j j ƒ S(   N(   R\   RW   RX   (   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   py__class__  s    c         C  s&   g  |  j  j D] } |  j | ƒ ^ q S(   N(   RW   t	   __bases__R\   (   R?   t   base(    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   py__bases__  s    c         C  s
   |  j  j S(   N(   RW   t   __path__(   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt
   py__path__  s    c         C  s³   d } t  j |  j ƒ r% t |  j ƒ St |  j d d d ƒ| k rP t |  j ƒ St |  j ƒ } | t k r{ t j |  j ƒ St | d d d ƒ| k r£ t |  j ƒ St j |  j ƒ S(   NR   t   __builtin__RE   R   RK   (   R   R€   (   RM   RO   RW   t   reprR   Ro   RZ   t   object(   R?   R   t   type_(    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyRY     s    c         C  s   t  j |  j ƒ S(   N(   RM   RN   RW   (   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   is_class)  s    c         C  s   t  j |  j ƒ S(   N(   RM   RO   RW   (   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt	   is_module,  s    c         C  s   t  |  j ƒ S(   N(   Rc   RW   (   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   is_instance/  s    c         C  s   t  j |  j ƒ S(   N(   RM   RR   RW   (   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyRR   2  s    c         C  so   d „  } |  j  ƒ  r d S| |  j ƒ } | d  k r\ | t |  j ƒ ƒ } | d  k r\ d Sn  t | j d ƒ ƒ S(   Nc         S  s   t  |  d t  |  d d  ƒ ƒ S(   Nt   __qualname__RD   (   R   R&   (   R   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   try_to_get_name6  s    t   .(    (    (   R…   RW   R&   Ro   Rg   t   split(   R?   Rˆ   R   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   get_qualified_names5  s    	c         C  s   t  t t t |  j ƒ ƒ ƒ S(   N(   t   listt   mapR   t   dirRW   (   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyRŽ   B  s    c         C  s.   y t  |  j ƒ t SWn t k
 r) t SXd  S(   N(   t   iterRW   t   Truet	   TypeErrort   False(   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   has_iterE  s
    c         C  sc   y t  |  j | ƒ \ } } Wn t k
 r6 t t f SX| rY t | ƒ t k rY t t f St t f S(   N(   R   RW   R   R’   Ro   R   R   (   R?   R   R   R   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   is_allowed_getattrL  s    
c         C  sÜ   y t  |  j | ƒ } WnC t k
 r[ } | t k rR t | t ƒ rI ‚  n  t ‚ n  | } n X|  j | ƒ } t j | ƒ r | g St j	 | ƒ } | d  k rÉ t j	 t | ƒ ƒ } | d  k rÉ t } qÉ n  |  j | ƒ | g S(   N(   R   RW   R3   R   R   R   R[   RM   RO   t	   getmoduleR&   Ro   R   (   R?   R   R   t
   return_objt   eRG   R;   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   getattr_pathsY  s"    	
c         C  sN   t  |  j ƒ t t t t t t t f k r1 |  j St	 d t  |  j ƒ ƒ ‚ d  S(   Ns    Object is type %s and not simple(
   Ro   RW   R]   t   bytest   floatt   intt   strR   t   slicet
   ValueError(   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   get_safe_valuer  s    *c         C  s   t  |  j ƒ S(   N(   RT   RW   (   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyRT   w  s    c         C  sN   g  |  j  ƒ  D] } t |  j | ƒ ^ q } g  | D] } | j ƒ  | f ^ q2 S(   N(   t   _get_objects_pathR+   RV   Re   (   R?   t   oR>   RG   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyRF   z  s    +c           s(   ‡  f d †  } t  t t  | ƒ  ƒ ƒ ƒ S(   Nc          3  s­   ˆ  j  }  |  Vy |  j }  Wn t k
 r. n X|  Vy |  j } Wn( t k
 rk t j |  ƒ s© t Vq© n> X| d  k r€ t Vn) y t j	 | VWn t
 k
 r¨ t Vn Xd  S(   N(   RW   t   __objclass__R   RE   RM   RO   R   R&   R-   R6   R   (   R   t   imp_plz(   R?   (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   get  s$    	(   RŒ   t   reversed(   R?   R¤   (    (   R?   s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyR    ~  s    c         C  s/   | j  } t | } |  j | |  j | j ƒ ƒ S(   N(   RG   t
   _OPERATORSR\   RW   (   R?   t   other_access_handlet   operatort   other_accesst   op(    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   execute_operation  s    	
c         C  s   t  j |  j ƒ o |  j t k S(   N(   RM   RN   RW   Ro   (   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   needs_type_completions¢  s    c         C  s§   g  |  j  ƒ  j j ƒ  D] } t d | j d | j | j k	 d |  j | j ƒ d t | j ƒ d | j	 | j k	 d |  j | j	 ƒ d t
 | j ƒ d t
 | j ƒ ƒ ^ q S(	   NR   t   has_defaultR   t   default_stringt   has_annotationt
   annotationt   annotation_stringt	   kind_name(   t   _get_signaturet
   parametersRk   R   R   R   t   emptyR\   R   R°   Rœ   t   kind(   R?   t   p(    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   get_signature_params¥  s    	c         C  sÙ   |  j  } t d k  r$ t d ƒ ‚ n  t d k r¤ t j } t j | ƒ r¤ | t | ƒ d ƒ r¤ | t | ƒ d ƒ r¤ | j t j k s˜ | j	 t j	 k r¤ t ‚ q¤ n  y t j
 | ƒ SWn t t f k
 rÔ t ‚ n Xd  S(   Ni!   s'   inspect.signature was introduced in 3.3i"   R@   t   __new__(   RW   R   Rž   RM   t"   _signature_get_user_defined_methodRN   Ro   R@   R‚   R¹   t	   signaturet   RuntimeErrorR‘   (   R?   R   t   user_def(    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyR³   ³  s    		c         C  sK   y |  j  j j d ƒ } Wn t k
 r- d  SX| d  k r> d  S|  j | ƒ S(   Nt   return(   RW   t   __annotations__R¤   R   R&   R\   (   R?   R¡   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   get_return_annotationÏ  s    c         C  s   |  j  |  j ƒ S(   N(   R\   RW   (   R?   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   negateÚ  s    c           s2   t  ‡  f d †  ˆ  j ƒ  Dƒ ƒ } ˆ  j ƒ  | f S(   sw   
        Used to return a couple of infos that are needed when accessing the sub
        objects of an objects
        c         3  s*   |  ]  } t  | ƒ ˆ  j | ƒ f Vq d  S(   N(   R   R”   (   Rf   R   (   R?   (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pys	   <genexpr>ä  s   (   Rj   RŽ   R¬   (   R?   t   tuples(    (   R?   s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   get_dir_infosÝ  s    ((   RD   RE   R@   RZ   R[   R\   R^   R`   Rb   Re   Ri   Rn   Rr   Rl   Rz   R}   R   RL   RY   R„   R…   R†   RR   R‹   RŽ   R“   R”   R   R˜   RŸ   RT   RF   R    R«   R¬   R¸   R³   RÀ   RÁ   RÃ   (    (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyRU   Ã   sH   																																	c         C  s@   y |  j  } Wn t k
 r! t SX| t k o; t | t ƒ Sd S(   s   Like inspect.* methods.N(   RX   R   R’   Ro   t
   issubclasst   NOT_CLASS_TYPES(   R   Rd   (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyRc   ê  s
    (N   t
   __future__R    RM   t   typesR-   R¨   Rª   t   collectionsR   t   jedi._compatibilityR   R   R   R   R   t%   jedi.evaluate.compiled.getattr_staticR   Rœ   RŒ   Rg   R™   t	   bytearrayRj   Rp   Ro   t   replacet   MethodDescriptorTypet   BuiltinFunctionTypet   CodeTypet	   FrameTypet   FunctionTypet   GeneratorTypet   GetSetDescriptorTypet
   LambdaTypet   MemberDescriptorTypet
   MethodTypet
   ModuleTypet   TracebackTypeRÅ   t   MappingProxyTypet   SimpleNamespacet   DynamicClassAttributet   sett   __iter__t   WrapperDescriptorTypeR   t   __get__R‚   t   object_class_dictt   ClassMethodDescriptorTypeR   t   eqt   net   is_t   is_nott   ltt   let   gtt   get   COMPARISON_OPERATORSt   addt   subR¦   t   updatet   staticmethodt   classmethodR   R   R   R(   R+   R<   R=   R7   RL   RT   RU   Rc   (    (    (    s<   lib/python2.7/site-packages/jedi/evaluate/compiled/access.pyt   <module>   s„   (		







								ÿ (