Ë
    pPêj �  ã                  ó  — U d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	 ddl
mZmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZmZmZmZm Z m!Z! ddl"m#Z# ddl$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJ ddlKmLZLmMZM ddlNmOZO g d¢ZPdeQd<   g d¢ZRdeQd<    G d„ de«      ZS G d„ deOeS   «      ZTd%d „ZUd&d!„ZVd'd"„ZWd(d#„ZXy$))z?Pattern checker. This file is conceptually part of TypeChecker.é    )Úannotations)Údefaultdict)ÚFinalÚ
NamedTuple)Úmessage_registry)ÚTypeCheckerSharedApiÚ	TypeRange)Úanalyze_member_access)Úexpand_type_by_instance)Ú
join_types)Úliteral_hash)Úmap_instance_to_supertype)Únarrow_declared_type)ÚMessageBuilder)ÚARG_POSÚ
ExpressionÚNameExprÚTempNodeÚ	TypeAliasÚVar)ÚOptions)	Ú	AsPatternÚClassPatternÚMappingPatternÚ	OrPatternÚPatternÚSequencePatternÚSingletonPatternÚStarredPatternÚValuePattern)ÚPlugin)Ú
is_subtype)Úcoerce_to_literalÚmake_simplified_unionÚ"try_getting_str_literals_from_typeÚtuple_fallback)ÚAnyTypeÚFunctionLikeÚInstanceÚNoneTypeÚ
ProperTypeÚ	TupleTypeÚTypeÚTypedDictTypeÚ	TypeOfAnyÚTypeTypeÚTypeVarTupleTypeÚTypeVarTypeÚUninhabitedTypeÚ	UnionTypeÚ
UnpackTypeÚcallable_with_ellipsisÚfind_unpack_in_listÚget_proper_typeÚsplit_with_prefix_and_suffix)Úfill_typevarsÚfill_typevars_with_any)ÚPatternVisitor)úbuiltins.boolúbuiltins.bytearrayúbuiltins.bytesúbuiltins.dictzbuiltins.floatzbuiltins.frozensetzbuiltins.intúbuiltins.listzbuiltins.setúbuiltins.strúbuiltins.tupler   Úself_match_type_names)rB   r?   r>   Únon_sequence_match_type_namesc                  ó,   — e Zd ZU ded<   ded<   ded<   y)ÚPatternTyper-   ÚtypeÚ	rest_typeúdict[Expression, Type]ÚcapturesN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úV/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/checkpattern.pyrG   rG   R   s   … Ø
ƒJØƒOØ$Ô$rQ   rG   c                  óx  — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   de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	 	 	 	 	 	 	 	 	 	 d0d„Zd1d„Zd2d„Z	 	 	 	 	 	 	 	 d3d„Z	 	 	 	 	 	 	 	 d4d„Zd5d„Zd6d „Zd7d!„Zd8d"„Zd9d#„Z	 	 	 	 	 	 d:d$„Zd;d%„Zd<d&„Zy')=ÚPatternCheckerz§Pattern checker.

    This class checks if a pattern can match a type, what the type can be narrowed to, and what
    type capture patterns should be inferred as.
    r   Úchkr   Úmsgr!   Úpluginr   Úsubjectr-   Úsubject_typeú
list[Type]Útype_contextÚself_match_typesÚnon_sequence_match_typesr   Úoptionsc                ó²   — || _         || _        || _        g | _        | j	                  t
        «      | _        | j	                  t        «      | _        || _	        y ©N)
rU   rV   rW   r[   Úgenerate_types_from_namesrD   r\   rE   r]   r^   )ÚselfrU   rV   rW   r^   s        rR   Ú__init__zPatternChecker.__init__t   sT   € ð ˆŒØˆŒØˆŒàˆÔØ $× >Ñ >Ô?TÓ UˆÔØ(,×(FÑ(FÜ)ó)
ˆÔ%ð ˆ�rQ   c                ó’   — | j                   j                  |«       |j                  | «      }| j                   j                  «        |S r`   )r[   ÚappendÚacceptÚpop)rb   Úor[   Úresults       rR   rf   zPatternChecker.accept‚   s:   € Ø×Ñ× Ñ  Ô.Ø—‘˜$“ˆØ×Ñ×ÑÔàˆrQ   c                ón  — | j                   d   }|j                  �#| j                  |j                  |«      }|\  }}}n|t        «       i }}}t	        |«      sR|j
                  �F| j                  j                  |t        |«      g||¬«      \  }}t	        |«      s|||j
                  <   t        |||«      S )Néÿÿÿÿ©Údefault)
r[   Úpatternrf   r3   Úis_uninhabitedÚnamerU   Ú#conditional_types_with_intersectionÚget_type_rangerG   )rb   rh   Úcurrent_typeÚpattern_typeÚtyprI   Útype_mapÚ_s           rR   Úvisit_as_patternzPatternChecker.visit_as_pattern‰   s³   € Ø×(Ñ(¨Ñ,ˆØ�9‰9Ð ØŸ;™; q§y¡y°,Ó?ˆLØ'3Ñ$ˆC�™Hà'3´_Ó5FÈ˜H�ˆCä˜cÔ" q§v¡vÐ'9Ø—X‘X×AÑAØœ~¨cÓ2Ð3°QÀð Bó ‰FˆC�ô " #Ô&Ø#&�˜Ÿ™Ñ ä˜3 	¨8Ó4Ð4rQ   c                ó`  — | j                   d   }g }|j                  D ]G  }| j                  ||«      }|j                  |«       t	        |j
                  «      rŒ<|j                  }ŒI g }|D ]3  }t	        |j
                  «      rŒ|j                  |j
                  «       Œ5 t        t        «      }|d   j                  j                  «       D ]&  \  }}	t        |«      }
||
   j                  ||	f«       Œ( t        |dd  «      D ]Ç  \  }}|j                  j                  «       D ��ch c]  \  }}t        |«      ’Œ }}}|j                  «       |k7  r7| j                  j                  t         j"                  |j                  |   «       |j                  j                  «       D ]&  \  }}	t        |«      }
