+
    e+G                     v   R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ]! 4       t ! R R]4      t ! R R4      t ! R R]4      tR!R lt ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R4      t R t! ! R R4      t"]"! . 4      t#R  t$R# )"a4  
Values are the "values" that Python would return. However Values are at the
same time also the "values" that a user is currently sitting in.

A ValueSet is typically used to specify the return of a function or any other
static analysis operation. In jedi there are always multiple returns and not
just one.
)reduce)add)zip_longest)Name)debug)clean_scope_docstringSimpleGetItemNotFound)safe_property)%inference_state_as_method_param_cache)memoize_methodc                       ] tR t^tRtR# )HasNoContext N)__name__
__module____qualname____firstlineno____static_attributes__r       ;/usr/lib/python3/dist-packages/jedi/inference/base_value.pyr   r      s    r   r   c                      a  ] tR t^t o R tR tR tR tR tRR lt	R t
RR	 ltRR
 ltR tR tRR ltR tR t]R 4       tRtV tR# )HelperValueMixinc                    T pVP                   f   VP                  4       #  VP                   f   V# VP                   pK  N)parent_context
as_context)selfvalues   & r   get_root_context!HelperValueMixin.get_root_context   sA    '##%%##+((Er   c                :    V P                   P                  WR 7      # ))	argumentsinference_stateexecuter   r"   s   &&r   r%   HelperValueMixin.execute(   s    ##++D+FFr   c                    ^ RI Hp T! V Uu. uF  p\        V.4      NK  	  up4      pV P                  P	                  W4      # u upi )    )ValuesArguments)jedi.inference.argumentsr*   ValueSetr$   r%   )r   
value_listr*   r   r"   s   &*   r   execute_with_values$HelperValueMixin.execute_with_values+   sB    <#J$OJ5Xug%6J$OP	##++D<< %Ps   Ac                "    V P                  4       # r   r.   r   s   &r   execute_annotation#HelperValueMixin.execute_annotation0   s    ''))r   c                    \        V .4      # r   r,   r2   s   &r   gather_annotation_classes*HelperValueMixin.gather_annotation_classes3   s    r   Nc                X    \         P                  R  V P                  W4       4       4      # )c              3   B   "   T F  pVP                  4       x  K  	  R # 5ir   infer.0
lazy_values   & r   	<genexpr>:HelperValueMixin.merge_types_of_iterate.<locals>.<genexpr>7   s#      "
I
 I   r,   	from_setsiterate)r   contextualized_nodeis_asyncs   &&&r   merge_types_of_iterate'HelperValueMixin.merge_types_of_iterate6   s,    !! "
"ll+>I"
 
 	
r   c              #    "   \        V\        4      '       d   TMR pV P                  VR7       R j  xL
  V P                  4       '       d:   ^ RIHp V! \        V 04      4       F  pVP                  4        R j  xL
  K  	  R # R #  LU L5i)N)origin_scope)convert_values)
isinstancer   get_filtersis_stub!jedi.inference.gradual.conversionrL   r,   )r   name_or_strrK   rL   cs   &&   r   _get_value_filters#HelperValueMixin._get_value_filters<   sq     &0d&C&C{###>>><<>>H#HdV$45==?** 6  	?
 +s'   0BBB.B;B
<B
Bc                    ^ RI Hp V P                  V4      pVP                  WQ4      p\        P
                  ! RWV4       V# )r)   )finderzcontext.goto %s in (%s): %s)jedi.inferencerV   rS   filter_namer   dbg)r   rQ   name_contextanalysis_errorsrV   filtersnamess   &&&&   r   gotoHelperValueMixin.gotoE   s;    )))+6""78		/EJr   c                   Vf   T pV P                  WV4      p\        P                  R V 4       4      pV'       g6   \        V\        4      '       d   VP
                  MTpV P                  V4      pV'       g?   V'       g7   V'       d/   \        V\        4      '       d   ^ RIHp VP                  W V4       \        P                  ! RWV4       V# )zJ
