Ë
    pPêjd5  ã            
      ó  — U d 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
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mZmZ ddl m!Z! ddl"m#Z#m$Z$m%Z% ddl&m'Z' d	Z(d
e)d<   dZ*d
e)d<   dZ+d
e)d<   dZ,d
e)d<   dZ-d
e)d<   e(e+e+e(e-e-e*e,e,e*iZ.d
e)d<   dddddddœZ/d
e)d<   d2d„Z0d3d„Z1d4d„Z2d5d „Z3d6d!„Z4d7d"„Z5d8d#„Z6 ed$e7e8e9e7d%f   «      Z:d9d&„Z;d:d'„Z<d;d(„Z=d<d)„Z>d=d*„Z?d>d+„Z@ G d,„ d-e'«      ZAd>d.„ZB G d/„ d0e'«      ZCy1)?zQUtilities related to determining the reachability of code (in semantic analysis).é    )Úannotations)ÚFinalÚTypeVar)Úliteral)ÚLITERAL_YESÚ
AssertStmtÚBlockÚCallExprÚComparisonExprÚ
ExpressionÚFuncDefÚIfStmtÚImportÚ	ImportAllÚ
ImportFromÚ	IndexExprÚIntExprÚListExprÚ	MatchStmtÚ
MemberExprÚNameExprÚOpExprÚSetExprÚ	SliceExprÚStrExprÚ	TupleExprÚ	UnaryExpr)ÚOptions)Ú	AsPatternÚ	OrPatternÚPattern)ÚTraverserVisitoré   r   ÚALWAYS_TRUEé   Ú	MYPY_TRUEé   ÚALWAYS_FALSEé   Ú
MYPY_FALSEé   ÚTRUTH_VALUE_UNKNOWNÚinverted_truth_mappingú==ú!=ú>ú<ú>=ú<=)r.   r/   r1   r0   r3   r2   Ú
reverse_opc                óÒ  — t        t        | j                  «      «      D ]Æ  }t        | j                  |   |«      }|t        t
        fv rt        | j                  |   «       ŒC|t        t        fv sŒR|t        k(  rt        | j                  |   «       | j                  |dz   d  D ]  }t        |«       Œ | j                  st        g «      | _        t        | j                  «        y  y ©Nr#   )ÚrangeÚlenÚexprÚinfer_condition_valuer(   r*   Úmark_block_unreachableÚbodyr$   r&   Úmark_block_mypy_onlyÚ	else_bodyr	   )ÚsÚoptionsÚiÚresultr<   s        úV/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/reachability.pyÚ"infer_reachability_of_if_statementrD   7   sÀ   € Ü”3�q—v‘v“;Óò ˆÜ& q§v¡v¨a¡y°'Ó:ˆØ”l¤JÐ/Ñ/ä" 1§6¡6¨!¡9Õ-Øœ¤YÐ/Ò/ð œÒ"ô % Q§V¡V¨A¡YÔ/ØŸ™˜q 1™u˜w˜ò -�Ü& tÕ,ð-ð —;’;Ü# B›i�”Ü" 1§;¡;Ô/Ùñ-ó    c                óÂ  — t        | j                  «      D ]Ç  \  }}t        | j                  |   «      }|�t	        ||«      }nt
        }|t        t        fv s|t        t        fv rt        | j                  |   «       n>|t
        t        fv r0|t
        t        fv r"| j                  |dz   d  D ]  }t        |«       Œ |t        k(  sŒ°t        | j                  |   «       ŒÉ y r6   )Ú	enumerateÚguardsÚinfer_pattern_valueÚpatternsr:   r$   r(   r*   r;   Úbodiesr&   r=   )r?   r@   rA   ÚguardÚpattern_valueÚguard_valuer<   s          rC   Ú%infer_reachability_of_match_statementrO   Q   sÕ   € Ü˜aŸh™hÓ'ò .‰ˆˆ5Ü+¨A¯J©J°q©MÓ:ˆàÐÜ/°°wÓ?‰Kä%ˆKàœ\¬:Ð6Ñ6¸+ÜÜðJ