||
   j                  ||	f«       Œ( ŒÉ i }|j%                  «       D ].  }t'        «       }	|D ]  \  }}t)        |	|g«      }	Œ |	||d   d   <   Œ0 t)        |«      }t+        |||«      S c c}}w )Nrk   r   é   )r[   Úpatternsrf   re   ro   rH   rI   r   ÚlistrK   ÚitemsÚget_varÚ	enumerateÚkeysrV   Úfailr   ÚOR_PATTERN_ALTERNATIVE_NAMESÚvaluesr3   r$   rG   )rb   rh   rs   Úpattern_typesrn   rt   ÚtypesÚcapture_typesÚexprru   ÚnodeÚirw   ÚvarsrK   Úcapture_listÚotherÚ
union_types                     rR   Úvisit_or_patternzPatternChecker.visit_or_patternš   s,  € Ø×(Ñ(¨Ñ,ˆð
 ˆØ—z‘zò 	6ˆGØŸ;™; w°Ó=ˆLØ× Ñ  Ô.Ü! ,×"3Ñ"3Õ4Ø+×5Ñ5‘ð		6ð ˆØ)ò 	0ˆLÜ! ,×"3Ñ"3Õ4Ø—‘˜\×.Ñ.Õ/ð	0ô CNÌdÓBSˆà& qÑ)×2Ñ2×8Ñ8Ó:ò 	4‰IˆD�#Ü˜4“=ˆDØ˜$Ñ×&Ñ&¨¨c {Õ3ð	4ô
  )¨°q°rÐ):Ó;ò 	8‰OˆAˆ|Ø1=×1FÑ1F×1LÑ1LÓ1N×O¡g d¨A”G˜D•MÐOˆDÑOØ×!Ñ!Ó# tÒ+Ø—‘—‘Ô.×KÑKÈQÏZÉZÐXYÉ]Ô[Ø)×2Ñ2×8Ñ8Ó:ò 8‘	��cÜ˜t“}�Ø˜dÑ#×*Ñ*¨D°#¨;Õ7ñ8ð		8ð ,.ˆØ)×0Ñ0Ó2ò 	/ˆLÜ!Ó#ˆCØ(ò :‘��5Ü+¨S°%¨LÓ9‘ð:ð ,/ˆH�\ !‘_ QÑ'Ò(ð	/ô +¨5Ó1ˆ
Ü˜: |°XÓ>Ð>ùó! Ps   Ä(H*c                ó   — | j                   d   }| j                  j                  j                  |j                  «      }t        |«      }t        |«      }| j                  j                  d|t        |«      g||gddgdh«      \  }}|�|j                  ||«      n	t        «       }|�|j                  ||«      n	t        «       }t        ||i «      S )Nrk   z==r   rz   )r[   rU   Úexpr_checkerrf   r‡   r#   r   Ú narrow_type_by_identity_equalityÚgetr3   rG   )	rb   rh   rs   ru   rˆ   Úok_mapÚrest_mapÚok_typerI   s	            rR   Úvisit_value_patternz"PatternChecker.visit_value_patternÌ   sÄ   € Ø×(Ñ(¨Ñ,ˆØ�h‰h×#Ñ#×*Ñ*¨1¯6©6Ó2ˆÜ Ó$ˆÜ˜Ó%ˆð  Ÿ8™8×DÑDØ�4œ #›Ð'¨,¸Ð)<¸qÀ!¸fÀqÀcó
Ñˆ�ð 5;Ð4F�&—*‘*˜T <Ô0ÌOÓL]ˆØ8@Ð8L�H—L‘L  |Ô4ÔRaÓRcˆ	Ü˜7 I¨rÓ2Ð2rQ   c                ó6  — | j                   d   }|j                  }t        |t        «      r'| j                  j
                  j                  |d«      }n|€t        «       }nJ ‚| j                  j                  |t        |«      g||¬«      \  }}t        ||i «      S )Nrk   r=   rl   )r[   ÚvalueÚ
isinstanceÚboolrU   r�   Úinfer_literal_expr_typer*   rq   rr   rG   )rb   rh   rs   r˜   ru   Únarrowed_typerI   s          rR   Úvisit_singleton_patternz&PatternChecker.visit_singleton_patternÚ   s“   € Ø×(Ñ(¨Ñ,ˆØŸW™WˆÜ�eœTÔ"Ø—(‘(×'Ñ'×?Ñ?ÀÀÓW‰CØˆ]Ü“*‰Cà�5à#'§8¡8×#OÑ#OØœ>¨#Ó.Ð/°¸Lð $Pó $
Ñ ˆ�yô ˜=¨)°RÓ8Ð8rQ   c                óB  — t        | j                  d   «      }| j                  |«      s| j                  «       S t	        |j
                  «      D ��cg c]  \  }}t        |t        «      sŒ|‘Œ }}}d }t        |«      dk(  r|d   }nt        |«      dk\  rJ d«       ‚t        |j
                  «      }|�|dz  }t        |t        «      �r^g }g }	i }
|�.|j
                  |   }t        |t        «      sJ ‚|j                  }nd }|j                  D ]Í  }| j                  ||«      \  }}}|j                  |«       |	j                  |«       t        |«      rŒG|j                  «       D ]t  \  }}t        |«      }||
vrg |
|<   ||k(  rBt        |t        «      r2|j                   j"                  dk(  rt        |j$                  d   «      rŒa|
|   j                  |«       Œv ŒÏ t'        t)        |«      t)        |	«      |
j                  «       D ��ci c]  \  }}|t)        |«      “Œ c}}«      S d }t        |t*        «      rï|j                  }t-        |«      }|€<t        |«      |z
  }|dk  r| j                  «       S |dkD  �r†|�€ƒ| j                  «       S g }|D ]\  }t        |t.        «      r9t        |j                   t0        «      rt/        |j                   j2                  «      }|j                  |«       Œ^ |}|j5                  |¬«      }t        |«      dz
  |kD  rë|€é| j                  «       S t        |t6        «      r4t7        t8        j:                  |«      }|gt        |j
                  «      z  }n•t        |t        «      rQ| j<                  j?                  |«      r6| j<                  jA                  ||«      }|gt        |j
                  «      z  }n4| j<                  jC                  d«      }|gt        |j
                  «      z  }g }g }i }| jE                  |||«      }tG        |j
                  |«      D ]Q  \  }}| j                  ||«      }|\  }}} |j                  |«       |j                  |«       | jI                  || «       ŒS | jK                  ||t        |«      |d u«      }!| jK                  ||t        |«      |d u«      }"|}t        |t*        «      r´|€²tM        d	„ |!D «       «      rtO        «       }#nt+        |!|jP                  «      }#tS        d
