Ë
    ÚqjÅ.  ã                  óÄ   — d dl mZ d dlZd dlZd dlmZ d dlZd dlZd dlZd dl	Z	ddl
mZ ddlmZ ddlmZ d	d
lmZ ej"                  j$                   G d„ de«      «       Zy)é    )ÚannotationsN)ÚPathé   )ÚTestBaseé   )Úconfig)Úeq_é   )Úutilc                  óè   — e Zd ZdZ ej
                  d¬«      d„ «       Z ej
                  d¬«      d„ «       Zd„ Z ej
                  «       d„ «       Z	ej
                  d	„ «       Z
ed
„ «       Zd„ Zd„ Zy)ÚMypyTest)Úno_sqlalchemy2_stubsÚfunction)Úscopec              #  ó@   K  — | j                  «       E d {  –—†  y 7 Œ­w©N©Ú	_cachedir©Úselfs    úa/var/www/html/kelly-backend/venv/lib/python3.12/site-packages/sqlalchemy/testing/fixtures/mypy.pyÚper_func_cachedirzMypyTest.per_func_cachedir   ó   è ø€ à—>‘>Ó#×#Ò#úó   ‚–—Úclassc              #  ó@   K  — | j                  «       E d {  –—†  y 7 Œ­wr   r   r   s    r   ÚcachedirzMypyTest.cachedir!   r   r   c              #  ór  K  — d}t        j                  «       5 }t        t        |«      dz  d«      5 }|j	                  d|› d�«       d d d «       t        t        |«      dz  d«      5 }|j	                  d|› d�«       d d d «       |–— d d d «       y # 1 sw Y   ŒLxY w# 1 sw Y   Œ"xY w# 1 sw Y   y xY w­w)	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   zMypyTest._cachedir%   sÎ   è ø€ àˆ	ä×(Ñ(Ô*¨hÜÜ�X“Ð!7Ñ7¸ôàØ×!Ñ!ðð �Kð  ð	
ô÷ô  Ü�X“Ð!8Ñ8¸#ôàØ×!Ñ!ðð �Kð  ðô
÷ð ŠN÷? +Ð*÷ð ú÷ ð ú÷# +Ð*üsK   ‚B7™B+²BÁ B+Á(BÁ>B+Â
	B7ÂB	ÂB+ÂB(	Â$B+Â+B4Â0B7c                ó$   ‡‡— ddl mŠ dˆˆfd„	}|S )Nr   )Úapic           	     óª  •— |€‰
}ddd|dt         j                  j                  ||rdnd«      g}t         j                  j                  | «      }t         j                  j                  ||«      }| |k7  rt	        j
                  | |«       |j                  |«       t         j                  j                  dd «       ‰	j                  |«      \  }}}|||fS )Nz--strictz--raise-exceptionsz--cache-dirz--config-filer    r"   ÚMYPY_FORCE_COLOR)