:param position: Position of the last statement -> tuple of line, column
c              3   @   "   T F  qP                  4       x  K  	  R # 5ir   r;   )r>   names   & r   r@   6HelperValueMixin.py__getattribute__.<locals>.<genexpr>T   s     #CUTJJLLU   analysisz context.names_to_types: %s -> %s)r^   r,   rD   rM   r   r   py__getattribute__alternativesrW   rf   add_attribute_errorr   rY   )	r   rQ   rZ   positionr[   r]   valuesnrf   s	   &&&&&    r   py__getattribute__#HelperValueMixin.py__getattribute__L   s    
 L		+_E###CU#CC%/T%B%B!!A88;FV+t,,3,, 5		4eDr   c                    V P                  R 4      pV'       g   \        P                  ! RV 4       VP                  4       # )	__await__z"Tried to run __await__ on value %s)rl   r   warningr.   )r   await_value_sets   & r   py__await__HelperValueMixin.py__await__a   s3    11+>MM>E2244r   c                .    V P                   P                  # r   )rb   string_namer2   s   &r   
py__name__HelperValueMixin.py__name__g   s    yy$$$r   c                \   \         P                  ! R V 4       V'       d~   ^ RIHp \	        V! V P                  R4      P                  4       P                  R4      P                  4       P                  R4      P                  4       P                  4       4      .4      # V P                  V4      # )z
iterate %s)LazyKnownValues	__aiter__	__anext__ro   )	r   rY   jedi.inference.lazy_valuery   iterrl   r.   py__stop_iteration_returns
py__iter__)r   rF   rG   ry   s   &&& r   rE   HelperValueMixin.iteratej   s    		,%A ++K8LLN++K89L9L9N++K89L9L9N335	   233r   c                d   \         P                  ! R V : RV: 2RR7      ;_uu_ 4        V P                  4        F=  pVP                  V4      '       g   K  \         P                  ! RRR7        RRR4       R# 	  \         P                  ! RRR7        RRR4       R#   + '       g   i     R# ; i)	zsubclass matching of z <=> BLUE)colorzmatched subclass TrueNTzmatched subclass FalseF)r   increase_indent_cm	py__mro__is_same_classrY   )r   class_valueclss   && r   is_sub_class_of HelperValueMixin.is_sub_class_ofz   s    %%$P[&\,24 4~~'$$[11II5VD4 4' II.f=4 4 4 4s   (BB9BB/	c                |    \        V4      P                  \        P                  8w  d   VP                  V 4      # W8H  # r   )typer   r   )r   class2s   &&r   r   HelperValueMixin.is_same_class   s4    <%%)9)G)GG''--~r   c                &    V P                   ! V/ VB # r   )_as_contextr   argskwargss   &*,r   r   HelperValueMixin.as_context   s    000r   r   NF)NT)NNT)r   r   r   r   r   r%   r.   r3   r7   rH   rS   r^   rl   rr   rv   rE   r   r   r   r   r   __classdictcell____classdict__s   @r   r   r      s`     )G=
* 
+*5%4  1 1r   r   c                     a  ] tR t^t o RtRtRtRtR#R ltR t	R t
R#R ltR#R ltR	 tR
 tR tR tR tR tR tR tR tR tR tR t]3R ltR tR tR tR tR tR t R t!R t"R t#]$R 4       t%R$R  lt&R! t'R"t(V t)R# )%Valuez"