„ |"D «       «      }$|$t        |"«      k(  rtO        «       }�nL|$t        |"«      dz
  k(  �r:t+        tG        ||"«      D �%�cg c]  \  }%}t        |«      r|%n|‘Œ c}}%|jP                  «      }nùt        |t*        «      rrt+        |!|jP                  «      }&| j<                  jU                  |&tW        |«      g||&¬«      \  }#}'|�¥|t        |«      dz
  k  r”tY        d„ |"D «       «      r‚tO        «       }nwtO        «       }(|!D ]  }t[        |(|«      }(Œ | j]                  ||(«      }#| j<                  jU                  |tW        |#«      g||¬«      \  }#})|�t        |j
                  «      dk(  r|)}t'        |#||«      S c c}}w c c}}w c c}}%w )Nrk   rz   r   é   z/Parser should prevent multiple starred patternsrA   )r}   úbuiltins.objectc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr`   ©ro   ©Ú.0ru   s     rR   ú	<genexpr>z8PatternChecker.visit_sequence_pattern.<locals>.<genexpr>e  s   è ø€ ÒB¨3”> #×&ÑBùó   ‚c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr`   r¢   r£   s     rR   r¥   z8PatternChecker.visit_sequence_pattern.<locals>.<genexpr>j  s   è ø€ Ò"S¸3¤>°#×#6Ñ"Sùr¦   rl   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr`   r¢   )r¤   Úrests     rR   r¥   z8PatternChecker.visit_sequence_pattern.<locals>.<genexpr>ƒ  s   è ø€ ÒJ°œ t×,ÑJùr¦   )/r8   r[   Úcan_match_sequenceÚearly_non_matchr   r{   r™   r   Úlenr4   Úcapturer}   rf   re   ro   r)   rH   ÚfullnameÚargsrG   r$   r,   r7   r5   r1   Úupper_boundÚcopy_modifiedr'   r/   Úfrom_another_anyrU   Útype_is_iterableÚiterable_item_typeÚ
named_typeÚcontract_starred_pattern_typesÚzipÚupdate_type_mapÚexpand_starred_pattern_typesÚanyr3   Úpartial_fallbackÚsumrq   rr   Úallr   Úconstruct_sequence_child)*rb   rh   rs   r‰   ÚpÚstar_positionsÚstar_positionÚrequired_patternsÚmatch_typesÚ
rest_typesÚcaptures_listÚstar_patternÚ	star_exprÚtÚ
match_typerI   rK   r‡   ru   Úp_typr…   Úunpack_indexÚinner_typesÚ	size_diffÚnormalized_inner_typesÚitÚ
inner_typeÚcontracted_new_inner_typesÚcontracted_rest_inner_typesÚcontracted_inner_typesrt   r©   rv   Únew_inner_typesÚrest_inner_typesÚnew_typeÚnum_always_matchÚcurrÚnew_tuple_typerw   Únew_inner_typeÚpossible_rest_types*                                             rR   Úvisit_sequence_patternz%PatternChecker.visit_sequence_patterné   s  € ô ' t×'8Ñ'8¸Ñ'<Ó=ˆØ×&Ñ& |Ô4Ø×'Ñ'Ó)Ð)ä(1°!·*±*Ó(=×_¡  1ÄÈAÌ~ÕA^š!Ð_ˆÑ_Ø$(ˆÜˆ~Ó !Ò#Ø*¨1Ñ-‰MÜ�Ó  AÒ%ØKÐKÓK�5Ü §
¡
›OÐØÐ$Ø Ñ"Ðô
 �l¤IÕ.Ø&(ˆKØ%'ˆJØ:<ˆMàÐ(Ø Ÿz™z¨-Ñ8�Ü! ,´Ô?Ð?Ð?Ø(×0Ñ0‘	à �	à!×'Ñ'ò 8�Ø26·+±+¸aÀÓ2CÑ/�
˜I xØ×"Ñ" :Ô.Ø×!Ñ! )Ô,Ü% jÕ1Ø%-§^¡^Ó%5ò 8™	˜˜cÜ /°Ó 4˜Ø }Ñ4Ø24˜M¨$Ñ/ð ! IÒ-Ü *¨5´(Ô ;Ø %§
¡
× 3Ñ 3°Ò FÜ .¨u¯z©z¸!©}Ô =à$Ø% dÑ+×2Ñ2°3Õ7ñ8ð8ô& Ü% kÓ2Ü% jÓ1ØGT×GZÑGZÓG\×]¹¸¸e�Ô,¨UÓ3Ñ3Ó]óð ð ˆÜ�l¤IÔ.Ø&2×&8Ñ&8ˆKÜ.¨{Ó;ˆLØÐ#Ü Ó,Ð/@Ñ@�	Ø˜q’=Ø×/Ñ/Ó1Ð1Ø “] }Ñ'<Ø×/Ñ/Ó1Ð1à)+Ð&Ø%ò 6�Bô " "¤jÔ1´jÀÇÁÔJZÔ6[Ü'¨¯©×(;Ñ(;Ó<˜Ø*×1Ñ1°"Õ5ð6ð 5�Ø+×9Ñ9Ð@VÐ9ÓW�Ü�{Ó# aÑ'Ð*;Ò;ÀÐ@UØ×/Ñ/Ó1Ð1Ü˜¤gÔ.Ü ¤×!;Ñ!;¸\ÓJˆJØ%˜,¬¨Q¯Z©Z«Ñ8‰KÜ˜¤hÔ/°D·H±H×4MÑ4MÈlÔ4[ØŸ™×4Ñ4°\À1ÓEˆJØ%˜,¬¨Q¯Z©Z«Ñ8‰KàŸ™×,Ñ,Ð->Ó?ˆJØ%˜,¬¨Q¯Z©Z«Ñ8ˆKð
 24Ð"Ø24Ð#Øˆà!%×!DÑ!DØ˜Ð(9ó"
Ðô ˜Ÿ
™
Ð$:Ó;ò 	5‰DˆAˆqØŸ;™; q¨!Ó,ˆLØ".ÑˆC��xØ&×-Ñ-¨cÔ2Ø'×.Ñ.¨tÔ4Ø× Ñ  ¨8Õ4ð	5ð ×;Ñ;Ø&¨´s¸;Ó7GÈÐ]aÐIaó
ˆð  ×<Ñ<Ø'¨¼¸KÓ8HÈ,Ð^bÐJbó
Ðð !ˆ	Ü�l¤IÔ.°<Ð3GÜÑB°/ÔBÔBÜ*Ó,‘ä$ _°l×6SÑ6SÓT�ä"Ñ"SÐBRÔ"SÓSÐØ¤3Ð'7Ó#8Ò8ä+Ó-’	Ø!¤SÐ)9Ó%:¸QÑ%>Ó>ô &ô +.¨kÐ;KÓ*L÷á&˜D $ô !/¨tÔ 4™¸$Ñ>óð !×1Ñ1ó‘	ô ˜¤iÔ0ô ' ¸×8UÑ8UÓVˆNØŸ(™(×FÑFØ¤°Ó!=Ð >ÀÈ>ð Gó ‰KˆH�að Ð)Ø%¬¨[Ó)9¸AÑ)=Ò=ÜÑJÐ9IÔJÔJä+Ó-‘	ä,Ó.ˆNØ&ò A�Ü!+¨N¸CÓ!@‘ðAà×4Ñ4°\À>ÓRˆHØ+/¯8©8×+WÑ+WØœ~¨hÓ7Ð8¸!À\ð ,Xó ,Ñ(ˆHÐ(ð Ð(¬S°·±«_ÀÒ-Aà.�	ä˜8 Y°Ó9Ð9ùóC `ùó^ ^ùóds   ÁZÁ+ZÈ
ZÕZ
c                óÞ  — t        |«      }|��||   }t        |t        «      sJ ‚t        |j                  «      }t        |t
        «      r|j                  j                  dk(  sJ ‚|€9|t        |«      z
  dz   }|d| }||j                  d   g|z  z  }|||dz   d z  }|S t        t        |«      |||z
  «      \  }	}
}g }|
D ]B  }t        |t        «      r|j                  |j                  d   «       Œ2|j                  |«       ŒD t        |	«      t        |«      gz   t        |«      z   S |€|S |d| }t        |«      |z
  }|j                  t        ||||z    «      «       ||||z   d z  }|S )aj  
        Contracts a list of types in a sequence pattern depending on the position of a starred
        capture pattern.

        For example if the sequence pattern [a, *b, c] is matched against types [bool, int, str,
        bytes] the contracted types are [bool, Union[int, str], bytes].

        If star_pos in None the types are returned unchanged.
        NrC   rz   r   )r7   r™   r5   r8   rH   r)   r®   r¬   r¯   r9   Útuplere   r|   r$   )rb   r…   Ústar_posÚnum_required_patternsrË   ÚunpackÚunpackedÚmissingÚ	new_typesÚprefixÚmiddleÚsuffixÚ
