
    X-Ph	                      U d Z ddlmZ ddlZddlZddl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 ddlZddlmZ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#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z<m=Z= ddl>m?Z? ddl@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZI ddlmJZJ ddlKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZh ddlimjZj ddlkmlZlmmZm h dZndeod<   e%de$de"de#de&de'diZpdeod<   ddd d!d!d"d#d$d%d&	Zqdeod'<   h d(Zrdeod)<   d*Zsd*Zt G d+ d,          Zudd0Zvdd;Zw	 dddEZxddGZy G dH dIej          ZzddKZ{ddNZ|	 dddOZ}	 dddPZ~d<dQddTZddXZdddZZdd\ZddbZ	 dddfZ	 dddhZddjZddlZddmZddoZddqZddtZddvZddzZdd~ZddiZdeod<   ddZddZddZddZddZddZddZd<dddZddZdS )a  Facilities for generating error messages during type checking.

Don't add any non-trivial message construction logic to the type
checker, as it can compromise clarity and make messages less
consistent. Add such logic to this module instead. Literal messages, including those
with format args, should be defined as constants in mypy.message_registry.

Historically we tried to avoid all message string literals in the type
checker but we are moving away from this convention.
    )annotationsN)
CollectionIterableIteratorSequence)contextmanager)dedent)AnyCallableFinalcast)
errorcodesmessage_registry)
erase_type)	ErrorCode)	ErrorInfoErrorsErrorWatcher)	ARG_NAMEDARG_NAMED_OPTARG_OPTARG_POSARG_STAR	ARG_STAR2CONTRAVARIANT	COVARIANTSYMBOL_FUNCBASE_TYPESArgKindCallExprClassDefContext
ExpressionFuncDef	IndexExprMypyFileNameExpr
ReturnStmtStrExpr
SymbolNodeSymbolTableTypeInfoVarreverse_builtin_aliases)
op_methodsop_methods_to_symbols)Options)	IS_CLASS_OR_STATICIS_CLASSVARIS_EXPLICIT_SETTERIS_SETTABLEIS_VARfind_memberget_member_flagsis_same_type
is_subtype)separate_union_literals)AnyTypeCallableTypeDeletedTypeFunctionLikeInstanceLiteralTypeNoneType
Overloaded
ParametersParamSpecTypePartialType
ProperType	TupleTypeTypeTypeAliasTypeTypedDictType	TypeOfAnyTypeStrVisitorTypeTypeTypeVarLikeTypeTypeVarTupleTypeTypeVarTypeUnboundTypeUninhabitedType	UnionType
UnpackTypeflatten_nested_unionsget_proper_typeget_proper_types)TypeTraverserVisitor)plural_sunmangle>   
typing.Any
typing.Settyping.Dicttyping.Listtyping.casttyping.Tupletyping.Uniontyping.TypeVartyping.Callabletyping.Iteratortyping.Optionaltyping.Iterabler   TYPES_FOR_UNIMPORTED_HINTSArg
DefaultArgNamedArgDefaultNamedArgVarArgKwArgARG_CONSTRUCTOR_NAMESzset.pyiz	tuple.pyizbool.pyizexception.pyizisinstancelist.pyizproperty.pyizclassmethod.pyiztyping-medium.pyi)	zbuiltins.setbuiltins.tuplezbuiltins.boolzbuiltins.Exceptionzbuiltins.BaseExceptionzbuiltins.isinstancezbuiltins.propertyzbuiltins.classmethodtyping._SpecialFormSUGGESTED_TEST_FIXTURES>   numbers.Realnumbers.Numbernumbers.Complexnumbers.Integralnumbers.RationalUNSUPPORTED_NUMBERS_TYPES
   c                     e Zd ZU dZded<   ded<   ded<   dLd
ZdddddMdZdNdZedOd            Z	dPdZ
dPdZddddddddQd,Zddddd-dRd.Z	 	 	 	 dSddd/dTd1Z	 	 	 	 dUdd2dVd4Z	 dWdXd;Zej        d<dYdBZdZdCZd[dDZd\dGZd]dPZd^dTZ	 dWd^dUZd_dYZd`d\Zdad_ZdbdaZdcdbZddddZdcdeZ dcdfZ!ddgdedkZ"dfdlZ#dgdnZ$dhdoZ%didqZ&didrZ'dd<djdwZ(dkdzZ)dld{Z*dmd}Z+dnd~Z,dodZ-dpdZ.dqdZ/drdZ0ddddddsdZ1dtdZ2dudZ3dvdZ4dwdZ5dxdZ6dydZ7dzdZ8d{dZ9d|dZ:d}dZ;d}dZ<d~dZ=ddZ>dldZ?dldZ@ddZAdldZBdddZCdddZDddZEdldZFd}dZGddZHddZIddZJddZKddÄZLddƄZMdldǄZNd}dȄZOd}dɄZPdd˄ZQdd̄ZRdd̈́ZSddτZTddЄZUddфZVdd҄ZWddԄZXdd؄ZYddڄZZddބZ[dd߄Z\ddZ]ddZ^ddZ_dldZ`ddZaddZbddZcddZdddZeddZfddZgdzdZhddZiddZjdzdZkddZlddZm	 dWddZnddZoddZpddZqdd
ZrddZs	 dddZtddZuddZvddZwdldZxdzdZydzdZzdldZ{dzdZ|ddZ}ddZ~dzdZdzdZdd Zdd"Zdd%Zdld&Zdd(Zdd)Zdd+Zdd,Zdd.Zdd1Zdd3Zdd6Zddddd7dd9Zdd<dd=Z	 	 dddAZddCZddFZddHZdldIZddKZdS (  MessageBuildera  Helper class for reporting type checker error messages with parameters.

    The methods of this class need to be provided with the context within a
    file; the errors member manages the wider context.

    IDEA: Support a 'verbose mode' that includes full information about types
          in error messages and that may otherwise produce more detailed error
          messages.
    r   errorsdict[str, MypyFile]modulesz
list[bool]_disable_type_namesreturnNonec                H    || _         |j        | _        || _        g | _        d S N)r{   optionsr}   r~   )selfr{   r}   s      M/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypy/messages.py__init__zMessageBuilder.__init__   s'    ~#%       TFfilter_errorssave_filtered_errorsfilter_deprecatedr   'bool | Callable[[str, ErrorInfo], bool]r   boolr   r   c               2    t          | j        |||          S )Nr   )r   r{   )r   r   r   r   s       r   r   zMessageBuilder.filter_errors   s)     K'!5/	
 
 
 	
r   list[ErrorInfo]c                D    |D ]}| j                             |           dS )z'Add errors in messages to this builder.N)r{   add_error_info)r   r{   infos      r   
add_errorszMessageBuilder.add_errors   s4     	- 	-DK&&t,,,,	- 	-r   Iterator[None]c              #     K   | j                             d           	 d V  | j                                          d S # | j                                          w xY w)NT)r~   appendpopr   s    r   disable_type_namesz!MessageBuilder.disable_type_names   sa       ''---	+EEE$((*****D$((****s	   = Ac                L    t          | j                  dk    o| j        d         S )Nr   )lenr~   r   s    r   are_type_names_disabledz&MessageBuilder.are_type_names_disabled   s%    4+,,q0QT5Mb5QQr   c                4    | j                                         S )zShould we generate simple/fast error messages?

        If errors aren't shown to the user, we don't want to waste cycles producing
        complex error messages.
        )r{   prefer_simple_messagesr   s    r   r   z%MessageBuilder.prefer_simple_messages   s     {11333r   Nr   )codefileoriginoffset
allow_dupssecondary_contextmsgstrcontextContext | Noneseverityr   ErrorCode | Noner   
str | Noner   r   intr   r   c               $   d	d}
| |
|          }n| |
|          }nd}|	"|J t          j        | |
|	                    }| j                            |r|j        nd|r|j        nd||||||r|j        nd|r|j        nd||           dS )
zReport an error or note (unless disabled).

        Note that context controls where error is reported, while origin controls
        where # type: ignore comments have effect.
        ctxr!   r   Iterable[int]c                    t          | t          t          f          rt          | j        | j        dz             S t          | t
                    s| j        gS t          | j        | j        p| j        dz             S )a`  This determines where a type: ignore for a given context has effect.

            Current logic is a bit tricky, to keep as much backwards compatibility as
            possible. We may reconsider this to always be a single line (or otherwise
            simplify it) when we drop Python 3.7.

            TODO: address this in follow up PR
               )
isinstancer    r#   rangeliner"   end_line)r   s    r   span_from_contextz0MessageBuilder.report.<locals>.span_from_context   sq     #'233 GSXsx!|444Z00 Gz!SX(@A'EFFFr   Nr   )r   r   r   origin_spanr   
end_columnr   r   )r   r!   r   r   )	itertoolschainr{   reportr   columnr   r   )r   r   r   r   r   r   r   r   r   r   r   r   s               r   r   zMessageBuilder.report   s    &	G 	G 	G 	G" ++F33KK ++G44KKK(***#/+7H7HIZ7[7[\\K#+GLL%-GNN2#)08W%%b-4<w))"! 	 	
 	
 	
 	
 	
r   r   r   r   r   c          	     >    |                      ||d||||           dS )z*Report an error message (unless disabled).errorr   Nr   )r   r   r   r   r   r   r   s          r   failzMessageBuilder.fail  s>     	!/ 	 	
 	
 	
 	
 	
r   r   r   r!   c               B    |                      ||d||||||	  	         dS )z Report a note (unless disabled).note)r   r   r   r   r   r   Nr   )	r   r   r   r   r   r   r   r   r   s	            r   r   zMessageBuilder.note1  sD     	!/ 	 
	
 
	
 
	
 
	
 
	
r   )r   messagesc               n    |                                 D ]}|                     ||d|||||            dS )z?Report as many notes as lines in the message (unless disabled).r   )r   r   r   r   r   N)
splitlinesr   )	r   r   r   r   r   r   r   r   r   s	            r   note_multilinezMessageBuilder.note_multilineJ  sa     &&(( 
	 
	CKK%"3  	 	 	 	
	 
	r   original_typerH   typmembermodule_symbol_tableSymbolTable | Nonec           
        t          |          }t          |          }t          |t                    r6|j                            |          r|                     d| d|           dS |dk    rE|                     dt          || j                   d|t          j	                   t          j	        S |t          j                    v rFt          j                    D ]0\  }}||k    r%|                     |||           t          j	        c S 1nZ|dk    rE|                     d	t          || j                   d|t          j	                   t          j	        S |d
k    rE|                     dt          || j                   d|t          j	                   t          j	        S |dk    rE|                     dt          || j                   d|t          j	                   t          j	        S |dk    rt          |t                    rR|                                r>|                     d                    t          || j                            |           dS |                     dt          || j                   d|t          j                   t          j        S |dk    rT|                     d                    t          || j                            |t          j                   t          j        S |dk    rt          |t                    r>|j        j        dk    r.|                     d|t          j	                   t          j	        S |                     t&          j                            t          || j                            |t          j	                   t          j	        S d}|dk    rd}n|dk    rd}|                                 sd}	t          |t                    r||j        j        ro|R||v rN||         j        sA|                     t          || j        d           d| d |t          j                   d}	nt3          |j        j                                                  |!d! |                                D             z                      |           fd"t8                              |g           D             }
|
                    t?          |d#$                     |dk    r	|
dgk    rg }
|
r[|                     d%                    t          || j                  |tA          |
d&          |          |t          j                   d}	|	sJ|                     d'                    t          || j                  ||          |t          j                   t          j        S t          |tB                    rtE          ||| j        (          \  }}|d)k    r tG          d* |j        D                       rd+}|                     d,                    ||||          |t          j$                   t          j$        S t          |tJ                    rt          |j&                  }t          |tB                    rttE          ||| j        (          \  }}t          || j                  }|                     d-                    |||||          |t          j$                   t          j$        S nV|                     d'                    t          || j                  ||          |t          j                   t          j        S dS ).a0  Report a missing or non-accessible member.

        original_type is the top-level type on which the error occurred.
        typ is the actual type that is missing the member. These can be
        different, e.g., in a union, original_type will be the union and typ
        will be the specific item in the union that does not have the member
        attribute.

        'module_symbol_table' is passed to this function if the type for which we
        are trying to get a member was originally a module. The SymbolTable allows
        us to look up and suggests attributes of the module since they are not
        directly available on original_type

        If member corresponds to an operator, use the corresponding operator
        name in the messages. Return the error code that was produced, if any.
        zMember "z" is not assignableN__contains__z'Unsupported right operand type for in ()r   __neg__z&Unsupported operand type for unary - (__pos__z&Unsupported operand type for unary + (
__invert__z Unsupported operand type for ~ (__getitem__z,The type {} is not generic and not indexablezValue of type z is not indexable__setitem__z.Unsupported target for indexed assignment ({})__call__zbuiltins.functionz$Cannot call function of unknown type __iter__z (not iterable)	__aiter__z (not async iterable)FTmodule_namesz' does not explicitly export attribute ""c                &    h | ]\  }}|j         |S  )module_public).0kvs      r   	<setcomp>z-MessageBuilder.has_no_attr.<locals>.<setcomp>  s3     - - -&*aQ_- !- - -r   c                    g | ]}|v |	S r   r   )r   malternativess     r   
<listcomp>z.MessageBuilder.has_no_attr.<locals>.<listcomp>  s%    "c"c"cQRVbQbQb1QbQbQbr      nz%{} has no attribute "{}"; maybe {}?{}orz{} has no attribute "{}"{}r   z"object"c              3  F   K   | ]}t          |          t          k    V  d S r   )typerA   )r   items     r   	<genexpr>z-MessageBuilder.has_no_attr.<locals>.<genexpr>  s>       4 4/3DJJ(*4 4 4 4 4 4r   z"None"z%Item {} of {} has no attribute "{}"{}zIItem {} of the upper bound {} of type variable {} has no attribute "{}"{})'rV   r   r?   r   has_readable_memberr   format_typer   codesOPERATORr.   valuesitemsunsupported_left_operandr>   is_type_objformatINDEXfullnamer   NOT_CALLABLEr   namesr   ATTR_DEFINEDsetkeysdiscardCOMMON_MISTAKESgetextendbest_matches
pretty_seqrS   format_type_distinctlyany
UNION_ATTRrP   upper_bound)r   r   r   r   r   r   opmethodextrafailedmatches
typ_formatorig_type_formatboundtyp_fmt	bound_fmtoriginal_type_fmtr   s                    @r   has_no_attrzMessageBuilder.has_no_attrj  sP   0 (66c""mX.. q	*=3E3Y3YZ`3a3a q	*II<<<<gFFF4~%%IIe+mUYUa:b:beee^    
 >!z(**** ).00 * *
FV##11"mWMMM >))) $* y  IId]TXT`9a9addd^    
 >!y  IId]TXT`9a9addd^    
 >!|##II^;}dl3[3[^^^^    
 >!}$$ -66 #=;T;T;V;V #		BII#M4<@@  	   t		`[%M%M```    
 {"}$$II@GGt|<<  [     ;z!!-22 &"+/BBB 		@'PUP^	___~%		$188]TXT`9a9abb    
 ~% E##);&&///11 Y*mX66 %*=;M;S %*+7"&999 3F ; I : 		*=$,UYZZZ F F<BF F F#!&!3	 "    "&'*=+=+C+H+H+J+J'K'K.:( - -.A.G.G.I.I- - - L %,,V444"c"c"c"co.A.A&".M.M"c"c"c|FLA'N'N'NOOO![00W5L5L&(G" * II G N N$/t|$L$L$*$.w$=$=$)	!" !" !(%*%7 & 	 	 	 &*F II4;;'t|DDfe   "/     ))M955 (* 0F0 0 0,
, ++ 4 47D7J4 4 4 1 1+ "*J		;BB"$4fe  )     ''M;77 *'(ABBeY// ,)?UTXT`)a)a)a&GY(3M4<(P(P%II++16#Y0A65, ,  "-     !++, 		077#M4<@@&%  +     ))tr   r   r  	left_typer
   