To be implemented by subclasses.
Nnot_defined_please_report_bugc                    Wn         W n        R # r   r$   r   )r   r$   r   s   &&&r   __init__Value.__init__   s    .,r   c                z    ^ RI Hp VP                  VP                  RVP                  RV ,          R7       \
        # )r)   re   ztype-error-not-subscriptablez+TypeError: '%s' object is not subscriptablemessage)rW   rf   r   contextnode	NO_VALUES)r   index_value_setrF   rf   s   &&& r   py__getitem__Value.py__getitem__   s;    +''*$$ADH	 	 	
 r   c                    \         hr   r   )r   indexs   &&r   py__simple_getitem__Value.py__simple_getitem__   s    ##r   c                    Ve7   ^ RI Hp VP                  VP                  RVP                  RV ,          R7       \        . 4      # )Nre   ztype-error-not-iterablez&TypeError: '%s' object is not iterabler   )rW   rf   r   r   r   r}   )r   rF   rf   s   && r   r   Value.py__iter__   sE    */LL#++)#((@4G	  I
 Bxr   c                $    V P                  V4      # r   )r   )r   rF   s   &&r   
py__next__Value.py__next__   s    233r   c                    . # r   r   r2   s   &r   get_signaturesValue.get_signatures   s    	r   c                    R # Fr   r2   s   &r   is_classValue.is_class       r   c                    R # r   r   r2   s   &r   is_class_mixinValue.is_class_mixin   r   r   c                    R # r   r   r2   s   &r   is_instanceValue.is_instance   r   r   c                    R # r   r   r2   s   &r   is_functionValue.is_function   r   r   c                    R # r   r   r2   s   &r   	is_moduleValue.is_module   r   r   c                    R # r   r   r2   s   &r   is_namespaceValue.is_namespace   r   r   c                    R # r   r   r2   s   &r   is_compiledValue.is_compiled   r   r   c                    R # r   r   r2   s   &r   is_bound_methodValue.is_bound_method   r   r   c                    R # r   r   r2   s   &r   is_builtins_moduleValue.is_builtins_module   r   r   c                    R# )zj
Since Wrapper is a super class for classes, functions and modules,
the return value will always be true.
Tr   r2   s   &r   
py__bool__Value.py__bool__   s    
 r   c                ~     V P                   P                   \        V P                   4      #   \         d     R # i ; i) )	tree_nodeget_doc_noder   AttributeErrorr2   s   &r   	py__doc__Value.py__doc__   s9    	9NN'' )88  		s   - <<c                >    V\         J d   \        R V ,          4      hV# )z'There exists no safe value for value %s)sentinel
ValueError)r   defaults   &&r   get_safe_valueValue.get_safe_value   s     hFMNNr   c                >    \         P                  ! R W V4       \        # )z!%s not possible between %s and %sr   rp   r   )r   otheroperators   &&&r   execute_operationValue.execute_operation   s    985Qr   c                <    \         P                  ! R V 4       \        # )zno execution possible %sr   r&   s   &&r   
py__call__Value.py__call__   s    0$7r   c                <    \         P                  ! R V 4       \        # )z0Not possible to return the stop iterations of %sr   r2   s   &r   r~    Value.py__stop_iteration_returns   s    H$Or   c                    \         # )z8
For now a way to add values in cases like __getattr__.
)r   )r   rQ   s   &&r   rg   $Value.py__getattribute__alternatives   s
     r   c                H    \         P                  ! R V 4       \        V .4      # )zNo __get__ defined on %s)r   rp   r,   )r   instancer   s   &&&r   	py__get__Value.py__get__   s    0$7r   c                    \         # r   )NotImplemented)r   calling_instancer   r   s   &&&&r   py__get__on_classValue.py__get__on_class   s    r   c                    R # r   r   r2   s   &r   get_qualified_namesValue.get_qualified_names  s    r   c                6    V P                   P                  4       # r   )r   rO   r2   s   &r   rO   Value.is_stub  s    ""**,,r   c                    \         hr   )r   r2   s   &r   r   Value._as_context  s    r   c                    \         hr   NotImplementedErrorr2   s   &r   rb   
Value.name  s    !!r   c                    R # r   r   )r   add_class_infos   &&r   get_type_hintValue.get_type_hint  s    r   c                    / # )a  
When the current instance represents a type annotation, this method
tries to find information about undefined type vars and returns a dict
from type var name to value set.

