Ë
    pPêj³¡  ã                  ó  — d Z ddlmZ ddlmZ ddlmZ ddlZddl	m
Z
 ddlmZ ddlmZmZmZmZmZ dd	lmZ dd
lmZmZmZmZmZmZ ddlmZ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+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=  G d„ d«      Z>d#d„Z?e	 d$	 	 	 	 	 	 	 d%d„«       Z@ed$d&d„«       Z@d$d&d„Z@ G d„ de5e)   «      ZAd'd„ZBd(d„ZCd)d„ZDd*d„ZEd+d„ZFd,d„ZGd-d„ZHd.d„ZId.d„ZJd-d„ZK	 	 	 	 	 	 d/d„ZLd0d„ZMd1d „ZNd2d!„ZOd3d"„ZPy)4z3Calculation of the least upper bound types (joins).é    )Úannotations)ÚSequence)ÚoverloadN)Úexpand_type)Úmap_instance_to_supertype)ÚCONTRAVARIANTÚ	COVARIANTÚ	INVARIANTÚVARIANCE_NOT_READYÚTypeInfo)Ústate)ÚSubtypeContextÚfind_memberÚis_equivalentÚis_proper_subtypeÚis_protocol_implementationÚ
is_subtype)!ÚAnyTypeÚCallableTypeÚDeletedTypeÚ
ErasedTypeÚFunctionLikeÚInstanceÚLiteralTypeÚNoneTypeÚ
OverloadedÚ
ParametersÚParamSpecTypeÚPartialTypeÚ
ProperTypeÚ	TupleTypeÚTypeÚTypeAliasTypeÚTypedDictItemÚTypedDictTypeÚ	TypeOfAnyÚTypeTypeÚ	TypeVarIdÚTypeVarLikeTypeÚTypeVarTupleTypeÚTypeVarTypeÚTypeVisitorÚUnboundTypeÚUninhabitedTypeÚ	UnionTypeÚ
UnpackTypeÚfind_unpack_in_listÚget_proper_typeÚget_proper_typesÚsplit_with_prefix_and_suffixc                  ó$   — e Zd Zdd„Zdd„Zdd„Zy)ÚInstanceJoinerc                ó   — g | _         y ©N)Úseen_instances)Úselfs    úN/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/join.pyÚ__init__zInstanceJoiner.__init__;   s
   € Ø?AˆÕó    c                óî	  — ||f| j                   v s||f| j                   v rt        |«      S | j                   j                  ||f«       |j                  |j                  k(  �r%g }|j                  j                  �r|j                  j
                  €J ‚|j                  j                  €J ‚|j                  j
                  }|j                  j                  }|j                  j                  j                  |   }t        |t        «      sJ ‚|j                  }t        |j                  ||«      \  }}	}
t        |j                  ||«      \  }}}|t        t        |	«      |«      fz   |
z   }|t        t        |«      |«      fz   |z   }n|j                  }|j                  }t!        |||j                  j                  j                  «      D �]¢  \  }}}t#        |«      }t#        |«      }d }t        |t$        «      rt%        t&        j(                  |«      }�nBt        |t$        «      rt%        t&        j(                  |«      }�nt        |t*        «      �rI|j,                  t.        t0        fv r˜t3        ||| «      }t5        |j6                  «      dk7  r5||j6                  vr'| j                   j9                  «        t        |«      c S t;        ||j<                  «      �s|| j                   j9                  «        t        |«      c S |j,                  t>        t@        fv �r<t        |tB        «      r|jD                  r|}�nt        |tB        «      r|jD                  r|}nýtG        ||«      s'| j                   j9                  «        t        |«      c S t3        ||| «      }n¼t        |t        «      r|t#        t3        ||| «      «      }t        |tH        «      r'|j                  jJ                  dk(  sJ ‚tM        |«      }n_t        |t        «      sJ ‚|jO                  |jP                  «       �Œ^tG        ||«      st#        |j<                  «      c S t3        ||| «      }|€J ‚|j                  |«       �Œ¥ tI        |j                  |«      }nS|j                  jR                  r+tU        ||tW        d¬«      ¬«      r| jY                  ||«      }n| jY                  ||«      }| j                   j9                  «        |S )Nr   úbuiltins.tupleT)Úignore_type_params)Úsubtype_context)-r9   Úobject_from_instanceÚappendÚtypeÚhas_type_var_tuple_typeÚtype_var_tuple_prefixÚtype_var_tuple_suffixÚdefnÚ	type_varsÚ
isinstancer*   Útuple_fallbackr4   Úargsr!   ÚlistÚzipr2   r   r&   Úfrom_another_anyr+   Úvariancer	   r   Ú
join_typesÚlenÚvaluesÚpopr   Úupper_boundr
   r   r.   Ú	ambiguousr   r   Úfullnamer0   ÚextendÚitemsÚbasesr   r   Újoin_instances_via_supertype)r:   ÚtÚsrL   ÚprefixÚsuffixÚtvtÚfallbackÚs_prefixÚs_middleÚs_suffixÚt_prefixÚt_middleÚt_suffixÚs_argsÚt_argsÚtaÚsaÚtype_varÚ	ta_properÚ	sa_properÚnew_typeÚresults                          r;   Újoin_instanceszInstanceJoiner.join_instances>   s!  € Øˆqˆ6�T×(Ñ(Ñ(¨Q°¨F°d×6IÑ6IÑ,IÜ'¨Ó*Ð*à×Ñ×"Ñ" A q 6Ô*ð �6‰6�Q—V‘VÓð
  "ˆDð �v‰v×-Ó-ð —v‘v×3Ñ3Ð?Ð?Ð?Ø—v‘v×3Ñ3Ð?Ð?Ð?ØŸ™×5Ñ5�ØŸ™×5Ñ5�Ø—f‘f—k‘k×+Ñ+¨FÑ3�Ü! #Ô'7Ô8Ð8Ð8Ø×-Ñ-�Ü/KÈAÏFÉFÐTZÐ\bÓ/cÑ,�˜( HÜ/KÈAÏFÉFÐTZÐ\bÓ/cÑ,�˜( HØ!¤Y¬t°H«~¸xÓ%HÐ$JÑJÈXÑU�Ø!¤Y¬t°H«~¸xÓ%HÐ$JÑJÈXÑU‘àŸ™�ØŸ™�Ü$'¨°¸¿¹¿¹×8MÑ8MÓ$Nó 1&Ñ ��B˜Ü+¨BÓ/�	Ü+¨BÓ/�	Ø(,�Ü˜i¬Ô1Ü&¤y×'AÑ'AÀ9ÓM’HÜ 	¬7Ô3Ü&¤y×'AÑ'AÀ9ÓM’HÜ ¬+Õ6Ø×(Ñ(¬YÔ8JÐ,KÑKÜ#-¨b°"°dÓ#;˜Ü˜xŸ™Ó/°1Ò4¸ÈÏÉÑ9XØ ×/Ñ/×3Ñ3Ô5Ü#7¸Ó#:Ò:Ü)¨(°H×4HÑ4HÕIØ ×/Ñ/×3Ñ3Ô5Ü#7¸Ó#:Ò:ð "×*Ñ*¬y¼-Ð.HÒHÜ% i´ÔAÀi×FYÒFYØ')šHÜ'¨	´?ÔCÈ	×H[ÒH[Ø')™HÜ!.¨r°2Ô!6Ø ×/Ñ/×3Ñ3Ô5Ü#7¸Ó#:Ò:ô (2°"°b¸$Ó'?™HÜ Ô*:Ô;Ü.¬z¸"¸bÀ$Ó/GÓH�Hô " (¬HÔ5Ø'Ÿ}™}×5Ñ5Ð9IÒIÐIÐIÜ#-¨hÓ#7™ä)¨(´IÔ>Ð>Ð>ØŸ™ H§N¡NÔ3Ù ô )¨¨RÔ0Ü.¨x×/CÑ/CÓDÒDÜ)¨"¨b°$Ó7�HØÐ+Ð+Ð+Ø—‘˜HÖ%ðc1&ôd "*¨!¯&©&°$Ó!7‰FØ�V‰V�\Š\Ô/Øˆq¤.ÀDÔ"Iõ
ð ×6Ñ6°q¸!Ó<‰Fð
 ×6Ñ6°q¸!Ó<ˆFà×Ñ×ÑÔ!Øˆr=   c                óä  — |j                   j                  D ]  }t        ||«      sŒt        ||| «      c S  |j                   j                  D ]  }t        ||«      sŒt        ||| «      c S  i }|j                   j                  D ]  }d ||j                   <   Œ |j                   j                  D ]5  }|j                   j
                  sŒt        ||«      sŒ'd ||j                   <   Œ7 d }|D ]1  }t        ||«      }| j                  ||«      }	|�t        |	|«      sŒ0|	}Œ3 |€J ‚|j                   j                  D ]4  }