right_typer   c               @   d}t          |t                    r|}nt          || j                  }d}t          |t                    r|}nt          || j                  }|                                 rd| d}nd| d| d| d}|                     |||           dS )	zpReport unsupported operand types for a binary operation.

        Types can be Type objects or strings.
        r   zUnsupported operand types for z (likely involving Union) ( and r   r   N)r   r   r   r   r   r   )	r   r  r  r  r   r   left_str	right_strr   s	            r   unsupported_operand_typesz(MessageBuilder.unsupported_operand_types9  s     i%% 	< HH"9dl;;H	j#&& 	>"II#J==I'')) 	UP2PPPCCT2TTTT	TTTC		#wT	*****r   c                    |                                  rd| d}nd| dt          || j                   d}|                     ||t          j                   d S )Nz"Unsupported left operand type for z (some union)r  r   r   )r   r   r   r   r   r   )r   r  r   r   r   s        r   r   z'MessageBuilder.unsupported_left_operandX  sm    '')) 	_HrHHHCC^r^^[dl=[=[^^^C		#wU^	44444r   c                    |                      t          j                            t	          || j                            |           t          t          j                  S r   )	r   r   r   r   r   r   r;   rK   
from_errorr   r   r   s      r   not_callablezMessageBuilder.not_callable_  sF    		"/66{37U7UVVX_```y+,,,r   calleer<   c                    t          |          pd}|                     d| d|t          j                   t	          t
          j                  S )Nz	(unknown)zCall to untyped function z in typed contextr   )callable_namer   r   NO_UNTYPED_CALLr;   rK   r#  )r   r&  r   names       r   untyped_function_callz$MessageBuilder.untyped_function_callc  sY    V$$3		????& 	 	
 	
 	

 y+,,,r   r   r   arg_typearg_kindr   object_typeType | Noneouter_contextc	           	        t          |          }d}	t          |          }
|
|
}|j        r.|j        d         !t          |j        d         | j                  }nt          |          }t          j                    D ]\  }}|d|dd         z   fD ]}|                    d| d          re|dk    s||k    r%| 	                    ||||t          j        	           n$| 	                    ||||t          j        	           t          j        c c S |                    d
          r>|                     ||j        |dz
           ||t          j        	           t          j        S |                    d          r|dk    r>|                     ||j        |dz
           ||t          j        	           t          j        S t          ||j        |dz
           | j                  \  }}d| d| d}t           j                            |          }|                     |j        ||j        	           |j        S d| d}	d}t          j        }g }|
dk    rl|
dd         }|dz  }t          ||j        d         | j                  \  }}d                    |                                |||          }t          j        }n|
dk    rit5          t          |j        |dz
                     t6                    r8|
dd         }|dz  }t9          t6          |          j        \  }}t9          t6          |j        |                   j        \  }}t;          ||          r+t          || j                  }t          || j                  }nt          ||| j                  \  }}t;          ||          r+t          || j                  }t          || j                  } nt          ||| j                  \  }} d                    |                                |||||           }t          j        }n|
dk    rPt          ||j        |dz
           | j                  \  }} d                    |dz
  ||           }t          j        }n*|
dk    rPt?          t@          t          ||j        d         | j                            \  }}d                    ||          }n|
dk    rPt?          t@          t          ||j        d         | j                            \  }}d                    ||          }n~|
dk    rIt          ||j        |dz
           | j                  \  }}d                    |dk    rdnd ||          }n/|
d!k    r=t          ||j        d         | j                  \  }}d"                    ||          }n| !                                rd#}n	 |j        |dz
           }!n# tD          $ r |j        d         }!Y nw xY wt          ||!d$| j        %          \  }}|tF          k    rd&|z   }n|tH          k    rd'|z   }tK          |          }"t5          |tL                    r0tO          |j(                  |k    r|j(        |dz
           }#|#d|# d}"|tH          k    rt5          |tR                    r|tO          |j(                  k    ri|j(        |dz
           Y|j*        |dz
           tH          k    r@|j(        |dz
           }#|#J t          |j        |#         |!d$| j        %          \  }}d|# d}"t5          |tV                    rVt5          |j,        tZ                    r<d(                    |j,        j        t]          |          t]          |                    }n2d)                    |"|	t]          |          t]          |                    }t          |!          }!t5          |!t^                    rta          |!j                  }$n|!g}$tc          |$          D ]N}%t5          |td                    r7t5          |%td                    r"tg          |||%          }ti          |||%          }Ot          |          }t5          |tR                    rt          j5        }nt          j6        }|                     |||	           |r|D ]}&| 7                    |&||	           |S )*a  Report an error about an incompatible argument type.

        The argument type is arg_type, argument number is n and the
        callee type is 'callee'. If the callee represents a method
        that corresponds to an operator, use the corresponding
        operator name in the messages.

        Return the error code that used for the argument (multiple error
        codes are possible).
        r   Nr   __r   r   z" ofinr   z"__getitem__" ofr   z"__setitem__" ofr   z (expression has type z, target has type r   zto  z<list>r   z0{} item {} has incompatible type {}; expected {}<dict>z9{} entry {} has incompatible type {}: {}; expected {}: {}z<Unpacked dict entry {} has incompatible type {}; expected {}z<list-comprehension>zDList comprehension has incompatible type List[{}]; expected List[{}]z<set-comprehension>zASet comprehension has incompatible type Set[{}]; expected Set[{}]z<dictionary-comprehension>zT{} expression in dictionary comprehension has incompatible type {}; expected type {}KeyValuez<generator>z4Generator has incompatible item type {}; expected {}zArgument has incompatible typeT)barer   ***z3Value of "{}" has incompatible type {}; expected {}z3Argument {} {}has incompatible type {}; expected {})8rV   r(  
bound_argsr   r   extract_typer/   r   
startswithr   r   r   invalid_index_type	arg_typesr   r	  r    INCOMPATIBLE_TYPES_IN_ASSIGNMENTwith_additional_msgr   valuer   MISCr   title	LIST_ITEMr   rG   r   r9   	DICT_ITEMmapstrip_quotesr   
IndexErrorr   r   r   r   r   	arg_namesrJ   	arg_kindsr$   indexr(   quote_type_stringrS   listrW   r?   append_invariance_notesappend_numbers_notesTYPEDDICT_ITEMARG_TYPEr   )'r   r   r   r&  r,  r-  r.  r   r0  targetcallee_namer*  baser  r  variantarg_type_strcallee_type_strr   	error_msgr   r   notesactual_type_strexpected_type_strkey_type
value_typeexpected_key_typeexpected_value_typekey_type_strexpected_key_type_strvalue_type_strexpected_value_type_strexpected_type	arg_labelarg_nameexpected_typesr   note_msgs'                                          r   incompatible_argumentz$MessageBuilder.incompatible_argumentl  s!
   * #8,,#F++"D  *V%6q%9%E"6#4Q#7FF#D))39;; . .
%uvabbz'99 . .G'87'8'8'899 
.::F):): :: "HdG%. ;     !:: "D(G%. ;     %~-----
.. 122 #''f.q1u5tW5; (    {"122 *66++ &"21q5"94u{ ,    !;&4J &"21q5"94<5 5 51L/ dccQ`ccc  )I]]^bcc  IIiowY^ILLL$>)"4]]]Fz(""qt$DFA1G&*1-t|2 2 2.O. EKK

a2C C ?DDH$$F,QU344i*
 *
$ qt$DFA#'	8#<#<#B Hj59)VEUVWEX5Y5Y5_22 ($566 *8T\BB(34Et|(T(T%%6L/7 7 733 *&9:: !,Z!F!F*56I4<*X*X'':P 3T\; ; ;7 7 NTT

%' C ?DDH$$6L&*1q514<7 7 73N3 QWWA~'> C ?DD22214&x1A!1Ddl[[[2 2.O. Y__!2 CC 11114&x1A!1Ddl[[[2 2.O. V\\!2 CC 8881G&*1q514<2 2 2.O.#fa1ffUU'?DUVV C M))1G&*1-t|2 2 2.O. IOO!2 CC **,, :L69$*$4QU$;MM! 9 9 9$*$4R$8MMM92Hm$3 3 3// x''#&#5LL**#',#6L  FF	mX66 43}?V;W;W[\;\;\,6q1u=H+$3OOO		))"8];; *S!12222(Q/;(Q/9<<%/A6H#///6L x0-dTXT`7 7 73L"3 !0HImY77 J!'= =  PVV%+1),77)*;<< CC PVV!),77)*;<<	 C !0 > >mY77 5%)-*=%>%>NN&3_N,^<< L LD!(H55 L*T8:T:T L 7x N N 4UHd K K)+66K+}55 &+~		#wT	*** 	8! 8 8		(G$	7777s   W. .XXoriginal_caller_typerF   callee_typec                P   |                                  rd S t          |t          t          t          t
          t          f          rt          |t                    r%|j        j        r| 	                    ||||           t          |t                    rS|j        D ]K}t          |          }t          |t                    r%|j        j        r| 	                    ||||           Lt          |t                    rCt          |t                    r.t          d||d          }|r|                     ||||           t          |t                    r:|j        j        r.t          d||d          }|r|                     ||||           |                     ||||           d S )Nr   r   T)is_operator)r   r   r?   rG   rJ   rM   r<   r   is_protocolreport_protocol_problemsrS   r   rV   r6   	note_callmaybe_note_concatenate_pos_args)r   rl  rm  r   r   r   calls          r   incompatible_argument_notez)MessageBuilder.incompatible_argument_noteR  s    &&(( 	F 8YxQ]"^
 
 	 +x00 [5E5Q --(+wT .    +y11 '-  D*400D!$11 di6K 550$d 6    k<00 	OZ@TV^5_5_ 	O02FTX  D  O3T7NNNk8,, 	F1A1M 	Fz;QUVVVD F{D'EEE,,-A;PWY]^^^^^r   c                   t          |t                    rt          |t                    r|j        s|j        rg }t          |                                |                                          D ]N\  }}d |j        |j        fv r|j        |j        k    r(|j        !|j        |                    |j                   O|rGdd                    |          z   dz   }| 	                    d|j         d| d||           d S d S d S d S d S )Nr   ", "zThis is likely because "z" has named arguments: z'. Consider marking them positional-onlyr   )
r   r<   from_concatenatezipformal_argumentsposr*  r   joinr   )	r   rl  rm  r   r   r   comissing_argumentss	            r   rs  z.MessageBuilder.maybe_note_concatenate_pos_argsu  ss    {L11	/>>	 &6	 ;F:V	
  "E,,..0D0U0U0W0W  ) )1 AE15>))6QV##16;MLL((( $'&++e*<*<$<s$B!		R/C/H R R(R R R	      #	 	 	 	 	 	 r   
index_typerf  base_strc                   t          ||| j                  \  }}|                     d                    |||          ||           d S )Nr   z.Invalid index type {} for {}; expected type {}r   )r	  r   r   r   )r   r  rf  r  r   r   	index_strexpected_strs           r   r?  z!MessageBuilder.invalid_index_type  so     #9t|#
 #
 #
	< 			<CC8\   	 	
 	
 	
 	
 	
r   r  set[str]c           	         t          |          dk    rd}nd}|                     d                    t          t	          |                    |          t
          j        |           d S )Nr   isarez ReadOnly {} TypedDict {} mutated)r   r   )r   r   r   format_key_listsortedr   TYPEDDICT_READONLY_MUTATED)r   r  r   suffixs       r   readonly_keys_mutatedz$MessageBuilder.readonly_keys_mutated  sm    t99>>FFF		.55ofTll6S6SU[\\1 	 	
 	
 	
 	
 	
r   argument_namesSequence[str | None] | Nonec                D   |                                  rd}nt          d D                       }|j        ||j                 }fd|D             }t	          |          dk    rd}nd}t          |          }|Z|rXt          d |D                       r?d                    t          t          t                   |                    }	|d	|	 d
| z  }n%dt          |          z   }ndt          |          z   }|                     ||t          j                   d S )NzToo few argumentsc              3     K   | ]}|d u V  	d S r   r   )r   r   s     r   r   z3MessageBuilder.too_few_arguments.<locals>.<genexpr>  s&      %H%HAa4i%H%H%H%H%H%Hr   c                    g | ]}|v|	S r   r   )r   r   r  s     r   r   z4MessageBuilder.too_few_arguments.<locals>.<listcomp>  s#    III!.1H1HA1H1H1Hr   r   zMissing positional argumentzMissing positional argumentsc              3     K   | ]}|d uV  	d S r   r   )r   ds     r   r   z3MessageBuilder.too_few_arguments.<locals>.<genexpr>  s&      7T7T!7T7T7T7T7T7Tr   rw   "z" in call to r   )r   sumrK  min_argsr   r(  allr|  r   rO  r   for_functionr   r   CALL_ARG)
r   r&  r   r  r   num_positional_argsarguments_leftdiffrU  argss
      `      r   too_few_argumentsz MessageBuilder.too_few_arguments  sD    &&(( 	=%CC'"%%H%H%H%H%H"H"H#-.AFO.STNIIII~IIID4yyA~~34'//K&4&C7T7Tt7T7T7T4T4T&{{4S	4#8#899<D<<{<<<)L,@,@@ &V(<(<<C		#wU^	44444r   r*  c                v    d| dt          |          z   }|                     ||t          j                   d S )NzMissing named argument "r   r   )r  r   r   r  )r   r&  r   r*  r   s        r   missing_named_argumentz%MessageBuilder.missing_named_argument  s?    0000<3G3GG		#wU^	44444r   c                    |                                  rd}ndt          |          z   }|                     ||t          j                   |                     ||           d S )NzToo many argumentsr   )r   r  r   r   r  maybe_note_about_special_argsr   r&  r   r   s       r   too_many_argumentsz!MessageBuilder.too_many_arguments  se    &&(( 	>&CC&f)=)==C		#wU^	444**67;;;;;r   rJ   c                    |j         D ]#}||j        vrd| dt          |          z   } n$|                     ||           d S |                     ||           d S )NzExtra argument "z" from **args)r   rK  r  r  r   )r   r&  r,  r   keyr   s         r   "too_many_arguments_from_typed_dictz1MessageBuilder.too_many_arguments_from_typed_dict  s     > 	 	C&***;;;;l6>R>RR + ##FG444F		#wr   c                    |                                  rd}ndt          |          z   }|                     ||           |                     ||           d S )NzToo many positional arguments)r   r  r   r  r  s       r   too_many_positional_argumentsz,MessageBuilder.too_many_positional_arguments  s`    &&(( 	I1CC1L4H4HHC		#w**67;;;;;r   c                    |                                  rd S |j                            d          }|r|dvr|                     d|           d S d S d S )N	first_arg>   clsmcsr   zlLooks like the first special argument in a method is not named "self", "cls", or "mcs", maybe it is missing?)r   
def_extrasr  r   )r   r&  r   r  s       r   r  z,MessageBuilder.maybe_note_about_special_args  s~    &&(( 	F%))+66	 	*@@@II' 	    	 	@@r   r  for_funcr  list[str] | Nonec                   d| d|z   }|r|dt          |d           dz  }|                     ||t          j                   d S )NzUnexpected keyword argument "r   z; did you mean r   ?r   )r  r   r   r  )r   r  r*  r   r  r   s         r   (unexpected_keyword_argument_for_functionz7MessageBuilder.unexpected_keyword_argument_for_function  sb     6d555@ 	BAZ%>%>AAAAC		#wU^	44444r   c                f   g }g }t          |j                  D ]e\  }}|j        |         }	|	Q|j        |         t          k    r;t          ||          r|                    |	           P|                    |	           ft          ||d          }
|
st          ||d          }
|                     t          |          |||
           t          | j        |          }|rO|j        J t          |          }|sd}|                     | d|j        |j        |t           j                   d S d S )Nr   r   r  zCalled functionz defined here)r   r   r   )	enumerater@  rK  rL  r   r9   r   r  r  r  find_defining_moduler}   