new_middleÚmÚstar_lengths                  rR   r¶   z-PatternChecker.contract_starred_pattern_types”  sª  € ô +¨5Ó1ˆØÑ#à˜<Ñ(ˆFÜ˜f¤jÔ1Ð1Ð1Ü& v§{¡{Ó3ˆHä˜h¬Ô1°h·m±m×6LÑ6LÐP`Ò6`Ð`Ð`ØÐØ/´#°e³*Ñ<¸qÑ@�Ø! - <Ð0�	Ø˜hŸm™m¨AÑ.Ð/°'Ñ9Ñ9�	Ø˜U <°!Ñ#3Ð#5Ð6Ñ6�	Ø Ð Ü%AÜ�e“˜hÐ(=ÀÑ(Hó&Ñ"ˆF�F˜Fð ˆJØò )�ô ˜a¤Ô,Ø×%Ñ% h§m¡m°AÑ&6Õ7à×%Ñ% aÕ(ð)ô ˜“<Ô#8¸Ó#DÐ"EÑEÌÈVËÑTÐTàÐØ�Ø˜i˜xÐ(ˆIÜ˜e›*Ð'<Ñ<ˆKØ×ÑÔ2°5¸ÀHÈ{ÑDZÐ3[Ó\Ô]Ø˜˜x¨+Ñ5Ð7Ð8Ñ8ˆIØÐrQ   c           	     óH  — |€|S |rng }t        |«      D ]\  \  }}||k7  st        |«      r|j                  |«       Œ(|j                  t        | j                  j                  d|g«      «      «       Œ^ |S |d| }|t        |«      z
  dz   }	|||   g|	z  z  }|||dz   d z  }|S )zãUndoes the contraction done by contract_starred_pattern_types.

        For example if the sequence pattern is [a, *b, c] and types [bool, int, str] are extended
        to length 4 the result is [bool, int, int, str].
        NrC   rz   )r   ro   re   r5   rU   Únamed_generic_typer¬   )
