ó
’›V]c           @   s.  d  Z  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 m Z d d l m Z d d	 l m Z m Z m Z d d
 l m Z m Z m Z d d l m Z d d l m Z d d l m Z d d l m  Z  d d l! m" Z" d e# f d „  ƒ  YZ$ d e f d „  ƒ  YZ% d e f d „  ƒ  YZ& d e e f d „  ƒ  YZ' d e e f d „  ƒ  YZ( d e e f d „  ƒ  YZ) d e f d „  ƒ  YZ* d e f d „  ƒ  YZ+ i d  d! 6d" d# 6d$ d% 6d& d' 6d" d( 6Z, d) „  Z- d* „  Z. d+ „  Z/ d, „  Z0 e/ e ƒ  d- „  ƒ ƒ Z1 d S(.   s$   
Imitate the parser representation.
iÿÿÿÿN(   t   partial(   t   debug(   t   to_list(   t   force_unicodet	   Parametert	   cast_path(   t   underscore_memoizationt   memoize_method(   t   AbstractFilter(   t   AbstractNameDefinitiont   ContextNameMixint   ParamNameInterface(   t   Contextt
   ContextSett   NO_CONTEXTS(   t   LazyKnownContext(   t	   _sentinel(   t   evaluator_function_cache(   t   reraise_getitem_errors(   t   BuiltinSignaturet   CheckAttributec           B   s,   e  Z d  Z d d „ Z d „  Z d „  Z RS(   s<   Raises an AttributeError if the attribute X isn't available.c         C   s   | |  _  d  S(   N(   t
   check_name(   t   selfR   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   __init__   s    c         C   s5   | |  _  |  j d  k r1 t | j d ƒ |  _ n  |  S(   Ni   (   t   funcR   t   NoneR   t   __name__(   R   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   __call__   s    	c         C   s3   | d  k r |  S| j j |  j ƒ t |  j | ƒ S(   N(   R   t   access_handlet   getattr_pathsR   R    R   (   R   t   instancet   owner(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   __get__"   s    N(   R   t
   __module__t   __doc__R   R   R   R    (    (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR      s   	t   CompiledObjectc           B   s©  e  Z d# d  „ Z d „  Z e ƒ  d „  ƒ Z e ƒ  d „  ƒ Z e ƒ  d „  ƒ Z e ƒ  d „  ƒ Z	 e
 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 e d „  ƒ Z e
 d „  ƒ Z e d „  ƒ Z e e d# d# d „ Z e d „  ƒ Z  e d ƒ d „  ƒ Z! d „  Z" d# d „ Z# d „  Z$ e
 d „  ƒ Z% d „  Z& e' d „ Z( d  „  Z) d! „  Z* d" „  Z+ RS($   c         C   s&   t  t |  ƒ j | | ƒ | |  _ d  S(   N(   t   superR#   R   R   (   R   t	   evaluatorR   t   parent_context(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR   ,   s    c         C   sÄ   |  j  j ƒ  } | d  k	 r1 t |  j | ƒ j ƒ  Sy |  j  j d ƒ Wn$ t k
 rk t t	 |  ƒ j
 | ƒ SX|  j  j ƒ  r­ d d l m } t | |  j |  j |  | ƒ g ƒ St |  j | ƒ ƒ Sd  S(   Nu   __call__iÿÿÿÿ(   t   CompiledInstance(   R   t   get_return_annotationR   t   create_from_access_pathR%   t   execute_annotationR   t   AttributeErrorR$   R#   t
   py__call__t   is_classt   jedi.evaluate.contextR'   R   R&   t   _execute_function(   R   t	   argumentst   return_annotationR'   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR,   0   s    c         C   s   t  |  j |  j j ƒ  ƒ S(   N(   R)   R%   R   t   py__class__(   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR2   C   s    c            s*   ˆ  f t  ‡  f d †  ˆ  j j ƒ  Dƒ ƒ S(   Nc         3   s!   |  ] } t  ˆ  j | ƒ Vq d  S(   N(   R)   R%   (   t   .0t   access(   R   (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pys	   <genexpr>J   s   (   t   tupleR   t   py__mro__accesses(   R   (    (   R   s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt	   py__mro__G   s    	c            s#   t  ‡  f d †  ˆ  j j ƒ  Dƒ ƒ S(   Nc         3   s!   |  ] } t  ˆ  j | ƒ Vq d  S(   N(   R)   R%   (   R3   R4   (   R   (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pys	   <genexpr>Q   s   (   R5   R   t   py__bases__(   R   (    (   R   s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR8   N   s    c         C   s   t  t |  j j ƒ  ƒ S(   N(   t   mapR   R   t
   py__path__(   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR:   U   s    c         C   s/   |  j  ƒ  } | d  k r d St | j d ƒ ƒ S(   Nt   .(    (   t
   py__name__R   R5   t   split(   R   t   name(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   string_namesY   s    c         C   s   |  j  j ƒ  S(   N(   R   t   get_qualified_names(   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR@   a   s    c         C   s   |  j  j ƒ  S(   N(   R   t
   py__bool__(   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRA   d   s    c         C   s   t  |  j j ƒ  ƒ S(   N(   R   R   t
   py__file__(   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRB   g   s    c         C   s   |  j  j ƒ  S(   N(   R   R-   (   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR-   j   s    c         C   s   |  j  j ƒ  S(   N(   R   t	   is_module(   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRC   m   s    c         C   s   t  S(   N(   t   True(   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   is_compiledp   s    c         C   s   t  S(   N(   t   False(   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   is_stubs   s    c         C   s   |  j  j ƒ  S(   N(   R   t   is_instance(   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRH   v   s    c         C   s   |  j  j ƒ  S(   N(   R   t	   py__doc__(   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRI   y   s    c   
      c   sÜ   y |  j  j ƒ  } Wn£ t k
 r¸ |  j ƒ  \ } } | sD g  } n | j d ƒ } |  j  j ƒ  ru | j d d ƒ n  x` | D]5 } | j ƒ  j d ƒ \ } } } t	 |  | | ƒ Vq| Wn  Xx | D] }	 t
 |  |	 ƒ VqÀ Wd  S(   Nt   ,i    R   t   =(   R   t   get_signature_paramst
   ValueErrort   _parse_function_docR=   t   ismethoddescriptort   insertt   stript	   partitiont   UnresolvableParamNamet   SignatureParamName(
   R   t   signature_paramst
   params_strt   rett   tokenst   pR>   t   _t   defaultt   signature_param(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   get_param_names|   s    	c         C   s"   |  j  ƒ  \ } } t |  | ƒ g S(   N(   RN   R   (   R   RZ   t   return_string(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   get_signatures   s    c         C   s   d |  j  j |  j j ƒ  f S(   Ns   <%s: %s>(   t	   __class__R   R   t   get_repr(   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   __repr__“   s    c         C   s&   |  j  ƒ  } | d  k r d St | ƒ S(   Nt    (   Rc   Rc   (   RI   R   RN   (   R   t   doc(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRN   –   s    c         C   s   |  j  j ƒ  S(   N(   R   t   get_api_type(   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   api_typež   s    c         C   s   |  S(   sŒ   
        We used to limit the lookups for instantiated objects like list(), but
        this is not the case anymore. Python itself
        (    (   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   _cls¢   s    c         c   s   |  j  | ƒ Vd  S(   N(   t   _ensure_one_filter(   R   t   search_globalRH   t   until_positiont   origin_scope(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   get_filters«   s    c         C   s   t  |  j |  | ƒ S(   s|   
        search_global shouldn't change the fact that there's one dict, this way
        there's only one `object`.
        (   t   CompiledObjectFilterR%   (   R   RH   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRh   ¯   s    u   __getitem__c         C   sT   t  t t t ƒ  |  j j | ƒ } Wd  QX| d  k r; t St t	 |  j
 | ƒ g ƒ S(   N(   R   t
   IndexErrort   KeyErrort	   TypeErrorR   t   py__simple_getitem__R   R   R   R)   R%   (   R   t   indexR4   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRq   ·   s
    c            sN   ˆ  j  j ƒ  } | d  k r4 t t ˆ  ƒ j | | ƒ St ‡  f d †  | Dƒ ƒ S(   Nc         3   s!   |  ] } t  ˆ  j | ƒ Vq d  S(   N(   R)   R%   (   R3   R4   (   R   (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pys	   <genexpr>Ç   s   (   R   t   py__getitem__all_valuesR   R$   R#   t   py__getitem__R   (   R   t   index_context_sett   contextualized_nodet   all_access_paths(    (   R   s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRt   À   s    c         c   s…   |  j  j ƒ  s: x( t t |  ƒ j | ƒ D] } | Vq( Wn  |  j  j ƒ  } | d  k rY d  Sx% | D] } t t |  j	 | ƒ ƒ Vq` Wd  S(   N(
   R   t   has_iterR$   R#   t
   py__iter__t   py__iter__listR   R   R)   R%   (   R   Rv   t   xt   access_path_listR4   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRy   Ë   s    c         C   s   |  j  j ƒ  S(   N(   R   R<   (   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR<   Ü   s    c         C   s7   |  j  ƒ  } | d  k r* |  j j ƒ  } n  t |  | ƒ S(   N(   R<   R   R   Ra   t   CompiledContextName(   R   R>   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR>   ß   s    c         c   sß   d d l  m } d d l m } |  j d k r3 d  Sx† |  j ƒ  d j ƒ  D]n } y |  j j j	 j
 | ƒ Wn t k
 r€ qJ qJ X| |  j | ƒ } x" |  j j | | ƒ D] } | Vq© WqJ Wx | j |  ƒ D] } | VqÌ Wd  S(   Niÿÿÿÿ(   t
   docstrings(   t   builtin_from_namet   functioni   (   t   jedi.evaluateR~   t   jedi.evaluate.compiledR   Rf   RN   R=   R%   t   builtins_moduleR   R   R+   t   executet   infer_return_types(   R   t   paramsR~   R   R>   t   bltn_objt   resultt   type_(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR/   æ   s    c         C   s<   y |  j  j ƒ  SWn$ t k
 r7 | t k r3 ‚  n  | SXd  S(   N(   R   t   get_safe_valueRM   R   (   R   R[   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRŠ   ú   s    c         C   s"   t  |  j |  j j | j | ƒ ƒ S(   N(   R)   R%   R   t   execute_operation(   R   t   othert   operator(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR‹     s    c         C   s   t  |  j |  j j ƒ  ƒ S(   N(   R)   R%   R   t   negate(   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRŽ     s    c         C   s   t  S(   N(   R   (   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   get_metaclasses  s    N(,   R   R!   R   R   R,   R   R2   R7   R8   R:   t   propertyR?   R@   RA   RB   R-   RC   RE   RG   RH   RI   R   R]   R_   Rb   R   RN   Rf   Rg   RF   Rl   R   Rh   Rq   Rt   Ry   R<   R>   R/   R   RŠ   R‹   RŽ   R   (    (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR#   +   sF   																			t   CompiledNamec           B   sA   e  Z d  „  Z d „  Z d „  Z e d „  ƒ Z e d „  ƒ Z RS(   c         C   s   | |  _  | |  _ | |  _ d  S(   N(   t
   _evaluatorR&   t   string_name(   R   R%   R&   R>   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR     s    		c         C   s   |  j  j ƒ  } | |  j f S(   N(   R&   R@   R“   (   R   t   parent_qualified_names(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   _get_qualified_names  s    c         C   sD   y |  j  j } Wn t k
 r) d  } n Xd |  j j | |  j f S(   Ns   <%s: (%s).%s>(   R&   R>   R+   R   R`   R   R“   (   R   R>   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRb     s
    
c         C   s)   |  j  ƒ  } | s d St t | ƒ ƒ j S(   NR   (   t   infert   nextt   iterRf   (   R   t   api(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRf      s    c         C   s"   t  t |  j |  j |  j ƒ g ƒ S(   N(   R   t   _create_from_nameR’   R&   R“   (   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR–   (  s    (	   R   R!   R   R•   Rb   R   Rf   R   R–   (    (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR‘     s
   			RT   c           B   s;   e  Z d  „  Z e d „  ƒ Z d „  Z d „  Z d „  Z RS(   c         C   s   | j  |  _  | |  _ d  S(   N(   R&   t   _signature_param(   R   t   compiled_objR\   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR   0  s    c         C   s
   |  j  j S(   N(   R›   R>   (   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR“   4  s    c         C   s]   |  j  ƒ  |  j } |  j j r6 | d |  j j 7} n  |  j j rY | d |  j j 7} n  | S(   Ns   : RK   (   t   _kind_stringR“   R›   t   has_annotationt   annotation_stringt   has_defaultt   default_string(   R   t   s(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt	   to_string8  s    c         C   s   t  t |  j j ƒ S(   N(   t   getattrR   R›   t	   kind_name(   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   get_kind@  s    c         C   st   |  j  } |  j j } t } | j rB t t | | j ƒ g ƒ } n  | j rp t | | j	 ƒ } | | j
 ƒ  O} n  | S(   N(   R›   R&   R%   R   R    R   R)   R[   Rž   t
   annotationt   execute_evaluated(   R   RY   R%   t   contextsR§   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR–   C  s    			(   R   R!   R   R   R“   R£   R¦   R–   (    (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRT   /  s
   			RS   c           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s"   | j  |  _  | |  _ | |  _ d  S(   N(   R&   R“   t   _default(   R   Rœ   R>   R[   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR   P  s    	c         C   s   t  j S(   N(   R   t   POSITIONAL_ONLY(   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR¦   U  s    c         C   s*   |  j  } |  j r& | d |  j 7} n  | S(   NRK   (   R“   Rª   (   R   t   string(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR£   X  s    		c         C   s   t  S(   N(   R   (   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR–   ^  s    (   R   R!   R   R¦   R£   R–   (    (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRS   O  s   			R}   c           B   s   e  Z d  „  Z RS(   c         C   s"   | |  _  | |  _ | j |  _ d  S(   N(   R“   t   _contextR&   (   R   t   contextR>   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR   c  s    		(   R   R!   R   (    (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR}   b  s   t   EmptyCompiledNamec           B   s    e  Z d  Z d „  Z d „  Z RS(   s«   
    Accessing some names will raise an exception. To avoid not having any
    completions, just give Jedi the option to return this object. It infers to
    nothing.
    c         C   s   | j  |  _ | |  _ d  S(   N(   Rƒ   R&   R“   (   R   R%   R>   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR   o  s    c         C   s   t  S(   N(   R   (   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR–   s  s    (   R   R!   R"   R   R–   (    (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR¯   i  s   	Rm   c           B   s\   e  Z e Z e d  „ Z d „  Z e d „ Z e e d „ ƒ Z	 d „  Z
 d „  Z d „  Z RS(   c         C   s   | |  _  | |  _ | |  _ d  S(   N(   R’   t   compiled_objectRH   (   R   R%   R°   RH   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR   z  s    		c            s.   ˆ j  ˆ  ‡  ‡ f d †  ‡ f d †  d t ƒS(   Nc              s   ˆ j  j j ˆ  ƒ S(   N(   R°   R   t   is_allowed_getattr(    (   R>   R   (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   <lambda>‚  Rc   c              s   ˆ  j  j j ƒ  S(   N(   R°   R   t   dir(    (   R   (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR²   ƒ  Rc   t   check_has_attribute(   t   _getRD   (   R   R>   (    (   R>   R   s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   get  s
    c         C   sˆ   | ƒ  \ } } | r  | r  g  St  | ƒ } | r? |  j j sF | r\ |  j | d t ƒg S|  j rx | | ƒ  k rx g  S|  j | ƒ g S(   sU   
        To remove quite a few access calls we introduced the callback here.
        t   is_empty(   R   R’   t   allow_descriptor_getattrt   _get_cached_nameRD   RH   (   R   R>   t   allowed_getattr_callbackt   dir_callbackR´   t   has_attributet   is_descriptor(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRµ   ‡  s    c         C   s'   | r t  |  j | ƒ S|  j | ƒ Sd  S(   N(   R¯   R’   t   _create_name(   R   R>   R·   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR¹   ™  s    c            s·   d d l  m } g  } |  j j j ƒ  \ } ‰  x< ˆ  D]4 ‰ | |  j ˆ ‡  ‡ f d †  ‡  f d †  ƒ 7} q5 W|  j r³ | r³ x3 | |  j d ƒ j ƒ  D] } | | j	 ƒ  7} q– Wn  | S(   Niÿÿÿÿ(   R   c              s   ˆ  ˆ S(   N(    (    (   t	   dir_infosR>   (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR²   §  Rc   c              s
   ˆ  j  ƒ  S(   N(   t   keys(    (   R¿   (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR²   ¨  Rc   u   type(
   R‚   R   R°   R   t   get_dir_infosRµ   RH   R’   Rl   t   values(   R   R   t   namest   needs_type_completionst   filter(    (   R¿   R>   s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRÂ      s    	c         C   s   |  j  |  j |  j | ƒ S(   N(   t
   name_classR’   R°   (   R   R>   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR¾   ±  s    c         C   s   d |  j  j |  j f S(   Ns   <%s: %s>(   R`   R   R°   (   R   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRb   ´  s    (   R   R!   R‘   RÆ   RF   R   R¶   Rµ   R   R¹   RÂ   R¾   Rb   (    (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRm   w  s   			u   floats   floating point numberu   strt	   characteru   intt   integeru   dictt
   dictionaryR¬   c         C   sÌ  t  |  ƒ }  y— d } |  j d ƒ } xj t |  | ƒ D]X \ } } | d k rZ | d 7} n | d k rs | d 8} n  | d k r5 | | } Pq5 q5 W|  | d | !} Wn0 t t f k
 rÕ t j d ƒ d } d } nB Xd „  } x5 t rt j	 d | | ƒ \ } } | d k râ Pqâ qâ W| j
 d	 d
 ƒ } t j d |  | | d !ƒ }	 |	 d k r[d }
 ng | |	 j ƒ  } t j d ƒ } | j |  | ƒ j d ƒ j ƒ  } t j d d | ƒ } t j | | ƒ }
 | |
 f S(   sú   
    Takes a function and returns the params and return value as a tuple.
    This is nothing more than a docstring parser.

    TODO docstrings like utime(path, (atime, mtime)) and a(b [, b]) -> None
    TODO docstrings like 'tuple of integers'
    i    t   (i   t   )s   no brackets found - no paramu    c         S   sg   |  j  d ƒ j d ƒ } x? t | ƒ D]1 \ } } | r% d | k r% | | c d 7<q% q% Wd j | ƒ S(   Ni   RJ   RK   s   =None(   t   groupR=   t	   enumeratet   join(   t   mt   argst   it   a(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   change_optionsß  s
    s    ?\[([^\[\]]+)\]t   -RZ   u   -[>-]* i   s   (,\n|[^\n-])+s   [nN]ew (.*)s   \1()N(   R   Rr   RÍ   RM   t   UnboundLocalErrorR   t   dbgRD   t   ret   subnt   replacet   searchR   t   endt   compilet   matchRÌ   RQ   t   subt   docstr_defaultsR¶   (   Rd   t   countt   startRÑ   R¢   RÛ   t	   param_strRÓ   t   changest   rRW   Rr   t   patternt   ret_str(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRN   Á  sB    

				!c         C   sf   | j  j | d d  ƒ} | } | j ƒ  r6 | j } n  d  } x# | D] } t |  | d | ƒ} qC W| S(   NR[   R&   (   R   R   R   R-   R&   t   create_cached_compiled_object(   R%   R°   R>   t   access_pathsR&   R®   t   access_path(    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRš   þ  s    c            s   d ‡  f d † } | S(   s5   The cache doesn't care about keyword vs. normal args.c            s   ˆ  |  | | ƒ S(   N(    (   R%   t   objR&   (   R   (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   wrapper  s    N(   R   (   R   Rë   (    (   R   s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   _normalize_create_args  s    c         C   s6   d  } x) | j D] \ } } t |  | | ƒ } q W| S(   N(   R   t   accessesRç   (   R%   Ré   R&   R>   R4   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyR)     s    c         C   s   t  |  | | ƒ S(   N(   R#   (   R%   R   R&   (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyRç     s    (2   R"   R×   t	   functoolsR    t   jediR   t   jedi.evaluate.utilsR   t   jedi._compatibilityR   R   R   t
   jedi.cacheR   R   t   jedi.evaluate.filtersR   t   jedi.evaluate.namesR	   R
   R   t   jedi.evaluate.base_contextR   R   R   t   jedi.evaluate.lazy_contextR   t   jedi.evaluate.compiled.accessR   t   jedi.evaluate.cacheR   t   jedi.evaluate.helpersR   t   jedi.evaluate.signatureR   t   objectR   R#   R‘   RT   RS   R}   R¯   Rm   Rß   RN   Rš   Rì   R)   Rç   (    (    (    s=   lib/python2.7/site-packages/jedi/evaluate/compiled/context.pyt   <module>   sD   ä  A
	=			