t        |
t        «      sŒ| j                  |
|«      }	t        |	|«      sŒ3|	}Œ6 |S r8   )rD   Ú_promoter   rQ   rZ   Úis_protocolr   rq   Ú	is_betterrJ   r   )r:   r\   r]   ÚpÚ
base_typesÚbaseÚbestÚ	base_typeÚmappedÚresÚpromotes              r;   r[   z+InstanceJoiner.join_instances_via_supertypeŸ   sk  € ð —‘—‘ò 	.ˆAÜ˜!˜QÕÜ! ! Q¨Ó-Ò-ð	.ð —‘—‘ò 	.ˆAÜ˜!˜QÕÜ! ! Q¨Ó-Ò-ð	.ð ,.ˆ
Ø—F‘F—L‘Lò 	)ˆDØ$(ˆJ�t—y‘yÒ!ð	)à—F‘F—L‘Lò 	-ˆDØ�y‰y×$Ó$¬°A°tÕ)<Ø(,�
˜4Ÿ9™9Ò%ð	-ð #'ˆØ#ò 	ˆIÜ.¨q°)Ó<ˆFØ×%Ñ% f¨aÓ0ˆCØˆ|œy¨¨dÕ3Ø‘ð		ð
 ÐÐÐØ—v‘v—‘ò 	ˆGÜ˜'¤8Õ,Ø×)Ñ)¨'°1Ó5�Ü˜S $Õ'Ø‘Dð		ð
 ˆr=   N)ÚreturnÚNone)r\   r   r]   r   r~   r    )Ú__name__Ú
__module__Ú__qualname__r<   rq   r[   © r=   r;   r6   r6   :   s   „ óBó_ôB$r=   r6   c                ób   — t        | |«      r|S t        || «      r| S t        t        |«      «      S )zQReturn one of types (expanded) if it is a supertype of other, otherwise top type.)r   Úobject_or_any_from_typer2   ©r]   r\   s     r;   Útrivial_joinr‡   Æ   s0   € ä�!�QÔØˆÜ	�A�qÔ	Øˆä&¤°qÓ'9Ó:Ð:r=   c                 ó   — y r8   rƒ   ©r]   r\   Úinstance_joiners      r;   rQ   rQ   Ð   s   € ð r=   c                 ó   — y r8   rƒ   r‰   s      r;   rQ   rQ   Ö   s   € ØY\r=   c                óØ  — t         j                  j                  | |«      rt        | |«      S t	        | «      } t	        |«      }| j
                  | j                  f|j
                  |j                  fk7  r>t         j                  j                  | «      } t         j                  j                  |«      }t        | t        «      rt        |t        «      s|| }} t        | t        «      r| S t        | t        «      r|S t        | t        «      rt        |t        «      s|| }} t        | t        «      rt        |t        «      s|| }} t        | |«      \  } }|j                  t!        | |«      «      S )zkReturn the least upper bound of s and t.

    For example, the join of 'int' and 'object' is 'object'.
    )ÚmypyÚtypeopsÚis_recursive_pairr‡   r2   Úcan_be_trueÚcan_be_falseÚtrue_or_falserJ   r/   r   r   r   r.   Únormalize_callablesÚacceptÚTypeJoinVisitorr‰   s      r;   rQ   rQ   Ú   s!  € ô
 ‡|�|×%Ñ% a¨Ô+ô ˜A˜qÓ!Ð!Ü˜Ó€AÜ˜Ó€Aà	�‰�q—~‘~Ð&¨1¯=©=¸!¿.¹.Ð*IÒIä�L‰L×&Ñ& qÓ)ˆÜ�L‰L×&Ñ& qÓ)ˆä�!”YÔ¬