rb   r…   rß   Ú	num_typesÚoriginal_unpackÚresr‰   rÈ   rä   rê   s
             rR   r¹   z+PatternChecker.expand_starred_pattern_typesÃ  sÊ   € ð ÐØˆLÙð ˆCÜ! %Ó(ò _‘��1Ø˜’=¤N°1Ô$5Ø—J‘J˜q•Mà—J‘Jœz¨$¯(©(×*EÑ*EÐFVÐYZÐX[Ó*\Ó]Õ^ð	_ð
 ˆJØ˜)˜8Ð$ˆ	Ø¤# e£*Ñ,¨qÑ0ˆØ�e˜H‘oÐ&¨Ñ4Ñ4ˆ	Ø�U˜8 a™<˜>Ð*Ñ*ˆ	àÐrQ   c                óÔ   — i }|j                   �9| j                  j                  d| j                  d   g«      }|||j                   <   t	        | j                  d   t        «       |«      S )NrA   rk   )r­   rU   rì   r[   rG   r3   )rb   rh   rK   Ú	list_types       rR   Úvisit_starred_patternz$PatternChecker.visit_starred_patternß  sa   € Ø+-ˆØ�9‰9Ð ØŸ™×3Ñ3°OÀd×FWÑFWÐXZÑF[ÐE\Ó]ˆIØ"+ˆH�Q—Y‘YÑÜ˜4×,Ñ,¨RÑ0´/Ó2CÀXÓNÐNrQ   c                óD  — t        | j                  d   «      }d}i }t        |j                  |j                  «      D ]}  \  }}| j                  |||«      }|€d}| j                  j                  d«      }| j                  ||«      }t        |j                  «      rd}Œb| j                  ||j                  «       Œ |j                  �Ç| j                  j                  d«      }	t        ||	«      rXt        |t         «      rHt#        ||	j                  «      }
| j                  j%                  d«      }t!        ||
j&                  «      }n9| j                  j                  d«      }| j                  j)                  d||g«      }|||j                  <   |}|rw| j                  d   }|j                  sf| j                  j                  d«      }	| j                  j+                  |t-        |	d¬«      g||¬«      \  }}t        |t.        «      s|}n
t1        «       }t3        |||«      S )	Nrk   TFr    ztyping.Mappingr@   ©Úis_upper_boundrl   )r8   r[   r·   r€   rƒ   Úget_mapping_item_typerU   rµ   rf   ro   rH   r¸   rK   r©   r"   r™   r)   r   Úlookup_typeinfor¯   rì   rq   r	   r'   r3   rG   )rb   rh   rs   Ú	can_matchrK   Úkeyr˜   rÐ   rt   ÚmappingÚmapping_instÚdict_typeinforI   Úobject_typeÚ	else_typerÖ   Úif_types                    rR   Úvisit_mapping_patternz$PatternChecker.visit_mapping_patternæ  sð  € Ü& t×'8Ñ'8¸Ñ'<Ó=ˆØˆ	Ø+-ˆÜ˜aŸf™f a§h¡hÓ/ò 		F‰JˆC�Ø×3Ñ3°A°|ÀSÓIˆJØÐ!Ø!�	Ø!ŸX™X×0Ñ0Ð1BÓC�
ØŸ;™; u¨jÓ9ˆLÜ˜l×/Ñ/Ô0Ø!‘	à×$Ñ$ X¨|×/DÑ/DÕEð		Fð �6‰6ÐØ—h‘h×)Ñ)Ð*:Ó;ˆGÜ˜,¨Ô0´ZÀÌhÔ5WÜ8¸ÀwÇ|Á|ÓT�Ø $§¡× 8Ñ 8¸Ó I�Ü$ ]°L×4EÑ4EÓF‘	à"Ÿh™h×1Ñ1Ð2CÓD�Ø ŸH™H×7Ñ7Ø# k°;Ð%?ó�	ð  )ˆH�Q—V‘VÑà ˆ	Ùà×(Ñ(¨Ñ,ˆHØ—6’6àŸ(™(×-Ñ-Ð.>Ó?�Ø%)§X¡X×%QÑ%QØ Ü˜w°uÔ=Ð>ØØ(ð	 &Ró &Ñ"�˜ô " ,´Ô8Ø&‘Hä&Ó(ˆHÜ˜8 Y°Ó9Ð9rQ   c                óH  — t        |«      }t        |t        «      rª| j                  j	                  «       5 }| j
                  j                  j                  ||«      d   }|j                  «       }d d d «       rJ| j                  j	                  «       5 }| j                  |||«      }|j                  «       rd }d d d «       |S S | j                  j	                  «       5  | j                  |||«      }d d d «       |S # 1 sw Y   Œ�xY w# 1 sw Y   S xY w# 1 sw Y   S xY w)Nr   )
r8   r™   r.   rV   Úfilter_errorsrU   r�   Úvisit_typeddict_index_exprÚhas_new_errorsÚget_simple_mapping_item_type)rb   rn   Úmapping_typerù   Úlocal_errorsri   Úhas_local_errorss          rR   rö   z$PatternChecker.get_mapping_item_type  s  € ô ' |Ó4ˆÜ�l¤MÔ2Ø—‘×'Ñ'Ó)ð A¨\Ø&*§h¡h×&;Ñ&;×&VÑ&VØ  #ó'àñ'�ð $0×#>Ñ#>Ó#@Ð ÷	Añ  Ø—X‘X×+Ñ+Ó-ð &°Ø!×>Ñ>¸wÈÐVYÓZ�Fà#×2Ñ2Ô4Ø!%˜÷	&ð ˆˆvˆð —‘×'Ñ'Ó)ñ WØ×:Ñ:¸7ÀLÐRUÓV�÷Wàˆ÷!Að Aú÷&ð ˆú÷Wàˆús#   ¶:C>Â&D
Ã DÃ>DÄ
DÄD!c                ój   — | j                   j                  j                  d||gt        g|«      \  }}|S )NÚ__getitem__)rU   r�   Úcheck_method_call_by_namer   )rb   rn   r  rù   ri   rw   s         rR   r  z+PatternChecker.get_simple_mapping_item_type-  s8   € ð —H‘H×)Ñ)×CÑCØ˜<¨#¨´°	¸7ó
‰	ˆ�ð ˆrQ   c                ó¬  — t        | j                  d   «      }|j                  j                  }t	        |t
        «      rF|j                  s:| j                  j                  t        j                  |«       | j                  «       S | j                  j                  j                  |j                  «      }| j                  ||«      }|€| j                  «       S t!        j"                  |D �cg c]  }|j$                  ‘Œ c}«      }| j                  j'                  ||||¬«      \  }}t)        |«      r| j                  «       S t+        ||«      }	g }