ñ ;
ô
 # 1§8¡8¨A¡;Õ/Øœ{¬IÐ6Ñ6¸;Ì;ÔXaÐJbÑ;bØŸ™  Q¡ Ð)ò -�Ü& tÕ,ð-ð œ)Ó#ô ! §¡¨!¡Õ-ñ+.rE   c                óF   — t        | j                  |«      t        t        fv S ©N)r:   r9   r(   r*   )r?   r@   s     rC   Úassert_will_always_failrR   j   s   € Ü  §¡¨Ó1´lÄJÐ5OÐOÐOrE   c                óN  — t        | t        «      r.| j                  dk(  rt        | j                  |«      }t
        |   S |j                  }d}t        }t        | t        «      r| j                  }�nUt        | t        «      r| j                  }�n7t        | t        «      rü| j                  dvrt        S t        | j                  |«      }t        | j                  |«      }||h}| j                  dk(  rMt        |v rt        S t        |v rt        S ||cxk(  rt         k(  rt         S  |t"        t         hk  rt"        S t        S | j                  dk(  rGt"        |v rt"        S t         |v rt         S ||cxk(  rt        k(  rt        S  |t        t        hk  rt        S t        S t%        | |«      }|t        k(  rt'        | |j(                  «      }|t        k(  rV|dk(  rt"        }|S |dk(  rt        }|S |dk(  s|d	k(  rt        }|S ||j*                  v rt        }|S ||j,                  v rt"        }|S )
a  Infer whether the given condition is always true/false.

    Return ALWAYS_TRUE if always true, ALWAYS_FALSE if always false,
    MYPY_TRUE if true under mypy and false at runtime, MYPY_FALSE if
    false under mypy and true at runtime, else TRUTH_VALUE_UNKNOWN.
    ÚnotÚ )ÚorÚandrV   rW   ÚPY2ÚPY3ÚMYPYÚTYPE_CHECKING)Ú
isinstancer   Úopr:   r9   r-   Úpython_versionr,   r   Únamer   r   ÚleftÚrightr$   r&   r*   r(   Úconsider_sys_version_infoÚconsider_sys_platformÚplatformÚalways_trueÚalways_false)	r9   r@   ÚpositiveÚ	pyversionr_   rB   r`   ra   Úresultss	            rC   r:   r:   n   s  € ô �$œ	Ô" t§w¡w°%Ò'7Ü(¨¯©°GÓ<ˆÜ% hÑ/Ð/à×&Ñ&€IØ€Dä €FÜ�$œÔ!Ø�y‰yŠÜ	�Dœ*Ô	%Ø�y‰yŠÜ	�Dœ&Ô	!Ø�7‰7˜-Ñ'Ü&Ð&ä$ T§Y¡Y°Ó8ˆÜ% d§j¡j°'Ó:ˆØ˜�-ˆØ�7‰7�dŠ?Ü˜gÑ%Ü"Ð"Ü˜gÑ%Ü Ð Ø˜Ô,¤*Ò,Ü!Ð!ð -àœ\¬:Ð6Ò6Ü#Ð#ô #Ð"ð �W‰W˜ÒÜ˜wÑ&Ü#Ð#Ü˜wÑ&Ü!Ð!Ø˜Ô-¤+Ò-Ü"Ð"ð .àœ[¬)Ð4Ò4Ü Ð Ü"Ð"ä*¨4°Ó;ˆØÔ(Ò(Ü*¨4°×1AÑ1AÓBˆFØÔ$Ò$Ø�5Š=Ü!ˆFð €Mð �UŠ]Ü ˆFð €Mð �VŠ^˜t Ò6ÜˆFð
 €Mð	 �W×(Ñ(Ñ(Ü ˆFð €Mð �W×)Ñ)Ñ)Ü!ˆFØ€MrE   c                ó¶   — t        | t        «      r| j                  €t        S t        | t        «      r"t        d„ | j                  D «       «      rt        S t        S )Nc              3  ó@   K  — | ]  }t        |«      t        k(  –— Œ y ­wrQ   )rI   r$   )Ú.0Úps     rC   ú	<genexpr>z&infer_pattern_value.<locals>.<genexpr>°   s    è ø€ ò 0Ø23Ô˜AÓ¤+Õ-ñ0ùs   ‚)r\   r   Úpatternr$   r    ÚanyrJ   r,   )ro   s    rC   rI   rI   ­   sM   € Ü�'œ9Ô%¨'¯/©/Ð*AÜÐÜ	�GœYÔ	'¬Cñ 0Ø7>×7GÑ7Gô0ô -ô Ðä"Ð"rE   c                ó(  — t        | t        «      st        S t        | j                  «      dkD  rt        S | j                  d   }|dvrt        S t        | j                  d   «      }t        | j                  d   «      }|�|€9t        | j                  d   «      }t        | j                  d   «      }t        |   }t        |t        «      r9t        |t        «      r)d|cxk  rdk  rn t        S t        ||   ||«      S t        S t        |t        «      rzt        |t        «      rj|\  }}|€d}|€d}d|cxk  r|cxk  rdk  rLn t        S ||| }t        |«      t        |«      k(  st        |«      t        |«      kD  r|dvrt        |||«      S t        S )z…Consider whether expr is a comparison involving sys.version_info.

    Return ALWAYS_TRUE, ALWAYS_FALSE, or TRUTH_VALUE_UNKNOWN.
    r#   r   )r.   r/   r3   r2   r1   r0   r%   ©r.   r/   )r\   r   r,   r8   Ú	operatorsÚcontains_sys_version_infoÚoperandsÚcontains_int_or_tuple_of_intsr4   ÚintÚfixed_comparisonÚtuple)r9   rh   r]   ÚindexÚthingÚloÚhiÚvals           rC   rb   rb   ¸   s{  € ô �dœNÔ+Ü"Ð"ä
ˆ4�>‰>Ó˜QÒÜ"Ð"Ø	�‰˜Ñ	€BØ	Ð3Ñ3Ü"Ð"ä% d§m¡m°AÑ&6Ó7€EÜ)¨$¯-©-¸Ñ*:Ó;€EØ€}˜˜Ü)¨$¯-©-¸Ñ*:Ó;ˆÜ-¨d¯m©m¸AÑ.>Ó?ˆÜ˜‰^ˆÜ�%œÔ¤*¨U´CÔ"8à�Œ?˜Œ?ô 'Ð&ô $ I¨eÑ$4°b¸%Ó@Ð@ä&Ð&Ü	�Eœ5Ô	!¤j°¼Ô&>Ø‰ˆˆBØˆ:ØˆBØˆ:ØˆBØ�Ô�RÔ˜1Ôô Ðð ˜B˜rÐ"ˆCÜ�3‹xœ3˜u›:Ò%¬¨S«´C¸³JÒ)>À2È\ÑCYÜ'¨¨R°Ó7Ð7ÜÐrE   c                óp  — t        | t        «      r½t        | j                  «      dkD  rt        S | j                  d   }t        | j                  d   d«      st        S | j                  d   }|dv r't        |t        «      rt        |||j                  «      S |dvrt        S t        |«      }|€t        S ||v }|dk(  r| }|rt        S t        S t        | t        «      rÔt        | j                  t        «      st        S t        | j                   «      dk7  st        | j                   d   t        «      st        S t        | j                  j"                  d«      st        S | j                  j$                  dk7  rt        S |j'                  | j                   d   j                  «      rt        S t        S t        S )z�Consider whether expr is a comparison involving sys.platform.

    Return ALWAYS_TRUE, ALWAYS_FALSE, or TRUTH_VALUE_UNKNOWN.
    r#   r   rd   rr   )Úinúnot inr�   Ú
startswith)r\   r   r8   rs   r,   Úis_sys_attrru   r   rx   ÚvalueÚ contains_tuple_or_set_of_stringsr$   r(   r
   Úcalleer   Úargsr9   r_   r‚   )r9   rd   r]   ra   ÚitemsrB   s         rC   rc   rc   ä   sl  € ô �$œÔ'äˆt�~‰~Ó Ò"Ü&Ð&Ø�^‰^˜AÑˆÜ˜4Ÿ=™=¨Ñ+¨ZÔ8Ü&Ð&Ø—‘˜aÑ ˆØ�Ñ¤*¨U´GÔ"<Ü# H¨b°%·+±+Ó>Ð>ØÐ%Ñ%Ü&Ð&Ü0°Ó7ˆØˆ=Ü&Ð&Ø˜UÐ"ˆØ�Š>Ø�ZˆFÙ$Œ{Ð6¬,Ð6Ü	�Dœ(Ô	#Ü˜$Ÿ+™+¤zÔ2Ü&Ð&Üˆt�y‰y‹>˜QÒ¤j°·±¸1±¼wÔ&GÜ&Ð&Ü˜4Ÿ;™;×+Ñ+¨ZÔ8Ü&Ð&Ø�;‰;×Ñ˜|Ò+Ü&Ð&Ø×Ñ˜tŸy™y¨™|×1Ñ1Ô2ÜÐäÐä"Ð"rE   ÚTarg.c                óÄ   — t         t        dœ}|dk(  r|| |k(     S |dk(  r|| |k7     S |dk(  r|| |k     S |dk(  r|| |k\     S |dk(  r|| |k     S |dk(  r|| |kD     S t        S )N)FTr.   r/   r3   r2   r1   r0   )r(   r$   r,   )r`   r]   ra   Úrmaps       rC   rx   rx     s–   € Ü¤{Ñ3€DØ	ˆT‚zØ�D˜E‘MÑ"Ð"Ø	ˆT‚zØ�D˜E‘MÑ"Ð"Ø	ˆT‚zØ�D˜E‘MÑ"Ð"Ø	ˆT‚zØ�D˜E‘MÑ"Ð"Ø	ˆS‚yØ�D˜5‘LÑ!Ð!Ø	ˆS‚yØ�D˜5‘LÑ!Ð!ÜÐrE   c                ó  — t        | t        «      r| j                  S t        | t        «      r]t	        | «      t
        k(  rKg }| j                  D ]/  }t        |t        «      s y |j                  |j                  «       Œ1 t        |«      S y rQ   )	r\   r   r„   r   r   r   rˆ   Úappendry   )r9   r{   Úxs      rC   rv   rv   '  sp   € Ü�$œÔ Ø�z‰zÐÜ�$œ	Ô"Ü�4‹=œKÒ'ØˆEØ—Z‘Zò &�Ü! !¤WÔ-ÙØ—‘˜QŸW™WÕ%ð&ô ˜“<ÐØrE   c                óª   — t        | t        t        t        f«      r8t	        d„ | j
                  D «       «      rt        d„ | j
                  D «       «      S y )Nc              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrQ   )r\   r   ©rl   Úitems     rC   rn   z3contains_tuple_or_set_of_strings.<locals>.<genexpr>6  s   è ø€ ò @Ø&*Œ