°1´iÔ(@Ø�!ˆ1ˆä�!”WÔØˆä�!”ZÔ Øˆä�!”XÔ¤z°!´XÔ'>Ø�!ˆ1ˆä�!”_Ô%¬j¸¼OÔ.LØ�!ˆ1ˆô ˜q !Ó$�D€A€qð �8‰8”O A Ó7Ó8Ð8r=   c                  óê   — e Zd ZdZddd„Zdd„Zdd„Zd d„Zd!d„Zd"d„Z	d#d	„Z
d$d
„Zd%d„Zd&d„Zd'd„Zd(d„Zd)d„Zd*d„Zd+d„Zd,d„Zd-d„Zd.d„Z	 	 	 	 	 	 	 	 d/d„Zd0d„Zd1d„Zd2d„Zd3d„Zd4d„Zd5d„Zy)6r•   zpImplementation of the least upper bound algorithm.

    Attributes:
      s: The other (left) type operand.
    Nc                ó    — || _         || _        y r8   )r]   rŠ   )r:   r]   rŠ   s      r;   r<   zTypeJoinVisitor.__init__  s   € ØˆŒØ.ˆÕr=   c                ó4   — t        t        j                  «      S r8   )r   r&   Úspecial_form©r:   r\   s     r;   Úvisit_unbound_typez"TypeJoinVisitor.visit_unbound_type  s   € Ü”y×-Ñ-Ó.Ð.r=   c                óˆ   — t        | j                  |«      r|S t        j                  j	                  | j                  |g«      S r8   )r   r]   r�   rŽ   Úmake_simplified_unionrš   s     r;   Úvisit_union_typez TypeJoinVisitor.visit_union_type  s2   € Ü˜TŸV™V QÔ'ØˆHä—<‘<×5Ñ5°t·v±v¸q°kÓBÐBr=   c                ó   — |S r8   rƒ   rš   s     r;   Ú	visit_anyzTypeJoinVisitor.visit_any  s   € Øˆr=   c                óF  — t         j                  r†t        | j                  t        t
        f«      r|S t        | j                  t        t        f«      rt        t        j                  «      S t        j                  j                  | j                  |g«      S | j                  S r8   )r   Ústrict_optionalrJ   r]   r   r.   r-   r   r&   r™   r�   rŽ   r�   rš   s     r;   Úvisit_none_typezTypeJoinVisitor.visit_none_type  sm   € Ü× Ò Ü˜$Ÿ&™&¤8¬_Ð"=Ô>Ø�Ü˜DŸF™F¤[´'Ð$:Ô;Üœy×5Ñ5Ó6Ð6ä—|‘|×9Ñ9¸4¿6¹6À1¸+ÓFÐFà—6‘6ˆMr=   c                ó   — | j                   S r8   ©r]   rš   s     r;   Úvisit_uninhabited_typez&TypeJoinVisitor.visit_uninhabited_type#  ó   € Ø�v‰vˆr=   c                ó   — | j                   S r8   r¥   rš   s     r;   Úvisit_deleted_typez"TypeJoinVisitor.visit_deleted_type&  r§   r=   c                ó   — | j                   S r8   r¥   rš   s     r;   Úvisit_erased_typez!TypeJoinVisitor.visit_erased_type)  r§   r=   c                óþ  — t        | j                  t        «      rÉ| j                  j                  |j                  k(  rs| j                  j                  |j                  k(  r| j                  S | j                  j                  t        | j                  j                  |j                  «      ¬«      S t        t        | j                  j                  |j                  «      «      S | j                  | j                  «      S )N)rU   )	rJ   r]   r+   ÚidrU   Úcopy_modifiedrQ   r2   Údefaultrš   s     r;   Úvisit_type_varzTypeJoinVisitor.visit_type_var,  s¬   € Ü�d—f‘fœkÔ*Ø�v‰v�y‰y˜AŸD™DÒ Ø—6‘6×%Ñ%¨¯©Ò6ØŸ6™6�MØ—v‘v×+Ñ+Ü *¨4¯6©6×+=Ñ+=¸q¿}¹}Ó Mð ,ó ð ô #¤:¨d¯f©f×.@Ñ.@À!Ç-Á-Ó#PÓQÐQà—<‘< §¡Ó'Ð'r=   c                óZ   — | j                   |k(  r|S | j                  | j                   «      S r8   )r]   r¯   rš   s     r;   Úvisit_param_specz TypeJoinVisitor.visit_param_spec9  s%   € Ø�6‰6�QŠ;ØˆHØ�|‰|˜DŸF™FÓ#Ð#r=   c                óæ   — | j                   |k(  r|S t        | j                   t        «      r,t        |j                  | j                   «      r| j                   S | j                  | j                   «      S r8   )r]   rJ   r   r   rU   r¯   rš   s     r;   Úvisit_type_var_tuplez$TypeJoinVisitor.visit_type_var_tuple>  sM   € Ø�6‰6�QŠ;ØˆHÜ�d—f‘fœhÔ'¬J°q·}±}ÀdÇfÁfÔ,Mà—6‘6ˆMØ�|‰|˜DŸF™FÓ#Ð#r=   c                ó   — t         ‚r8   )ÚNotImplementedErrorrš   s     r;   Úvisit_unpack_typez!TypeJoinVisitor.visit_unpack_typeF  s   € Ü!Ð!r=   c           
     ó¸  — t        | j                  t        «      r t        || j                  «      s| j	                  | j                  «      S ddlm} |j                  t        | j                  j                  |j                  «      D ��cg c]  \  }} |||«      ‘Œ c}}t        | j                  |«      ¬«      S | j	                  | j                  «      S c c}}w )Nr   ©Ú
meet_types)Ú	arg_typesÚ	arg_names)rJ   r]   r   Úis_similar_paramsr¯   Ú	mypy.meetrº   r®   rN   r»   Úcombine_arg_names)r:   r\   rº   Ús_aÚt_as        r;   Úvisit_parametersz TypeJoinVisitor.visit_parametersI  s§   € Ü�d—f‘fœjÔ)Ü$ Q¨¯©Ô/à—|‘| D§F¡FÓ+Ð+Ý,à—?‘?ä9<¸T¿V¹V×=MÑ=MÈqÏ{É{Ó9[÷Ù-5¨S°#‘J˜s CÕ(óô ,¨D¯F©F°AÓ6ð	 #ó ð ð —<‘< §¡Ó'Ð'ùós   Â
C
c                óÖ  — t        | j                  t        «      rÆ| j                  €t	        «       | _        | j                  j                  || j                  «      }d }|j                  j                  rt        | j                  |«      r|}nB| j                  j                  j                  r"t        || j                  «      r| j                  }|rt        ||«      r|S |S t        | j                  t        «      rY|j                  j                  r#t        |«      }|rt        || j                  «      S t        || j                  j                  «      S t        | j                  t        «      rt        || j                  «      S t        | j                  t        «      rt        || j                  «      S t        | j                  t         «      rt        || j                  «      S t        | j                  t"        «      rt        || j                  «      S t        | j                  t$        «      r"t'        | j                  j(                  |«      r|S | j+                  | j                  «      S r8   )rJ   r]   r   rŠ   r6   rq   rD   rt   r   ru   r   Úunpack_callback_protocolrQ   ra   r'   r%   r!   r   r*   r   rU   r¯   )r:   r\   ÚnominalÚ
structuralÚcalls        r;   Úvisit_instancezTypeJoinVisitor.visit_instanceY  s®  € Ü�d—f‘fœhÔ'Ø×#Ñ#Ð+Ü'5Ó'7�Ô$Ø×*Ñ*×9Ñ9¸!¸T¿V¹VÓDˆGØ*.ˆJØ�v‰v×!Ò!Ô&@ÀÇÁÈÔ&KØ‘
Ø—‘—‘×(Ò(Ô-GÈÈ4Ï6É6Ô-RØ!ŸV™V�
ñ ¤¨7°JÔ!?Ø�ØÐÜ˜Ÿ™¤Ô-Ø�v‰v×!Ò!Ü/°Ó2�ÙÜ% d¨D¯F©FÓ3Ð3Ü˜a §¡§¡Ó1Ð1Ü˜Ÿ™¤Ô)Ü˜a §¡Ó(Ð(Ü˜Ÿ™¤Ô.Ü˜a §¡Ó(Ð(Ü˜Ÿ™¤	Ô*Ü˜a §¡Ó(Ð(Ü˜Ÿ™¤Ô,Ü˜a §¡Ó(Ð(Ü˜Ÿ™Ô 0Ô1´jÀÇÁ×ASÑASÐUVÔ6WØˆHà—<‘< §¡Ó'Ð'r=   c                óš  — t        | j                  t        «      �r„t        || j                  «      røt	        || j                  «      rt        || j                  «      S t        || j                  «      }t        d„ t        |j                  «      D «       «      r t        |j                  | j                  «      S |j                  «       r|j                  «       j                  sE| j                  j                  «       r$| j                  j                  «       j                  sd|_        |S | j                  |}}|j                   r||}}t#        ||«      r|j%                  «       S t#        ||«      r|j%                  «       S t        |j                  | j                  «      S t        | j                  t&        «      rt        || j                  «      S t        | j                  t(        «      rC| j                  j*                  j,                  r#t/        | j                  «      }|rt        ||«      S t        |j                  | j                  «      S )Nc              3  óH   K  — | ]  }t        |t        t        f«      –— Œ y ­wr8   )rJ   r   r.   )Ú.0Útps     r;   ú	<genexpr>z6TypeJoinVisitor.visit_callable_type.<locals>.<genexpr>‚  s$   è ø€ ò àô ˜r¤H¬oÐ#>×?ñùs   ‚ "T)rJ   r]   r   Úis_similar_callablesr   Úcombine_similar_callablesÚjoin_similar_callablesÚanyr3   r»   rQ   ra   Úis_type_objÚtype_objectÚis_abstractÚfrom_type_typeÚ
is_var_argr   r®   r   r   rD   rt   rÄ   )r:   r\   rp   Ús2Út2rÇ   s         r;   Úvisit_callable_typez#TypeJoinVisitor.visit_callable_type|  s£  € Ü�d—f‘fœlÕ+Ü# A t§v¡vÔ.Ü   D§F¡FÔ+Ü4°Q¸¿¹Ó?Ð?Ü/°°4·6±6Ó:�Üñ ä.¨v×/?Ñ/?Ó@ôô ô
 & a§j¡j°$·&±&Ó9Ð9ð —]‘]”_¨¯©«×)DÒ)DØŸ™×*Ñ*Ô,°·±×1CÑ1CÓ1E×1QÒ1Qà,0�FÔ)Ø�àŸ™ �B�Ø—=’=Ø ˜�BÜ˜b "Ô%Ø×+Ñ+Ó-Ð-Ü  BÔ'Ø×+Ñ+Ó-Ð-Ü! !§*¡*¨d¯f©fÓ5Ð5Ü˜Ÿ™¤