This is for example important to understand what `iter([1])` returns.
According to typeshed, `iter` returns an `Iterator[_T]`:

    def iter(iterable: Iterable[_T]) -> Iterator[_T]: ...

This functions would generate `int` for `_T` in this case, because it
unpacks the `Iterable`.

Parameters
----------

`self`: represents the annotation of the current parameter to infer the
    value for. In the above example, this would initially be the
    `Iterable[_T]` of the `iterable` parameter and then, when recursing,
    just the `_T` generic parameter.

`value_set`: represents the actual argument passed to the parameter
    we're inferred for, or (for recursive calls) their types. In the
    above example this would first be the representation of the list
    `[1]` and then, when recursing, just of `1`.
r   )r   	value_sets   &&r   infer_type_varsValue.infer_type_vars  s	    6 	r   r   r   T)*r   r   r   r   __doc__r   
array_typeapi_typer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r~   rg   r   r   r   rO   r   propertyrb   r  r	  r   r   r   s   @r   r   r      s      I J.H-	$49 &. 
 - " " r   r   Nc                Z    \         P                  R V P                  WR7       4       4      # )zw
Calls `iterate`, on all values but ignores the ordering and just returns
all values that the iterate functions yield.
c              3   B   "   T F  pVP                  4       x  K  	  R # 5ir   r;   r=   s   & r   r@   !iterate_values.<locals>.<genexpr>8  s#      PJ 	PrB   rG   rC   )rj   rF   rG   s   &&&r   iterate_valuesr  3  s0    
   ..)<.P  r   c                   Z   a  ] tR tRt o ]R 4       t]]! 4       R 4       4       tR t	Rt
V tR# )_ValueWrapperBasei>  c                    ^ RI Hp V P                  P                  pVP                  e   V! WP                  4      # ^ RIHp V! WP                  4      # )r)   )	ValueName)CompiledValueName)jedi.inference.namesr  _wrapped_valuerb   	tree_namejedi.inference.compiledr  ru   )r   r  wrapped_namer  s   &   r   rb   _ValueWrapperBase.name?  sG    2**//!!-T#9#9::A$T+C+CDDr   c                    V ! V/ VB # r   r   )r   r$   r   r   s   &&*,r   create_cached_ValueWrapperBase.create_cachedI  s     D#F##r   c                J    VR 8w  g   Q R4       h\        V P                  V4      # )r  zProblem with _get_wrapped_value)getattrr  )r   rb   s   &&r   __getattr___ValueWrapperBase.__getattr__N  s*    ''J)JJ't**D11r   r   N)r   r   r   r   r
   rb   classmethodr   r!  r%  r   r   r   s   @r   r  r  >  sB     E E *,$ - $2 2r   r  c                   F   a  ] tR tRt o ]]R 4       4       tR tR tRt	V t