t-        «       }i }t/        |j0                  «      dk7  �r^| j3                  |«      rºt/        |j0                  «      dkD  r*| j                  j                  t        j4                  |«       | j                  |j0                  d   |	«      }t)        |j6                  «      s6t9        |j6                  t;        ||j<                  g«      |j>                  «      S |j>                  }�n“| j                  jA                  «       5 }tC        d||ddd|| j                  ¬«      }|jE                  «       }d d d «       rb| j                  j                  t        jF                  jI                  |jK                  | jL                  «      «      |«       | j                  «       S t        «      }t	        |tN        «      rftQ        |«      }t/        |j0                  «      t/        |«      kD  rS| j                  j                  t        j4                  |«       | j                  «       S d gt/        |j0                  «      z  }tS        ||j0                  «      D ],  \  }}|
jU                  ||f«       |€Œ|jW                  |«       Œ. t-        «       }d}tS        |jX                  |jZ                  «      D ]¨  \  }}|
jU                  ||f«       ||v r<| j                  j                  t        j\                  jI                  |«      |«       d}n?||v r;| j                  j                  t        j^                  jI                  |«      |«       d}|jW                  |«       Œª |r| j                  «       S d}|
D �]Z  \  }}d }| j                  jA                  «       5 }|�tC        ||	|ddd|| j                  ¬«      }nta        tb        jd                  «      }|jE                  «       }d d d «       s|€œta        tb        jd                  «      }|r|jf                  d	k(  sT| j                  j                  t        jh                  jI                  |jK                  | jL                  «      |«      |«       n|�| j                  jk                  ||«      }| j                  ||«      \  }}}t)        |«      rd}�Œ:| jm                  ||«       t)        |«      r�ŒY|}�Œ] |s
to        «       }t9        |||«      S c c}w # 1 sw Y   �Œ¶xY w# 1 sw Y   �ŒxY w)
Nrk   rl   r   rz   Ú__match_args__F)Ú	is_lvalueÚis_superÚis_operatorÚoriginal_typerU   Tr    )8r8   r[   Ú	class_refrˆ   r™   r   Úno_argsrV   r�   r   Ú CLASS_PATTERN_GENERIC_TYPE_ALIASr«   rU   r�   rf   Úget_class_pattern_type_rangesr4   Ú
make_unionÚitemrq   ro   r   Úsetr¬   ÚpositionalsÚshould_self_matchÚ&CLASS_PATTERN_TOO_MANY_POSITIONAL_ARGSrH   rG   r$   rI   rK   r  r
   r  ÚMISSING_MATCH_ARGSÚformatÚstr_with_optionsr^   r,   Úget_match_arg_namesr·   re   ÚaddÚkeyword_keysÚkeyword_valuesÚ(CLASS_PATTERN_KEYWORD_MATCHES_POSITIONALÚ'CLASS_PATTERN_DUPLICATE_KEYWORD_PATTERNr'   r/   Ú
from_errorr®   ÚCLASS_PATTERN_UNKNOWN_KEYWORDÚadd_any_attribute_to_typer¸   r3   ) rb   rh   rs   Ú	type_inforu   Útype_rangesrÈ   rÖ   rI   rœ   Úkeyword_pairsÚmatch_arg_setrK   rt   r  Úmatch_args_typer  Úproper_match_args_typeÚmatch_arg_namesÚarg_nameÚposÚkeyword_arg_setÚhas_duplicatesrù   r˜   rø   Úkeywordrn   Úkey_typerÐ   Úinner_rest_typeÚinner_capturess                                    rR   Úvisit_class_patternz"PatternChecker.visit_class_pattern5  s›  € Ü& t×'8Ñ'8¸Ñ'<Ó=ˆð
 —K‘K×$Ñ$ˆ	Ü�i¤Ô+°I×4EÒ4EØ�H‰H�M‰MÔ*×KÑKÈQÔOØ×'Ñ'Ó)Ð)à�h‰h×#Ñ#×*Ñ*¨1¯;©;Ó7ˆØ×8Ñ8¸¸aÓ@ˆØÐØ×'Ñ'Ó)Ð)Ü×"Ñ"°KÖ#@¨q A§F£FÒ#@ÓAˆà"Ÿh™h×JÑJØ˜+ q°,ð Kó 
Ñˆ�)ô ˜(Ô#Ø×'Ñ'Ó)Ð)ä,¨\¸8ÓDˆð
 ;=ˆÜ"%£%ˆà+-ˆäˆq�}‰}Ó Ó"Ø×%Ñ% cÔ*Ü�q—}‘}Ó%¨Ò)Ø—H‘H—M‘MÔ"2×"YÑ"YÐ[\Ô]Ø#Ÿ{™{¨1¯=©=¸Ñ+;¸]ÓK�Ü% l×&7Ñ&7Ô8Ü&Ø$×)Ñ)Ü-¨y¸,×:PÑ:PÐ.QÓRØ$×-Ñ-óð ð
 (×0Ñ0’à—X‘X×+Ñ+Ó-ð E°Ü&;Ø(ØØØ"'Ø!&Ø$)Ø&)Ø ŸH™Hô	'�Oð (4×'BÑ'BÓ'DÐ$÷Eñ $Ø—H‘H—M‘MÜ(×;Ñ;×BÑBØ×0Ñ0°·±Ó>óð ô	ð  ×/Ñ/Ó1Ð1ä)8¸Ó)IÐ&ÜÐ4´iÔ@Ü&9Ð:PÓ&Q�Oä˜1Ÿ=™=Ó)¬C°Ó,@Ò@ØŸ™Ÿ™Ô&6×&]Ñ&]Ð_`ÔaØ#×3Ñ3Ó5Ð5à'+ f¬s°1·=±=Ó/AÑ&A�Oä%(¨¸!¿-¹-Ó%Hò 4‘M�H˜cØ!×(Ñ(¨(°C¨Ô9ØÑ+Ø%×)Ñ)¨(Õ3ð4ô ›%ˆØˆÜ˜aŸn™n¨a×.>Ñ.>Ó?ò 	%‰JˆC�Ø× Ñ  # u Ô.Ø�mÑ#Ø—‘—‘Ü$×MÑM×TÑTÐUXÓYÐ[`ôð "&‘Ø˜Ñ'Ø—‘—‘Ü$×LÑL×SÑSÐTWÓXÐZ_ôð "&�Ø×Ñ Õ$ð	%ñ Ø×'Ñ'Ó)Ð)ð
 ˆ	Ø -ó #	-ÑˆG�WØ$(ˆHØ—‘×'Ñ'Ó)ð A¨\ØÐ&Ü4ØØ%ØØ"'Ø!&Ø$)Ø&.Ø ŸH™Hô	 ‘Hô  '¤y×';Ñ';Ó<�HØ#/×#>Ñ#>Ó#@Ð ÷Añ   8Ð#3Ü"¤9×#7Ñ#7Ó8�Ù! i×&8Ñ&8Ð<MÒ&MØ—H‘H—M‘MÜ(×FÑF×MÑMØ×0Ñ0°·±Ó>Àóð  õ	ð Ð(Ø#Ÿx™x×AÑAÀ(ÈGÓT�Hà:>¿+¹+ÀgÈxÓ:XÑ7ˆJ˜¨Ü˜jÔ)Ø!’	à×$Ñ$ X¨~Ô>Ü% oÖ6Ø ,’IðG#	-ñJ Ü&Ó(ˆHÜ˜8 Y°Ó9Ð9ùòI $A÷>Eñ Eú÷@Añ Aús   Ã+X7É.X<Ó#A
Y	Ø<YÙ	Y	c                óú  — t        |«      }t        |t        «      r>g }|j                  D ](  }| j	                  ||«      }|€Œ|j                  |«       Œ* |sy |S t        |t        «      r7|j                  «       r't        |j                  «       «      }t        |d¬«      gS t        |j                  j                  t        «      r“|j                  j                  j                  �s|j                  j                  j                  dk(  rP| j                   j#                  d«      }t%        t&        j(                  «      }t+        |||¬«      }t        |d¬«      gS t        |t,        «      r$|j.                  }t        |j.                  d¬«      gS t        |t$        «      rt        |d¬«      gS | j0                  j3                  t4        j6                  j9                  |j;                  | j<                  «      «      |«       y )NFrô   ztyping.Callablezbuiltins.function)Úret_typeÚfallbackT)r8   r™   r4   r}   r  Úextendr(   Úis_type_objr;   Útype_objectr	   r  rˆ   r   rH   r®   rU   rµ   r'   r/   Úunannotatedr6   r0   r  rV   r�   r   ÚCLASS_PATTERN_TYPE_REQUIREDr  r  r^   )	rb   ru   rh   rÊ   r)  r  Ú
type_ranger:  Úany_types	            rR   r  z,PatternChecker.get_class_pattern_type_rangesÊ  s£  € Ü Ó$ˆä�eœYÔ'ØˆKØŸ™ò 3�Ø!×?Ñ?ÀÀaÓH�
ØÑ)Ø×&Ñ& zÕ2ð3ñ ØØÐä�eœ\Ô*¨u×/@Ñ/@Ô/BÜ(¨×):Ñ):Ó)<Ó=ˆCÜ˜c°%Ô8Ð9Ð9ä�q—{‘{×'Ñ'¬Ô-Ø—‘× Ñ ×%Ñ%Ð1Ø—‘× Ñ ×)Ñ)Ð->Ò>ð —x‘x×*Ñ*Ð+>Ó?ˆHÜœy×4Ñ4Ó5ˆHÜ(¨¸HÈxÔXˆCÜ˜c°%Ô8Ð9Ð9Ü�eœXÔ&Ø—*‘*ˆCÜ˜eŸj™j¸Ô>Ð?Ð?Ü�eœWÔ%Ü˜e°EÔ:Ð;Ð;à�‰�‰Ü×8Ñ8×?Ñ?Ø×$Ñ$ T§\¡\Ó2óð ô		
ð rQ   c                ó
  — t        |«      }t        |t        «      r|j                  }t        |t        «      ryt        |t
        «      r|j                  j                  d«      �y| j                  D ]  }t        ||«      sŒ y y)NFr  T)