Ô+ä˜a §¡Ó(Ð(Ü˜Ÿ™¤Ô)¨d¯f©f¯k©k×.EÒ.EÜ+¨D¯F©FÓ3ˆDÙÜ! ! TÓ*Ð*Ü˜!Ÿ*™* d§f¡fÓ-Ð-r=   c                óR  — g }| j                   }t        |t        «      rµ|j                  D ]f  }|j                  D ]U  }t	        ||«      sŒt        ||«      r|j                  t        ||«      «       Œ8t        ||«      sŒE|j                  |«       ŒW Œh |rt        |«      dk(  r|d   S t        |«      S t        |j                  |j                  «      S t        |t        «      r/|j                  j                  rt!        |«      }|rt        ||«      S t        |j                  |«      S ©Né   r   )r]   rJ   r   rY   rÎ   r   rC   rÏ   r   rR   r   rQ   ra   r   rD   rt   rÄ   )r:   r\   rp   r]   Út_itemÚs_itemrÇ   s          r;   Úvisit_overloadedz TypeJoinVisitor.visit_overloaded¢  sü   € ð: &(ˆØ�F‰FˆÜ�aœÔ&àŸ'™'ò 2�ØŸg™gò 2�FÜ+¨F°FÕ;Ü(¨°Ô8Ø"ŸM™MÔ*CÀFÈFÓ*SÕTÜ'¨°Õ7Ø"ŸM™M¨&Õ1ñ2ð2ñ ä�v“; !Ò#Ø! !™9Ð$ä% fÓ-Ð-Ü˜aŸj™j¨!¯*©*Ó5Ð5Ü˜œ8Ô$¨¯©×);Ò);Ü+¨AÓ.ˆDÙÜ! ! TÓ*Ð*Ü˜!Ÿ*™* aÓ(Ð(r=   c           	     ó†  — t        |j                  «      }t        |j                  «      }|€{|€y|j                  «       |j                  «       k(  rWg }t        |j                  «       «      D ]7  }|j	                  t        |j                  |   |j                  |   «      «       Œ9 |S y|��z|��w|j                  |   }t        |t        «      sJ ‚t        |j                  «      }|j                  |   }	t        |	t        «      sJ ‚t        |	j                  «      }
|j                  «       |j                  «       k(  �r³||k(  �r­|}|j                  «       |z
  dz
  }g }t        |j                  d| |j                  d| «      D ]   \  }}|j	                  t        ||«      «       Œ" t        ||
«      }t        |t        «      r|j	                  t        |«      «       nÄt        |t        «      r4|j                  j                  dk(  r|j	                  t        |«      «       n€t        |
t        «      r|
j                  j                  dk(  sJ ‚|
}nt        |
t        «      sJ ‚|
j                  }|j	                  t        |j                  t!        |«      g¬«      «      «       |rKt        |j                  | d |j                  | d «      D ]   \  }}|j	                  t        ||«      «       Œ" |S |j                  «       dk(  s|j                  «       dk(  �rt        |t        «      rt        |
t        «      sy|j                  j                  dk(  sJ ‚|
j                  j                  dk(  sJ ‚t        |j"                  d   |
j"                  d   «      }t%        |j                  «      D ��cg c]  \  }}||k7  sŒ|‘Œ }}}t%        |j                  «      D ��cg c]  \  }}||k7  sŒ|‘Œ }}}t'        ||z   «      }t        ||«      }t        |j                  |g¬«      «      gS y|�|}|}|}n
|€J ‚|}|}|}|j                  |   }t        |t        «      sJ ‚t        |j                  «      }t        |t        «      sy|j                  «       |j                  «       dz
  k  ry|}|j                  «       |z
  dz
  }t)        t+        |j                  «      ||«      \  }}}g }t        ||j                  d| «      D ]   \  }}|j	                  t        ||«      «       Œ" t'        t-        |«      «      }t        ||j"                  d   «      }|j	                  t        |j                  |g¬«      «      «       |r=t        ||j                  | d «      D ]   \  }}|j	                  t        ||«      «       Œ" |S c c}}w c c}}w )a<  Join two tuple types while handling variadic entries.

        This is surprisingly tricky, and we don't handle some tricky corner cases.
        Most of the trickiness comes from the variadic tuple items like *tuple[X, ...]
        since they can have arbitrary partial overlaps (while *Ts can't be split).
        NrÜ   r?   )rL   r   )r1   rY   ÚlengthÚrangerC   rQ   rJ   r0   r2   rD   rN   r*   r   rW   rK   r®   rB   rL   Ú	enumerateÚjoin_type_listr4   ÚtuplerM   ) r:   r]   r\   Ús_unpack_indexÚt_unpack_indexrY   ÚiÚs_unpackÚ
