Ë
    pPêjš
  ã                  óâ   — d 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 ddlmZmZmZmZ  G d	„ d
«      Z	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zy)z&Utilities for type argument inference.é    )Úannotations)ÚSequence)ÚFinal)Ú
SUBTYPE_OFÚSUPERTYPE_OFÚinfer_constraintsÚinfer_constraints_for_callable)ÚArgKind)Úsolve_constraints)ÚCallableTypeÚInstanceÚTypeÚTypeVarLikeTypec                  ó   — e Zd ZdZdd„Zy)ÚArgumentInferContexta  Type argument inference context.

    We need this because we pass around ``Mapping`` and ``Iterable`` types.
    These types are only known by ``TypeChecker`` itself.
    It is required for ``*`` and ``**`` argument inference.

    https://github.com/python/mypy/issues/11144
    c                ó    — || _         || _        y )N)Úmapping_typeÚiterable_type)Úselfr   r   s      úO/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/infer.pyÚ__init__zArgumentInferContext.__init__   s   € Ø#/ˆÔØ$1ˆÕó    N)r   r   r   r   ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   © r   r   r   r      s   „ ñô2r   r   c                óV   — t        | |||||«      }| j                  }	t        |	|||«      S )a)  Infer the type arguments of a generic function.

    Return an array of lower bound types for the type variables -1 (at
    index 0), -2 (at index 1), etc. A lower bound is None if a value
    could not be inferred.

    Arguments:
      callee_type: the target generic function
      arg_types: argument types at the call site (each optional; if None,
                 we are not considering this argument in the current pass)
      arg_kinds: nodes.ARG_* values for arg_types
      formal_to_actual: mapping from formal to actual variable indices
    )r	   Ú	variablesr   )
Úcallee_typeÚ	arg_typesÚ	arg_kindsÚ	arg_namesÚformal_to_actualÚcontextÚstrictÚallow_polymorphicÚconstraintsÚ	type_varss
             r   Úinfer_function_type_argumentsr,   "   s;   € ô0 1Ø�Y 	¨9Ð6FÈó€Kð
 ×%Ñ%€IÜ˜Y¨°VÐ=NÓOÐOr   c                óZ   — t        |||rt        nt        |¬«      }t        | ||¬«      d   S )N)Úerase_types)Úskip_unsatisfiedr   )r   r   r   r   )r+   ÚtemplateÚactualÚis_supertyper/   r.   r*   s          r   Úinfer_type_argumentsr3   C   s4   € ô $Ø�&©,�,¼JÐT_ô€Kô ˜Y¨ÐFVÔWÐXYÑZÐZr   N)TF)r"   r   r#   zSequence[Type | None]r$   zlist[ArgKind]r%   zSequence[str | None] | Noner&   zlist[list[int]]r'   r   r(   Úboolr)   r4   r   z/tuple[list[Type | None], list[TypeVarLikeType]])FFT)r+   zSequence[TypeVarLikeType]r0   r   r1   r   r2   r4   r/   r4   r.   r4   r   zlist[Type | None])r   Ú
__future__r   Úcollections.abcr   Útypingr   Úmypy.constraintsr   r   r   r	   Ú
mypy.nodesr
   Ú
mypy.solver   Ú
mypy.typesr   r   r   r   r   r,   r3   r   r   r   ú<module>r<      sû   ðÙ ,å "å $Ý ÷ó õ Ý (ß DÓ D÷2ñ 2ð, Ø#ðPØðPà$ðPð ðPð +ð	Pð
 &ðPð "ðPð ðPð ðPð 5óPðJ Ø"Øð[Ø(ð[àð[ð ð[ð ð	[ð
 ð[ð ð[ð ô[r   