ó
    øÞ j“2  ã                  óÄ   • S SK Jr  S SKrS SKrS SKJr  S SKrS SKrS SKrS SK	r	SSK
Jr  SSKJr  SSKJr  S	S
KJr  \R"                  R$                   " S S\5      5       rg)é    )ÚannotationsN)ÚPathé   )ÚTestBaseé   )Úconfig)Úeq_é   )Úutilc                  ó(  • \ rS rSrSr\R                  " SS9S 5       r\R                  " SS9\R                  S 5       5       r	\R                  S 5       r
\R                  " 5       S	 5       r\R                  S
 5       r\S 5       rS r  SS jrSrg)ÚMypyTesté   )Úno_sqlalchemy2_stubsÚfunction)Úscopec              #  ó@   #   • U R                  5        S h  v•N   g  N7f©N©Ú	_cachedir)Úselfs    ÚZ/var/www/html/gaurav/venv/lib/python3.13/site-packages/sqlalchemy/testing/fixtures/mypy.pyÚper_func_cachedirÚMypyTest.per_func_cachedir   s   é € à—>‘>Ó#×#Ó#ùó   ‚–—Úclassc              #  ó@   #   • U R                  5        S h  v•N   g  N7fr   r   )Úclss    r   ÚcachedirÚMypyTest.cachedir!   s   é € ð —=‘=“?×"Ó"ùr   c              #  ó’  #   • Sn[         R                  " 5        n[        [        U5      S-  S5       nUR	                  SU S35        S S S 5        [        [        U5      S-  S5       nUR	                  SU S35        S S S 5        Uv •  S S S 5        g ! , (       d  f       NQ= f! , (       d  f       N,= f! , (       d  f       g = f7f)	NÚ úsqla_mypy_config.cfgÚwz˜
                    [mypy]

                    plugins = sqlalchemy.ext.mypy.plugin

                    show_error_codes = True

                    z¡
                    disable_error_code = no-untyped-call

                    [mypy-sqlalchemy.*]
                    ignore_errors = True

                    úplain_mypy_config.cfgz^
                    [mypy]

                    show_error_codes = True

                    z®
                    disable_error_code = var-annotated,no-untyped-call
                    [mypy-sqlalchemy.*]
                    ignore_errors = True

                    )ÚtempfileÚTemporaryDirectoryÚopenr   Úwrite)r   Ú	mypy_pathr   Úconfig_files       r   r   ÚMypyTest._cachedir&   sÏ   é € ð ˆ	ä×(Ò(Ô*¨hÜÜ�X“Ð!7Ñ7¸ôàØ×!Ñ!ð 'ð �Kð  ð	
#ô 
÷ô Ü�X“Ð!8Ñ8¸#ôàØ×!Ñ!ð 'ð �Kð  ð#ô ÷ð ŠN÷7 +Ð*÷õ ú÷õ ú÷ +Õ*üsK   ‚CšB6³BÁ	 B6Á)B%Á?B6Â	CÂ
B"	ÂB6Â%
B3	Â/B6Â6
CÃ Cc                ó(   ^^• SSK Jm  SUU4S jjnU$ )Nr   )Úapic           	     ó°  >• Uc  T
nSSSUS[         R                  R                  UU(       a  SOS5      /n[         R                  R                  U 5      n[         R                  R                  X$5      nX:w  a  [        R
                  " X5        UR                  U5        [         R                  R                  SS 5        T	R                  U5      u  pgnXgU4$ )Nz--strictz--raise-exceptionsz--cache-dirz--config-filer"   r$   ÚMYPY_FORCE_COLOR)
ÚosÚpathÚjoinÚbasenameÚshutilÚcopyfileÚappendÚenvironÚpopÚrun)r1   Ú
use_pluginÚuse_cachedirÚargsÚfilenameÚtest_programÚstdoutÚstderrÚexitcoder-   r   s            €€r   r9   Ú!MypyTest.mypy_runner.<locals>.runL   s¼   ø€ ØÑ#Ø'�àØ$ØØØÜ—‘—‘Ø ö &ñ /à4óðˆDô* —w‘w×'Ñ'¨Ó-ˆHÜŸ7™7Ÿ<™<¨Ó?ˆLØÓ#Ü—’ Ô3Ø�K‰K˜Ô%ô �J‰J�N‰NÐ-¨tÔ4à'*§w¡w¨t£}Ñ$ˆF˜HØ 8Ð+Ð+ó    )FN)Úmypyr-   )r   r   r9   r-   s    ` @r   Úmypy_runnerÚMypyTest.mypy_runnerH   s   ù€ å÷#	,ð #	,ðJ ˆ
rC   c                ó   ^ ^• SUU 4S jjnU$ )Nc                ó`   >• TR                  U 5      nT" XS9u  p4nTR                  XX4U5        g )N)r:   )Ú_collect_messagesÚ_check_output)r1   r:   Úexpected_messagesr?   r@   rA   rE   r   s         €€r   r9   Ú)MypyTest.mypy_typecheck_file.<locals>.runu   s8   ø€ Ø $× 6Ñ 6°tÓ <ÐÙ'2°4Ñ'OÑ$ˆF˜HØ×ÑØ¨¸õrC   )F© )r   rE   r9   s   `` r   Úmypy_typecheck_fileÚMypyTest.mypy_typecheck_files   s   ù€ ÷	ð 	ð ˆ
rC   c                óP  • [         R                  R                  U 5      (       a  U nO_[        R                  " 5       S   R
                  n[         R                  R                  [         R                  R                  U5      U 5      n[        [        U5      R                  S5      5      n[        R                  R                   H^  nU(       d  M  [         R                  R                  U5      (       d  M2  UR                  [        U5      U -  R                  S5      5        M`     U$ )Nr   z**/*.py)r0   r1   ÚisabsÚinspectÚstackr=   r2   ÚdirnameÚlistr   Úglobr   ÚoptionsÚmypy_extra_test_pathsÚisdirÚextend)rT   r1   Úcaller_pathÚfilesÚ	extra_dirs        r   Úfile_combinationsÚMypyTest.file_combinations~   sº   € ä�7‰7�=‰=˜×!Ñ!Ø‰Dä!Ÿ-š-›/¨!Ñ,×5Ñ5ˆKÜ—7‘7—<‘<¤§¡§¡°Ó <¸gÓFˆDÜ”T˜$“Z—_‘_ YÓ/Ó0ˆäŸ™×=Ô=ˆIßˆyœRŸW™WŸ]™]¨9×5Ó5Ø—‘œd 9›o°Ñ7×=Ñ=¸iÓHÖIñ >ð ˆrC   c           
     óò  ^• SSK Jn  / n[        R                  " S5      n[        R                  " S5      n[	        U5       n/ n[        US5       GHˆ  u  mnUR                  U5      n	U	(       au  U	R                  S5      R                  S5      u  p«n[        R                  [        U
5      [        U5      4:  a(  [        R                  " SU	R                  S5      -  5        M”  UR                  U5      n	U	(       Ga±  [        U	R                  S5      5      n[        U	R                  S5      5      n[        U	R                  S	5      5      n[        U	R                  S
5      5      n[        R                  " SSU	R                  S5      5      nU(       a2  [        R                  " SS U5      n[        R                  " SS U5      nU(       aB  U(       d2  [        R                  " SS U5      n[        R                  " SS U5      nS=pÞSU S3nU(       a@  [         R"                  (       a+  US   [        R                  " U(       a  SOSS USS  5      -   nU(       a.  [         R$                  (       a  [        R                  " SS U5      nUR'                  XÞUR)                  5       45        GM^  U(       d  GMh  UR+                  U4S jU 5       5        / US S & GM‹     S S S 5        U$ ! , (       d  f       U$ = f)Nr   )Úmypy_14z0\s*# EXPECTED(_MYPY)?(_RE)?(_ROW)?(_TYPE)?: (.+)z%^#\s*PYTHON_VERSION\s?>=\s?(\d+\.\d+)r   Ú.zRequires python >= %sr   r
   é   z# noqa[:]? ?.*r!   é   zRow\[([^\]]+)\]c                óP   • SU R                  S5       SU R                  S5       S3$ )Nztuple[r   z!, fallback=sqlalchemy.engine.row.r   Ú]©Úgroup©Úms    r   Ú<lambda>Ú,MypyTest._collect_messages.<locals>.<lambda>«   s*   € ¨¨q¯w©w°q«z¨lð ;4Ø45·G±G¸A³J°<¸qñ'BrC   zOptional\[(.*)\]c                ó,   • SU R                  S5       S3$ )NzUnion[r   z, None]rg   ri   s    r   rk   rl   ²   s   € ¨¨q¯w©w°q«z¨l¸'Ñ&BrC   z([\[\]])c                ó*   • SU R                  S5       3$ )NÚ\r   rg   ri   s    r   rk   rl   ¾   s   € ¨Q¨q¯w©w°q«z¨lÑ*;rC   z([\w_]+)c                ó,   • SU R                  S5       S3$ )Nz	(?:.*\.)?r   z\*?rg   ri   s    r   rk   rl   Ç   s   € ¨Y°q·w±w¸q³z°lÀ#Ñ*FrC   TzRevealed type is "Ú"z\b(List|Tuple|Dict|Set)\bz\b(List|Tuple|Dict|Set|Type)\bc                ó@   • U R                  S5      R                  5       $ )Nr   )rh   Úlowerri   s    r   rk   rl   ì   s   €  a§g¡g¨a£j×&6Ñ&6Ô&8rC   zOptional\[(.*?)\]c                ó*   • U R                  S5       S3$ )Nr   z | Nonerg   ri   s    r   rk   rl   õ   s   € ¨¯©°«¨°GÑ&<rC   c              3  ó4   >#   • U H  u  nnnTXU4v •  M     g 7fr   rM   )Ú.0Úis_mypyÚis_reÚexpected_msgÚnums       €r   Ú	<genexpr>Ú-MypyTest._collect_messages.<locals>.<genexpr>ü   s/   øé € ð -ñ 5ñ	Ø#Ø!Ø(ð	 ˜g¨lÕ;ò
 5ùs   ƒ)Úsqlalchemy.ext.mypy.utilra   ÚreÚcompiler'   Ú	enumerateÚmatchrh   Ú	partitionÚsysÚversion_infoÚintr   Ú	skip_testÚboolÚsubr   Úpy39Úpy310r6   ÚstriprZ   )r   r1   ra   rK   Úexpected_reÚ	py_ver_reÚfile_Úcurrent_assert_messagesÚlinerj   ÚmajorÚ_Úminorrw   rx   Úis_rowÚis_typery   rz   s                     @r   rI   ÚMypyTest._collect_messagesŒ   s‘  ø€ Ý4àÐÜ—j’jØ?ó
ˆô —J’JÐGÓHˆ	Ü�$ŒZ˜5Ø&(Ð#Ü& u¨a×0‘	��TØ—O‘O DÓ)�ÞØ&'§g¡g¨a£j×&:Ñ&:¸3Ó&?‘O�E˜eÜ×'Ñ'¬3¨u«:´s¸5³zÐ*BÓBÜ×(Ò(Ø3°q·w±w¸q³zÑBôñ à×%Ñ% dÓ+�ßÜ" 1§7¡7¨1£:Ó.�GÜ  §¡¨£Ó,�EÜ! !§'¡'¨!£*Ó-�FÜ" 1§7¡7¨1£:Ó.�Gä#%§6¢6Ð*;¸RÀÇÁÈÃÓ#L�LÞÜ')§v¢vØ.ñBà(ó	(˜ô (*§v¢vØ/ÙBØ(ó(˜ö Þ$ô
 ,.¯6ª6Ø +Ù ;Ø ,ó,˜Lô ,.¯6ª6Ø +Ù FØ ,ó,˜Lð0 +/Ð.˜Ø);¸L¸>ÈÐ'K˜æ¤4§9§9ð (4°A¡¼¿ºö $+ñ !=à%Fá8Ø(¨¨Ð,ó:ñ (˜ö ¤4§:§:ô (*§v¢vØ0Ù<Ø(ó(˜ð
 ,×2Ñ2Ø ¨×);Ñ);Ó)=Ð>÷÷ -Ñ,Ø%×,Ñ,ô -ñ 5ó-ô ð 24Ð+©AÓ.ñ] 1÷ ðd !Ð ÷e ŒZðd !Ð ús   ÁI2K'Ê8%K'Ë'
K6c                ó€  • / n[         R                  R                  U5      nU(       Gaz  / nUR                  S5      n	U	(       Ga  U	R	                  S5      n
[
        R                  " SU
5      (       a  UR                  SU
45        OÈ[
        R                  " SU
5      (       aQ  U	(       aI  U	R	                  S5      n[
        R                  " SU5      (       d  U	R                  SU5        OeU	(       a  MI  O[[
        R                  " SU
[
        R                  5      (       a  O/[
        R                  " SU
5      (       a  UR                  S	U
45        U	(       a  GM  U H«  u  pÍpïUR                  S
S5      nU(       d  SOSn[        U5       Hc  u  nu  nnU(       a.  [
        R                  " SU SU SU SU U 3	U5      (       a    O>M>  U SU SU SU U 3UR                  S
S5      ;   d  Mc    O   UR                  U5        M¨  UU	 M­     U(       aM  SR                  U5      n[        SUSS9  U(       a#  SR                  S U 5       5      n[        SUSS9   S5       eU(       a?  [        [        U5       S35        [        SR                  S U 5       5      5         S5       eg US:w  a
  [        X4SS9  [        USUS9  g )NÚ
r   z.+\.py:\d+: error: .*Úerrorz/.+\.py:\d+: note: +(?:Possible overload|def ).*z.+\.py:\d+: note: +def .*z*.+\.py:\d+: note: .*(?:perhaps|suggestion)z.+\.py:\d+: note: .*ÚnoteÚ'rq   z[SQLAlchemy Mypy plugin] r!   z.*z\:z\: Ú:z: z"Couldn't locate expected messages:)Úsepc              3  ó(   #   • U H	  u  pUv •  M     g 7fr   rM   ©rv   r’   Úmsgs      r   r{   Ú)MypyTest._check_output.<locals>.<genexpr>@  s   é € Ð%?¹©f¨a¥cºùó   ‚zRemaining messages:z'expected messages not found, see stdoutz& messages from mypy were not consumed:c              3  ó(   #   • U H	  u  pUv •  M     g 7fr   rM   rŸ   s      r   r{   r¡   F  s   é € Ð9±&©¨¥²&ùr¢   z&errors and/or notes remain, see stdout)r    )r0   r1   r3   Úsplitr8   r~   r�   r6   ÚinsertÚIÚreplacer€   r2   ÚprintÚlenr	   )r   r1   rK   r?   r@   rA   Únot_locatedr=   ÚoutputÚ	raw_linesÚeÚolrz   rw   rx   r    ÚprefixÚidxÚtypÚerrmsgÚmissingÚextras                         r   rJ   ÚMypyTest._check_output  sŒ  € ð ˆÜ—7‘7×#Ñ# DÓ)ˆßð
 ˆFàŸ™ TÓ*ˆIßØ—M‘M !Ó$�Ü—8’8Ð4°a×8Ñ8Ø—M‘M 7¨A ,Õ/Ü—X’XØFÈ÷ñ ö $Ø&Ÿ]™]¨1Ó-˜Ü!ŸxšxÐ(DÀb×IÑIØ%×,Ñ,¨Q°Ô3Ø!÷	 $˜)øô
 —X’XØAÀ1ÄbÇdÁd÷ñ ð Ü—X’XÐ5°q×9Ñ9Ø—M‘M 6¨1 +Ô.÷# ‘)ó& ->Ñ(�˜eØ—k‘k # sÓ+�Þ<CÑ4È�Ü*3°FÖ*;Ñ&�C™˜#˜vÞÜŸ8š8Ø! ( ¨2¨c¨U°#°c°U¸#¸f¸XÀcÀUÐKØ"÷ñ ñ "ñ	ð $˜* A c U¨"¨S¨E°°F°8¸C¸5ÐAØ!Ÿ>™>¨#¨sÓ3õ4ñ ñ +<ð  ×&Ñ& sÔ+ÙØ˜3’Kñ% ->ö( ØŸ)™) KÓ0�ÜÐ:¸GÈÒNÞØ ŸI™IÑ%?¹Ó%?Ó?�EÜÐ/°¸DÒAØGÐGÓG�uæÜœ˜V›˜Ð%KÐLÔMÜ�d—i‘iÑ9±&Ó9Ó9Ô:ØFÐFÓF�uð ð ˜1‹}Ü�f¨$Ò/ä�˜! Ó(rC   rM   N)r?   Ústr)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__requires__r   Úfixturer   Úfixture_classmethodr   r   rE   rN   Ústaticmethodr^   rI   rJ   Ú__static_attributes__rM   rC   r   r   r      sÆ   † à,€Là‡^‚^˜*Ñ%ñ$ó &ð$ð ‡^‚^˜'Ñ"Ø×Ññ#ó  ó #ð#ð ×Ññó  ððB ‡^‚^Óñ(ó ð(ðT ‡^�^ñó ðð ñó ðòz!ðxE)Ø/2÷E)rC   r   )Ú
__future__r   rR   r0   Úpathlibr   r~   r4   rƒ   r%   Úbaser   r!   r   Ú
assertionsr	   r   Úadd_to_markerrD   r   rM   rC   r   Ú<module>rÅ      sU   ðõ #ã Û 	Ý Û 	Û Û 
Û å Ý Ý Ý ð ×Ñ×Ñôs)ˆxó s)ó ñs)rC   