s_unpackedÚt_unpackÚ
t_unpackedÚ
prefix_lenÚ
suffix_lenÚsiÚtiÚjoinedÚtuple_instanceÚ
mid_joinedÚaÚt_otherÚs_otherÚother_joinedÚvariadicÚunpack_indexÚfixedÚunpackÚunpackedr^   Úmiddler_   ÚfiÚvis                                    r;   Újoin_tupleszTypeJoinVisitor.join_tuples×  s(  € ô -¨Q¯W©WÓ5ˆÜ,¨Q¯W©WÓ5ˆØÐ! nÐ&<Ø�x‰x‹z˜QŸX™X›ZÒ'Ø$&�Ü˜qŸx™x›zÓ*ò E�AØ—L‘L¤¨A¯G©G°A©J¸¿¹À¹
Ó!CÕDðEà�ØØÑ%¨.Ñ*Dà—w‘w˜~Ñ.ˆHÜ˜h¬
Ô3Ð3Ð3Ü(¨¯©Ó7ˆJØ—w‘w˜~Ñ.ˆHÜ˜h¬
Ô3Ð3Ð3Ü(¨¯©Ó7ˆJØ�x‰x‹z˜QŸX™X›ZÓ'¨N¸nÓ,Lð ,�
ØŸX™X›Z¨.Ñ8¸1Ñ<�
Ø�Ü! !§'¡'¨+¨:Ð"6¸¿¹ÀÀÐ8LÓMò 5‘F�B˜Ø—L‘L¤¨B°Ó!3Õ4ð5ä# J°
Ó;�Ü˜fÔ&6Ô7Ø—L‘L¤¨FÓ!3Õ4Ü ¬Ô1°f·k±k×6JÑ6JÐN^Ò6^Ø—L‘L¤¨FÓ!3Õ4ä! *¬hÔ7Ø)Ÿ™×7Ñ7Ð;KÒKÐKÐKØ)3™ä)¨*Ô6FÔGÐGÐGØ)3×)BÑ)B˜Ø—L‘LÜ"Ø*×8Ñ8Ü&:¸>Ó&JÐ%Kð 9ó óôñ Ü"% a§g¡g¨z¨k¨lÐ&;¸Q¿W¹WÀjÀ[À\Ð=RÓ"Sò 9™˜˜BØŸ™¤Z°°BÓ%7Õ8ð9à�Ø�x‰x‹z˜QŠ !§(¡(£*°£/ô # :¬xÔ8¼ZÈ
ÔT\Ô=]ØØ!—‘×/Ñ/Ð3CÒCÐCÐCØ!—‘×/Ñ/Ð3CÒCÐCÐCÜ'¨
¯©¸Ñ(:¸J¿O¹OÈAÑ<NÓO�
Ü)2°1·7±7Ó);×S¡  A¸qÀNÓ?Rš1ÐS�ÑSÜ)2°1·7±7Ó);×S¡  A¸qÀNÓ?Rš1ÐS�ÑSÜ-¨g¸Ñ.?Ó@�Ü'¨
°LÓA�
Ü" :×#;Ñ#;À*ÀÐ#;Ó#NÓOÐPÐPàØÐ%ØˆHØ)ˆLØ‰Eà!Ð-Ð-Ð-ØˆHØ)ˆLØˆEð —‘ Ñ-ˆÜ˜&¤*Ô-Ð-Ð-Ü" 6§;¡;Ó/ˆÜ˜(¤HÔ-ØØ�<‰<‹>˜HŸO™OÓ-°Ñ1Ò1àØ!ˆ
Ø—_‘_Ó&¨Ñ3°aÑ7ˆ
Ü!=Ü�%—+‘+Ó 
¨Jó"
Ñˆ�˜ð ˆÜ˜& (§.¡.°°*Ð"=Ó>ò 	-‰FˆB�Ø�L‰Lœ B¨Ó+Õ,ð	-ä#¤D¨£LÓ1ˆ
Ü 
¨H¯M©M¸!Ñ,<Ó=ˆ
Ø�‰”Z × 6Ñ 6¸Z¸LÐ 6Ó IÓJÔKÙÜ˜f h§n¡n°j°[°\Ð&BÓCò 1‘��BØ—‘œZ¨¨BÓ/Õ0ð1àˆùóQ TùÛSs   Î+V7Î9V7ÏV=Ï&V=c                ó  — t        | j                  t        «      �r=| j                  €t	        «       | _        | j                  j                  t        j                  j                  | j                  «      t        j                  j                  |«      «      }t        |t        «      sJ ‚| j                  | j                  |«      }|�Vt        |«      dk(  r<t        |d   x}t        «      r't        t        |j                  «      x}t        «      r|S t        ||«      S t        | j                  |«      r|S t        || j                  «      r| j                  S |S t!        | j                  t        j                  j                  |«      «      S rÛ   )rJ   r]   r!   rŠ   r6   rq   r�   rŽ   rK   r   r   rR   r0   r2   rD   r   rQ   )r:   r\   ra   rY   Úitemrü   s         r;   Úvisit_tuple_typez TypeJoinVisitor.visit_tuple_typeB  s-  € ô �d—f‘fœiÕ(Ø×#Ñ#Ð+Ü'5Ó'7�Ô$Ø×+Ñ+×:Ñ:Ü—‘×+Ñ+¨D¯F©FÓ3´T·\±\×5PÑ5PÐQRÓ5SóˆHô ˜h¬Ô1Ð1Ð1Ø×$Ñ$ T§V¡V¨QÓ/ˆEØÐ Ü�u“: ’?¤z¸%À¹(Ð2B°$ÄJÔ'OÜ!¬o¸d¿i¹iÓ.HÐ"H (Ì(ÔSà'˜Ü  ¨Ó1Ð1ô % T§V¡V¨QÔ/Ø�HÜ$ Q¨¯©Ô/ØŸ6™6�MØ�ä˜dŸf™f¤d§l¡l×&AÑ&AÀ!Ó&DÓEÐEr=   c                ój  — |j                   xr |j                   }|j                  �|j                  €d}d}nxt        |j                  |j                  «      }|j                   |j                   k7  rd}n<|j                  s|j                  rd}n!t	        |j                  |j                  «       }|||fS )z•Return the type, requiredness, and readonlyness of a join item.

        If the type is None, the item should be omitted from the join keys.
        NT)ÚrequiredÚtyprQ   Úreadonlyr   )r:   Ú	item_namer]   r\   Úis_requiredÚ	join_typeÚis_readonlys          r;   Úresolve_typeddict_itemz&TypeJoinVisitor.resolve_typeddict_itemf  s–   € ð —j‘jÒ/ Q§Z¡Zˆà�5‰5ˆ=˜AŸE™E˜Mð ˆIØ‰Kä" 1§5¡5¨!¯%©%Ó0ˆIà�z‰z˜QŸZ™ZÒ'ð #‘Ø—’˜qŸzšzð #‘ä"/°·±°q·u±uÓ"=Ð=�à˜+ {Ð2Ð2r=   c                ó|  — t        | j                  t        «      rÎi }t        «       }t        «       }| j                  j	                  |«      D ]L  \  }}}| j                  |||«      \  }}	}