R# )LazyValueWrapperiS  c                    \         P                  ! R 4      ;_uu_ 4        V P                  4       uuRRR4       #   + '       g   i     R# ; i)zResolve lazy value wrapperN)r   r   _get_wrapped_valuer2   s   &r   r  LazyValueWrapper._wrapped_valueT  s2     %%&BCC**, DCCCs	   :A	c                <    R V P                   P                  ,          # )z<%s>)	__class__r   r2   s   &r   __repr__LazyValueWrapper.__repr__Z  s    0011r   c                    \         hr   r   r2   s   &r   r+  #LazyValueWrapper._get_wrapped_value]  s    !!r   r   N)r   r   r   r   r
   r   r  r/  r+  r   r   r   s   @r   r)  r)  S  s.     -  -2" "r   r)  c                   ,   a  ] tR tRt o R tR tRtV tR# )ValueWrapperia  c                    Wn         R # r   r  )r   wrapped_values   &&r   r   ValueWrapper.__init__b  s    +r   c                R    V P                   P                  : R V P                  : R2# )())r.  r   r  r2   s   &r   r/  ValueWrapper.__repr__e  s    >>22D4G4GHHr   r6  N)r   r   r   r   r   r/  r   r   r   s   @r   r4  r4  a  s     ,I Ir   r4  c                   8   a a ] tR tRt oV 3R ltR tRtVtV ;t# )	TreeValueii  c                2   < \         SV `  W4       W0n        R # r   )superr   r   )r   r$   r   r   r.  s   &&&&r   r   TreeValue.__init__j  s    9"r   c                T    R V P                   P                  : RV P                  : R2# )<: >)r.  r   r   r2   s   &r   r/  TreeValue.__repr__n  s    !^^44dnnEEr   )r   )	r   r   r   r   r   r/  r   r   __classcell__)r.  r   s   @@r   r>  r>  i  s     #F Fr   r>  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )ContextualizedNodeir  c                    Wn         W n        R # r   r   r   )r   r   r   s   &&&r   r   ContextualizedNode.__init__s  s    	r   c                6    V P                   P                  4       # r   )r   r   r2   s   &r   r   #ContextualizedNode.get_root_contextw  s    ||,,..r   c                L    V P                   P                  V P                  4      # r   )r   
infer_noder   r2   s   &r   r<   ContextualizedNode.inferz  s    ||&&tyy11r   c                p    R V P                   P                  : RV P                  : RV P                  : R2# )rC  rD  z in rE  )r.  r   r   r   r2   s   &r   r/  ContextualizedNode.__repr__}  s!    #'>>#:#:DIIt||TTr   rK  N)
r   r   r   r   r   r   r<   r/  r   r   r   s   @r   rI  rI  r  s      /2U Ur   rI  c                    \         p\        4       pV Fi  pVP                  R R7      p\        V4      \        \
        \        \        \        39   d    W0P                  V4      ,          pKX  VP                  V4       Kk  	  V'       g	   V'       g"   W0P                  \        V4      V4      ,          p\        P                  ! RV4       V#   \         d     Lli ; i)N)r   zpy__getitem__ result: %s)r   setr   r   floatintstrslicebytesr   r	   r   r   r,   r   rY   )r   index_valuesrF   resultunused_valuesindex_valuer   s   &&&    r   _getitemr_    s    FEM#**4*8;5#sE59944U;; 	+& $ L%%]#
 	
 
II(&1M ) s   C

CCc                      a  ] tR tRt o R t]R 4       t]R 4       tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tRR ltR tR tR tR tR tR tR tR tRR ltR tRtV t R# ) r,   i  c                h    \        V4      V n        V F  p\        V\        4      '       g   K  Q h	  R # r   )	frozenset_setrM   r,   )r   iterabler   s   && r   r   ValueSet.__init__  s+    h'	E!%2222 r   c                4    V P                  V 4      pWn        V# r   )__new__rc  )r   
frozenset_r   s   && r   _from_frozen_setValueSet._from_frozen_set  s    {{3	r   c                    \        4       pV F?  p\        V\        4      '       d   W#P                  ,          pK-  V\	        V4      ,          pKA  	  V P                  \	        V4      4      # )z'
Used to work with an iterable of set.
)rU  rM   r,   rc  rb  ri  )r   sets
aggregatedset_s   &&  r   rD   ValueSet.from_sets  sT    
 U
