
V]c           @   s  d  Z  d d l m Z m 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 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 d l m Z m Z m Z m Z d d l  m! Z! d d l" m# Z# m$ Z$ d j%   Z& i d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6Z' d  j%   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+ e- f d,     YZ. d- e* f d.     YZ/ d/ e0 f d0     YZ1 d1 e1 e. e# f d2     YZ2 d3 e1 e/ e# f d4     YZ3 d5   Z4 d6 e f d7     YZ5 d8 e- f d9     YZ6 d: e6 f d;     YZ7 d< e6 f d=     YZ8 d> e6 f d?     YZ9 d@ e6 f dA     YZ: dB e* f dC     YZ; dD e* f dE     YZ< dF e* f dG     YZ= dH e* f dI     YZ> dJ e* f dK     YZ? dL e f dM     YZ@ dN e* f dO     YZA dP e f dQ     YZB dR e0 f dS     YZC dT e# e f dU     YZD dV eD f dW     YZE dX eD f dY     YZF dZ e0 f d[     YZG d\ e f d]     YZH d^ S(_   s   
We need to somehow work with the typing objects. Since the typing objects are
pretty bare we need to add all the Jedi customizations to make them work as
contexts.

This file deals with all the typing.py cases.
i(   t   unicodet   force_unicode(   t   debug(   t   evaluator_method_cache(   t   builtin_from_name(   t
   ContextSett   NO_CONTEXTSt   Contextt   iterator_to_context_sett   ContextWrappert   LazyContextWrapper(   t   LazyKnownContexts(   t   SequenceLiteralContext(   t   repack_with_argument_clinic(   t   to_list(   t   FilterWrapper(   t   NameWrappert   AbstractTreeNamet   AbstractNameDefinitiont   ContextName(   t	   is_string(   t
   ClassMixint   ClassFilters$   Tuple Generic Protocol Callable Types   builtins.listt   Lists   builtins.dictt   Dicts   builtins.sett   Sets   builtins.frozensett	   FrozenSets   collections.ChainMapt   ChainMaps   collections.Countert   Counters   collections.defaultdictt   DefaultDicts   collections.dequet   Deques   Optional Union ClassVart
   TypingNamec           B   s   e  Z d    Z d   Z RS(   c         C   s,   t  t |   j | j | j  | |  _ d  S(   N(   t   superR   t   __init__t   parent_contextt	   tree_namet   _context(   t   selft   contextt
   other_name(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR!   '   s    c         C   s   t  |  j g  S(   N(   R   R$   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   infer+   s    (   t   __name__t
   __module__R!   R(   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR   &   s   	t   _BaseTypingContextc           B   sJ   e  Z d    Z e d    Z d   Z d   Z e d    Z d   Z RS(   c         C   s&   t  t |   j | |  | |  _ d  S(   N(   R    R+   R!   t
   _tree_name(   R%   t	   evaluatorR"   R#   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR!   0   s    c         C   s   |  j  S(   N(   R,   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt	   tree_node4   s    c         o   s"   d t  f d     Y} |   Vd  S(   Nt   EmptyFilterc           B   s#   e  Z d    Z d   Z d   Z RS(   c         S   s   d  S(   N(    (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR!   ;   s    c         [   s   g  S(   N(    (   R%   t   namet   kwargs(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   get>   s    c         [   s   g  S(   N(    (   R%   R1   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   valuesA   s    (   R)   R*   R!   R2   R3   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR/   :   s   		(   R   (   R%   t   argsR1   R/   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   get_filters8   s    
c         C   s   t  |  j d  S(   Nu   object(   R   R-   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   py__class__F   s    c         C   s   t  |  |  j  S(   N(   R   R,   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR0   L   s    c         C   s   d |  j  j |  j j f S(   Ns   %s(%s)(   t	   __class__R)   R,   t   value(   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   __repr__P   s    (	   R)   R*   R!   t   propertyR.   R5   R6   R0   R9   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR+   /   s   			t   TypingModuleNamec           B   s   e  Z d    Z d   Z RS(   c         C   s   t  |  j    S(   N(   R   t   _remap(   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR(   U   s    c         c   s  |  j  } |  j j } y t | } Wn t k
 r6 n" Xt j | |  j |  j |  Vd  S| t k r t	 j | |  j |  j  Vn| t
 k r t j | |  j |  j  VnV| d k r d  S| d k r t j | |  j |  j  Vn| d k rt j | |  j |  j  Vn | d k r)t | d  Vn | d k rRt j | |  j |  j  Vn | d k r{t j | |  j |  j  Vn | d k rt j | |  j |  j  Vn\ | d	 k rnM | d k rx> |  j j   D] } | VqWn x |  j j   D] } | VqWd  S(   Nt   runtimet   TypeVart   Anyt   TYPE_CHECKINGu   Truet   overloadt   NewTypet   castt	   TypedDictt   no_type_checkt   no_type_check_decorator(   RE   RF   (   t   string_nameR"   R-   t   _TYPE_ALIAS_TYPESt   KeyErrort	   TypeAliast   create_cachedR#   t   _PROXY_CLASS_TYPESt   TypingClassContextt   _PROXY_TYPESt   TypingContextt   TypeVarClassR?   R   t   OverloadFunctiont   NewTypeFunctiont   CastFunctiont   _wrapped_nameR(   (   R%   R0   R-   t   actualt   c(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR<   X   sB    	(   R)   R*   R(   R<   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR;   T   s   	t   TypingModuleFilterWrapperc           B   s   e  Z e Z RS(    (   R)   R*   R;   t   name_wrapper_class(    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRW      s   t   _WithIndexBasec           B   s   e  Z d    Z d   Z RS(   c         C   s2   t  t |   j | | |  | |  _ | |  _ d  S(   N(   R    RY   R!   t   _index_contextt   _context_of_index(   R%   R-   R"   R0   t   index_contextt   context_of_index(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR!      s    	c         C   s    d |  j  j |  j j |  j f S(   Ns   <%s: %s[%s]>(   R7   R)   R,   R8   RZ   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR9      s    		(   R)   R*   R!   R9   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRY      s   	t   TypingContextWithIndexc           B   s   e  Z d    Z d   Z RS(   c         C   s   |  j  j } | d k r( |  j   j   S| d k r] |  j   j   t t |  j d  g  BS| d k ry t |  j g  S| d k r |  j j   St   | } t | |  j |  j	 |  j  |  j |  j
  g  S(   Nt   Uniont   Optionalu   Nonet   Typet   ClassVar(   R,   R8   t   gather_annotation_classest   execute_annotationR   R   R-   RZ   t   globalsR"   R[   (   R%   RG   t   cls(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRd      s"    c         C   s   t  j t |  j |  j   S(   N(   R   t	   from_setst   _iter_over_argumentsRZ   R[   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRc      s    (   R)   R*   Rd   Rc   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR^      s   	RO   c           B   s   e  Z e Z d Z d    Z RS(   c            s   t     f d   | D  S(   Nc         3   s<   |  ]2 }  j  j  j  j  j | d    j Vq d S(   R]   N(   t   index_classRK   R-   R"   R,   R&   (   t   .0R\   (   t   contextualized_nodeR%   (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pys	   <genexpr>   s   (   R   (   R%   t   index_context_setRk   (    (   Rk   R%   s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   py__getitem__   s    N(   R)   R*   R^   Ri   t   Nonet   py__simple_getitem__Rm   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRO      s   t   _TypingClassMixinc           B   s   e  Z d    Z d   Z RS(   c         C   s   t  |  j j j d   g S(   Nt   object(   R   R-   t   builtins_modulet   py__getattribute__(   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   py__bases__   s    c         C   s   g  S(   N(    (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   get_metaclasses   s    (   R)   R*   Rt   Ru   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRp      s   	t   TypingClassContextWithIndexc           B   s   e  Z RS(    (   R)   R*   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRv      s   RM   c           B   s   e  Z e Z RS(    (   R)   R*   Rv   Ri   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRM      s   c         #   sG    f d   }   f d   } x" |   D] } t  | |   Vq( Wd  S(   Nc          3   sL   t    t  r: x6   j d d   D] }  |  j   Vq" Wn t   g  Vd  S(   NRk   (   t
   isinstanceR   t
   py__iter__Rn   R(   R   (   t   lazy_context(   t   maybe_tuple_context(    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   iterate   s    c         3   s|   xu |  D]m } t  |  ro d d l m } |   | j    } | d  k	 rt x   j |  D] } | VqZ Wqt q | Vq Wd  S(   Ni(   t   _get_forward_reference_node(   R   t    jedi.evaluate.gradual.annotationR|   t   get_safe_valueRn   t	   eval_node(   t   context_setR&   R|   t   nodeRV   (   t   defining_context(    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   resolve_forward_references   s    (   R   (   Rz   R   R{   R   R   (    (   R   Rz   s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRh      s    RJ   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-   R"   t   _origin_tree_namet   _actual(   R%   R"   t   origin_tree_nameRU   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR!      s    		c         C   s   t  |  |  j  S(   N(   R   R   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR0      s    c         C   s
   |  j  j S(   N(   R0   RG   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt
   py__name__  s    c         C   s   d |  j  j |  j f S(   Ns   <%s: %s>(   R7   R)   R   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR9     s    c         C   s   |  j  j d  \ } } |  j j j j d k rE | d k rE d } n  d d l m } | |  j | g |  j j  j	   \ } | j
 |  } t |  d k s t |   t t |   } | S(   Nt   .i   t   builtinst   __builtin__i(   t   Importeri   (   R   t   splitR-   t   environmentt   version_infot   majort   jedi.evaluate.importsR   Rr   t   followRs   t   lent   AssertionErrort   nextt   iter(   R%   t   module_namet
   class_nameR   t   modulet   classesRf   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   _get_wrapped_context  s    $	$(   R)   R*   R!   R:   R0   R   R9   R   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRJ      s
   			t   _ContainerBasec           B   s   e  Z d    Z RS(   c         C   s\   t  |  j |  j  } x* t |  D] \ } } | | k r" | Sq" Wt j d | |  j  t S(   Ns$   No param #%s found for annotation %s(   Rh   RZ   R[   t	   enumerateR   t   warningR   (   R%   t   indexR4   t   it   contexts(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   _get_getitem_contexts  s    (   R)   R*   R   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR     s   t   Callablec           B   s   e  Z d    Z RS(   c         C   s   |  j  d  j   S(   Ni   (   R   Rd   (   R%   t	   arguments(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt
   py__call__%  s    (   R)   R*   R   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR   $  s   t   Tuplec           B   s/   e  Z d    Z d   Z d d  Z d   Z RS(   c         C   sN   t  |  j t  rJ |  j j   } t |  d k rJ | d d k rJ t Sn  t S(   Ni   i   s   ...(   Rw   RZ   R   t   get_tree_entriesR   t   Truet   False(   R%   t   entries(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   _is_homogenous+  s
    "c         C   sZ   |  j    r |  j d  j   St | t  rA |  j |  j   St j d |  t Sd  S(   Ni    s    The getitem type on Tuple was %s(   R   R   Rd   Rw   t   intR   t   dbgR   (   R%   R   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRo   4  s    c         c   s|   |  j    r) t |  j d  j    VnO t |  j t  rx x: t |  j j    D]  } t |  j |  j    VqQ Wn  d  S(   Ni    (	   R   R   R   Rd   Rw   RZ   R   t   ranget	   py__len__(   R%   Rk   R   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRx   >  s
    c         C   sA   |  j    r |  j d  j   St j t |  j |  j   j   S(   Ni    (   R   R   Rd   R   Rg   Rh   RZ   R[   (   R%   Rl   Rk   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRm   F  s    N(   R)   R*   R   Ro   Rn   Rx   Rm   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR   *  s   			
t   Genericc           B   s   e  Z RS(    (   R)   R*   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR   O  s   t   Protocolc           B   s   e  Z RS(    (   R)   R*   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR   S  s   R?   c           B   s   e  Z d    Z RS(   c         C   s   t  j d  t S(   Ns   Used Any - returned no results(   R   R   R   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRd   X  s    (   R)   R*   Rd   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR?   W  s   RP   c           B   s   e  Z d    Z d   Z RS(   c         C   s   | j    } t | d  \ } } |  j |  } | d  k sH | d  k	 r\ t j d |  t St t j	 |  j
 |  j |  j | |  g  S(   Ns"   Found a variable without a name %s(   NN(   t   unpackR   Rn   t   _find_string_nameR   R   R   R   R>   RK   R-   R"   R,   (   R%   R   t   unpackedt   keyRy   t   var_name(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR   ^  s    	c         C   s   | d  k r d  S| j   } | s& d  St |  d k rK t j d |  n  t t |   } y | j } Wn t k
 r~ d  SX| d d   } |  j	 j
 j j d k r t | t  r t |  Sn  t | t t f  r | Sd  Sd  S(   Ni   s/   Found multiple contexts for a type variable: %st   defaulti   (   Rn   R(   R   R   R   R   R   R~   t   AttributeErrorR-   R   R   R   Rw   t   bytesR   t   strR    (   R%   Ry   R   t   name_contextt   methodt
   safe_value(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR   p  s&    (   R)   R*   R   R   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRP   ]  s   	R>   c           B   s_   e  Z d    Z d   Z d   Z d   Z d   Z e d    Z d   Z	 d   Z
 d   Z RS(	   c         C   s   t  t |   j | | |  | |  _ g  |  _ d  |  _ d  |  _ d  |  _ x | D] \ } } | d  k r{ |  j j	 |  qP | d k r | |  _ qP | d k r | |  _ qP | d k r | |  _
 qP t j d |  qP Wd  S(   Nt   boundt	   covariantt   contravariants   Invalid TypeVar param name %s(   R    R>   R!   t	   _var_namet   _constraints_lazy_contextsRn   t   _bound_lazy_contextt   _covariant_lazy_contextt   _contravariant_lazy_contextt   appendt   _contra_variant_lazy_contextR   R   (   R%   R-   R"   R#   R   t   unpacked_argsR   Ry   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR!     s     					c         C   s   |  j  S(   N(   R   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR     s    c         O   s
   t  g   S(   N(   R   (   R%   R4   R1   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR5     s    c         C   sC   |  j  d  k	 r |  j  j   S|  j r, |  j St j d |  j  t S(   Ns2   Tried to infer the TypeVar %s without a given type(	   R   Rn   R(   R   t   constraintsR   R   R   R   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   _get_classes  s    	c         C   s   t  S(   N(   R   (   R%   t   other(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   is_same_class  s    c         C   s   t  j d   |  j D  S(   Nc         s   s   |  ] } | j    Vq d  S(   N(   R(   (   Rj   t   lazy(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pys	   <genexpr>  s    (   R   Rg   R   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR     s    c         C   sK   y | |  j    } Wn t k
 r' n X| r2 | S|  j   pJ t |  h  S(   N(   R   RI   R   R   (   R%   t   type_var_dictt   found(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   define_generics  s    c         C   s   |  j    j   S(   N(   R   Rd   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRd     s    c         C   s   d |  j  j |  j   f S(   Ns   <%s: %s>(   R7   R)   R   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR9     s    (   R)   R*   R!   R   R5   R   R   R:   R   R   Rd   R9   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR>     s   						
	RQ   c           B   s   e  Z e d   d    Z RS(   s   func, /c         C   s   | S(   N(    (   R%   t   func_context_set(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR     s    (   R)   R*   R   R   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRQ     s   RR   c           B   s   e  Z d    Z RS(   c            sa   | j    } t | d  t | d  \ }     d  k r> t St    f d   | j   D  S(   Nc         3   s3   |  ]) } t   j | j | j   j    Vq d  S(   N(   RB   R-   R&   R   R(   (   Rj   Rk   (   t
   second_argR%   (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pys	   <genexpr>  s   (   NN(   NN(   R   R   Rn   R   R   t   get_calling_nodes(   R%   R   t   ordered_argst   _(    (   R   R%   s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR     s    (   R)   R*   R   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRR     s   RB   c           B   s   e  Z d    Z d   Z RS(   c         C   s/   t  t |   j | |  | |  _ | |  _ d  S(   N(   R    RB   R!   t   _type_context_setR.   (   R%   R-   R"   R.   t   type_context_set(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR!     s    	c         C   s   |  j  j   S(   N(   R   Rd   (   R%   R   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR     s    (   R)   R*   R!   R   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRB     s   	RS   c           B   s   e  Z e d   d    Z RS(   s   type, object, /c         C   s
   | j    S(   N(   Rd   (   R%   R   t   object_context_set(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR     s    (   R)   R*   R   R   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRS     s   t   BoundTypeVarNamec           B   s2   e  Z d  Z d   Z d   Z d   Z d   Z RS(   s>   
    This type var was bound to a certain type, e.g. int.
    c         C   s"   | |  _  | j |  _ | |  _ d  S(   N(   t	   _type_varR"   t   _context_set(   R%   t   type_varR   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR!     s    	c            s     f d   } t  |    S(   Nc          3   sK   xD   j  D]9 }  t |  t  r> x!   j j D] } | Vq, Wq
 |  Vq
 Wd  S(   N(   R   Rw   R?   R   R   (   R&   t
   constraint(   R%   (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   iter_  s
    (   R   (   R%   R   (    (   R%   s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR(     s    c         C   s   |  j  j   S(   N(   R   R   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR     s    c         C   s    d |  j  j |  j   |  j f S(   Ns   <%s %s -> %s>(   R7   R)   R   R   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR9     s    (   R)   R*   t   __doc__R!   R(   R   R9   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR     s
   			t   TypeVarFilterc           B   s)   e  Z d  Z d   Z d   Z d   Z RS(   s   
    A filter for all given variables in a class.

        A = TypeVar('A')
        B = TypeVar('B')
        class Foo(Mapping[A, B]):
            ...

    In this example we would have two type vars given: A and B
    c         C   s   | |  _  | |  _ d  S(   N(   t	   _genericst
   _type_vars(   R%   t   genericst	   type_vars(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR!     s    	c         C   so   xh t  |  j  D]W \ } } | j   | k r y t | |  j |  g SWqg t k
 rc | j g SXq q Wg  S(   N(   R   R   R   R   R   t
   IndexErrorR0   (   R%   R0   R   R   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR2     s    c         C   s   g  S(   N(    (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR3   "  s    (   R)   R*   R   R!   R2   R3   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR   
  s   
			t   AbstractAnnotatedClassc           B   sY   e  Z d    Z e d  Z d   Z d   Z d   Z d   Z d   Z	 e
 d    Z RS(   c         C   s   t  |  j   |  j    S(   N(   R   t   get_genericst   list_type_vars(   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   get_type_var_filter)  s    c         o   sL   t  t |   j | | |  } x | D] } | Vq% W| rH |  j   Vn  d  S(   N(   R    R   R5   R   (   R%   t   search_globalR4   R1   t   filterst   f(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR5   ,  s    	c         C   sz   t  | t  s t S|  j | j k r) t S|  j   } | j   } t |  t |  k r] t St d   t | |  D  S(   Nc         3   s1   |  ]' \ }   t    f d    | D  Vq d S(   c         3   s+   |  ]! }   D] } | j  |  Vq q d  S(   N(   R   (   Rj   t   cls1t   cls2(   t
   class_set2(    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pys	   <genexpr>L  s   N(   t   any(   Rj   t
   class_set1(    (   R   s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pys	   <genexpr>J  s   (   Rw   R   R   R.   R   R   t   allt   zip(   R%   R   t   given_params1t   given_params2(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR   9  s    c         C   s.   t  t |   j |  \ } t t |  g  S(   N(   R    R   R   R   t   InstanceWrapper(   R%   R   t   instance(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR   R  s    c         C   s
   t   d  S(   N(   t   NotImplementedError(   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR   V  s    c         C   s   t  } g  } x |  j   D] } t } xp | D]h } t | t t f  r | j |  } | | O} | t | h  k r t } q q, | t | g  O} q, W| j	 |  q W| s t |  g  St t
 |  j d t |  g  S(   NR   (   R   R   R   Rw   R   R>   R   R   R   R   t   GenericClasst   _wrapped_contextt   tuple(   R%   R   t   changedt   new_genericst   generic_setR   t   generict   result(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR   Y  s"    
	c         C   s&   d |  j  j |  j t |  j    f S(   Ns
   <%s: %s%s>(   R7   R)   R   t   listR   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR9   s  s    	c         c   s,   x% |  j  j   D] } t |  |  Vq Wd  S(   N(   R   Rt   t   LazyAnnotatedBaseClass(   R%   t   base(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyRt   z  s    (   R)   R*   R   R   R5   R   R   R   R   R9   R   Rt   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR   (  s   						t   LazyGenericClassc           B   s#   e  Z d    Z e   d    Z RS(   c         C   s,   t  t |   j |  | |  _ | |  _ d  S(   N(   R    R  R!   RZ   R[   (   R%   t   class_contextR\   R]   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR!     s    	c         C   s   t  t |  j |  j   S(   N(   R   Rh   RZ   R[   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR     s    (   R)   R*   R!   R   R   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR    s   	R   c           B   s   e  Z d    Z d   Z RS(   c         C   s#   t  t |   j |  | |  _ d  S(   N(   R    R   R!   R   (   R%   R  R   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR!     s    c         C   s   |  j  S(   N(   R   (   R%   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR     s    (   R)   R*   R!   R   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR     s   	R  c           B   s)   e  Z d    Z e d    Z d   Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   t   _class_contextt   _lazy_base_class(   R%   R  t   lazy_base_class(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR!     s    	c         c   s^   xW |  j  j   D]F } t | t  rQ t j | j | j t |  j	 |    Vq | Vq Wd  S(   N(
   R  R(   Rw   R   R   RK   R-   R   R   t   _remap_type_vars(   R%   R  (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR(     s    c         c   s   |  j  j   } x | j   D]y } t } xe | D]] } t | t  ry | j | j    } | t j	 d   | D  O} q/ | t | g  O} q/ W| Vq Wd  S(   Nc         s   s   |  ] } | j    Vq d  S(   N(   R(   (   Rj   R0   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pys	   <genexpr>  s    (
   R  R   R   R   Rw   R>   R2   R   R   Rg   (   R%   R  t   filtert   type_var_sett   newR   t   names(    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR    s    	(   R)   R*   R!   R   R(   R  (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR    s   	R   c           B   s   e  Z d    Z RS(   c         C   s   x |  j  j j   D]x } | j   d k r` | j   } y | d j   SWq t k
 r\ q Xq | j   d k r t t |  j	 d  g  Sq W|  j  j
   S(   Nt	   Generatori   t   Iteratoru   None(   R   R  t	   py__mro__R   R   Rd   R   R   R   R-   t   py__stop_iteration_returns(   R%   Rf   R   (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR    s    (   R)   R*   R  (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyR     s   N(I   R   t   jedi._compatibilityR    R   t   jediR   t   jedi.evaluate.cacheR   t   jedi.evaluate.compiledR   t   jedi.evaluate.base_contextR   R   R   R   R	   R
   t   jedi.evaluate.lazy_contextR   t   jedi.evaluate.context.iterableR   t   jedi.evaluate.argumentsR   t   jedi.evaluate.utilsR   t   jedi.evaluate.filtersR   t   jedi.evaluate.namesR   R   R   R   t   jedi.evaluate.helpersR   t   jedi.evaluate.context.klassR   R   R   RL   RH   RN   R   R+   R;   RW   RY   R^   RO   Rq   Rp   Rv   RM   Rh   RJ   R   R   R   R   R   R?   RP   R>   RQ   RR   RB   RS   R   R   R   R  R   R  R   (    (    (    s;   lib/python2.7/site-packages/jedi/evaluate/gradual/typing.pyt   <module>   sn   ."
	%5#
	"%,?
X	$