|€Œ!|||<   |	r|j                  |«       |
sŒ<|j                  |«       ŒN | j                  j                  «       }| j                  j                  xr |j                  }t        |||||¬«      S t        | j                  t        «      r t        | j                  |j                  «      S | j                  | j                  «      S )N)Ú	is_closed)rJ   r]   r%   ÚsetÚzipallr  ÚaddÚcreate_anonymous_fallbackr  r   rQ   ra   r¯   )r:   r\   rY   Úrequired_keysÚreadonly_keysr  rÞ   rÝ   Ú	item_typer	  r  ra   r  s                r;   Úvisit_typeddict_typez$TypeJoinVisitor.visit_typeddict_typeˆ  s  € Ü�d—f‘fœmÔ,ØˆEÜ›EˆMÜ›EˆMØ-1¯V©V¯]©]¸1Ó-=ò 	5Ñ)�	˜6 6Ø6:×6QÑ6QØ˜v vó7Ñ3�	˜;¨ð Ñ(Ø'0�E˜)Ñ$Ù"Ø%×)Ñ)¨)Ô4Ú"Ø%×)Ñ)¨)Õ4ð	5ð —v‘v×7Ñ7Ó9ˆHØŸ™×(Ñ(Ò8¨Q¯[©[ˆIÜ Ø�} m°XÈôð ô ˜Ÿ™¤Ô)Ü˜dŸf™f a§j¡jÓ1Ð1à—<‘< §¡Ó'Ð'r=   c                ó@  — t        | j                  t        «      r°|| j                  k(  r|S | j                  j                  j                  j
                  rK|j                  j                  j
                  r+t        j                  j                  | j                  |g«      S t        | j                  j                  |j                  «      S t        | j                  t        «      r| j                  j                  |k(  r|S t        | j                  |j                  «      S r8   )rJ   r]   r   ra   rD   Úis_enumr�   rŽ   r�   rQ   r   Úlast_known_valuerš   s     r;   Úvisit_literal_typez"TypeJoinVisitor.visit_literal_type¢  s¶   € Ü�d—f‘fœkÔ*Ø�D—F‘FŠ{Ø�Ø�v‰v�‰×#Ñ#×+Ò+°·
±
·±×0GÒ0GÜ—|‘|×9Ñ9¸4¿6¹6À1¸+ÓFÐFÜ˜dŸf™fŸo™o¨q¯z©zÓ:Ð:Ü˜Ÿ™¤Ô)¨d¯f©f×.EÑ.EÈÒ.JØˆHä˜dŸf™f a§j¡jÓ1Ð1r=   c                ó   — J d«       ‚)NzInternal errorrƒ   rš   s     r;   Úvisit_partial_typez"TypeJoinVisitor.visit_partial_type®  s   € ð 	'Ð&Ó&ˆur=   c                óÖ  — t        | j                  t        «      rlt        j                  t	        |j
                  | j                  j
                  «      |j                  | j                  j                  xs |j                  ¬«      S t        | j                  t        «      r/| j                  j                  j                  dk(  r| j                  S | j                  | j                  «      S )N)ÚlineÚis_type_formzbuiltins.type)rJ   r]   r'   Úmake_normalizedrQ   r  r  r  r   rD   rW   r¯   rš   s     r;   Úvisit_type_typezTypeJoinVisitor.visit_type_type³  s—   € Ü�d—f‘fœhÔ'Ü×+Ñ+Ü˜1Ÿ6™6 4§6¡6§;¡;Ó/Ø—V‘VØ!ŸV™V×0Ñ0ÒB°A·N±Nôð ô
 ˜Ÿ™¤Ô)¨d¯f©f¯k©k×.BÑ.BÀoÒ.UØ—6‘6ˆMà—<‘< §¡Ó'Ð'r=   c                ó   — J d|› �«       ‚)Nz!This should be never called, got rƒ   rš   s     r;   Úvisit_type_alias_typez%TypeJoinVisitor.visit_type_alias_type¿  s   € Ø=Ð9¸!¸Ð=Ó=ˆur=   c                óü  — t        |«      }t        |t        «      rt        |«      S t        |t        «      r| j                  |j                  «      S t        |t        «      rt        t        j                  «      S t        |t        «      r.| j                  t        j                  j                  |«      «      S t        |t        «      r| j                  |j                   «      S t        |t"        «      r| j                  |j                   «      S t        |t$        «      r| j                  |j&                  «      S t        |t(        «      r| j                  |j&                  «      S t        t        j                  «      S r8   )r2   rJ   r   rB   r'   r¯   r  r-   r   r&   r™   r!   r�   rŽ   rK   r%   ra   r   r+   rU   r   )r:   r  s     r;   r¯   zTypeJoinVisitor.defaultÂ  s  € Ü˜cÓ"ˆÜ�cœ8Ô$Ü'¨Ó,Ð,Ü˜œXÔ&Ø—<‘< §¡Ó)Ð)Ü˜œ[Ô)Üœ9×1Ñ1Ó2Ð2Ü˜œYÔ'Ø—<‘<¤§¡× ;Ñ ;¸CÓ @ÓAÐAÜ˜œ]Ô+Ø—<‘< §¡Ó-Ð-Ü˜œ\Ô*Ø—<‘< §¡Ó-Ð-Ü˜œ[Ô)Ø—<‘< §¡Ó0Ð0Ü˜œ]Ô+Ø—<‘< §¡Ó0Ð0äœ9×1Ñ1Ó2Ð2r=   r8   )r]   r    rŠ   úInstanceJoiner | Noner~   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\   r0   r~   r0   )r\   r   r~   r    )r\   r   r~   r    )r\   r   r~   r    )r\   r   r~   r    )r]   r!   r\   r!   r~   zlist[Type] | None)r\   r!   r~   r    )r  Ústrr]   r$   r\   r$   r~   ztuple[Type | None, bool, bool])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‚   Ú__doc__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•     s­   „ ñô/ó/óCóó	óóóó(ó$ó
$ó"ó(ó !(óF$.óL3)ójióV"FðH 3Øð 3Ø!.ð 3Ø3@ð 3à	'ó 3óD(ó4
2ó'ó

(ó>ô3r=   r•   c                óÞ  — t        | «      } t        |«      }t        | t        «      rÇt        |t        «      sy| j                  j                  |j                  j                  k7  rI| j                  j
                  dk7  r0|j                  j
                  dk7  r| j                  j                   S t        | j                  j                  «      t        |j                  j                  «      kD  ryy)NTzbuiltins.objectF)r2   rJ   r   rD   rt   rW   rR   Úmro©r\   r]   s     r;   ru   ru   Ø  s¥   € ô 	˜Ó€AÜ˜Ó€Aä�!”XÔÜ˜!œXÔ&ØØ�6‰6×Ñ §¡×!3Ñ!3Ò3Ø�v‰v�‰Ð"3Ò3¸¿¹¿¹ÐK\Ò8\àŸ6™6×-Ñ-Ð-Ð-äˆq�v‰v�z‰z‹?œS §¡§¡›_Ò,ØØr=   c                ó¢   — t        | t        t        f«      r| j                  «       } t        |t        t        f«      r|j                  «       }| |fS r8   )rJ   r   r   Úwith_unpacked_kwargsr†   s     r;   r“   r“   ë  sE   € Ü�!”l¤JÐ/Ô0Ø×"Ñ"Ó$ˆÜ�!”l¤JÐ/Ô0Ø×"Ñ"Ó$ˆØˆaˆ4€Kr=   c                óÄ   — t        | j                  «      t        |j                  «      k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S )zcReturn True if t and s have identical numbers of
    arguments, default arguments and varargs.
    )rR   r»   Úmin_argsrÖ   r*  s     r;   rÎ   rÎ   ó  sM   € ô
 	ˆA�K‰KÓœC §¡Ó,Ñ,ò 	)Ø�J‰J˜!Ÿ*™*Ñ$ò	)à�L‰L˜AŸL™LÑ(ðr=   c                óÜ   — t        | j                  «      t        |j                  «      k(  xr@ | j                  |j                  k(  xr% | j                  «       d u|j                  «       d uk(  S r8   )rR   r»   r.  Úvar_argr*  s     r;   r½   r½   þ  s]   € ô 	ˆA�K‰KÓœC §¡Ó,Ñ,ò 	CØ�J‰J˜!Ÿ*™*Ñ$ò	Cà�Y‰Y‹[ Ð$¨!¯)©)«+¸TÐ*AÑBðr=   c                óâ   — i }g }t        | j                  |«      D ]7  \  }}|j                  |¬«      }|j                  |«       |||j                  <   Œ9 t        | |«      j                  |¬«      S )N)r­   )Ú	variables)rN   r2  r®   rC   r­   r   )ÚcÚidsÚtv_mapÚtvsÚtvÚnew_idÚnew_tvs          r;   Úupdate_callable_idsr:    ss   € Ø€FØ