D$))ii'
io-
	 
 ##Ij$9::r   c                Z    V P                  V P                  VP                  ,          4      # r   ri  rc  r   r   s   &&r   __or__ValueSet.__or__       $$TYY%;<<r   c                Z    V P                  V P                  VP                  ,          4      # r   rq  rr  s   &&r   __and__ValueSet.__and__  ru  r   c                ,    \        V P                  4      # r   )r}   rc  r2   s   &r   __iter__ValueSet.__iter__      DIIr   c                ,    \        V P                  4      # r   )boolrc  r2   s   &r   __bool__ValueSet.__bool__  r|  r   c                ,    \        V P                  4      # r   )lenrc  r2   s   &r   __len__ValueSet.__len__  s    499~r   c                T    R RP                  R V P                   4       4      ,          # )zS{%s}, c              3   8   "   T F  p\        V4      x  K  	  R # 5ir   )rX  )r>   ss   & r   r@   $ValueSet.__repr__.<locals>.<genexpr>  s     #>IqCFFIs   )joinrc  r2   s   &r   r/  ValueSet.__repr__  s     $))#>DII#>>??r   c                J    V P                  \        WP                  4      4      # r   )r.  filterrc  )r   filter_funcs   &&r   r  ValueSet.filter  s    ~~f[))<==r   c                   a a VV 3R  lpV# )c                  V   <a a SP                  V VV3R  lSP                   4       4      # )c              3   H   <"   T F  p\        VS4      ! S/ SB x  K  	  R # 5ir   )r$  )r>   r   r   r   rb   s   & r   r@   7ValueSet.__getattr__.<locals>.mapper.<locals>.<genexpr>  s)      "&E t$d5f5&s   ")rD   rc  )r   r   rb   r   s   jlr   mapper$ValueSet.__getattr__.<locals>.mapper  s%    >> "!YY"  r   r   )r   rb   r  s   ff r   r%  ValueSet.__getattr__  s    	
 r   c                4    V P                   VP                   8H  # r   rc  rr  s   &&r   __eq__ValueSet.__eq__  s    yyEJJ&&r   c                .    V P                  V4      '       * # r   )r  rr  s   &&r   __ne__ValueSet.__ne__  s    ;;u%%%r   c                ,    \        V P                  4      # r   )hashrc  r2   s   &r   __hash__ValueSet.__hash__  r|  r   c                :    \        R  V P                   4       4      # )c              3   @   "   T F  qP                  4       x  K  	  R # 5ir   )py__class__)r>   rR   s   & r   r@   'ValueSet.py__class__.<locals>.<genexpr>  s     ;Ard   )r,   rc  r2   s   &r   r  ValueSet.py__class__  s    ;;;;r   Nc              #     "   ^ RI Hp V P                   Uu. uF  qDP                  WR7      NK  	  pp\	        V!   F"  pT! V Uu. uF
  qwf   K  VNK  	  up4      x  K$  	  R# u upi u upi 5i)r)   )get_merged_lazy_valuer  N)r|   r  rc  rE   r   )r   rF   rG   r  rR   