definitionr(  r   pathr   r  )r   r&  r*  r,  r   matching_type_argsnot_matching_type_argsi
kwarg_typecallee_arg_namer  modulefnames                r   unexpected_keyword_argumentz*MessageBuilder.unexpected_keyword_argument  s     !#&v'788 	C 	CMAz$.q1O*v/?/Bh/N/Nh
33 C&--o>>>>*11/BBBt%71=== 	F"4)?1EEEG55  $ 	6 	
 	
 	
 &dlF;; 	$000!&))E *)II'''![^      	 	r   rM  c                    |                      d                    t          |          pd|j        |                   |           d S )Nz1{} gets multiple values for keyword argument "{}"Function)r   r   r(  rK  )r   r&  rM  r   s       r   duplicate_argument_valuez'MessageBuilder.duplicate_argument_value#  sT    		?FFf%%3V5Ee5L  		
 	
 	
 	
 	
r   c                    t          |          }t          |t                    rt          |          nd}|pd}| d}|                     ||t
          j                   dS )z.Report an error about use of an unusable type.Nr  z4 does not return a value (it only ever returns None)r   )rV   r   r>   r(  r   r   FUNC_RETURNS_VALUE)r   rm  r   rU  r*  messages         r   does_not_return_valuez$MessageBuilder.does_not_return_value+  sj    %k224>{L4Y4YcmK000_c(jOOO		'7)A	BBBBBr   r=   c                b    |j         d}nd|j          d}|                     d| |           dS )z9Report an error about using an deleted type as an rvalue.Nr   r  r   zTrying to read deleted variablesourcer   r   r   r   ss       r   deleted_as_rvaluez MessageBuilder.deleted_as_rvalue3  sF    :AA"SZ"""A		7A77AAAAAr   c                d    |j         d}nd|j          d}|                     d| d|           dS )zReport an error about using an deleted type as an lvalue.

        Currently, this only occurs when trying to assign to an
        exception variable outside the local except: blocks.
        Nr   r  r   zAssignment to variablez outside except: blockr  r  s       r   deleted_as_lvaluez MessageBuilder.deleted_as_lvalue;  sK     :AA"SZ"""A		D1DDDgNNNNNr   overloadrB   r@  
list[Type]c               d    |pt           j        }t          |          }|rd| }nd}d                     fd|D                       }t	          |          }|dk    r                     d| d||           nC|d	k    r                     d
| d| ||           n                     d
| d| ||                                dt          t	          |j                             d||           |j        D ].}	                     t          |	 j
                  |d|           /d S )N of r   , c              3  B   K   | ]}t          |j                  V  d S r   )r   r   )r   argr   s     r   r   z>MessageBuilder.no_variant_matches_arguments.<locals>.<genexpr>U  s/      !V!VS+c4<"@"@!V!V!V!V!V!Vr   r   zAll overload variantsz require at least one argumentr   r   zNo overload variantz matches argument type z matches argument types zPossible overload variant:   r   r   )r   CALL_OVERLOADr(  r|  r   r   r   rY   r   pretty_callabler   )
r   r  r@  r   r   r*  name_strarg_types_strnum_argsr   s
   `         r   no_variant_matches_argumentsz+MessageBuilder.no_variant_matches_argumentsG  s    *u*X&& 	$d}}HHH		!V!V!V!VI!V!V!VVVy>>q==IIPPPP     
 ]]IIVhVV}VV      IIWhWWWW     			Nhs8>7J7J.K.KNNNPW^b	cccN 	Y 	YDIIodDL9971SWIXXXX	Y 	Yr   providedexpectedc                    ||k     rA|dk    r|                      d| d|           d S |                      d| d| d|           d S ||k    r|                      d| d| d|           d S d S )	Nr   z"Need more than 1 value to unpack (z
 expected)zNeed more than z values to unpack (zToo many values to unpack (z expected, z
 provided)r   )r   r  r  r   s       r   wrong_number_values_to_unpackz,MessageBuilder.wrong_number_values_to_unpackn  s     h1}}		SxSSSU\]]]]]		WhWW8WWWY`       IIWhWW8WWWY`     ! r   c                2    |                      d|           d S )Nz Unpacking a string is disallowedr  r   r   s     r   unpacking_strings_disallowedz+MessageBuilder.unpacking_strings_disallowed}  s    		4g>>>>>r   r   c                ^    |                      t          || j                   d|           d S )Nz object is not iterabler   r   r   )r   r   r   s      r   type_not_iterablez MessageBuilder.type_not_iterable  s1    		[t|44MMMwWWWWWr   c                6    |                      d||           d S )Nz Maybe you forgot to use "await"?r   )r   )r   r   r   s      r   possible_missing_awaitz%MessageBuilder.possible_missing_await  s!    		4gD	IIIIIr   c                :    |                      d| d|           d S )NzResult type of z incompatible in assignmentr  )r   r  r   s      r    incompatible_operator_assignmentz/MessageBuilder.incompatible_operator_assignment  s(    		CBCCCWMMMMMr   name_in_super	supertypec                    |                      |||          }|                     d| d| |t          j                   d}|                     |                    |          |t          j                   d S )NSignature of "" incompatible with r   zGOverload variants must be defined in the same order as they are in "{}")override_targetr   r   OVERRIDEr   r   )r   r*  r  r  r   rT  note_templates          r   .overload_signature_incompatible_with_supertypez=MessageBuilder.overload_signature_incompatible_with_supertype  s     %%dM9EE		?T??v??u~ 	 	
 	
 	
 b		-&&y117	PPPPPr   defnrV  r+   c                   |                      d|t          j                   t          ||| j                  \  }}|                     d|j         d| d|t          j                   |                     d| d|t          j                   t          ||          r$|                     d	|t          j                   d S d S )
Nz&Incompatible override of a setter typer   r   z (base class "z" defined the type as ,z override has type r   z+ Setter types should behave contravariantly)r   r   r  r	  r   r   r*  r9   )r   r  r   r   rV  r  override_strs          r   incompatible_setter_overridez+MessageBuilder.incompatible_setter_override  s     			:Du~	VVV!7sTXT`!a!a!a,		ITYIIhIII 	 	
 	
 	

 			7777EN	SSSc=)) 	`IICTPUP^I_____	` 	`r   originaloverridec                  t           j        }|                     |||          }|                     d| d| ||           t	          ||| j        d          \  }	}
d}d}d}d}|                     d|||z   ||	           t          |t          t          f          r"| 
                    |||d
|z  z   |||           n |                     |	||d
|z  z   ||	           |                     d|||z   ||	           t          |t          t          f          r#| 
                    |||d
|z  z   |||           d S |                     |
||d
|z  z   ||	           d S )Nr  r  r   T)r   r9  r   r  zSuperclass:r   r   r   r3  r   add_class_or_static_decoratorr   r   z	Subclass:)r   r  r  r   r	  r   r   r   r<   rB   pretty_callable_or_overload)r   r*  r  r  r   r  r   r   rT  original_strr  INCLUDE_DECORATOR
ALLOW_DUPSALIGN_OFFSETOFFSETs                  r   %signature_incompatible_with_supertypez4MessageBuilder.signature_incompatible_with_supertype  s    ~%%dM9EE		E4EEVEEwUY	ZZZ%;h4&
 &
 &
"l !
 			7<&+@Z^b 	 	
 	
 	
 hz :;; 	,,#a&j0.?% -     II#a&j0%     			)>:\` 	 	
 	
 	
 hz :;; 	,,#a&j0.?% -      II#a&j0%      r   r  tpCallableType | Overloadedr  c               L   t          |t                    r\|r+t          |          }||                     |||||           |                     t	          || j                  ||||           d S t          |t                    r|                     ||||||           d S d S )Nr  )r  r   r   )r   r<    pretty_class_or_static_decoratorr   r  r   rB   pretty_overload)r   r  r   r   r  r   r   	decorators           r   r  z*MessageBuilder.pretty_callable_or_overload  s     b,'' 	, c<R@@	(IIiJ]aIbbbIIDL11%       J'' 	  .K% !     	 	r   arg_num	type_namename_in_supertypearg_type_in_supertypec	                   |                      |||          }	t          || j                  }
|                     d                    |||	|
          |t
          j        |           |dk    rF|                     d|t
          j        |           |                     d|t
          j        |           |dk    r=|r=|                     |          }| 	                    ||t
          j        |           d S d S d S )NzXArgument {} of "{}" is incompatible with {}; supertype defines the argument type as "{}"r   __post_init__z/This violates the Liskov substitution principlezSSee https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides__eq__
class_name)
r  format_type_barer   r   r   r   r  r   comparison_method_example_msgr   )r   r  r*  r  r  r  r  r   r   rT  arg_type_in_supertype_fmultiline_msgs               r   $argument_incompatible_with_supertypez3MessageBuilder.argument_incompatible_with_supertype  sA    %%d,=yII"23H$,"W"W		::@&v'>; ; / 	 	
 	
 	
 ?"" IIA^"3	     IIe^"3	     8	 >>)>TTMwU^O`        r   r  c                H    t          d                    |                    S )Na8          It is recommended for "__eq__" to work with arbitrary objects, for example:
            def __eq__(self, other: object) -> bool:
                if not isinstance(other, {class_name}):
                    return NotImplemented
                return <logic to compare two {class_name} instances>
        r  )r	   r   )r   r  s     r   r  z,MessageBuilder.comparison_method_example_msg3  s2     F%   

 

 
	
r   c                x   |                      |||          }t          ||| j                  \  }}	|                     d                    |||	|          |t
          j                   t          |          }t          |          }t          |t                    rt          |t                    r|j
        j        dk    rr|j
        j        dk    rdt          |j                  dk    rN|j        d         |k    r?|                     d| d	| d
|           |                     d|           d S d S d S d S d S d S d S )Nr   z=Return type {} of "{}" incompatible with return type {} in {}r   ztyping.AsyncIteratorztyping.Coroutiner   r3  zConsider declaring "z" in z without "async"zPSee https://mypy.readthedocs.io/en/stable/more_types.html#asynchronous-iterators)r  r	  r   r   r   r   r  rV   r   r?   r   r   r   r  r   )
r   r*  r  r  r  r   r   rT  r  r  s
             r   'return_type_incompatible_with_supertypez6MessageBuilder.return_type_incompatible_with_supertype@  s    %%d,=yII%;h&
 &
 &
"l 			KRRdL&   	 	
 	
 	
 #8,,"8,,x**	8X..	 &*@@@&*<<<HM""a''a H,,IIPTPPPPPRYZZZIIb    	 	 	 	 A@<<'',,r   c                .    d| d}||k    rd| d| }|S )Nzsupertype "r   z" of r   )r   r*  r  r  rT  s        r   r  zMessageBuilder.override_targete  s7    +y+++D  555V55Fr   min_arg_countmax_arg_countactual_arg_countc                    |dk    r|                      d|           d S ||k    r| d}nd| d| }||k    r|                      d| d|           d S |                      d| d|           d S )	Nr   z8Type application targets a non-generic function or classz	 expectedzexpected between r  z%Type application has too many types (r   z$Type application has too few types (r  )r   r$  r%  r&  r   r  s         r   incompatible_type_applicationz,MessageBuilder.incompatible_type_applicationk  s     AIIPRYZZZFM)) +++AAGMGGGGAm++IIBaBBBGLLLLLIIAQAAA7KKKKKr   c                    t          |          }|B|dk    r<|                     d| d| |           |dk    r|                     d|           d S d S |                     d|           d S )Nr   zCannot infer type argument r  r6  zGTry assigning the literal to a variable annotated as dict[<key>, <val>]z#Cannot infer function type argument)r(  r   r   )r   rm  r   r   rU  s        r   could_not_infer_type_argumentsz-MessageBuilder.could_not_infer_type_arguments|  s     $K00"q1uuIIHAHH;HH'RRRh&&		]     '& II;WEEEEEr   c                2    |                      d|           d S )Nz&Expected iterable as variadic argumentr  r$  s      r   invalid_var_argzMessageBuilder.invalid_var_arg  s    		:GDDDDDr   
is_mappingc                    t          |          }t          |t                    r|r|                     d|           d S |                     dt	          || j                   |t          j                   d S )NzKeywords must be stringsz)Argument after ** must be a mapping, not r   )rV   r   r?   r   r   r   r   rS  )r   r   r-  r   s       r   invalid_keyword_var_argz&MessageBuilder.invalid_keyword_var_arg  s    c""c8$$ 	 	II0':::::II\KT\<Z<Z\\^      r   c                :    |                      d| d|           d S )Nr   z" undefined in superclassr  )r   r   r   s      r   undefined_in_superclassz&MessageBuilder.undefined_in_superclass  s(    		7f777AAAAAr   c                R    |                      d| d|t          j                   d S )NName "z" may be undefinedr   )r   r   POSSIBLY_UNDEFINEDr   r*  r   s      r   variable_may_be_undefinedz(MessageBuilder.variable_may_be_undefined  s/    		34333W5C[	\\\\\r   c                R    |                      d| d|t          j                   d S )Nr3  z" is used before definitionr   )r   r   USED_BEFORE_DEFr5  s      r   var_used_before_defz"MessageBuilder.var_used_before_def  s/    		<4<<<gELa	bbbbbr   actualc                    t          |          }t          |t                    rd}nt          || j                  }|                     d| |t          j                   d S )Nza non-type instancez2Argument 1 for "super" must be a type object; got r   )rV   r   r?   r   r   r   r   rS  )r   r:  r   type_strs       r   %first_argument_for_super_must_be_typez4MessageBuilder.first_argument_for_super_must_be_type  ss     ((fh'' 	9 -HH"64<88H		KKK 	 	
 	
 	
 	
 	
r   r  r  r   c                X    |                      d| d| d|t          j                   d S )NzCall to abstract method "" of "z)" with trivial body via super() is unsafer   )r   r   
SAFE_SUPER)r   r  r  r   s       r   unsafe_superzMessageBuilder.unsafe_super  sF    		dddcddd! 	 	
 	
 	
 	
 	
r   c                J    |                      d|t          j                   d S )Nz&Not enough arguments for format stringr   r   r   STRING_FORMATTINGr  s     r   #too_few_string_formatting_argumentsz2MessageBuilder.too_few_string_formatting_arguments  s$    		:G%Ja	bbbbbr   c                J    |                      d|t          j                   d S )Nz4Not all arguments converted during string formattingr   rC  r  s     r   $too_many_string_formatting_argumentsz3MessageBuilder.too_many_string_formatting_arguments  s3    		B( 	 	
 	
 	
 	
 	
r   placeholderc                R    |                      d| d|t          j                   d S )NzUnsupported format character "r   r   rC  )r   rH  r   s      r   unsupported_placeholderz&MessageBuilder.unsupported_placeholder  s<    		;[;;;W5Kb 	 	
 	
 	
 	
 	
r   c                J    |                      d|t          j                   d S )Nz9String interpolation contains both stars and mapping keysr   rC  r  s     r   &string_interpolation_with_star_and_keyz5MessageBuilder.string_interpolation_with_star_and_key  s3    		G( 	 	
 	
 	
 	
 	
r   format_callc                x    |                      d                    |rdnd          |t          j                   d S )Nz8"{}c" requires an integer in range(256) or a single byter  %r   r   r   r   rD  r   r   rM  s      r   requires_int_or_single_bytez*MessageBuilder.requires_int_or_single_byte  sQ    		FMM"+  ( 	 	
 	
 	
 	
 	
r   c                x    |                      d                    |rdnd          |t          j                   d S )Nz"{}c" requires int or charr  rO  r   rP  rQ  s      r   requires_int_or_charz#MessageBuilder.requires_int_or_char  sJ    		(//{0KLL( 	 	
 	
 	
 	
 	
r   r  c                R    |                      d| d|t          j                   d S )NKey "z" not found in mappingr   rC  )r   r  r   s      r   key_not_in_mappingz!MessageBuilder.key_not_in_mapping  s/    		5#555wUE\	]]]]]r   c                J    |                      d|t          j                   d S )NzBString interpolation mixes specifier with and without mapping keysr   rC  r  s     r   ,string_interpolation_mixing_key_and_non_keysz;MessageBuilder.string_interpolation_mixing_key_and_non_keys  s3    		P( 	 	
 	
 	
 	
 	
r   c                R    |                      d| d|t          j                   d S )NCannot determine type of "r   r   )r   r   HAS_TYPEr5  s      r   cannot_determine_typez$MessageBuilder.cannot_determine_type  s.    		6t666en	UUUUUr   c                @    |                      d| d| d|           d S )Nr[  z" in base class "r   r  )r   r*  rV  r   s       r   cannot_determine_type_in_basez,MessageBuilder.cannot_determine_type_in_base  s0    		MtMMdMMMwWWWWWr   r   c                j    t          || j                  }|                     d| d| d|           d S )NzAttribute function "" with type z does not accept self argumentr   r   r   )r   r*  r   r   r   s        r   no_formal_selfzMessageBuilder.no_formal_self  sL    4..		Y4YYTYYY[b	
 	
 	
 	
 	
r   r  sigis_classmethodc           
         |rdnd}t          || j                  }t          || j                  }|                     d| d| d| d| |           d S )Nzclass attribute functionzattribute functionzInvalid self argument z to r  ra  rb  )	r   r*  r  rd  re  r   kindr,  sig_types	            r   incompatible_self_argumentz)MessageBuilder.incompatible_self_argument  s}     .<U))AUsDL11sDL11		WXWW4WW4WWXWWY`	
 	
 	
 	
 	
r   r#   old_typer>   new_typec                b   |                      d|           t          |t          t          f          rzt          |t          t          f          r`|                     d|           |                     ||d           |                     d|           |                     ||d           d S d S d S )Nz@All conditional function variants must have identical signaturesz	Original:r  )r   zRedefinition:)r   r   r<   rB   r   r  )r   r  rj  rk  s       r   %incompatible_conditional_function_defz4MessageBuilder.incompatible_conditional_function_def  s     			TVZ[[[hz :;; 	G
|Z0A
 A
 	G IIk4(((,,XtA,FFFIIot,,,,,XtA,FFFFF	G 	G 	G 	Gr   abstract_attributesdict[str, bool]c                   t          d |D                       }|                     d| dt          |           d| |t          j                   d |                                D             }|sd S t          |          dk    r|d          d	}nd
t          |           d}|                     ||t          j                   d S )Nc                    g | ]}d | d 	S r   r   r   as     r   r   zDMessageBuilder.cannot_instantiate_abstract_class.<locals>.<listcomp>  s     #J#J#JHHHH#J#J#Jr   z#Cannot instantiate abstract class "z" with abstract attributer5  r   c                $    g | ]\  }}|d | d S rr  r   )r   rt  implicit_and_can_return_nones      r   r   zDMessageBuilder.cannot_instantiate_abstract_class.<locals>.<listcomp>  s;     
 
 
//+
HHH
 
 
r   r   r   z is implicitly abstract because it has an empty function body. If it is not meant to be abstract, explicitly `return` or `return None`.z_The following methods were marked implicitly abstract because they have empty function bodies: zM. If they are not meant to be abstract, explicitly `return` or `return None`.)format_string_listr   rY   r   ABSTRACTr   r   r   )r   r  rn  r   attrsattrs_with_noner   s          r   !cannot_instantiate_abstract_classz0MessageBuilder.cannot_instantiate_abstract_class	  s6    ##J#J6I#J#J#JKK		@* @ @ !455@ @8=@ @	 	 	
 	
 	

 
3F3L3L3N3N
 
 

  	F1$$"1% a a a D^$6$G$G^ ^ ^ 
 			$en	55555r   base1base2c                p    |                      d                    ||j        |j                  |           d S )NzXDefinition of "{}" in base class "{}" is incompatible with definition in base class "{}")r   r   r*  )r   r*  r|  r}  r   s        r   #base_class_definitions_incompatiblez2MessageBuilder.base_class_definitions_incompatible'  sA     			117ej%*1U1U	
 	
 	
 	
 	
r   c                ^    |                      t          j        |t          j                   d S )Nr   )r   r   CANNOT_ASSIGN_TO_METHODr   METHOD_ASSIGNr  s     r   cant_assign_to_methodz$MessageBuilder.cant_assign_to_method0  s'    		":G%J]	^^^^^r   c                :    |                      d| d|           d S )Nz!Cannot assign to class variable "z" via instancer  r5  s      r   cant_assign_to_classvarz&MessageBuilder.cant_assign_to_classvar3  s(    		JdJJJGTTTTTr   c                :    |                      d| d|           d S )NMethod "zG" is marked as an override, but no base method was found with this namer  r5  s      r   no_overridable_methodz$MessageBuilder.no_overridable_method6  s;    		:t : : :	
 	
 	
 	
 	
r   	base_namec                X    |                      d| d| d|t          j                   d S )Nr  z>" is not using @override but is overriding a method in class "r   r   )r   r   EXPLICIT_OVERRIDE_REQUIRED)r   r*  r  r   s       r   #explicit_override_decorator_missingz2MessageBuilder.explicit_override_decorator_missing=  s[     			At A A4=A A A1	 	 	
 	
 	
 	
 	
r   c                :    |                      d| d|           d S )Nz$Cannot override writable attribute "z" with a final oner  )r   r*  r   s      r   final_cant_override_writablez+MessageBuilder.final_cant_override_writableG  s)    		QQQQSVWWWWWr   c                @    |                      d| d| d|           d S )Nz!Cannot override final attribute "z&" (previously declared in base class "z")r  )r   r*  r  r   s       r   cant_override_finalz"MessageBuilder.cant_override_finalJ  sP    		ED E E7@E E E 	
 	
 	
 	
 	
r   attr_assignc                f    |rdnd}|                      d| dt          |           d|           dS )zWarn about a prohibited assignment to a final attribute.

        Pass `attr_assign=True` if the assignment assigns to an attribute.
        	attributer*  zCannot assign to final r  r   N)r   rZ   )r   r*  r  r   rg  s        r   cant_assign_to_finalz#MessageBuilder.cant_assign_to_finalS  sF    
 *5{{v		EDEEHTNNEEEsKKKKKr   c                2    |                      d|           d S )NzProtocol member cannot be finalr  r   r   s     r   protocol_members_cant_be_finalz-MessageBuilder.protocol_members_cant_be_final[  s    		3S99999r   c                2    |                      d|           d S )Nz+Final name must be initialized with a valuer  r  s     r   final_without_valuez"MessageBuilder.final_without_value^  s    		?EEEEEr   c                J    |                      d| d|j         d|           d S )Nz
Property "z" defined in "z" is read-only)r   r*  )r   r*  r   r   s       r   read_only_propertyz!MessageBuilder.read_only_propertya  s2    		LtLL49LLLgVVVVVr   typevar_namec           
         |                      t          j                            |t	          |          pdt          || j                            |t          j                   d S )Nfunctionr   )	r   r   INCOMPATIBLE_TYPEVAR_VALUEr   r(  r   r   r   TYPE_VAR)r   r&  r   r  r   s        r   incompatible_typevar_valuez)MessageBuilder.incompatible_typevar_valued  sk     			7>>mF33Az;sTXT`CaCa   	 	
 	
 	
 	
 	
r   leftrightrg  c           	         |dk    rdnd}|dk    rdnd}d}t          ||| j                  \  }}	|                     |                    |||||	          |t          j                   d S )	N	containerelementzleft operandzcontainer itemzright operandz3Non-overlapping {} check ({} type: {}, {} type: {})r   r   )r	  r   r   r   r   COMPARISON_OVERLAP)
r   r  r  rg  r   r  r  r  left_typ	right_typs
             r   dangerous_comparisonz#MessageBuilder.dangerous_comparisono  s     $ 3 399(,(;(;$$	G4T5$,WWW)		NN48Y	JJ) 	 	
 	
 	
 	
 	
r   r  c                @    |                      d| ddz   |           d S )Nz)Overload does not consistently use the "@z" z%decorator on all function signatures.r  )r   r  r   s      r   )overload_inconsistently_applies_decoratorz8MessageBuilder.overload_inconsistently_applies_decoratorz  s;    		E	EEE56	
 	
 	
 	
 	
r   index1index2	flip_notec                    |                      d                    ||          |t          j                   |r$|                     d|t          j                   d S d S )NzOOverloaded function signatures {} and {} overlap with incompatible return typesr   z3Flipping the order of overloads will fix this error)r   r   r   OVERLOAD_OVERLAPr   )r   r  r  r  r   s        r   overloaded_signatures_overlapz,MessageBuilder.overloaded_signatures_overlap  s     			((.vv(>(>'	 	 	
 	
 	
  	IIE+      	 	r   c                t    |                      d                    ||          |t          j                   d S )Nz|Overloaded function signature {index2} will never be matched: signature {index1}'s parameter type(s) are the same or broader)r  r  r   )r   r   r   OVERLOAD_CANNOT_MATCH)r   r  r  r   s       r   %overloaded_signature_will_never_matchz4MessageBuilder.overloaded_signature_will_never_match  sW     			MMSVf NT N N , 	 	
 	
 	
 	
 	
r   c                @    |                      d| ddz   |           d S )Nz<Overloaded function implementation cannot satisfy signature r5  z5due to inconsistencies in how they use type variablesr  r   rM  r   s      r   &overloaded_signatures_typevar_specificz5MessageBuilder.overloaded_signatures_typevar_specific  s<    		S5SSSEF	
 	
 	
 	
 	
r   c                8    |                      d| |           d S )NzWOverloaded function implementation does not accept all possible arguments of signature r  r  s      r   "overloaded_signatures_arg_specificz1MessageBuilder.overloaded_signatures_arg_specific  s9    		( %( ( 	
 	
 	
 	
 	
r   c                8    |                      d| |           d S )NzKOverloaded function implementation cannot produce return type of signature r  r  s      r   "overloaded_signatures_ret_specificz1MessageBuilder.overloaded_signatures_ret_specific  s1    		aZ_aa	
 	
 	
 	
 	
r   c                J    |                      d|t          j                   d S )Nz'Both left and right operands are unionsr   )r   r   r   r  s     r   "warn_both_operands_are_from_unionsz1MessageBuilder.warn_both_operands_are_from_unions  s#    		;W5>	ZZZZZr   sidec                z    |                      | dt          || j                   |t          j                   d S )Nz operand is of type r   )r   r   r   r   r   )r   r  r  r   s       r   warn_operand_was_from_unionz*MessageBuilder.warn_operand_was_from_union  sL    		NNXt|)L)LNN 	 	
 	
 	
 	
 	
r   reverse_classreverse_methodforward_classforward_methodc                    |                      d                    ||j        |t          || j                            |           d S )NzBSignatures of "{}" of "{}" and "{}" of {} are unsafely overlapping)r   r   r*  r   r   )r   r  r  r  r  r   s         r   "operator_method_signatures_overlapz1MessageBuilder.operator_method_signatures_overlap  sW     			PWW"M4<88	  	
 	
 	
 	
 	
r   c                :    |                      d| d|           d S )NzForward operator "z" is not callabler  )r   r  r   s      r   forward_operator_not_callablez,MessageBuilder.forward_operator_not_callable  s(    		H~HHH'RRRRRr   other_methodc                @    |                      d| d| d|           d S )NzSignatures of "z" and "z" are incompatibler  )r   r  r  r   s       r   signatures_incompatiblez&MessageBuilder.signatures_incompatible  s1    		SFSS<SSSU\]]]]]r   exprc                    t          || j                  dk    rt          || j                  n|}|                     d| |           t          t          j                  S )Nobjectz!"yield from" can't be applied to )r   r   r   r;   rK   r#  )r   r  r   texts       r   yield_from_invalid_operand_typez.MessageBuilder.yield_from_invalid_operand_type  sg     4..(:: dl+++ 	
 			=t==wGGGy+,,,r   	func_typec                ^    |                      dt          || j                   |           d S )NInvalid signature r  )r   r  r   s      r   invalid_signaturez MessageBuilder.invalid_signature  s1    		M{9dl'K'KMMwWWWWWr   method_namec                f    |                      dt          || j                   d| d|           d S )Nr  z for "r   r  )r   r  r   r  s       r   $invalid_signature_for_special_methodz3MessageBuilder.invalid_signature_for_special_method  sI     			[Y!E!E[[[[[[	
 	
 	
 	
 	
r   c                    t          | j                  }|                     d|                    |           d|           d S )Nr   zRevealed type is "r   )rL   r   r   accept)r   r   r   visitors       r   reveal_typezMessageBuilder.reveal_type  sF     666		=szz'':':===wGGGGGr   type_mapdict[str, Type | None]c           	        t          t          |                                d                     }|rz|                     d|           |                                D ]M\  }}t	          | j                  }|                     d| d||                    |          nd  |           Nd S |                     d|           d S )Nc                    | d         S )Nr   r   )ts    r   <lambda>z.MessageBuilder.reveal_locals.<locals>.<lambda>  s
    AaD r   r  zRevealed local types are:r   z    : zThere are no locals to reveal)dictr  r   r   rL   r   r  )r   r  r   sorted_localsr   r   r  s          r   reveal_localszMessageBuilder.reveal_locals  s     VHNN$4$4..IIIJJ 	@II17;;;%++-- _ _1(>>>		TTT1=ahhw&7&7&7dTTV]^^^^_ _ II5w?????r   c                `    |                      dt          || j                   d|           d S )NzCannot instantiate type "Type[z]")r   r  r   )r   r   r   s      r   unsupported_type_typez$MessageBuilder.unsupported_type_type  s@    		U-=dDL-Q-QUUUW^	
 	
 	
 	
 	
r   c                v    |                      dt          || j                   |t          j                   d S )NzRedundant cast to r   )r   r   r   r   REDUNDANT_CASTr$  s      r   redundant_castzMessageBuilder.redundant_cast  sG    		AS$,!?!?AA% 	 	
 	
 	
 	
 	
r   source_typetarget_typec                    t          ||| j                  \  }}|                     d| d| |t          j                   d S )Nr   zExpression is of type z, not r   )r	  r   r   r   ASSERT_TYPE)r   r  r  r   r  rT  s         r   assert_type_failzMessageBuilder.assert_type_fail  sR    1+{TXT`aaa		A6AAAA7QVQb	cccccr   prefixc                |    |                      | dt          || j                   d|t          j                   d S )Nz	 becomes z due to an unfollowed importr   )r   r   r   r   NO_ANY_UNIMPORTED)r   r  r   r   s       r   unimported_type_becomes_anyz*MessageBuilder.unimported_type_becomes_any	  sP    		\\C > >\\\( 	 	
 	
 	
 	
 	
r   noder)   python_versiontuple[int, int] | Nonec                r   d}| p|dk    }d }|rt          |t                    rt          |j        t                    rd}|j        j        s|r| d}nd| d}n|j        j        j        t
          v ryt
          |j        j        j                 }|                    d          d         }|d	k    r| d
| }| j                                        r|	                                }| d| d}|d|j
         d| d}|                     dt          |j
                   d| |t          j                   d S )Nr   )r   rx   z<type> | None	Optional[].r   Dictr  [z	 (hint: "r  z = ...")zNeed type annotation for "r   r   )r   r,   r   rE   r   r-   splitr   use_lowercase_nameslowerr*  r   rZ   r   VAR_ANNOTATED)	r   r  r   r  hintpep604_supportedrecommended_typetype_decaliass	            r   need_annotation_for_varz&MessageBuilder.need_annotation_for_var  s    --J71J 	:js33 	:
49k8Z8Z 	:H9> :# ?*2';';';$$'>8'>'>'>$$(,CCC/	0GHC((,F??"*88h88H<3355 *!KKMME&+#9#9h#9#9#9 'FtyFF,<FFFD		E$))<)<EEtEE$ 	 	
 	
 	
 	
 	
r   c                J    |                      d|t          j                   d S )NzExplicit "Any" is not allowedr   )r   r   EXPLICIT_ANYr  s     r   explicit_anyzMessageBuilder.explicit_any2  s$    		13U=O	PPPPPr   c                    |                      d                    t          || j                            |t          j                   d S )Nz1Unsupported type {} for ** expansion in TypedDictr   r   r   r   r   r   rR  )r   r   r   s      r   %unsupported_target_for_star_typeddictz4MessageBuilder.unsupported_target_for_star_typeddict5  sT    		?FFC..  % 	 	
 	
 	
 	
 	
r   	list[str]c                    |                      d                    t          |d                    |t          j                   d S )Nz3Non-required {} not explicitly found in any ** itemTshortr   )r   r   r  r   rR  )r   r  r   s      r   "non_required_keys_absent_with_starz1MessageBuilder.non_required_keys_absent_with_star>  sU    		AHHD111  % 	 	
 	
 	
 	
 	
r   expected_keysactual_keysc           	       	
 t          |          	t          |          
|                                sֈ	fd|D             }|rX|                     d                    t	          |d          t          || j                            |t          j                   
fd|D             }|rX|                     d                    t	          |d          t          || j                            |t          j	                   |s|rd S t	          |d          }|s|                     d| |           d S t	          |          }|r	
k     rd	| }|                     d
| d| |t          j                   d S )Nc                    g | ]}|v|	S r   r   )r   r  
actual_sets     r   r   z<MessageBuilder.unexpected_typeddict_keys.<locals>.<listcomp>S  s#    MMMss*7L7Ls7L7L7Lr   zMissing {} for TypedDict {}Tr  r   c                    g | ]}|v|	S r   r   )r   r  expected_sets     r   r   z<MessageBuilder.unexpected_typeddict_keys.<locals>.<listcomp>\  s#    KKKS3l3J3JS3J3J3Jr   zExtra {} for TypedDict {}zUnexpected TypedDict zonly z	Expected z but found )
r  is_anonymousr   r   r  r   r   r   rR  TYPEDDICT_UNKNOWN_KEY)r   r   r  r  r   missingr  foundr  r  r  s            @@r   unexpected_typeddict_keysz(MessageBuilder.unexpected_typeddict_keysG  s    %%
=))!! 	 NMMMmMMMG 		188't<<<k#t|>\>\  -     LKKKKKKKE 		/66'T:::KT\<Z<Z  4      % 4888 	II5e55w???F"=11 	$:44#EOOE		:h::5::G%J^	_____r   c                    |                      d                    t          |j                                                            |t
          j                   d S )Nz:TypedDict key must be a string literal; expected one of {}r   )r   r   format_item_name_listr   r  r   LITERAL_REQr$  s      r   $typeddict_key_must_be_string_literalz3MessageBuilder.typeddict_key_must_be_string_literalq  s\    		HOO%cinn&6&677  " 	 	
 	
 	
 	
 	
r   	item_namesetitemc           	     2   |                                 rP|                     d                    |t          |j                                                            |           d
S |rt          j        nt          j        }|                     dt          || j
                   d| d||           t          ||j                                        d          }|r;|                     d                    t          |d	                    ||           d
S d
S )a)  Handle error messages for TypedDicts that have unknown keys.

        Note, that we differentiate in between reading a value and setting a
        value.
        Setting a value on a TypedDict is an 'unknown-key' error, whereas
        reading it is the more serious/general 'item' error.
        z5"{}" is not a valid TypedDict key; expected one of {}
TypedDict z has no key "r   r   r   r   zDid you mean {}?r   N)r  r   r   r"  r   r  r   r  rR  r   r   r  r   r  )r   r   r%  r   r&  err_coder  s          r   typeddict_key_not_foundz&MessageBuilder.typeddict_key_not_foundz  s=     	IIGNN4SY^^5E5EFF  	     7>Wu225CWHIIV[dl;;VV)VVV    
 #9cinn.>.>!DDDG 		&--j$.G.GHH'X`       r   typeslist[TypedDictType]c           	         d                     t          t          |d| j        i                    }|                     d| d|           d S )Nr  r   z)Type of TypedDict is ambiguous, none of (z) matches cleanly)r|  rO  r	  r   r   )r   r+  r   formatted_typess       r   typeddict_context_ambiguousz*MessageBuilder.typeddict_context_ambiguous  s^    ))D)?)]PTP\)])]$^$^__		ZZZZ\c	
 	
 	
 	
 	
r   c           	         |                                 r|                     d| d|           d S |                     d| dt          || j                   d|           d S )NzTypedDict key "z" cannot be deletedrV  z" of TypedDict z cannot be deleted)r  r   r   r   )r   r   r%  r   s       r   typeddict_key_cannot_be_deletedz.MessageBuilder.typeddict_key_cannot_be_deleted  s      	IIF	FFFPPPPPIId	dd+c4<2P2Pddd    r   defaultc           	         d}|                      |                    t          || j                  t          || j                            |t          j                   d S )NzOArgument 2 to "setdefault" of "TypedDict" has incompatible type {}; expected {}r   r  )r   r2  r  r   r   s        r   +typeddict_setdefault_arguments_inconsistentz:MessageBuilder.typeddict_setdefault_arguments_inconsistent  sc     `		JJ{7DL99;xQUQ];^;^__% 	 	
 	
 	
 	
 	
r   c                2    |                      d|           d S )NzCParameterized generics cannot be used with class or instance checksr  r  s     r   type_arguments_not_allowedz)MessageBuilder.type_arguments_not_allowed  s    		WY`aaaaar   c                    t          |          }t          |t                    rd}ndt          || j                   d}|                     ||           d S )NzExpression has type "Any"z)Expression type contains "Any" (has type r   )rV   r   r;   r   r   r   r   r   r   r  s       r   disallowed_any_typez"MessageBuilder.disallowed_any_type  sa    c""c7## 	d1GGc+cSWS_B`B`cccG		'7#####r   c                z    dt          || j                   }|                     ||t          j                   d S )Nz/Returning Any from function declared to return r   )r   r   r   r   NO_ANY_RETURNr8  s       r   incorrectly_returning_anyz(MessageBuilder.incorrectly_returning_any  sA    ^k#t|>\>\^^ 	 			'7)<	=====r   c                    |                      d|t          j                   |                     d|t          j                   |                     d|t          j                   d S )NzI"bool" is invalid as return type for "__exit__" that always returns Falser   zEUse "typing.Literal[False]" as the return type or change it to "None"zhIf return type of "__exit__" implies that it may return True, the context manager may swallow exceptions)r   r   EXIT_RETURNr   r  s     r   incorrect__exit__returnz&MessageBuilder.incorrect__exit__return  s    		W" 	 	
 	
 	

 			S" 	 	
 	
 	

 			9"	 	 	
 	
 	
 	
 	
r   c                    t          |          }t          |t                    r|                     d|           d S |                     dt	          || j                   d|           d S )Nz2Function is untyped after decorator transformationz0Type of decorated function contains type "Any" (r   )rV   r   r;   r   r   r   r$  s      r   untyped_decorated_functionz)MessageBuilder.untyped_decorated_function  s{    c""c7## 	IIJGTTTTTIId;sTXT`CaCaddd    r   	func_namec                :    |                      d| d|           d S )Nz"Untyped decorator makes function "z	" untypedr  )r   rB  r   s      r    typed_function_untyped_decoratorz/MessageBuilder.typed_function_untyped_decorator  s(    		KyKKKWUUUUUr   	tvar_namec           	         t          d                    t          |          |t          |                              }|                     ||           d S )Nz?{} type variable "{}" used in protocol where {} one is expected)
capitalizer   variance_stringr   )r   r:  rE  r  r   r   s         r   bad_proto_variancez!MessageBuilder.bad_proto_variance  sY     MTT''OH4M4M 
 

 			#wr   c                v    |                      dt          || j                   |t          j                   d S )Nz7Can only assign concrete classes to a variable of type r   r   r   r   r   TYPE_ABSTRACTr$  s      r   concrete_only_assignz#MessageBuilder.concrete_only_assign  sJ    		fkRUW[WcFdFdff$ 	 	
 	
 	
 	
 	
r   c                x    |                      dt          || j                   d|t          j                   d S )Nz'Only concrete class can be given where z is expectedr   rK  r$  s      r   concrete_only_callz!MessageBuilder.concrete_only_call  sJ    		bk#t|6T6Tbbb$ 	 	
 	
 	
 	
 	
r   c                @    |                      d| d| d|           d S )NzCannot use z() with z typer  )r   r  r  r   s       r   cannot_use_function_with_typez,MessageBuilder.cannot_use_function_with_type  s2     			EEEYEEEwOOOOOr   membersc                    |                      d|           t          |          dk     r8d                    |          }|                     d|j         d| |           d S d S )NzOOnly protocols that don't have non-method members can be used with issubclass()r   r  z
Protocol "z" has non-method member(s): )r   r   r|  r   r*  )r   r  rR  r   ry  s        r   report_non_method_protocolz)MessageBuilder.report_non_method_protocol   sz     			]	
 	
 	
 w<<!IIg&&EIIO27OOOOQXYYYYY r   subtypert  c          
         |                      d                    t          || j                  t	          || j        d                    ||           d S )Nz"{}.__call__" has type {}r   )	verbosityr   )r   r   r  r   r   )r   rU  rt  r   r   s        r   rr  zMessageBuilder.note_call  sg     			'.. $,77D$,!<<<   	 	
 	
 	
 	
 	
r   c                J    |                      d|t          j                   d S )NzStatement is unreachabler   r   r   UNREACHABLEr  s     r   unreachable_statementz$MessageBuilder.unreachable_statement  s$    		,gE<M	NNNNNr   op_namec                D    |                      d| d|dk    |           dS )zIndicates that the left operand of a boolean expression is redundant:
        it does not change the truth value of the entire condition as a whole.
        'op_name' should either be the string "and" or the string "or".
        zLeft operand of "r   andNredundant_exprr   r\  r   s      r   redundant_left_operandz%MessageBuilder.redundant_left_operand  s3    
 	::::Gu<LgVVVVVr   c                R    |                      d| d|t          j                   dS )zIndicates that the right operand of a boolean expression is redundant:
        it does not change the truth value of the entire condition as a whole.
        'op_name' should either be the string "and" or the string "or".
        zRight operand of "z" is never evaluatedr   NrY  ra  s      r   unreachable_right_operandz(MessageBuilder.unreachable_right_operand!  s>    
 			>>>>eN_ 	 	
 	
 	
 	
 	
r   
truthinessc                4    |                      d||           d S )NzIf condition in comprehensionr_  r   re  r   s      r   $redundant_condition_in_comprehensionz3MessageBuilder.redundant_condition_in_comprehension*  s!    ;ZQQQQQr   c                4    |                      d||           d S )NzIf conditionr_  rg  s      r   redundant_condition_in_ifz(MessageBuilder.redundant_condition_in_if-  s     NJ@@@@@r   descriptionc                    |                      | dt          |                                           |t          j                   d S )Nz is always r   )r   r   r  r   REDUNDANT_EXPR)r   rk  re  r   s       r   r`  zMessageBuilder.redundant_expr0  sS    		@@s:'<'<'>'>@@% 	 	
 	
 	
 	
 	
r   formatted_base_class_listreasonc                v    d}|                      |                    ||          |t          j                   d S )NzSubclass of {} cannot exist: {}r   )r   r   r   rZ  )r   rn  ro  r   templates        r   impossible_intersectionz&MessageBuilder.impossible_intersection7  sG     5		OO5v>>eN_ 	 	
 	
 	
 	
 	
r   last_tvar_name_with_defaultc                @    |                      d| d| d|           d S )Nr   z" cannot appear after "z7" in type parameter list because it has no default typer  )r   rE  rs  r   s       r   tvar_without_default_typez(MessageBuilder.tvar_without_default_type?  sP     			D	 D D2M D D D	
 	
 	
 	
 	
r   >Instance | TupleType | TypedDictType | TypeType | CallableTyper?   c                  d}d}t           dgt          ddgi}|j        j        |                    t          |          g           v rdS t          d t          |j                  D                       rdS d}d}	g }
t          |t                    r|j	        }nt          |t                     r|j
        }nt          |t                    r&t          |j        t                    sdS d	}|j        }nt          |t                    rj|                                rLt!          |j                  }t          |t                    r|j	        }t          |t                    sdS d	}|}n
|j
        }d
g}
|j        r|j        j        rd	}	t)          |||
          }|r	t+          |          t+          |j        j                  k     s|d
gk    rt+          |          |k    r|d
gk    rC|rA|                     d                    |j        j        |j        j                  ||           n|                     d                    |j        j        |j        j        t5          |                    ||           |                     d                    |          |||           n?t+          |          |k    s*t+          |          t+          |j        j                  k    rdS t9          |||| j                  }|rt=          |t?          |          | j                  r;|j        j         j!        r*|j        j         j!        r|j        j"        s|j        j"        rotG          || j        d	          }|                     d| d||           |d|         D ]\  }}}}t!          |          }t!          |          }|rdnd}t          |t          tH          f          rt          |t          tH          f          sn|                      dj        ||gtK          ||| j                  R  |||           |r0t=          ||| j                  r|                     d|||           |                     d                    |          |||           t          |t                    r4|                     tM          || j        |p|	          |d|z  |           n6t          |tH                    sJ | '                    ||d|z  ||p|	           |                     d|||           t          |t                    r5|                     tM          || j        |p|	          |d|z  |           t          |tH                    sJ | '                    ||d|z  ||p|	           | (                    |||||           tS          |||          }|d|         D ]\  }}}|sHtT          |v r?tT          |vr6|                     d                    |j        j        |          ||           |sHtT          |v r?tT          |vr6|                     d                     |j        j        |          ||           tV          |v r?tV          |vr6|                     d!                    |j        j        |          ||           tX          |v r?tX          |vr6|                     d"                    |j        j        |          ||           |rQtZ          |v rHtZ          |v r?tT          |vr6|                     d#                    ||j        j                  ||           |r?tT          |v r6|                     d$                    |j        j        |          ||           | (                    |||||           dS )%a  Report possible protocol conflicts between 'subtype' and 'supertype'.

        This includes missing members, incompatible types, and incompatible
        attribute flags, such as settable vs read-only or class variable vs
        instance variable.
        r  r3  ztyping.Mappingrf   ztyping.SequenceNc              3  @   K   | ]}t          |t                    V  d S r   )r   rR   )r   r  s     r   r   z:MessageBuilder.report_protocol_problems.<locals>.<genexpr>a  s,      ZZ2z"o..ZZZZZZr   FTr   )skipz9"{}" has constructor incompatible with "__call__" of "{}"r   z1"{}" is missing following "{}" protocol member{}:r  r  )	class_objr   r   r   zFollowing member(s) of z have conflicts:z setter typer   z{}: expected{} {}, got {}z*Setter types should behave contravariantlyzExpected{}:	skip_self)r   r|  zGot:)rz  zDProtocol member {}.{} expected instance variable, got class variablezDProtocol member {}.{} expected class variable, got instance variablezIProtocol member {}.{} expected settable variable, got read-only attributez5Protocol member {}.{} expected class or static methodzeOnly class variables allowed for class object access on protocols, {} is an instance variable of "{}"zEClassVar protocol member {}.{} can never be matched by a class object).rJ   rG   r   r   r  r
  rW   r  r   partial_fallbackfallbackrM   r   r?   r<   r   rV   ret_typeextra_attrsmod_nameget_missing_protocol_membersr   protocol_membersr   r   r*  rY   r|  get_conflict_protocol_typesr   r9   r   r  	type_varshas_param_spec_typer   rB   r	  r  r  
print_moreget_bad_protocol_flagsr2   r4   r1   r5   )r   rU  r  r   r   r
  	MAX_ITEMS
exclusionsrz  	is_modulery  r  r  conflict_typesr  r*  gotexp	is_lvaluesetter_suffixconflict_flagssubflags
superflagss                          r   rq  z'MessageBuilder.report_protocol_problemsH  s9	     	 ,-)+<=-

 >"jnnT']]B&G&GGGFZZ9I).9Y9YZZZZZ 	 F		gy)) 	$.GG// 	$&GG** 	$glH55 IlGG.. 	$""$$ 
$*7+;<<h	22 9'8H!(H55 F 	"!*"| 	7#6#? 	I /w	MMM	WIN$C D DDDT^S_H_H_G	)):,&&9&		OVV)9>+>        		GNN)9>+>@Q@Q       		$))G,,gf4	PPPP\\I%%WY^=\9]9])])]F 5Y)T\
 
 
  ?	S7Jy$9$94<PPP?	S<$.?	S >&0?	S
 |/?	S ~1?	S $GT\MMMIIIK	KKKW[_I```-;JYJ-G 4 4)c3	%c**%c**2; C!#j'ABB 0*,
3K K 0 II:3: ) 4CdlSSS  
  %!  	 	 	 ! ZS$,%O%O%O 		H##)!%	 "    II%,,];;WVZ^     "#|44 		+CI_V_```##$v:!%	 "      *#z:::::,,!f*49KaXa -    IIfgf4IHHH!#|44 		+CI_V_```##$v:!%	 "      *#z:::::,,!f*49KaXa -     OONGVYTORRR 0iXXX*8)*D 2	 2	&D(J !8!8[PZ=Z=Z		Zaa!+T        
!:!:{RZ?Z?Z		Zaa!+T       j(([-H-H		//5vin6I4/P/P	     "Z//4Fh4V4V		KRR!+T       
j((x''Kx,G,G		::@&w|GX:Y:Y	      [J66		[bb!+T       	NNNNNr   )r  r   r   r|  r|  c                  |j         D ]x}|                     d||||           |r+t          |          }	|	|                     |	||||           |                     t          || j        |          ||||           yd S )Nz	@overloadr  r{  )r   r   r  r  r   )
r   r  r   r   r  r   r   r|  r   r  s
             r   r  zMessageBuilder.pretty_overload	  s     H 	 	DIIk76jW[I\\\, c<TBB	(IIiJ]aIbbbIIdliHHH%     	 	r   	conflictsSequence[Any]	max_itemsc                   t          |          |k    r/|                     dt          |          |z
   d|||           d S d S )N<z more conflict(s) not shown>r  )r   r   )r   r  r   r   r  r   s         r   r  zMessageBuilder.print_more4	  sd     y>>I%%IILC	NNY.LLL	       &%r   message_registry.ErrorMessagesubtype_labelsupertype_labelc           
     l   t          |t                    rt          |j                  t          k    rit          |t
                    rT|j        j        dk    rD|j        d         }|gt          |j                  z  }| 	                    ||j        ||           dS t          |t                    rt          |j                  t          k    st          |j                  t          k    rt          |j                  t          |j                  k    ry|w|u|
                    d                    ||                     |          ||                     |                              }|                     |j        ||j                   dS | 	                    |j        |j        ||           dS dS )zTry to generate meaningful error message for very long tuple assignment

        Returns a bool: True when generating long tuple assignment error,
        False when no such error reported
        ro   r   TNz ({} {}, {} {})r   F)r   rG   r   r   MAX_TUPLE_ITEMSr?   r   r   r  !generate_incompatible_tuple_errorrB  r   format_long_tuple_typer   rC  r   )	r   rU  r  r   r   r  r  lhs_type	lhs_typess	            r   &try_report_long_tuple_assignment_errorz5MessageBuilder.try_report_long_tuple_assignment_errorE	  s    gy)) 	GM""_44y(33 5N+/???$>!,%JW]););;	66y'-QXZ]^^^tIy11 GM""_44IO8L8L8^8^w}%%Y_)=)===&2}7P!55-44 - $ ; ;G D D / $ ; ;I F F	   		#)W38	DDD#t66OW]GS   tur   rG   c           	     h   t          |j                  }|t          k    rd                    | j                                        rdndt          |j        d         | j                  t          |j        d         | j                  t          |dz
                      S t          || j                  S )z6Format very long tuple type using an ellipsis notationz{}[{}, {}, ... <{} more items>]tupleTupler   r   r3  )r   r   r  r   r   r  r  r   )r   r   item_cnts      r   r  z%MessageBuilder.format_long_tuple_typer	  s    sy>>o%%4;;<;;==J7 1t|<< 1t|<<HqL!!	   $C666r   r  	rhs_typesc                r   d}g }t          t          ||                    D ]\  }\  }}	t          |	|          sh|dk     r]|                    d                    t          |          t          |	| j                  t          || j                                       |dz  }dt          |           d}
|dz
  dk    r|
dt          |dz
             dz  }
n|
d	z  }
|                    |
          }| 	                    |j
        ||j        
           |D ]}|                     |||j        
            dS )z>Generate error message for individual incompatible tuple pairsr   r   z3Expression tuple item {} has type {}; {} expected; r   r  z tuple items are incompatiblez; z items are omitted)r   r   N)r  ry  r9   r   r   r   r   r   rB  r   rC  r   r   )r   r  r  r   r   	error_cntr[  r  lhs_trhs_tr   r   s               r   r  z0MessageBuilder.generate_incompatible_tuple_error	  sf    	!*3y)+D+D!E!E 
	 
	A~ueU++ 	q==LLMTTFF't|<<'t|<<    Q	AC	NNAAAq=1@Y]++@@@@DDCKD%%d++		#)W38	444 	4 	4DIIdG#(I3333	4 	4r   r   c                    |                      d| d|           |t          v r6|                      d                    t          |                   |           d S d S )Nz)Maybe your test fixture does not define "z"?z?Consider adding [builtins fixtures/{}] to your test description)r   rq   r   )r   r   r   s      r   add_fixture_notezMessageBuilder.add_fixture_note	  sv    		JhJJJCPPP...IIQXX+H5  	     /.r   c                J    |                      d|t          j                   d S )Nz_By default the bodies of untyped functions are not checked, consider using --check-untyped-defsr   )r   r   ANNOTATION_UNCHECKEDr  s     r    annotation_in_unchecked_functionz/MessageBuilder.annotation_in_unchecked_function	  s5    		3+	 	 	
 	
 	
 	
 	
r   
undeclaredc                    d                     d |D                       }|                     t          j                            |          |t
          j                   d S )Nr  c              3  &   K   | ]}d |z   d z   V  dS )r   Nr   )r   r   s     r   r   zDMessageBuilder.type_parameters_should_be_declared.<locals>.<genexpr>	  s*      <<A#'C-<<<<<<r   r   )r|  r   r   "TYPE_PARAMETERS_SHOULD_BE_DECLAREDr   r   
VALID_TYPE)r   r  r   r   s       r   "type_parameters_should_be_declaredz1MessageBuilder.type_parameters_should_be_declared	  sd    		<<<<<<<		?FFuMM! 	 	
 	
 	
 	
 	
r   )r{   r   r}   r|   r   r   )r   r   r   r   r   r   r   r   )r{   r   r   r   )r   r   )r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )NNr   F)r   r   r   r!   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )Nr   FN)r   r   r   r!   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   rH   r   rH   r   r   r   r!   r   r   r   r   )r  r   r  r
   r  r
   r   r!   r   r   r   r   )r  r   r   rH   r   r!   r   r   )r   rH   r   r!   r   rH   )r&  r<   r   r!   r   rH   )r   r   r   r   r&  r<   r,  rH   r-  r   r.  r/  r   r!   r0  r!   r   r   )
rl  rF   rm  rF   r   r!   r   r   r   r   )r  rH   rf  rH   r  r   r   r!   r   r   r   r   )r  r  r   r!   r   r   )r&  r<   r   r!   r  r  r   r   )r&  r<   r   r!   r*  r   r   r   )r&  r<   r   r!   r   r   )r&  r<   r,  rJ   r   r!   r   r   )
r  r   r*  r   r   r!   r  r  r   r   )
r&  r<   r*  r   r,  rH   r   r!   r   r   )r&  r<   rM  r   r   r!   r   r   )rm  r/  r   r!   r   r   )r   r=   r   r!   r   r   )
r  rB   r@  r  r   r!   r   r   r   r   )r  r   r  r   r   r!   r   r   )r   r!   r   r   )r   rH   r   r!   r   r   )r   r!   r   r   r   r   )r  r   r   r!   r   r   )
r*  r   r  r   r  r   r   r!   r   r   )
r  r!   r   rH   r   rH   rV  r+   r   r   )r*  r   r  r   r  r   r   r!   r  rF   r   rF   r   r   )r  r  r   r!   r   r   r  r   r   r   r   r   r   r   )r  r   r*  r   r  r   r  r   r  rH   r  r   r   r!   r   r!   r   r   )r  r   r   r   )r*  r   r  r   r  r   r  rH   r   rH   r   r!   r   r   )r*  r   r  r   r  r   r   r   )
r$  r   r%  r   r&  r   r   r!   r   r   )rm  r<   r   r   r   r!   r   r   )r   rH   r   r!   r   r   )r   rH   r-  r   r   r!   r   r   )r   r   r   r!   r   r   )r*  r   r   r!   r   r   )r:  rH   r   r!   r   r   )r  r   r  r   r   r!   r   r   )rH  r   r   r!   r   r   F)r   r!   rM  r   r   r   )r  r   r   r!   r   r   )r*  r   rV  r   r   r!   r   r   )r*  r   r   r<   r   r!   r   r   )r*  r   r  rH   rd  r<   re  r   r   r!   r   r   )r  r#   rj  r>   rk  r>   r   r   )r  r   rn  ro  r   r!   r   r   )
r*  r   r|  r+   r}  r+   r   r!   r   r   )r*  r   r  r   r   r!   r   r   )r*  r   r   r!   r   r   )r*  r   r  r   r   r!   r   r   )r*  r   r  r   r   r!   r   r   )r   r!   r   r   )r*  r   r   r+   r   r!   r   r   )
r&  r<   r   rH   r  r   r   r!   r   r   )
r  rH   r  rH   rg  r   r   r!   r   r   )r  r   r   r!   r   r   )
r  r   r  r   r  r   r   r!   r   r   )r  r   r  r   r   r!   r   r   )rM  r   r   r!   r   r   )r  r   r  rH   r   r!   r   r   )r  r+   r  r   r  rH   r  r   r   r!   r   r   )r  r   r   r!   r   r   )r  r   r  r   r   r!   r   r   )r  rH   r   r!   r   rH   )r  rH   r   r!   r   r   )r  rH   r   r!   r  r   r   r   )r  r  r   r!   r   r   )r   rH   r   r!   r   r   )r  rH   r  rH   r   r!   r   r   )r  r   r   rH   r   r!   r   r   )r  r)   r   r!   r  r  r   r   )r   rH   r   r!   r   r   )r  r  r   r!   r   r   )
r   rJ   r  r  r  r  r   r!   r   r   )r   rJ   r   r!   r   r   )
r   rJ   r%  r   r   r!   r&  r   r   r   )r+  r,  r   r!   r   r   )r   rJ   r%  r   r   r!   r   r   )r2  rH   r  rH   r   r!   r   r   )rB  r   r   r!   r   r   )
r:  r   rE  r   r  r   r   r!   r   r   )r  r   r  r   r   r!   r   r   )r  r+   rR  r  r   r!   r   r   )
rU  rH   rt  rH   r   r!   r   r   r   r   )r\  r   r   r!   r   r   )re  r   r   r!   r   r   )rk  r   re  r   r   r!   r   r   )rn  r   ro  r   r   r!   r   r   )rE  r   rs  r   r   r!   r   r   )
rU  rv  r  r?   r   r!   r   r   r   r   )r  rB   r   r!   r   r   r  r   r   r   r   r   r|  r   r   r   )r  r  r   r!   r   r   r  r   r   r   r   r   )NN)rU  rF   r  rF   r   r!   r   r  r  r   r  r   r   r   )r   rG   r   r   )
r  r  r  r  r   r!   r   r  r   r   )r   r   r   r!   r   r   )r  r  r   r!   r   r   )__name__
__module____qualname____doc____annotations__r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r%  r+  rk  ru  rs  r?  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r  r(  r*  r,  r/  r1  r6  r9  r=  rA  rE  rG  rJ  rL  rR  rT  rW  rY  r]  r_  rc  ri  rm  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r   r$  r*  r/  r1  r4  r6  r9  r<  r?  rA  rD  rI  rM  rO  rQ  rT  rr  r[  rb  rd  rh  rj  r`  rr  ru  rq  r  r  r  r  r  r  r  r  r   r   r   rz   rz      sy          NNN     $###& & & & BF%*"'
 
 
 
 
 
- - - -
 + + + ^+R R R R4 4 4 4 "&!% ,0;
 ;
 ;
 ;
 ;
 ;
D "& ,0
 
 
 
 
 
2  !% 
 "&,0
 
 
 
 
 
:   !% -1     L 37M M M M Ml  .+ + + + + +>5 5 5 5- - - -- - - -d d d dL!_ !_ !_ !_P "&    @
 
 
 
(	
 	
 	
 	
5 5 5 505 5 5 5< < < <       < < < <    Z^5 5 5 5 5 5   B
 
 
 
C C C CB B B B
O 
O 
O 
O$ "&%Y %Y %Y %Y %Y %YN   ? ? ? ?X X X XJ J J JN N N N	Q 	Q 	Q 	Q` ` ` `C C C CT .3 !%     @* * * *X
 
 
 
# # # #J   L L L L"F F F FE E E E	 	 	 	B B B B] ] ] ]c c c c
 
 
 

 
 
 
c c c c
 
 
 

 
 
 


 
 
 

 
 
 
 

 
 
 
 
^ ^ ^ ^
 
 
 
V V V VX X X X
 
 
 

 
 
 

G 
G 
G 
G6 6 6 6<
 
 
 
_ _ _ _U U U U
 
 
 

 
 
 
X X X X
 
 
 
L L L L: : : :F F F FW W W W	
 	
 	
 	
	
 	
 	
 	

 
 
 
    

 

 

 


 
 
 

 
 
 

 
 
 
[ [ [ [
 
 
 

 
 
 
$S S S S^ ^ ^ ^- - - -X X X X
 
 
 
H H H H
@ 
@ 
@ 
@
 
 
 


 
 
 
d d d d
 
 
 
 \` 
  
  
  
  
DQ Q Q Q
 
 
 

 
 
 
(` (` (` (`T
 
 
 
 UZ    <
 
 
 
	 	 	 	
 
 
 
b b b b$ $ $ $> > > >
 
 
 
$   V V V V       
 
 
 

 
 
 
P P P P
	Z 	Z 	Z 	Z

 

 

 

O O O OW W W W
 
 
 
R R R RA A A A
 
 
 

 
 
 

 
 
 
OO OO OO OOn /4 !%     D "&     . %)&*+ + + + +Z7 7 7 74 4 4 4@   
 
 
 

 
 
 
 
 
r   rz   type_stringr   r   c                    d}| dv s?|                      d          s*t          j        ||           |                     d          r| S d|  dS )z1Quotes a type representation for use in messages.z^<(tuple|union): \d+ items>$)Moduleoverloaded function	<deleted>zModule Nr  r   )r>  rematchendswith)r  no_quote_regexs     r   rN  rN  	  sk    4NEEE!!),, 	F8NK00<$$ =
 {r   r@  r  rL  list[ArgKind]rK  list[str | None]r   Callable[[Type], str]rW  r   c           
        g }t          || |          D ]\  }}}|t          k    r||dk    r3|                                r|                     ||                     Lt          |         }	|                                s|%|                    |	 d ||           d           |                    |	 d ||           dt          |           d           d                    |          S )z2Format a bunch of Callable arguments into a stringNr   (r   r  )ry  r   is_positionalr   rn   is_starreprr|  )
r@  rL  rK  r   rW  arg_stringsrh  r,  r-  constructors
             r   format_callable_argsr  	  s    K(+Iy)(L(L [ [$(Hw8#3yA~~(J`J`JbJb~vvh//0000/9K!! [X%5""k#G#GFF84D4D#G#G#GHHHH""k#Y#YFF84D4D#Y#YX#Y#Y#YZZZZ99[!!!r   Fr   rH   r   r0   	fullnamesset[str] | Noner   r   c           	     8   dGfddHfd}dIfd
dHfd}dJfdt          | t                    r`| j        rY| j        d}nMdk    sr| j        j        v r| j        j        }n| j        j        }| j        r|d || j                   dz  }|S t          |           } t          | t                    ri| }|j	        j        dk    r+d}	|j
        r |j
        j        r|r|	 d|j
        j         dS |	S |j	        j        dk    rdS |j	        j        t          v rG                                s3t          |j	        j                 }
|
                    d          d         }	n/dk    sr|j	        j        v r|j	        j        }	n|j	        j        }	|j        s0|j	        j        r"t!          |j	        j                  dk    r|	dz   S |	S |j	        j        dk    r4 |j        d                   }                                rdnd  d| d!S |	 d ||j                   dS t          | t$                    r;                                rd" | j	                   S d# | j	                   dS t          | t(                    r$t+          |           }dk    sr|v r|S | j        S t          | t,                    r$t+          |           }dk    sr|v r|S | j        S t          | t.                    rl| j        j        rLt5          | j        j        | j        j        | j        j                  }d| d$|                                  dS |                                 S t          | t<                    rZ| j        j	        j        dk    r | j                  S  || j                   pd%}                                rd&| d}nd'| d}|S t          | tB                    r| "                                s | j#                  S g }| j                                          D ]H\  }}d(}|| j$        vr|d)z  }|| j%        v r|d*z  }|&                    || d+ |                      Id,d-'                    |           d.S t          | tP                    rd/ |            dS t          | tR                    rt          tU          |                     } t          | tR                    s |           S tW          |           \  }}t!          |          dk    rd0,                    d-'                    fd1|D                                 }t!          |          dk    rGt          t          |d                   tZ                    r.                                r| d2nd3| dS |rI.                                r| d4 ||           n$d5d-'                     |                     d-| dS |S t!          | j                   t_          d6 | j         D                       z
  dk    }|rNd7 | j         D             }.                                r |d                    d2nd3 |d                    dS .                                r || j                   n&d5d-'                     | j                              d}|S t          | tZ                    rd8S t          | t`                    rd9S t          | tb                    rd:S t          | td                    rd;S t          | tf                    r.                                rd<nd}| d | j4                   dS t          | tj                    r| }|6                                r- tg          j7        |j         d         j8                            S t          |tr                    r|j:        d= |j:                   d}n,|j;        d> |j;                   d}n |j8                  }|j<        rd?| dS |=                                }|d@ |           d-| dS t5          |j        |j        |j                  }dA| dB| dS dCS t          | t|                    r#| ?                    t          D                    S t          | t                    r(t5          | j        | j        | j                  }d| dS | t          dE          dFS )Kz
    Convert a type to a relatively short string suitable for error messages.

    Args:
      verbosity: a coarse grained control on the verbosity of the type
      fullnames: a set of names that should be printed in full
    r   rH   r   r   c                (    t          |           S r   format_type_inner)r   r  r   rW  s    r   r   z!format_type_inner.<locals>.format	  s     i)DDDr   r+  Sequence[Type]c                F    d                     fd| D                       S )Nr  c              3  .   K   | ]} |          V  d S r   r   r   r   r   s     r   r   z9format_type_inner.<locals>.format_list.<locals>.<genexpr>	  s+      66666666r   r|  )r+  r   s    r   format_listz&format_type_inner.<locals>.format_list	  s*    yy6666666666r   r  c                T   fd| D             }t          |          t          k    r3dk    r-t          |          t          dz  z
  }|d t          dz           }nd}|r|                    d| d           t          fd| D                       r|                    d           |S )Nc                D    g | ]} |          d k     |          S )r   r   r  s     r   r   zAformat_type_inner.<locals>.format_union_items.<locals>.<listcomp>	  s3    KKKSVVC[[F5J5JVVC[[5J5J5Jr   r   r3  r  z more items>c              3  6   K   | ]} |          d k    V  dS )r   Nr   r  s     r   r   z@format_type_inner.<locals>.format_union_items.<locals>.<genexpr>	  s0      66vvc{{f$666666r   r   )r   MAX_UNION_ITEMSr   r
  )r+  	formattedmorer   rW  s      r   format_union_itemsz-format_type_inner.<locals>.format_union_items	  s    KKKKEKKK	y>>O++	Qy>>Oq$88D!"8Oq$8"89IID 	53333444666666666 	%V$$$r   c                @    d                      |                     S )N | r  )r+  r  s    r   format_unionz'format_type_inner.<locals>.format_union
  s!    zz,,U33444r   r@   c                    |                                  r | j                  }| d| j         S |                                 S )Nr  )is_enum_literalr~  rC  
value_repr)r   underlying_typer   s     r   format_literal_valuez/format_type_inner.<locals>.format_literal_value
  sN       	$$fS\22O%33	333>>###r   Nz<alias (unfixed)>r3  r  r  ztypes.ModuleTyper  r  r   rp   z<typing special form>r  r   r   z[()]ro   r   r  r  z, ...]r:  Unpack[z, **z()ztuple[zTuple[r   r  =r  zTypedDict({r  z})zLiteral[zLiteral[{}]c              3  .   K   | ]} |          V  d S r   r   )r   r  r  s     r   r   z$format_type_inner.<locals>.<genexpr>v
  s/      IIa..q11IIIIIIr   r  r  r  zUnion[c              3  Z   K   | ]&}t          t          |          t                    V  'd S r   r   rV   rA   r   r  s     r   r   z$format_type_inner.<locals>.<genexpr>
  s5      $a$aRSZ0B0BH%M%M$a$a$a$a$a$ar   c                V    g | ]&}t          t          |          t                    $|'S r   r  r  s     r   r   z%format_type_inner.<locals>.<listcomp>
  s0    ]]]aJq?Q?QS[4\4\]]]]r   r   r
   r  Neverr   
TypeGuard[TypeIs[zCallable[..., z	Callable[z
Callable[[z], r  r   zType is Noner  )r   rH   r   r   )r+  r  r   r   )r+  r  r   r  )r   r@   r   r   )Cr   rI   is_recursiver  r   r*  r  rV   r?   r   r  r  r-   r  r   has_type_var_tuple_typer   r  rT   use_star_unpackrP   scoped_type_var_namerO   rD   r  r@  r  rL  rK  name_with_suffixrG   r}  r   rJ   r  r~  required_keysreadonly_keysr   r|  r@   rS   ignore_last_known_valuesr:   r   rA   use_or_syntaxr  r;   r=   rR   rM   r   r>   r   make_normalizedr  r<   
type_guardtype_isis_ellipsis_args
param_specrQ   r  rL   rC   RuntimeError) r   rW  r   r  r   r  r  r<  ityper  r  item_type_strr   r  
type_itemsr  r   r%  	item_typemodifierliteral_itemsunion_itemsliteral_strprint_as_optionalrestr  funcreturn_typer  r   r  r  s     ```                         @@@r   r  r  	  s-   E E E E E E E E7 7 7 7 7 7      5 5 5 5 5 5$ $ $ $ $ $ #}%% 
#*: 
9*HHA~~)~	0Bi0O0O9-9>x 98CH 5 58888 #

C#x   p:"444H  DU%6%? DL D"CCe&7&@CCCCO:"777**:"999'B]B]B_B_9+EJ,?@E{{3''+HH!^^	^ej.AY.N.Nz*HHzHz 
	<z1 )c%*:N6O6OST6T6T&((OZ $444"F5:a=11M!(!<!<!>!>KggGccmcccc ;;UZ!8!8;;;;	C	$	$ R""$$ 	*)vvch''))),)),,,,	C	%	% N',,>>i>H	,A,AOx	C)	*	* H',,>>i>H	,A,AOx	C	'	' B: 	*'
$cj&:CJ<PRXZc D ;t::!5!5!7!7:::: '')))	C	#	# w$-1AAA6#./// [++3t
&&(( 	'&&&&AA&&&&A	C	'	' m!! 	(6#,'''$'IOO$5$5 	J 	J IyH 111CC---CLLIHHHVVI5F5FHHIIII3dii..3333	C	%	% `6..s336666	C	#	# ^6s;;<<#y)) 	6#;;%<S%A%A"{ }!!'..		IIII=IIIII K ;1$$OKPQN4S4SU])^)^$ ,,..4{++++3[333
  # ,,.._{BB||K'@'@BBB^$)),>,>{,K,K"L"L^^P[^^^ #" CI$a$aWZW`$a$a$a!a!aa  ! ]]39]]] ,,..8vvd1g////7VVDG__777 ,,..NLL+++M$)),>,>sy,I,I"J"JMMM 
 H	C	"	" /v	C	!	! -u	C	%	% +{	C	)	) )w	C	"	" '%99;;GFF	11ffSX..1111	C	&	& $ 	) 6(24:a=3IJJKKKl++ 	)*E66$/+B+BEEE)?t|(<(<???$fT]33$ 766666**J%G66*#5#5GGGGGG'	 D 8777777
 )(	C	%	% 	zz.999:::	C	$	$ #CM3=#-QWYbcc4{{{	>*** xr   r  c                V    t                      }|                     |           |j        S )zReturn all instances/aliases/type variables that `t` contains (including `t`).

    This is similar to collect_all_inner_types from typeanal but only
    returns instances and will recurse into fallbacks.
    )CollectAllNamedTypesQueryr  r+  )r  r  s     r   collect_all_named_typesr  
  s)     ())GHHW=r   c                  X     e Zd ZddZd fdZd fdZd fd