r8   r™   r,   r»   r'   r)   rH   r’   r\   r"   )rb   ru   rŒ   s      rR   r  z PatternChecker.should_self_matchò  sw   € Ü˜cÓ"ˆÜ�cœ9Ô%Ø×&Ñ&ˆCÜ�cœ7Ô#ØÜ�cœ8Ô$¨¯©¯©Ð6FÓ)GÐ)Sð Ø×*Ñ*ò 	ˆEÜ˜#˜uÕ%Ùð	ð rQ   c                ó.  ‡ — t        |t        «      ryt        |t        «      rt        ˆ fd„|j                  D «       «      S ‰ j
                  D ]  }t        ||d¬«      sŒ y ‰ j                  j                  d«      }t        ||«      xs t        ||«      S )NTc              3  óR   •K  — | ]  }‰j                  t        |«      «      –— Œ  y ­wr`   )rª   r8   )r¤   r  rb   s     €rR   r¥   z4PatternChecker.can_match_sequence.<locals>.<genexpr>  s!   øè ø€ Ò\È$�t×.Ñ.¬¸tÓ/D×EÑ\ùs   ƒ$')Úignore_promotionsFútyping.Sequence)	r™   r'   r4   rº   r}   r]   r"   rU   rµ   )rb   ru   rŒ   Úsequences   `   rR   rª   z!PatternChecker.can_match_sequence  sˆ   ø€ Ü�cœ7Ô#ØÜ�cœ9Ô%ÜÓ\ÐRU×R[ÑR[Ô\Ó\Ð\Ø×2Ñ2ò 	ˆEô ˜#˜u¸Ö=Ùð		ð
 —8‘8×&Ñ&Ð'8Ó9ˆä˜#˜xÓ(ÒE¬J°xÀÓ,EÐErQ   c                óÀ   — g }|D ]-  }	 |j                  | j                  j                  |«      «       Œ/ |S # t        $ r}|j	                  d«      s|‚Y d }~ŒSd }~ww xY w)Nz	builtins.)re   rU   rµ   ÚKeyErrorÚ