�4œ×!ñ@ùs   ‚c              3  óV   K  — | ]!  }t        |t        «      sŒ|j                  –— Œ# y ­wrQ   )r\   r   r„   r‘   s     rC   rn   z3contains_tuple_or_set_of_strings.<locals>.<genexpr>9  s   è ø€ ÒT D¼*ÀTÌ7Õ:S�T—Z•ZÑTùs   ‚)˜))r\   r   r   r   Úallrˆ   ry   )r9   s    rC   r…   r…   5  sG   € Ü�$œ¤G¬XÐ6Ô7¼Cñ @Ø.2¯j©jô@ô =ô ÑT¨D¯J©JÔTÓTÐTØrE   c                ó`  — t        | d«      ryt        | t        «      �rt        | j                  d«      rú| j                  }t        |t
        «      r|j                  S t        |t        «      rÂ|j                  �4t        |j                  t
        «      r|j                  j                  dk7  ry d x}}|j                  �1t        |j                  t
        «      sy |j                  j                  }|j                  �1t        |j                  t
        «      sy |j                  j                  }||fS y )NÚversion_info)NNr#   )rƒ   r\   r   Úbaserz   r   r„   r   ÚstrideÚbegin_indexÚ	end_index)r9   rz   ÚbeginÚends       rC   rt   rt   =  së   € Ü�4˜Ô(ØÜ�$œ	Õ"¤{°4·9±9¸nÔ'MØ—