Zd fdZd fdZ xZ	S )r  r   r   c                    g | _         d S r   )r+  r   s    r   r   z"CollectAllNamedTypesQuery.__init__
  s    !#


r   r  r?   c                ~    | j                             |           t                                          |           d S r   )r+  r   supervisit_instancer   r  	__class__s     r   r  z(CollectAllNamedTypesQuery.visit_instance
  7    
!q!!!!!r   rI   c                    |j         r+|j        s$t          |                              |            d S | j                            |           t                                          |           d S r   )r  r  rV   r  r+  r   r  visit_type_alias_typer  s     r   r  z/CollectAllNamedTypesQuery.visit_type_alias_type
  sl    7 	-1> 	-A%%d+++++Ja   GG))!,,,,,r   rP   c                ~    | j                             |           t                                          |           d S r   )r+  r   r  visit_type_varr  s     r   r   z(CollectAllNamedTypesQuery.visit_type_var
  r  r   rO   c                ~    | j                             |           t                                          |           d S r   )r+  r   r  visit_type_var_tupler  s     r   r"  z.CollectAllNamedTypesQuery.visit_type_var_tuple
  s7    
!$$Q'''''r   rD   c                ~    | j                             |           t                                          |           d S r   )r+  r   r  visit_param_specr  s     r   r$  z*CollectAllNamedTypesQuery.visit_param_spec
  s7    
!  #####r   )r   r   )r  r?   r   r   )r  rI   r   r   )r  rP   r   r   )r  rO   r   r   )r  rD   r   r   )
r  r  r  r   r  r  r   r"  r$  __classcell__)r  s   @r   r  r  
  s        $ $ $ $" " " " " "- - - - - -" " " " " "( ( ( ( ( ($ $ $ $ $ $ $ $ $ $r   r  rN   c                    | j         j        s| j        S | j         j                            d          ^ }}| j         d| S )Nr  @)id	namespacer*  r   )r  _r  s      r   r  r  
  sF    4> v%%c**JQfvr   r+  r  c                    i }| D ]O}t          |          D ];}t          |t                    r_t          |t                    rJ|                    |j        j        t                                                    |j        j	                   wt          |t                    rQ|j        rJ|                    |j        j        t                                                    |j        j	                   t          |t                    sJ |                    |j        t                                                    t          |                     =Q|                                D ],}d| t          v r||                             d|            -t                      }|                                D ]*}t#          |          dk    r|                    |           +|S )zReturn a set of fullnames that share a short name and appear in either type.

    This is used to ensure that distinct types with the same short name are printed
    with their fullname.
    ztyping.r   )r  r   rF   r?   
setdefaultr   r*  r  addr   rI   r  rN   r  r  rg   r   r   update)r+  r  r   r  	shortnameoverlapsr  s          r   find_type_overlapsr1  
  s     A I I(.. 	I 	IA!Z(( IZ8-D-D IQV[#%%0044QV_EEEEA}-- I!' IQW\3551155ag6FGGGG!!_55555QVSUU++//0DQ0G0GHHHH	I VVXX 4 4	 Y  $>>>iL2y22333HXXZZ ' '	y>>AOOI&&&Or   c                @    t          t          | |||                    S )a  
    Convert a type to a relatively short string suitable for error messages.

    `verbosity` is a coarse-grained control on the verbosity of the type

    This function returns a string appropriate for unmodified use in error
    messages; this means that it will be quoted in most cases.  If
    modification of the formatted string is required, callers should use
    format_type_bare.
    )rN  r  r   r   rW  r   s       r   r   r     s!     -c7I|TTUUUr   c                B    t          | ||t          |           |          S )a  
    Convert a type to a relatively short string suitable for error messages.

    `verbosity` is a coarse-grained control on the verbosity of the type
    `fullnames` specifies a set of names that should be printed in full

    This function will return an unquoted string.  If a caller doesn't need to
    perform post-processing on the string output, format_type should be used
    instead.  (The caller may want to use quote_type_string after
    processing has happened, to maintain consistent quoting in messages.)
    )r  r1  r3  s       r   r  r  '  s#     S)W6H6M6M|\\\r   )r9  r9  tuple[str, ...]c                4   	 t          | d fd}d}t          |          dk    ru|\  }}t          |          }t          |          }t          |t                    r=t          |t                    r(t          |j                  rt          ||d	          rd
}t          |d          D ]A	 	fd|D             }t          t          |                    t          |          k    r nB|rt          |          S t          d |D                       S )a  Jointly format types to distinct strings.

    Increase the verbosity of the type strings until they become distinct
    while also requiring that distinct types with the same short name are
    formatted distinctly.

    By default, the returned strings are created using format_type() and will be
    quoted accordingly. If ``bare`` is True, the returned strings will not
    be quoted; callers who need to do post-processing of the strings before
    quoting them (such as prepending * or **) should use this.
    r  rH   r   r   c                *    t          | d          S )Nr   rW  r   r  r  )r  r   overlappings    r   format_singlez-format_type_distinctly.<locals>.format_singleF  s     7kZZZZr   r   r3  T)ignore_pos_arg_namesr   c                6    g | ]}t          |           S )r8  r  )r   r   r   r9  rW  s     r   r   z*format_type_distinctly.<locals>.<listcomp>\  s;     
 
 
 diT_```
 
 
r   c              3  4   K   | ]}t          |          V  d S r   )rN  )r   r  s     r   r   z)format_type_distinctly.<locals>.<genexpr>e  s+      88a&q))888888r   N)r  rH   r   r   )r1  r   rV   r   r<   r
  rK  r9   r   r  r  )
r   r9  r+  r:  min_verbosityr  r  strsr9  rW  s
   `       @@r   r	  r	  8  su    %e,K[ [ [ [ [ [ [ M 5zzQet$$&&
 t\**	5,//	 EO$$	 4TBBB		 M=!,,  	
 
 
 
 
 

 
 
 s4yy>>SYY&&E ' 9T{{884888888r   r  r<   r   c                    | j         6t          | j         t                    r| j         j        rdS | j         j        rdS dS )zJReturn @classmethod or @staticmethod, if any, for the given callable type.Nz@classmethodz@staticmethod)r  r   r   is_class	is_static)r  s    r   r  r  h  sE    	} Z?T%U%U =! 	"!>=" 	#"?4r   r|  c           
     f   d}d}d}t          t          | j                            D ]_}|r|dz  }| j        |                                         r	|s|dz  }d}| j        |         t
          k    r|dz  }d}| j        |         t          k    r|dz  }| j        |         }|r||dz   z  }t          | j        |                   }| j        |         t          k    r| j	        rd	| d
}||z  }| j        |         
                                r|dz  }|su| j        |                                         rV|T|t          | j                  dz
  k    s2| j        |dz            "| j        |dz                                            s|dz  }d}at          | j        t                    rt          | j        d          rq| j        sjd | j        j        D             }	t          |	          t          | j                  k    r|	d         r|s|rd|z   }|	d         |z   }| j        j         d| d}n[| j        rN| j                            d          }
|
r|rd|z   }|
|z   }| j                                        d          d| d}nd| d}|dz  }| j        |dt          | j                   d
z  }n<| j        |dt          | j                   d
z  }n|t          | j                  z  }| j        r<g }| j        D ]}t          |t4                    rt7          |j                  }t          |t:                    r|j        j        dk    s.|                     |j         dt          |                      |j!        rS|                     d"                    |j        d#                    fd|j!        D                                            |                     |j                   |                     tI          |                     dd#                    |           d| }d| S )a<  Return a nice easily-readable representation of a callable type.
    For example:
        def [T <: int] f(self, x: int, y: T) -> None

    If skip_self is True, print an actual callable type, as it would appear
    when bound on an instance/class, rather than how it would appear in the
    defining statement.
    r   Fr  z*, Tr:  r;  r  r  r  z = ...Nr   z, /	argumentsc                &    g | ]}|j         j        S r   )variabler*  )r   r  s     r   r   z#pretty_callable.<locals>.<listcomp>  s    UUUc 1UUUr   r   r  r   r  z -> r  r  zbuiltins.objectz{}: ({})c                0    g | ]}t          |          S r   )r  )r   r  r   s     r   r   z#pretty_callable.<locals>.<listcomp>  s$    &[&[&['7G'D'D&[&[&[r   r  z] zdef )%r   r   r@  rL  is_namedr   r   rK  r  unpack_kwargsis_optionalr  r   r  r#   hasattrrx  rD  r*  r  r  r   r  r  r  	variablesrP   rV   r  r?   r   r   r   r   r   r|  r  )r  r   r|  r  asteriskslashr  r*  r<  definition_arg_namesr  tvarstvarr  s    `            r   r  r  r  s    	AHE3r|$$%%   	IA<?##%% 	h 	JAH<?h&&HAH<?i''IA|A 	A#BLOW==<?i''B,<',,,,H	X<?&&(( 	MA
	Q--//
	 S&&***LQ'32<A;N;\;\;^;^3 JAE 	2='**BM;// #
  VUR]=TUUU$%%BL(9(999$Q' : :  1H$Q'!+A}!((A(((	 M%%k22	 	 1HAAw}}q!((A(((HHHKA	} 	E*2='BBEEEE			?'
G<<????	bk7333	| (L 	) 	)D$,, )-d.>??{H55,#(15FFFLLDI!Y!Y1A+w1W1W!Y!YZZZZ[ ,LL")) I II&[&[&[&[t{&[&[&[\\     LL++++ T$ZZ(((('		%  ''A''!::r   variancec                :    | t           k    rdS | t          k    rdS dS )N	covariantcontravariant	invariant)r   r   )rR  s    r   rH  rH    s'    9{	]	"	"{r   r  r?   r  ry  r  c                    |j         j        sJ g }|j         j        D ]-}||v rt          || |           s|                    |           .|S )zkFind all protocol members of 'right' that are not implemented
    (i.e. completely missing) in 'left'.
    )r   rp  r  r6   r   )r  r  ry  r  r   s        r   r  r    sf     :!!!!G*- # #T>>64.. 	#NN6"""Nr   rz  Options | None"list[tuple[str, Type, Type, bool]]c                   |j         j        sJ g }|j         j        D ]F}|dv rt          |||           }|J t          j                            | ||          }|sAt          ||d|          }|s|                    |||df           t          ||          }	t          |	vrd}
t          |	v r)t          ||| d          }|rt          ||          sd}
|}t          t          ||           v r9t          j                            | ||d          }|rt          ||          sd}
|}|s|
s||J t          |||          }|s|                    ||||
f           H|S )zFind members that are defined in 'left' but have incompatible types.
    Return them as a list of ('member', 'got', 'expected', 'is_lvalue').
    )r   __new__NT)r;  r   F)r  r   )r   rp  r  r6   mypytypeopsget_protocol_memberr9   r   r7   r4   r3   r8   )r  r  rz  r   r  r   r  rU  	is_compatr  different_setterset_supertypeset_subtypes                r   r  r    s    :!!!!46I*- M M,,,t44	$$$,224KK 	w	V]^^^	 	Bfgy%@AAA%fe44
j(( ++'ttLLLM (\-%K%K (#' %I!1&$!?!???,::4^b:ccK (<W#E#E (#' !G 	!1 	$)<)<)<y'7CCC	 	Mfgy:JKLLLr   $list[tuple[str, set[int], set[int]]]c                   |j         j        sJ g }|j         j        D ]I}t          || |           r6|t	          ||           t	          ||          f}|                    |           Jg }|D ]\  }}}	t          |v rt          |	vr	t          |	v sUt          |	v r	t          |vsCt          |	v r	t          |vs1t          |	v r	t          |vs|rt          |	v r	t          |vs|r!t          |	v r|                    |||	f           |S )ziReturn all incompatible attribute flags for members that are present in both
    'left' and 'right'.
    )
r   rp  r  r6   r7   r   r2   r4   r1   r5   )
r  r  rz  	all_flagsr   r   	bad_flagsr*  r  r  s
             r   r  r    sK    :!!!!68I*- # #vtT** 	#,VT::<LVUZ<[<[\DT"""I&/ ; ;"h
8##:--z))j((8++j((8++!Z//"(22 3*$$8++ ,z))dHj9:::r   r  c                \    | dk    rdS | d                                          | dd         z   S )z+Capitalize the first character of a string.r   r   r   N)upperr  s    r   rG  rG  >  s/    Bwwrtzz||ae##r   r*  c                2    t          j        dd|           } | S )zIf the argument is the name of a method (of form C.m), return
    the type portion in quotes (e.g. "y"). Otherwise, return the string
    unmodified.
    z^"[a-zA-Z0-9_]+" of r   r  sub)r*  s    r   r=  r=  F  s    
 6("d33DKr   c                ^    t          j        dd|           } t          j        dd|           } | S )zDStrip a double quote at the beginning and end of the string, if any.z^"r   z"$rk  ri  s    r   rI  rI  O  s-    
tRA
tRAHr   lstc                (   | sJ t          |           dk    r| d         S t          |           dk    r(d                    | d d                    d| d          S dd                    | d d                   | d         t          |           d	z
  fz  S )
Nr   r      r  r   r  z&%s, ... and %s (%i methods suppressed)r3  r   r   r|  )rn  s    r   rw  rw  V  s    JJJ
3xx1}}1v	SQ))CH%%55CG5557IIc"1"gGHHqL;
 
 	
r   Iterable[str]c                    t          |           }t          |          dk    r%dd                    d |D                       z   dz   S dd                    d |d d         D                       z   dz   S )Nrp  r  r  c                    g | ]}d | d 	S rr  r   r   r*  s     r   r   z)format_item_name_list.<locals>.<listcomp>g  s     <<<D<<<r   r   c                    g | ]}d | d 	S rr  r   ru  s     r   r   z)format_item_name_list.<locals>.<listcomp>i  s     @@@D@@@r   z, ...))rO  r   r|  )r  rn  s     r   r"  r"  d  sz    
q''C
3xx1}}TYY<<<<<===CCTYY@@BQB@@@AAAHLLr   r   r>   c                ~    |                                  }|&|d         dk    rd| d                    dd          S |S )Nr   r  r   r  r?  )get_namereplace)r   r*  s     r   r(  r(  l  sD    ==??DDGsNN4{{{""68444Kr   r&  c                2    t          |           }|d| S dS )Nz for r   )r(  )r&  r*  s     r   r  r  s  s&      Dt~~2r   lowhighactc                v    | |k    r|  d}| dk    rd}n| dk    rd}n	d|  d| d}|dk    rd	}d
| d| d| dS )Nz type argumentsr   zno type argumentsr   z1 type argumentzbetween r  0noner   z
" expects z, but z givenr   )r{  r|  r}  r*  r  s        r   wrong_type_arg_countr  z  s    
d{{###!88#AAAXX!A6s66666
czz3t33q333333r   r}   r|   MypyFile | Nonec                   |j         sd S |j         j        }d|v rht          |                    d                    D ];}|                    d|dz             d         }	 | |         c S # t
          $ r Y 8w xY wJ d            d S )Nr  r   r   Fz+Couldn't determine module from CallableType)r  r   r   countrsplitKeyError)r}   r   r   r  module_names        r   r  r    s    > t~&H
hx~~c**++ 	 	A"//#q1u55a8K{++++   CCCCC4s   A((
A54A5r-  )r   r  zFinal[dict[str, Sequence[str]]]r  rt  bfloatc                p    t          |           }t          |          }dt          ||          z  ||z   z  S )Ng       @)r   min)rt  r  albls       r   _real_quick_ratior    s6     
QB	QBRR((r   currentCollection[str]r   c                      sg S  fd|D             }t          |          dk    r fd|D             } fd|D             d                                 D             }t          |fd          d |         S )Nc                <    g | ]}t          |          d k    |S g      ?)r  r   r~  r  s     r   r   z best_matches.<locals>.<listcomp>  s.    JJJQ%6w%B%BT%I%Iq%I%I%Ir   2   c                t    g | ]4}t          t          |          t                    z
            d k    2|5S )r   )absr   r  s     r   r   z best_matches.<locals>.<listcomp>  s<    IIISVVc'll-B)C)Cq)H)H1)H)H)Hr   c                b    i | ]+}|t          j        |                                           ,S ))rt  r  )difflibSequenceMatcherratio)r   optionr  s     r   
<dictcomp>z best_matches.<locals>.<dictcomp>  s7    aaavfg-6BBBHHJJaaar   c                $    g | ]\  }}|d k    |S r  r   )r   r  r  s      r   r   z best_matches.<locals>.<listcomp>  s!    JJJ-&%UT\\v\\\r   c                    |           | fS r   r   )r   ratioss    r   r  zbest_matches.<locals>.<lambda>  s    6!9*a r   r  )r   r   r  )r  r   r   r  s   `  @r   r  r    s     	JJJJ'JJJG
7||rIIIIgIIIaaaaY`aaaFJJ6<<>>JJJG'8888999"1"==r   r  Sequence[str]conjunctionc                   d | D             }t          |          dk    r|d         S t          |          dk    r|d          d| d|d          S d|z   dz   }d                    |d d                   |z   |d         z   S )Nc                    g | ]
}d |z   d z   S rr  r   rs  s     r   r   zpretty_seq.<locals>.<listcomp>  s     ***cAgm***r   r   r   r3  r5  r  r   rq  )r  r  quotedlast_seps       r   r  r    s    **T***F
6{{aay
6{{a)77k77F1I777k!C'H99VCRC[!!H,vbz99r   r[  r,  rf  c                   d}d}|j         j        dk    r;|j         j        dk    r+t          |j        d         |j        d                   rd}d}np|j         j        dk    r`|j         j        dk    rPt	          |j        d         |j        d                   r*t          |j        d         |j        d                   rd}d	}|r3|r1|                     d
| ddz              |                     |           | S )zMExplain that the type is invariant and give notes for how to solve the issue.r   zbuiltins.listr   rO  z5Consider using "Sequence" instead, which is covariantzbuiltins.dictr   r  zFConsider using "Mapping" instead, which is covariant in the value typer   z" is invariant -- see zAhttps://mypy.readthedocs.io/en/stable/common_issues.html#variance)r   r   r9   r  r8   r   )r[  r,  rf  invariant_typecovariant_suggestions        r   rP  rP    s,    N/11'?::x}Q');A)>?? ;  V/11'?::q)=+=a+@AA ;x}Q');A)>?? ;  T 	  +. +6666QR	
 	
 	
 	)***Lr   rS   c                R   g }t          |j                  }t          |          t          k     r| S |D ]'}t	          ||          s|                    |           (|rId                    fd|D                       }|                     dt          |           d|            | S )zHPoint to specific union item(s) that may cause failure in subtype check.r  c                0    g | ]}t          |          S r   )r   )r   r   r   s     r   r   z%append_union_note.<locals>.<listcomp>  s#    MMM;sG44MMMr   Itemz' in the first union not in the second: )rU   r   r   r  r9   r   r|  rY   )r[  r,  rf  r   non_matchingr   r   r+  s      `    r   append_union_noter    s     L!(.11E
5zzO## & &$.. 	&%%% d		MMMMMMMNNbH\22bb[`bbcccLr   c                    |j         j        t          v r?|                     d           |                     d           |                     d           | S )zIExplain if an unsupported type from "numbers" is used in a subtype check.z>Types from "numbers" aren't supported for static type checkingz7See https://peps.python.org/pep-0484/#the-numeric-towerz?Consider using a protocol instead, such as typing.SupportsFloat)r   r   rw   r   )r[  r,  rf  s      r   rQ  rQ    sT     "&???VWWWNOOOVWWWLr   r   r!   rU  r  supertype_strc                N   t          |          }t          |          }t          |t                    rt          |t                    r|j        j        |j        j        k    r|j        r|j        rt          | t                    rt          | j        t                    rt          | j        j	        t                    rf| j        j	        j        rUt          |j        |j                  D ]\  }}t          ||          s dS | j        j        }d                    ||          S dS )a  Explain that the user may have forgotten to type a variable.

    The user does not expect an error if the inferred container type is the same as the return
    type of a function and the argument type(s) are a subtype of the argument type(s) of the
    return type. This note suggests that they add a type annotation with the return type instead
    of relying on the inferred type.
    r   z;Perhaps you need a type annotation for "{}"? Suggestion: {})rV   r   r?   r   r   r  r'   r  r&   r  r,   is_inferredry  r9   r*  r   )r   rU  r  r  subtype_argsupertype_argvar_names          r   make_inferred_type_noter    s2    g&&G	**I7H%%
y(++
 L!Y^%<<<L =N = w
++ = w|X..	 =
 w|(#.. = L) = +.glIN*K*K 	 	&Kk=99 rr<$LSSm
 
 	
 2r   r  r  r  c                   d | D             }|rdnd}t          |           dk    rd| dS t          |           dk    r| d|d          S | d	d
                    |           dS )Nc                    g | ]}d | d 	S rr  r   )r   r  s     r   r   z#format_key_list.<locals>.<listcomp>  s     111Sj#jjj111r   r   r(  r   zno r  r   zkey zkeys (r  r   rq  )r  r  formatted_keystds       r   r  r    s    11D111N	&,B
4yyA~~R~~~	Ta--.+---88DIIn558888r   c                   g }t                      }| j        D ]}t          |t                    r[t          |t                    rF|                    d          }||v rG|                    |           |                    |           r|                    |           t          j	        || j
        | j                  S )zThis will avoid types like str | str in error messages.

    last_known_values are kept during union simplification, but may cause
    weird formatting for e.g. tuples of literals.
    N)last_known_value)r  r   r   rF   r?   copy_modifiedr-  r   rS   
make_unionr   r   )r  r  seen_instancesr   eraseds        r   r  r  "  s     !KUUN % %dJ'' 	%JtX,F,F 	%'''>>F''v&&&v&&&&t$$$$QVQX>>>r   )r  r   r   r   )r@  r  rL  r  rK  r  r   r  rW  r   r   r   r  )r   rH   rW  r   r   r0   r  r  r   r   r   r   )r  rH   r   r  )r  rN   r   r   )r+  rH   r   r  )r   F)
r   rH   r   r0   rW  r   r   r   r   r   )r+  rH   r   r0   r9  r   r   r5  )r  r<   r   r   )r  r<   r   r0   r|  r   r   r   )rR  r   r   r   )r  r?   r  r?   ry  r  r   r  )FN)
r  r?   r  r?   rz  r   r   rX  r   rY  )r  r?   r  r?   rz  r   r   rc  )r  r   r   r   )r*  r   r   r   )rn  r  r   r   )r  rr  r   r   )r   r>   r   r   )r&  r<   r   r   )
r{  r   r|  r   r}  r   r*  r   r   r   )r}   r|   r   r<   r   r  )rt  r   r  r   r   r  )r  r   r   r  r   r   r   r  )r  r  r  r   r   r   )r[  r  r,  r?   rf  r?   r   r  )
r[  r  r,  rS   rf  rS   r   r0   r   r  )
r   r!   rU  rH   r  rH   r  r   r   r   )r  r  r  r   r   r   )r  rS   r   rH   )r  
__future__r   r  r   r  collections.abcr   r   r   r   
contextlibr   textwrapr	   typingr
   r   r   r   mypy.typeopsr\  r   r   r   mypy.erasetyper   mypy.errorcodesr   mypy.errorsr   r   r   