startswith)rb   Ú
type_namesr…   rp   Úes        rR   ra   z(PatternChecker.generate_types_from_names  se   € ØˆØò 	ˆDðØ—‘˜TŸX™X×0Ñ0°Ó6Õ7ð	ð ˆøô	 ò à—‘ {Ô3Ø�Gô 4ûðús   ‰*7·	AÁ AÁAc                ó0  — |D �ch c]  }t        |«      ’Œ }}|j                  «       D ]f  \  }}t        |«      |v rOt        |«      }| j                  j	                  t
        j                  j                  |j                  «      |«       Œb|||<   Œh y c c}w r`   )	r   r}   r~   rV   r�   r   ÚMULTIPLE_ASSIGNMENTS_IN_PATTERNr  rp   )rb   Úoriginal_type_mapÚextra_type_mapr‡   Úalready_capturedru   rˆ   s          rR   r¸   zPatternChecker.update_type_map  s�   € ð
 <MÖM°4œL¨Õ.ÐMÐÐMØ'×-Ñ-Ó/ò 	.‰IˆD�#Ü˜DÓ!Ð%5Ñ5Ü˜t“}�Ø—‘—‘Ü$×DÑD×KÑKÈDÏIÉIÓVÐX\õð +.Ð! $Ò'ñ	.ùò Ns   …Bc                óº  — t        |«      }t        |t        «      r.| j                  |j                  |«      }|j                  |¬«      S t        |t        «      r|S t        |t        «      rN|j                  D �cg c].  }| j                  t        |«      «      r| j                  ||«      ‘Œ0 }}t        |«      S | j                  j                  d|g«      }t        || j                  j                  d«      «      rZt        |t        «      rt!        |«      }t        |t"        «      sJ ‚t%        |j&                  «      }t)        ||«      }	t)        |	|«      S |S c c}w )a  
        If outer_type is a child class of typing.Sequence returns a new instance of
        outer_type, that is a Sequence of inner_type. If outer_type is not a child class of
        typing.Sequence just returns a Sequence of inner_type

        For example:
        construct_sequence_child(List[int], str) = List[str]

        TODO: this doesn't make sense. For example if one has class S(Sequence[int], Generic[T])
        or class T(Sequence[Tuple[T, T]]), there is no way any of those can map to Sequence[str].
        )r°   rF  )r8   r™   r2   r¾   r°   r±   r'   r4   r}   rª   r$   rU   rì   r"   rµ   r,   r&   r)   r:   rH   r   )
rb   Ú
outer_typerÐ   Úproper_typeÚ	new_boundr  r…   rG  Ú
empty_typeÚpartial_types
             rR   r¾   z'PatternChecker.construct_sequence_child)  s:  € ô & jÓ1ˆÜ�k¤;Ô/Ø×5Ñ5°k×6MÑ6MÈzÓZˆIØ×,Ñ,¸Ð,ÓCÐCÜ�k¤7Ô+ØÐÜ�k¤9Ô-ð (×-Ñ-öàØ×*Ñ*¬?¸4Ó+@ÔAð ×-Ñ-¨d°JÕ?ðˆEð ô
 )¨Ó/Ð/Ø—8‘8×.Ñ.Ð/@À:À,ÓOˆÜ�j $§(¡(×"5Ñ"5Ð6GÓ"HÔIÜ˜+¤yÔ1Ü,¨[Ó9�Ü˜k¬8Ô4Ð4Ð4Ü& {×'7Ñ'7Ó8ˆJÜ2°:¸xÓHˆLÜ*¨<¸ÓEÐEàˆOùòs   Á:3Ec                óF   — t        t        «       | j                  d   i «      S )Nrk   )rG   r3   r[   )rb   s    rR   r«   zPatternChecker.early_non_matchM  s   € Üœ?Ó,¨d×.?Ñ.?ÀÑ.CÀRÓHÐHrQ   N)
rU   r   rV   r   rW   r!   r^   r   ÚreturnÚNone)rh   r   r[   r-   rY  rG   )rh   r   rY  rG   )rh   r   rY  rG   )rh   r    rY  rG   )rh   r   rY  rG   )rh   r   rY  rG   )r…   rZ   rß   ú
int | Nonerà   ÚintrY  rZ   )
r…   rZ   rß   r[  rí   r\  rî   rš   rY  rZ   )rh   r   rY  rG   )rh   r   rY  rG   )rn   r   r  r-   rù   r   rY  zType | None)rn   r   r  r-   rù   r   rY  r-   )rh   r   rY  rG   )ru   r-   rh   r   rY  zlist[TypeRange] | None©ru   r-   rY  rš   )ru   r+   rY  rš   )rK  z	list[str]rY  rZ   )rO  rJ   rP  rJ   rY  rZ  )rS  r-   rÐ   r-   rY  r-   )rY  rG   )rL   rM   rN   Ú__doc__rO   rc   rf   rx   rŽ   r–   r�   rÜ   r¶   r¹   rò   r   rö   r  r7  r  r  rª   ra   r¸   r¾   r«   rP   rQ   rR   rT   rT   X   s  … ñð 
Óà	ÓàƒNàÓàÓàÓð !Ó ð )Ó(àÓðØ'ðØ.<ðØFLðØW^ðà	óóó5ó"0?ód3ó9ói:ðV-Øð-Ø+5ð-ØNQð-à	ó-ð^ØðØ+5ðØBEðØX\ðà	óó8Oó.:ð`Ø%ðØ59ðØ@Jðà	óð.Ø%ðØ59ðØ@Jðà	óóS:ój&óPóFó	ð.Ø!7ð.ØI_ð.à	ó.ó"ôHIrQ   rT   c                ó®   — g }| j                   D ]C  }t        |«      }|�t        |«      dk7  r|j                  d «       Œ0|j                  |d   «       ŒE |S )Nrz   r   )r}   r%   r¬   re   )ru   r¯   r  rƒ   s       rR   r  r  Q  sW   € Ø€DØ—	‘	ò #ˆÜ3°DÓ9ˆØˆ>œS ›[¨AÒ-Ø�K‰K˜Õà�K‰K˜˜q™	Õ"ð#ð €KrQ   c                óz   — t        | t        «      sJ | «       ‚| j                  }t        |t        «      sJ |«       ‚|S )zx
    Warning: this in only true for expressions captured by a match statement.
    Don't call it from anywhere else
    )r™   r   rˆ   r   )r‡   rˆ   s     rR   r~   r~   \  s<   € ô
 �dœHÔ%Ð+ tÓ+Ð%Ø�9‰9€DÜ�dœCÔ Ð& $Ó&Ð Ø€KrQ   c                óÊ   — t        | «      } t        | t        «      r<| j                  r0t        | j                  j                  t
        «      r| j                  } t        | d¬«      S )NFrô   )r8   r™   r)   Úlast_known_valuer˜   rš   r	   ©ru   s    rR   rr   rr   g  sM   € Ü
˜#Ó
€Cä�3œÔ!Ø× Ò Ü�s×+Ñ+×1Ñ1´4Ô8à×"Ñ"ˆÜ�S¨Ô/Ð/rQ   c                ó4   — t        t        | «      t        «      S r`   )r™   r8   r3   rc  s    rR   ro   ro   r  s   € Ü”o cÓ*¬OÓ<Ð<rQ   N)ru   r,   rY  zlist[str | None])r‡   r   rY  r   )ru   r-   rY  r	   r]  )Yr^  Ú
__future__r   Úcollectionsr   Útypingr   r   Úmypyr   Úmypy.checker_sharedr   r	   Úmypy.checkmemberr
   Úmypy.expandtyper   Ú	mypy.joinr   Úmypy.literalsr   Úmypy.maptyper   Ú	mypy.meetr   Úmypy.messagesr   Ú
mypy.nodesr   r   r   r   r   r   Úmypy.optionsr   Úmypy.patternsr   r   r   r   r   r   r   r   r    Úmypy.pluginr!   Úmypy.subtypesr"   Úmypy.typeopsr#   r$   r%   r&   Ú
mypy.typesr'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   Úmypy.typevarsr:   r;   Úmypy.visitorr<   rD   rO   rE   rG   rT   r  r~   rr   ro   rP   rQ   rR   ú<module>rz     sÐ   ðÚ Eå "å #ß $å !ß ?Ý 2Ý 3Ý  Ý &Ý 2Ý *Ý (ß N× NÝ  ÷
÷ 
õ 
õ Ý $÷ó ÷÷ ÷ ÷ ÷ ñ ÷* @Ý 'ò Ð �uó ò (`Ð ˜uÓ _ô%�*ô %ôvI�^ KÑ0ô vIóróó0ô=rQ   