ÚosÚpathÚjoinÚbasenameÚshutilÚcopyfileÚappendÚenvironÚpopÚrun)r.   Ú
use_pluginÚuse_cachedirÚargsÚfilenameÚtest_programÚstdoutÚstderrÚexitcoder*   r   s            €€r   r6   z!MypyTest.mypy_runner.<locals>.runN   sÆ   ø€ ØÐ#Ø'�àØ$ØØØÜ—‘—‘Ø ñ &ñ /à4óðˆDô* —w‘w×'Ñ'¨Ó-ˆHÜŸ7™7Ÿ<™<¨°hÓ?ˆLØ�|Ò#Ü—‘  lÔ3Ø�K‰K˜Ô%ô �J‰J�N‰NÐ-¨tÔ4à'*§w¡w¨t£}Ñ$ˆF�F˜HØ˜6 8Ð+Ð+ó    )FN)Úmypyr*   )r   r   r6   r*   s    ` @r   Úmypy_runnerzMypyTest.mypy_runnerJ   s   ù€ åö#	,ðJ ˆ
r?   c                ó   ‡ ‡— dˆˆ fd„	}|S )Nc                ón   •— ‰j                  | «      } ‰| |¬«      \  }}}‰j                  | ||||«       y )N)r7   )Ú_collect_messagesÚ_check_output)r.   r7   Úexpected_messagesr<   r=   r>   rA   r   s         €€r   r6   z)MypyTest.mypy_typecheck_file.<locals>.runw   sA   ø€ Ø $× 6Ñ 6°tÓ <ÐÙ'2°4ÀJÔ'OÑ$ˆF�F˜HØ×ÑØÐ'¨°¸õr?   )F© )r   rA   r6   s   `` r   Úmypy_typecheck_filezMypyTest.mypy_typecheck_fileu   s   ù€ ö	ð ˆ
r?   c                ó(  — t         j                  j                  | «      r| }n^t        j                  «       d   j
                  }t         j                  j                  t         j                  j                  |«      | «      }t        t        |«      j                  d«      «      }t        j                  j                  D ]Q  }|sŒt         j                  j                  |«      sŒ&|j                  t        |«      | z  j                  d«      «       ŒS |S )Nr   z**/*.py)r-   r.   ÚisabsÚinspectÚstackr:   r/   ÚdirnameÚlistr   Úglobr   ÚoptionsÚmypy_extra_test_pathsÚisdirÚextend)rM   r.   Úcaller_pathÚfilesÚ	extra_dirs        r   Úfile_combinationszMypyTest.file_combinations€   s²   € ä�7‰7�=‰=˜Ô!Ø‰Dä!Ÿ-™-›/¨!Ñ,×5Ñ5ˆKÜ—7‘7—<‘<¤§¡§¡°Ó <¸gÓFˆDÜ”T˜$“Z—_‘_ YÓ/Ó0ˆäŸ™×=Ô=ˆIÚœRŸW™WŸ]™]¨9Õ5Ø—‘œd 9›o°Ñ7×=Ñ=¸iÓHÕIð >ð ˆr?   c           
     ó&  ‡— ddl m} g }t        j                  d«      }t        j                  d«      }t	        |«      5 }g }t        |d«      D �])  \  Š}|j                  |«      }	|	rs|	j                  d«      j                  d«      \  }
}}t        j                  t        |
«      t        |«      fk  r't        j                  d|	j                  d«      z  «       Œ�|j                  |«      }	|	�rft        |	j                  d«      «      }t        |	j                  d«      «      }t        |	j                  d	«      «      }t        j                  d
d|	j                  d«      «      }|rk|s_t        j                  dd„ |«      }t        j                  dd„ |«      }t        j                  dd|«      }t        j                  dd„ |«      }dx}}d|› d�}|r5t         j"                  r%|d   t        j                  |rdndd„ |dd  «      z   }|r(t         j$                  rt        j                  dd„ |«      }|j'                  |||j)                  «       f«       �Œ|s�Œ|j+                  ˆfd„|D «       «       g |d d  �Œ, 	 d d d «       |S # 1 sw Y   |S xY w)Nr   )Úmypy_14z)\s*# EXPECTED(_MYPY)?(_RE)?(_TYPE)?: (.+)z%^#\s*PYTHON_VERSION\s?>=\s?(\d+\.\d+)r   Ú.zRequires python >= %sr   r
   z# noqa[:]? ?.*r   é   z([\[\]])c                ó*   — d| j                  d«      › �S )NÚ\r   ©Úgroup©Úms    r   Ú<lambda>z,MypyTest._collect_messages.<locals>.<lambda>¯   s   € ¨Q¨q¯w©w°q«z¨lÑ*;r?   z([\w_]+)c                ó,   — d| j                  d«      › d�S )Nz	(?:.*\.)?r   ú\*?r^   r`   s    r   rb   z,MypyTest._collect_messages.<locals>.<lambda>¸   ó   € ¨Y°q·w±w¸q³z°lÀ#Ñ*Fr?   ÚListzbuiltins.listz\b(int|str|float|bool)\bc                ó,   — d| j                  d«      › d�S )Nz	builtins.r   rd   r^   r`   s    r   rb   z,MypyTest._collect_messages.<locals>.<lambda>Â   re   r?   TzRevealed type is "Ú"z\b(List|Tuple|Dict|Set)\bz\b(List|Tuple|Dict|Set|Type)\bc                ó@   — | j                  d«      j                  «       S )Nr   )r_   Úlowerr`   s    r   rb   z,MypyTest._collect_messages.<locals>.<lambda>Ú   s   €  a§g¡g¨a£j×&6Ñ&6Ô&8r?   zOptional\[(.*?)\]c                ó*   — | j                  d«      › d�S )Nr   z | Noner^   r`   s    r   rb   z,MypyTest._collect_messages.<locals>.<lambda>ã   s   € ¨¯©°«¨°GÑ&<r?   c              3  ó2   •K  — | ]  \  }}}‰|||f–— Œ y ­wr   rG   )Ú.0Úis_mypyÚis_reÚexpected_msgÚnums       €r   Ú	<genexpr>z-MypyTest._collect_messages.<locals>.<genexpr>ê   s2   øè ø€ ð -ñ 5ñ	Ø#Ø!Ø(ð	 ˜g u¨lÔ;ñ
 5ùs   ƒ)Úsqlalchemy.ext.mypy.utilrY   ÚreÚcompiler%   Ú	enumerateÚmatchr_   Ú	partitionÚsysÚversion_infoÚintr   Ú	skip_testÚboolÚsubr   Úpy39Úpy310r3   ÚstriprS   )r   r.   rY   rF   Úexpected_reÚ	py_ver_reÚfile_Úcurrent_assert_messagesÚlinera   ÚmajorÚ_Úminorrn   ro   Úis_typerp   rq   s                    @r   rD   zMypyTest._collect_messagesŽ   st  ø€ Ý4àÐÜ—j‘jÐ!MÓNˆÜ—J‘JÐGÓHˆ	Ü�$ŒZ˜5Ø&(Ð#Ü& u¨a×0‘	��TØ—O‘O DÓ)�ÙØ&'§g¡g¨a£j×&:Ñ&:¸3Ó&?‘O�E˜1˜eÜ×'Ñ'¬3¨u«:´s¸5³zÐ*BÒBÜ×(Ñ(Ø3°q·w±w¸q³zÑBôð à×%Ñ% dÓ+�ÚÜ" 1§7¡7¨1£:Ó.�GÜ  §¡¨£Ó,�EÜ" 1§7¡7¨1£:Ó.�Gä#%§6¡6Ð*;¸RÀÇÁÈÃÓ#L�LÙÙ$ô
 ,.¯6©6Ø +Ù ;Ø ,ó,˜Lô ,.¯6©6Ø +Ù FØ ,ó,˜Lô ,.¯6©6Ø &¨¸ó,˜Lô ,.¯6©6Ø ;Ù FØ ,ó,˜Lð +/Ð.˜ %Ø);¸L¸>ÈÐ'K˜á¤4§9¢9ð (4°A¡¼¿¹ñ $+ñ !=à%Fá8Ø(¨¨Ð,ó:ñ (˜ñ ¤4§:¢:ô (*§v¡vØ0Ù<Ø(ó(˜ð
 ,×2Ñ2Ø  %¨×);Ñ);Ó)=Ð>öó -Ø%×,Ñ,ó -ñ 5ó-ô ð 24Ð+©AÒ.ñy 1÷ ð@ !Ð ÷A ð@ !Ð ús   ¿HJÉ"JÊJc                ó´  — g }t         j                  j                  |«      }|�rg }|j                  d«      }	|	rÑ|	j	                  d«      }
t        j                  d|
«      r|j                  d|
f«       n“t        j                  d|
«      r.|	r{|	j	                  d«      }t        j                  d|«      snS|	rŒ+nOt        j                  d|
t
        j                  «      rn)t        j                  d|
«      r|j                  d	|
f«       |	rŒÑ|D ]–  \  }}}}|j                  d
d«      }|sdnd}t        |«      D ]T  \  }\  }}|r't        j                  d|› d|› d|› d|› |› �	|«      sŒ0 n7|› d|› d|› d|› |› �|j                  d
d«      v sŒT n |j                  |«       Œ”||= Œ˜ |rNdj                  |«      }t        d|d¬«       |r&dj                  d„ |D «       «      }t        d|d¬«       J d«       ‚|r?t        t        |«      › d�«       t        dj                  d„ |D «       «      «       J d«       ‚y |dk7  rt        ||d¬«       t        |d|¬«       y )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Ú'rh   z[SQLAlchemy Mypy plugin] r   z.*z\:z\: Ú:z: z"Couldn't locate expected messages:)Úsepc              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr   rG   ©rm   rˆ   Úmsgs      r   rr   z)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  ó&   K  — | ]	  \  }}|–— Œ y ­wr   rG   r“   s      r   rr   z)MypyTest._check_output.<locals>.<genexpr>1  s   è ø€ Ð9±&©¨¨3¤±&ùr•   z&errors and/or notes remain, see stdout)r”   )r-   r.   r0   Úsplitr5   rt   rw   r3   ÚIÚreplacerv   r/   ÚprintÚlenr	   )r   r.   rF   r<   r=   r>   Únot_locatedr:   ÚoutputÚ	raw_linesÚeÚolrq   rn   ro   r”   ÚprefixÚidxÚtypÚerrmsgÚmissingÚextras                         r   rE   zMypyTest._check_outputö   s\  € ØˆÜ—7‘7×#Ñ# DÓ)ˆÚð
 ˆFàŸ™ TÓ*ˆIÙØ—M‘M !Ó$�Ü—8‘8Ð4°aÔ8Ø—M‘M 7¨A ,Õ/Ü—X‘XØFÈôñ $Ø&Ÿ]™]¨1Ó-˜Ü!Ÿx™xÐ(FÈÔKØ!ó $ô —X‘XØAÀ1ÄbÇdÁdôð Ü—X‘XÐ5°qÔ9Ø—M‘M 6¨1 +Ô.ò! ó$ ->Ñ(��W˜e SØ—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˜f¨$Õ/ä�˜! Ö(r?   N)Ú__name__Ú
__module__Ú__qualname__Ú__requires__r   Úfixturer   r   r   rA   rH   ÚstaticmethodrW   rD   rE   rG   r?   r   r   r      s    „ à,€Là€V‡^�^˜*Ô%ñ$ó &ð$ð €V‡^�^˜'Ô"ñ$ó #ð$ò#ðJ €V‡^�^Óñ(ó ð(ðT ‡^�^ñó ðð ñó ðòf!óPB)r?   r   )Ú
__future__r   rK   r-   Úpathlibr   rt   r1   ry   r#   Úbaser   r   r   Ú
assertionsr	   r   Úadd_to_markerr@   r   rG   r?   r   Ú<module>r²      sU   ðõ #ã Û 	Ý Û 	Û Û 
Û å Ý Ý Ý ð ×Ñ×Ñô^)ˆxó ^)ó ñ^)r?   