mypy.nodesr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   mypy.operatorsr.   r/   mypy.optionsr0   mypy.subtypesr1   r2   r3   r4   r5   r6   r7   r8   r9   r:   
mypy.typesr;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   mypy.typetraverserrX   	mypy.utilrY   rZ   rg   r  rn   rq   rw   r  r  rz   rN  r  r  r  r  r  r1  r   r  r	  r  r  rH  r  r  r  rG  r=  rI  rw  r"  r(  r  r  r  r  r  r  r  rP  r  rQ  r  r  r  r   r   r   <module>r     s  	 	 	 # " " " " "      				 D D D D D D D D D D D D % % % % % %       - - - - - - - - - - - -     6 6 6 6 6 6 6 6 % % % % % % % % % % % % 7 7 7 7 7 7 7 7 7 7                                                     6 = < < < < < < <            
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 1 0 0 0 0 0                                                             > 4 3 3 3 3 3 ( ( ( ( ( ( ( (% % %     " U\z$hw       !)-/'-.
" 
"  
 
 
 
$ $ $      \$
 \$
 \$
 \$
 \$
 \$
 \$
 \$
~H   " " " "6 k k k k k\   $ $ $ $ $ 4 $ $ $8          8 KPV V V V V" KP] ] ] ] ]" IN -9 -9 -9 -9 -9 -9`   e e e e eP       Y]( ( ( ( (X 8=    D$ $ $ $      
 
 
 
M M M M      4 4 4 4     5:;O3P P P P P) ) ) )
> 
> 
> 
>: : : :   @   "      B 7< 9 9 9 9 9 9? ? ? ? ? ?r   