€CÜ˜!Ÿ+™+ sÓ+ò ‰
ˆˆFØ×!Ñ! VÐ!Ó,ˆØ�
‰
�6ÔØˆˆr�u‰uŠðô �q˜&Ó!×/Ñ/¸#Ð/Ó>Ð>r=   c                ón  — t        t        | j                  «      t        |j                  «      «      }t        t        | j                  «      t        |j                  «      «      }|dk(  r| |fS t	        |«      D �cg c]  }t        j                  d¬«      ‘Œ }}t        | |«      t        ||«      fS c c}w )Nr   )Ú
meta_level)ÚmaxrR   r2  Úminrâ   r(   Únewr:  )r\   r]   Úmax_lenÚmin_lenÚ_Únew_idss         r;   Úmatch_generic_callablesrD    s�   € ô ”#�a—k‘kÓ"¤C¨¯©Ó$4Ó5€GÜ”#�a—k‘kÓ"¤C¨¯©Ó$4Ó5€GØ�!‚|Ø�!ˆtˆÜ49¸'³NÖC¨qŒy�}‰}¨Ö*ÐC€GÐCä˜q 'Ó*Ô,?ÀÀ7Ó,KÐKÐKùò Ds   Á;B2c                ó>  — t        | |«      \  } }g }t        t        | j                  «      «      D ]7  }|j	                  t        | j                  |   |j                  |   «      «       Œ9 | j                  j                  j                  dk(  r| j                  }n|j                  }d }| j                  �,|j                  � t        | j                  |j                  «      }| j                  |t        | |«      t        | j                  |j                  «      ||d ¬«      S ©Nzbuiltins.function)r»   r¼   Úret_typeÚinstance_typera   Úname)rD  râ   rR   r»   rC   Ú	safe_meetra   rD   rW   rH  rQ   r®   r¿   rG  ©r\   r]   r»   rè   ra   rH  s         r;   rÐ   rÐ   "  sð   € Ü" 1 aÓ(�D€A€qØ€IÜ”3�q—{‘{Ó#Ó$ò DˆØ×Ñœ 1§;¡;¨q¡>°1·;±;¸q±>ÓBÕCðDð
 	‡z�z‡�×ÑÐ#6Ò6Ø—:‘:‰à—:‘:ˆØ€MØ‡�Ð" q§¡Ð'BÜ" 1§?¡?°A·O±OÓDˆØ�?‰?ØÜ# A qÓ)Ü˜AŸJ™J¨¯