type_iterslazy_valuesls   &&&     r   rE   ValueSet.iterate  si     CQUQZQZ[QZAii 3iGQZ
[&
3K''9KqK9  4 \ :s!   A.A$A.A)
A)
A.c                V   a \         P                  V3R  lV P                   4       4      # )c              3   Z   <"   T F   qP                   P                  VS4      x  K"  	  R # 5ir   r#   )r>   rR   r"   s   & r   r@   #ValueSet.execute.<locals>.<genexpr>  s'     !]S\a"3"3";";Ay"I"IS\s   (+r,   rD   rc  r&   s   &fr   r%   ValueSet.execute  s!    !!!]SWS\S\!]]]r   c                Z   aa \         P                  VV3R  lV P                   4       4      # )c              3   F   <"   T F  qP                   ! S/ SB x  K  	  R # 5ir   r1   r>   rR   r   r   s   & r   r@   /ValueSet.execute_with_values.<locals>.<genexpr>  s!     !\R[Q"7"7"H"HR[   !r  r   s   &jlr   r.   ValueSet.execute_with_values  s!    !!!\RVR[R[!\\\r   c                    \        \        V P                   Uu. uF  q3P                  ! V/ VB NK  	  up. 4      # u upi r   )r   r   rc  r^   )r   r   r   rR   s   &*, r   r^   ValueSet.goto  s3    cTYYGYFFD3F3YGLLGs   ;
c                Z   aa \         P                  VV3R  lV P                   4       4      # )c              3   F   <"   T F  qP                   ! S/ SB x  K  	  R # 5ir   )rl   r  s   & r   r@   .ValueSet.py__getattribute__.<locals>.<genexpr>  s!     ![QZA"6"6"G"GQZr  r  r   s   &jlr   rl   ValueSet.py__getattribute__  s!    !!![QUQZQZ![[[r   c                Z   aa \         P                  VV3R  lV P                   4       4      # )c              3   B   <"   T F  p\        V.SO5/ SB x  K  	  R # 5ir   )r_  r  s   & r   r@   $ValueSet.get_item.<locals>.<genexpr>  s      !R	1(1">t">v">	s   r  r   s   &jlr   get_itemValueSet.get_item  s    !!!R		!RRRr   c                    V P                  . 4      pV P                   F  p \        W14      pW$! 4       ,          pK  	  V#   \         d     K0  i ; ir   )r.  rc  r$  r   )r   function_namer  rR   methods   &&   r   	try_mergeValueSet.try_merge  sW    NN2&	A& 2 VX%	  	 " s   A  AAc                    \         P                  V P                   Uu. uF  qP                  4       NK  	  up4      # u upi r   )r,   rD   rc  r7   )r   rR   s   & r   r7   "ValueSet.gather_annotation_classes   s0    !!$))"T)Q#>#>#@)"TUU"Ts   =c                t    V P                    UUu. uF  qP                  4        F  q"NK  	  K  	  upp# u uppi r   )rc  r   )r   rR   sigs   &  r   r   ValueSet.get_signatures  s.    !YYEY2B2B2D32DYEEEs    4c                   V P                    Uu. uF  q"P                  VR 7      NK  	  pp\        \        RV4      4      p\	        V4      ^8X  d
   V^ ,          # RV9   pV'       d   VP                  R4       \	        V4      ^ 8X  d   R# \	        V4      ^8X  d   V^ ,          pMRRP                  V4      ,          pV'       d
   RV,          pV# u upi ))r  NNonez	Union[%s]r  zOptional[%s])rc  r  sortedr  r  remover  )r   r  vt
type_hintsoptionalr  s   &&     r   r  ValueSet.get_type_hint  s    EIYYOY__N_;YOF4O,
z?aa= Z'f%z?a_!1Adii
33A"A# Ps   Cc                l    ^ RI Hp / pV P                   F  pV! VVP                  V4      4       K  	  V# )r)   )merge_type_var_dicts)!jedi.inference.gradual.annotationr  rc  r	  )r   r  r  type_var_dictr   s   &&   r   r	  ValueSet.infer_type_vars  s9    JYYE %%i0 
 r   r  r   r  )!r   r   r   r   r   r'  ri  rD   rs  rw  rz  r  r  r/  r  r%  r  r  r  r  rE   r%   r.   r^   rl   r  r  r7   r   r  r	  r   r   r   s   @r   r,   r,     s     3
  
 
; 
;==@>'&<^]M\S	VF(
 
r   r,   c                    a  V 3R  lpV# )c                  &   < \        S! V / VB 4      # r   r6   )r   r   funcs   *,r   wrapper&iterator_to_value_set.<locals>.wrapper+  s    d-f-..r   r   )r  r  s   f r   iterator_to_value_setr  *  s    / Nr   r   )%r  	functoolsr   r   r   	itertoolsr   parso.python.treer   jedir   jedi.parser_utilsr   jedi.inference.helpersr	   jedi.inference.utilsr
   jedi.inference.cacher   
jedi.cacher   objectr   	Exceptionr   r   r   r  r  r)  r4  r>  rI  r_  r,   r   r  r   r   r   <module>r     s      ! "  3 8 . F %8	9 	o1 o1da aH2( 2*"( "I$ IF FU U6H HV RL	r   