‘
ˆÜ�eœWÔ%Ø—;‘;ÐÜ�eœYÔ'Ø�|‰|Ð'Ü! %§,¡,´Ô8¸E¿L¹L×<NÑ<NÐRSÒ<SØØÐˆE�CØ× Ñ Ð,Ü! %×"3Ñ"3´WÔ=ØØ×)Ñ)×/Ñ/�Ø�‰Ð*Ü! %§/¡/´7Ô;ØØ—o‘o×+Ñ+�Ø˜3�<ÐØrE   c                óª   — t        | t        «      rC| j                  |k(  r4t        | j                  t        «      r| j                  j                  dk(  ryy)NÚsysTF)r\   r   r_   r9   r   )r9   r_   s     rC   rƒ   rƒ   U  s>   € ô �$œ
Ô#¨¯	©	°TÒ(9Ü�d—i‘i¤Ô*¨t¯y©y¯~©~ÀÒ/Fð ØrE   c                óD   — d| _         | j                  t        «       «       y ©NT)Úis_unreachableÚacceptÚMarkImportsUnreachableVisitor©Úblocks    rC   r;   r;   a  s   € Ø€EÔØ	‡L�LÔ.Ó0Õ1rE   c                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)	r£   zCVisitor that flags all imports nested within a node as unreachable.c                ó   — d|_         y r    ©r¡   ©ÚselfÚnodes     rC   Úvisit_importz*MarkImportsUnreachableVisitor.visit_importi  ó
   € Ø"ˆÕrE   c                ó   — d|_         y r    r¨   r©   s     rC   Úvisit_import_fromz/MarkImportsUnreachableVisitor.visit_import_froml  r­   rE   c                ó   — d|_         y r    r¨   r©   s     rC   Úvisit_import_allz.MarkImportsUnreachableVisitor.visit_import_allo  r­   rE   N©r«   r   ÚreturnÚNone©r«   r   r³   r´   ©r«   r   r³   r´   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r¬   r¯   r±   © rE   rC   r£   r£   f  s   „ ÙMó#ó#ô#rE   r£   c                ó6   — | j                  t        «       «       y rQ   )r¢   ÚMarkImportsMypyOnlyVisitorr¤   s    rC   r=   r=   s  s   € Ø	‡L�LÔ+Ó-Õ.rE   c                  ó0   — e Zd ZdZdd„Zdd„Zd	d„Zd