©
Ó3Ø#ØØð ó ð r=   c                ó  — t        | t        «      st        |t        «      st        | |«      S t        | t        «      r9t        |t        «      r)t        t        | j                  |j                  «      «      S t	        t        | «      «      S r8   )rJ   r0   rQ   rD   r…   r2   r*  s     r;   Ú	safe_joinrM  ;  sa   € ô �aœÔ$¬Z¸¼:Ô-FÜ˜!˜QÓÐÜ�!”ZÔ ¤Z°´:Ô%>Üœ* Q§V¡V¨Q¯V©VÓ4Ó5Ð5Ü"¤?°1Ó#5Ó6Ð6r=   c                ór  — ddl m} t        | t        «      st        |t        «      s	 || |«      S t        | t        «      rït        |t        «      rßt	        | j
                  «      }t        |t        «      r|j                  j
                  }n^t        |t        «      r|j                  j
                  }n7t        |t        «      r|j
                  j                  dk(  sJ ‚|j
                  } || j
                  |j
                  «      }t        |t        «      rt        ||g«      }t        |«      S t        «       S )Nr   r¹   r?   )r¾   rº   rJ   r0   r2   rD   r*   rK   r!   Úpartial_fallbackr   rW   r.   )r\   r]   rº   rü   Úfallback_typer|   s         r;   rJ  rJ  E  sç   € å$ä�aœÔ$¬Z¸¼:Ô-FÙ˜!˜QÓÐÜ�!”ZÔ ¤Z°´:Ô%>Ü" 1§6¡6Ó*ˆÜ�hÔ 0Ô1Ø$×3Ñ3×8Ñ8‰MÜ˜¤)Ô,Ø$×5Ñ5×:Ñ:‰Mä˜h¬Ô1°h·m±m×6LÑ6LÐP`Ò6`Ð`Ð`Ø$ŸM™MˆMÙ˜Ÿ™ §¡Ó(ˆÜ�cœ?Ô+Ü˜=¨3¨%Ó0ˆCÜ˜#‹ÐÜÓÐr=   c                ó>  — t        | |«      \  } }g }t        t        | j                  «      «      D ]7  }|j	                  t        | j                  |   |j                  |   «      «       Œ9 | j                  j                  j                  dk(  r| j                  }n|j                  }d }| j                  �,|j                  � t        | j                  |j                  «      }| j                  |t        | |«      t        | j                  |j                  «      ||d ¬«      S rF  )rD  râ   rR   r»   rC   rM  ra   rD   rW   rH  rQ   r®   r¿   rG  rK  s         r;   rÏ   rÏ   [  sð   € Ü" 1 aÓ(�D€A€qØ€IÜ”3�q—{‘{Ó#Ó$ò DˆØ×Ñœ 1§;¡;¨q¡>°1·;±;¸q±>ÓBÕCðDð 	‡z�z‡�×ÑÐ#6Ò6Ø—:‘:‰à—:‘:ˆØ€MØ‡�Ð" q§¡Ð'BÜ" 1§?¡?°A·O±OÓDˆØ�?‰?ØÜ# A qÓ)Ü˜AŸJ™J¨¯
©
Ó3Ø#ØØð ó ð r=   c                óT  — t        | j                  «      }g }t        |«      D ]‚  }| j                  |   }|j                  |   }||k(  s:| j                  |   j                  «       s|j                  |   j                  «       r|j                  |«       Œr|j                  d«       Œ„ |S )aL  Produces a list of argument names compatible with both callables.

    For example, suppose 't' and 's' have the following signatures:

    - t: (a: int, b: str, X: str) -> None
    - s: (a: int, b: str, Y: str) -> None

    This function would return ["a", "b", None]. This information
    is then used above to compute the join of t and s, which results
    in a signature of (a: int, b: str, str) -> None.

    Note that the third argument's name is omitted and 't' and 's'
    are both valid subtypes of this inferred signature.

    Precondition: is_similar_types(t, s) is true.
    N)rR   r»   râ   r¼   Ú	arg_kindsÚis_namedrC   )r\   r]   Únum_argsÚ	new_namesrè   Út_nameÚs_names          r;   r¿   r¿   u  s–   € ô& �1—;‘;Ó€HØ€IÜ�8‹_ò #ˆØ—‘˜Q‘ˆØ—‘˜Q‘ˆØ�VÒ˜qŸ{™{¨1™~×6Ñ6Ô8¸A¿K¹KÈ¹N×<SÑ<SÔ<UØ×Ñ˜VÕ$à×Ñ˜TÕ"ð#ð Ðr=   c                óL   — t        | j                  j                  d   g «      }|S )z;Construct the type 'builtins.object' from an instance type.éÿÿÿÿ)r   rD   r)  )Úinstancer|   s     r;   rB   rB   ”  s$   € ô �8—=‘=×$Ñ$ RÑ(¨"Ó
-€CØ€Jr=   c                óÜ  — t        | t        «      rt        | «      S t        | t        t        t
        f«      rt        | j                  «      S t        | t        «      rt        | j                  «      S t        | t        «      rt        | j                  «      S t        | t        «      r/t        | j                  t        «      rt        | j                  «      S t        | t        «      rB| j                   D ]2  }t        |t        «      sŒt        |«      }t        |t        «      sŒ0|c S  n.t        | t"        «      rt        t%        | j&                  «      «       t)        t*        j,                  «      S r8   )rJ   r   rB   r   r%   r   ra   r!   rO  r'   r…   r  r)   rU   r    r/   rY   r0   r2   rD   r   r&   Úimplementation_artifact)r  r  Ú	candidates      r;   r…   r…   ›  s  € ô �#”xÔ Ü# CÓ(Ð(Ü	�Cœ,¬´{ÐCÔ	DÜ# C§L¡LÓ1Ð1Ü	�CœÔ	#Ü# C×$8Ñ$8Ó9Ð9Ü	�CœÔ	"Ü& s§x¡xÓ0Ð0Ü	�CœÔ	)¬j¸¿¹Ì*Ô.UÜ& s§¡Ó7Ð7Ü	�CœÔ	#Ø—I‘Iò 	%ˆDÜ˜$¤
Õ+Ü3°DÓ9�	Ü˜i¬Õ2Ø$Ò$ñ		%ô
 
�CœÔ	$Ü¤°·±Ó 9Ô:Ü”9×4Ñ4Ó5Ð5r=   c                óT   — | s
t        «       S | d   }| dd  D ]  }t        ||«      }Œ |S )Nr   rÜ   )r.   rQ   )Útypesrñ   r\   s      r;   rä   rä   ³  s?   € Ùô Ó Ð Ø�1‰X€FØ�1�2ˆYò 'ˆÜ˜F AÓ&‰ð'à€Mr=   c                ó˜   — | j                   j                  sJ ‚| j                   j                  dgk(  rt        t	        d| | d¬«      «      S y )NÚ__call__T)Úis_operator)rD   rt   Úprotocol_membersr2   r   )r\   s    r;   rÄ   rÄ   ¾  sB   € Ø�6‰6×ÒÐÐØ‡v�v×Ñ : ,Ò.Üœ{¨:°q¸!ÈÔNÓOÐOØr=   )r]   r"   r\   r"   r~   r"   r8   )r]   r    r\   r    rŠ   r%  r~   r    )r]   r"   r\   r"   rŠ   r%  r~   r"   )r\   r"   r]   r"   r~   Úbool)r]   r    r\   r    r~   ztuple[ProperType, ProperType])r\   r   r]   r   r~   re  )r\   r   r]   r   r~   re  )r3  r   r4  zlist[TypeVarId]r~   r   )r\   r   r]   r   r~   z!tuple[CallableType, CallableType])r\   r   r]   r   r~   r   )r\   r"   r]   r"   r~   r"   )r\   úCallableType | Parametersr]   rf  r~   zlist[str | None])r[  r   r~   r   )r  r    r~   r    )r`  zSequence[Type]r~   r"   )r\   r   r~   zProperType | None)Qr'  Ú
__future__r   Úcollections.abcr   Útypingr   Úmypy.typeopsr�   Úmypy.expandtyper   Úmypy.maptyper   Ú
mypy.nodesr   r	   r
   r   r   Ú
mypy.stater   Úmypy.subtypesr   r   r   r   r   r   Ú
mypy.typesr   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/   r0   r1   r2   r3   r4   r6   r‡   rQ   r•   ru   r“   rÎ   r½   r:  rD  rÐ   rM  rJ  rÏ   r¿   rB   r…   rä   rÄ   rƒ   r=   r;   ú<module>rq     s2  ðÙ 9å "å $Ý ã Ý 'Ý 2ß XÕ XÝ ÷÷ ÷"÷ "÷ "÷ "÷ "÷ "÷ "÷ "õ "÷JIñ IóX;ð 
àKOðØðØ ðØ3Hðàòó 
ðð
 
Û \ó 
Ø \ô$9ôNT3�k *Ñ-ô T3ónó&óóó?óLó"ó27óó,ð4Ø ðØ%>ðàóó>ó6ó0ôr=   