d„Zy)r½   z8Visitor that sets is_mypy_only (which affects priority).c                ó   — d|_         y r    ©Úis_mypy_onlyr©   s     rC   r¬   z'MarkImportsMypyOnlyVisitor.visit_importz  ó
   € Ø ˆÕrE   c                ó   — d|_         y r    rÀ   r©   s     rC   r¯   z,MarkImportsMypyOnlyVisitor.visit_import_from}  rÂ   rE   c                ó   — d|_         y r    rÀ   r©   s     rC   r±   z+MarkImportsMypyOnlyVisitor.visit_import_all€  rÂ   rE   c                ó   — d|_         y r    rÀ   r©   s     rC   Úvisit_func_defz)MarkImportsMypyOnlyVisitor.visit_func_defƒ  rÂ   rE   Nr²   rµ   r¶   )r«   r   r³   r´   )r·   r¸   r¹   rº   r¬   r¯   r±   rÆ   r»   rE   rC   r½   r½   w  s   „ ÙBó!ó!ó!ô!rE   r½   N)r?   r   r@   r   r³   r´   )r?   r   r@   r   r³   r´   )r?   r   r@   r   r³   Úbool)r9   r   r@   r   r³   rw   )ro   r!   r³   rw   )r9   r   rh   ztuple[int, ...]r³   rw   )r9   r   rd   Ústrr³   rw   )r`   r‰   r]   rÈ   ra   r‰   r³   rw   )r9   r   r³   zNone | int | tuple[int, ...])r9   r   r³   ztuple[str, ...] | None)r9   r   r³   z*None | int | tuple[int | None, int | None])r9   r   r_   rÈ   r³   rÇ   )r¥   r	   r³   r´   )Drº   Ú
__future__r   Útypingr   r   Úmypy.literalsr   Ú
mypy.nodesr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úmypy.optionsr   Úmypy.patternsr   r    r!   Úmypy.traverserr"   r$   Ú__annotations__r&   r(   r*   r,   r-   r4   rD   rO   rR   r:   rI   rb   rc   rw   rÈ   ry   r‰   rx   rv   r…   rt   rƒ   r;   r£   r=   r½   r»   rE   rC   ú<module>rÑ      s:  ðÚ Wå "ç !å !÷÷ ÷ ÷ ÷ ÷ ñ õ2 !ß 7Ñ 7Ý +ð €ˆUÓ Ø€	ˆ5Ó Ø€ˆeÓ Ø€
ˆEÓ ØÐ �UÓ ð �Ø�+ØÐ,ØˆzØ�	ð!Ð ˜ó ð   t°#¸CÀtÐSWÑX€
ˆEÓ Xóó4.ó2Pó<ó~#ó)óX,#ñ^ ˆv�s˜C  s¨C x¡Ó1€óó"óóó0	ó2ô

#Ð$4ô 
#ó/ô!Ð!1õ !rE   