Ë
    6Š·jC)  ã                   ó`  — d dl Z d dlmZ d dlmZ d dlmZmZm	Z	 d dl
mZ d dlmZ d dlZd dlmc mZ d dlmZmZmZ d%d„Zdad„ Zd	„ Zd
ZdZdZdZg d¢ZdZ d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z( G d„ d«      Z) G d„ d«      Z* G d„ d«      Z+ G d„ d«      Z, G d „ d!«      Z- G d"„ d#«      Z.d$„ Z/y)&é    N)Úrmtree)ÚNamedTemporaryFileÚmkdtempÚmkstemp)ÚURLError)Úurlparse)Úassert_Úassert_equalÚassert_raisesc                 óN   — | t        «       k(  rt        d¬«      }|S t        d«      ‚)z$Stub to replace urlopen for testing.Úurltmp_)ÚprefixzName or service not known)Úvalid_httpurlr   r   )ÚurlÚdataÚtmpfiles      úV/root/workspace/.venv/lib/python3.12/site-packages/numpy/lib/tests/test__datasource.pyÚurlopen_stubr      s'   € à
Œm‹oÒÜ$¨IÔ6ˆØˆäÐ2Ó3Ð3ó    c                  óB   — t         j                  at        t         _        y ©N)Úurllib_requestÚurlopenÚold_urlopenr   © r   r   Úsetup_moduler      s   € ô !×(Ñ(€KÜ)„NÕr   c                  ó"   — t         t        _        y r   )r   r   r   r   r   r   Úteardown_moduler   "   s
   € Ü(„NÕr   zhttp://www.google.com/z
index.htmlzhttp://fake.abc.web/site/zfake.txt)z/etc/shadowz../../shadowz..\system.datzc:\windows\system.dats   three is the magic numberc                 óT   — t        dd| d¬«      \  }}t        j                  |«       |S )Nú.txtÚdstmp_T)Úsuffixr   ÚdirÚtext)r   ÚosÚclose©ÚfiledirÚfdÚpaths      r   Úvalid_textfiler+   4   s&   € ä˜f¨X¸7ÈÔN�H€BˆÜ‡H�HˆR„LØ€Kr   c                 ó|   — t        dd| ¬«      \  }}t        j                  |«       t        j                  |«       |S )Nr    r!   )r"   r   r#   )r   r%   r&   Úremover'   s      r   Úinvalid_textfiler.   ;   s/   € ä˜f¨X¸7ÔC�H€BˆÜ‡H�HˆR„LÜ‡I�Iˆd„OØ€Kr   c                  ó   — t         t        z   S r   )Ú	http_pathÚ	http_filer   r   r   r   r   C   s   € Ü”yÑ Ð r   c                  ó   — t         t        z   S r   )Úhttp_fakepathÚhttp_fakefiler   r   r   Úinvalid_httpurlr5   G   s   € Üœ=Ñ(Ð(r   c                  ó   — t         S r   )r0   r   r   r   Úvalid_baseurlr7   K   ó   € ÜÐr   c                  ó   — t         S r   )r3   r   r   r   Úinvalid_baseurlr:   O   ó   € ÜÐr   c                  ó   — t         S r   )r1   r   r   r   Úvalid_httpfiler=   S   r8   r   c                  ó   — t         S r   )r4   r   r   r   Úinvalid_httpfiler?   W   r;   r   c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestDataSourceOpenc                 ó–   — t        j                  |«      }|j                  t        «       «      }t	        |«       |j                  «        y r   )Ú
datasourceÚ
DataSourceÚopenr   r	   r&   )ÚselfÚtmp_pathÚdsÚfhs       r   Útest_ValidHTTPz!TestDataSourceOpen.test_ValidHTTP\   s2   € Ü×"Ñ" 8Ó,ˆØ�W‰W”]“_Ó%ˆÜ�ŒØ
�‰�
r   c                 óö   — t        j                  |«      }t        «       }t        t        |j
                  |«       	 |j                  |«       y # t        $ r!}t        |j                  d u «       Y d }~y d }~ww xY wr   )rC   rD   r5   r   ÚOSErrorrE   r	   Úerrno)rF   rG   rH   r   Úes        r   Útest_InvalidHTTPz#TestDataSourceOpen.test_InvalidHTTPb   s]   € Ü×"Ñ" 8Ó,ˆÜÓˆÜ”g˜rŸw™w¨Ô,ð	%Ø�G‰G�C�LøÜò 	%ä�A—G‘G˜t�O×$Ñ$ûð	%ús   ¼A Á	A8ÁA3Á3A8c                 ót   — t        j                  |«      }t        t        |j                  t        «       «       y r   )rC   rD   r   r   Ú_cacher5   ©rF   rG   rH   s      r   Útest_InvalidHTTPCacheURLErrorz0TestDataSourceOpen.test_InvalidHTTPCacheURLErrorl   s%   € Ü×"Ñ" 8Ó,ˆÜ”h §	¡	¬?Ó+<Õ=r   c                 óœ   — t        j                  |«      }t        |«      }|j                  |«      }t	        |«       |j                  «        y r   )rC   rD   r+   rE   r	   r&   )rF   rG   rH   Ú
local_filerI   s        r   Útest_ValidFilez!TestDataSourceOpen.test_ValidFilep   s:   € Ü×"Ñ" 8Ó,ˆÜ# HÓ-ˆ
Ø�W‰W�ZÓ ˆÜ�ŒØ
�‰�
r   c                 óz   — t        j                  |«      }t        |«      }t        t        |j
                  |«       y r   )rC   rD   r.   r   rL   rE   )rF   rG   rH   Úinvalid_files       r   Útest_InvalidFilez#TestDataSourceOpen.test_InvalidFilew   s,   € Ü×"Ñ" 8Ó,ˆÜ'¨Ó1ˆÜ”g˜rŸw™w¨Õ5r   c                 ó®  — 	 dd l }t	        j
                  |«      }t        j                  j                  |d«      }j                  |d«      }|j                  t        «       |j                  «        |j                  |«      }|j                  «       }|j                  «        t        t        |«       y # t        $ r t        j                  «        Y ŒÍw xY w)Nr   zfoobar.txt.gzÚw)ÚgzipÚImportErrorÚpytestÚskiprC   rD   r%   r*   ÚjoinrE   ÚwriteÚ
magic_liner&   Úreadliner
   )rF   rG   r\   rH   ÚfilepathÚfpÚresults          r   Útest_ValidGzipFilez%TestDataSourceOpen.test_ValidGzipFile|   s›   € ð	Ûô
 ×"Ñ" 8Ó,ˆÜ—7‘7—<‘< ¨/Ó:ˆØ�Y‰Y�x Ó%ˆØ
�‰”ÔØ
�‰Œ
Ø�W‰W�XÓˆØ—‘“ˆØ
�‰Œ
Ü”Z Õ(øô ò 	ä�K‰KŽMð	úó   ‚B4 Â4CÃCc                 ó®  — 	 dd l }t	        j
                  |«      }t        j                  j                  |d«      }j                  |d«      }|j                  t        «       |j                  «        |j                  |«      }|j                  «       }|j                  «        t        t        |«       y # t        $ r t        j                  «        Y ŒÍw xY w)Nr   zfoobar.txt.bz2r[   )Úbz2r]   r^   r_   rC   rD   r%   r*   r`   ÚBZ2Filera   rb   r&   rE   rc   r
   )rF   rG   rj   rH   rd   re   rf   s          r   Útest_ValidBz2Filez$TestDataSourceOpen.test_ValidBz2File�   sœ   € ð	Ûô
 ×"Ñ" 8Ó,ˆÜ—7‘7—<‘< Ð*:Ó;ˆØ�[‰[˜ 3Ó'ˆØ
�‰”ÔØ
�‰Œ
Ø�W‰W�XÓˆØ—‘“ˆØ
�‰Œ
Ü”Z Õ(øô ò 	ä�K‰KŽMð	úrh   N)
Ú__name__Ú
__module__Ú__qualname__rJ   rO   rS   rV   rY   rg   rl   r   r   r   rA   rA   [   s%   „ òò%ò>òò6ò
)ó")r   rA   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestDataSourceExistsc                 ór   — t        j                  |«      }t        |j                  t	        «       «      «       y r   )rC   rD   r	   Úexistsr   rR   s      r   rJ   z#TestDataSourceExists.test_ValidHTTP    s%   € Ü×"Ñ" 8Ó,ˆÜ�—	‘	œ-›/Ó*Õ+r   c                 ót   — t        j                  |«      }t        |j                  t	        «       «      d«       y ©NF)rC   rD   r
   rs   r5   rR   s      r   rO   z%TestDataSourceExists.test_InvalidHTTP¤   s(   € Ü×"Ñ" 8Ó,ˆÜ�R—Y‘YœÓ0Ó1°5Õ9r   c                 óì   — t        j                  |«      }t        |«      }t        |j	                  |«      «       t        «       }t        |«      }t        |j	                  |«      «       t        |«       y r   )rC   rD   r+   r	   rs   r   r   )rF   rG   rH   r   Úlocaldirs        r   rV   z#TestDataSourceExists.test_ValidFile¨   sW   € ä×"Ñ" 8Ó,ˆÜ  Ó*ˆÜ�—	‘	˜'Ó"Ô#ä“9ˆÜ  Ó*ˆÜ�—	‘	˜'Ó"Ô#ÜˆxÕr   c                 óz   — t        j                  |«      }t        |«      }t        |j	                  |«      d«       y ru   )rC   rD   r.   r
   rs   )rF   rG   rH   r   s       r   rY   z%TestDataSourceExists.test_InvalidFile³   s/   € Ü×"Ñ" 8Ó,ˆÜ" 8Ó,ˆÜ�R—Y‘Y˜wÓ'¨Õ/r   N)rm   rn   ro   rJ   rO   rV   rY   r   r   r   rq   rq   Ÿ   s   „ ò,ò:ò	ó0r   rq   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestDataSourceAbspathc                 óB  — t        j                  |«      }t        t        «       «      \  }}}}}}t        j
                  j                  |||j                  t        j                  «      j                  d«      «      }t        ||j                  t        «       «      «       y ©Nú/)rC   rD   r   r   r%   r*   r`   ÚstripÚsepr
   Úabspath)rF   rG   rH   Ú_ÚnetlocÚupathÚ
local_paths          r   rJ   z$TestDataSourceAbspath.test_ValidHTTPº   sr   € Ü×"Ñ" 8Ó,ˆÜ$,¬]«_Ó$=Ñ!ˆˆ6�5˜!˜Q Ü—W‘W—\‘\ (¨FØ"'§+¡+¬b¯f©fÓ"5×";Ñ";¸CÓ"@óBˆ
ä�Z §¡¬M«OÓ!<Õ=r   c                 óô   — t        j                  |«      }t        |«      }t        j                  j                  |«      d   }t        ||j                  |«      «       t        ||j                  |«      «       y ©Néÿÿÿÿ)rC   rD   r+   r%   r*   Úsplitr
   r€   )rF   rG   rH   r   Útmpfilenames        r   rV   z$TestDataSourceAbspath.test_ValidFileÁ   sY   € Ü×"Ñ" 8Ó,ˆÜ  Ó*ˆÜ—g‘g—m‘m GÓ,¨RÑ0ˆä�W˜bŸj™j¨Ó5Ô6ä�W˜bŸj™j¨Ó1Õ2r   c                 óF  — t        j                  |«      }t        t        «       «      \  }}}}}}t        j
                  j                  |||j                  t        j                  «      j                  d«      «      }t        ||j                  t        «       «      k7  «       y r|   )rC   rD   r   r5   r%   r*   r`   r~   r   r	   r€   r   )rF   rG   rH   r�   r‚   rƒ   Úinvalidhttps          r   rO   z&TestDataSourceAbspath.test_InvalidHTTPÊ   sv   € Ü×"Ñ" 8Ó,ˆÜ$,¬_Ó->Ó$?Ñ!ˆˆ6�5˜!˜Q Ü—g‘g—l‘l 8¨VØ#(§;¡;¬r¯v©vÓ#6×#<Ñ#<¸SÓ#AóCˆä�˜rŸz™z¬-«/Ó:Ñ:Õ;r   c                 ó  — t        j                  |«      }t        |«      }t        |«      }t        j                  j                  |«      d   }t        ||j                  |«      k7  «       t        ||j                  |«      k7  «       y r†   )rC   rD   r+   r%   r*   rˆ   r	   r€   )rF   rG   rH   Úinvalidfiler   r‰   s         r   rY   z&TestDataSourceAbspath.test_InvalidFileÑ   si   € Ü×"Ñ" 8Ó,ˆÜ$ XÓ.ˆÜ  Ó*ˆÜ—g‘g—m‘m GÓ,¨RÑ0ˆä�˜rŸz™z¨+Ó6Ñ6Ô7ä�˜rŸz™z¨'Ó2Ñ2Õ3r   c                 óÄ  ‡— t        j                  |«      Št        |«      }t        j                  j                  |«      d   }ˆfd„}t         |t        «       «      j                  t        |«      «      «       t         |t        «       «      j                  t        |«      «      «       t         ||«      j                  t        |«      «      «       t         ||«      j                  t        |«      «      «       t        D ][  }t         |t        |z   «      j                  t        |«      «      «       t         ||«      j                  t        |«      «      «       Œ] y )Nr‡   c                 ó`   •— t         j                  j                  ‰j                  | «      «      S r   ©r%   r*   r€   )ÚxrH   s    €r   ú<lambda>z7TestDataSourceAbspath.test_sandboxing.<locals>.<lambda>à   s   ø€ œŸ™Ÿ™¨¯©°A«Ó7€ r   )rC   rD   r+   r%   r*   rˆ   r	   r   Ú
startswithÚstrr5   Úmalicious_filesr0   )rF   rG   r   r‰   r*   ÚfnrH   s         @r   Útest_sandboxingz%TestDataSourceAbspath.test_sandboxingÛ   s÷   ø€ Ü×"Ñ" 8Ó,ˆÜ  Ó*ˆÜ—g‘g—m‘m GÓ,¨RÑ0ˆã7ˆä‘”]“_Ó%×0Ñ0´°X³Ó?Ô@Ü‘”_Ó&Ó'×2Ñ2´3°x³=ÓAÔBÜ‘�W“×(Ñ(¬¨X«Ó7Ô8Ü‘�[Ó!×,Ñ,¬S°«]Ó;Ô<Ü!ò 	8ˆBÜ‘Dœ R™Ó(×3Ñ3´C¸³MÓBÔCÜ‘D˜“H×'Ñ'¬¨H«Ó6Õ7ñ	8r   c                 ó  — t         j                  }	 dt         _        | j                  |«       | j                  |«       | j	                  |«       | j                  |«       | j                  |«       |t         _        y # |t         _        w xY w©Nú\)r%   r   rJ   rV   rO   rY   r—   ©rF   rG   Úorig_os_seps      r   Útest_windows_os_sepz)TestDataSourceAbspath.test_windows_os_sepê   sl   € Ü—f‘fˆð	!ØŒBŒFØ×Ñ Ô)Ø×Ñ Ô)Ø×!Ñ! (Ô+Ø×!Ñ! (Ô+Ø× Ñ  Ô*à ŒB�Fø�[ŒB�Fús   ’A A> Á>BN)	rm   rn   ro   rJ   rV   rO   rY   r—   r�   r   r   r   rz   rz   ¹   s    „ ò>ò3ò<ò4ò8ó
!r   rz   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestRepositoryAbspathc                 ól  — t        j                  t        «       |«      }t        t	        «       «      \  }}}}}}t
        j                  j                  |j                  ||j                  t
        j                  «      j                  d«      «      }|j                  t        «       «      }t        ||«       y r|   )rC   Ú
Repositoryr7   r   r   r%   r*   r`   Ú	_destpathr~   r   r€   r=   r
   )rF   rG   Úreposr�   r‚   rƒ   r„   rd   s           r   rJ   z$TestRepositoryAbspath.test_ValidHTTPø   s€   € Ü×%Ñ%¤m£o°xÓ@ˆÜ$,¬]«_Ó$=Ñ!ˆˆ6�5˜!˜Q Ü—W‘W—\‘\ %§/¡/°6Ø"'§+¡+¬b¯f©fÓ"5×";Ñ";¸CÓ"@óBˆ
à—=‘=¤Ó!1Ó2ˆÜ�Z Õ*r   c                 óv  ‡— t        j                  t        «       |«      Šˆfd„}t         |t	        «       «      j                  t        |«      «      «       t        D ][  }t         |t        |z   «      j                  t        |«      «      «       t         ||«      j                  t        |«      «      «       Œ] y )Nc                 ó`   •— t         j                  j                  ‰j                  | «      «      S r   r�   )r‘   r£   s    €r   r’   z7TestRepositoryAbspath.test_sandboxing.<locals>.<lambda>  s   ø€ œŸ™Ÿ™¨¯©°qÓ)9Ó:€ r   )	rC   r¡   r7   r	   r=   r“   r”   r•   r0   )rF   rG   r*   r–   r£   s       @r   r—   z%TestRepositoryAbspath.test_sandboxing   s…   ø€ Ü×%Ñ%¤m£o°xÓ@ˆÛ:ˆÜ‘”^Ó%Ó&×1Ñ1´#°h³-Ó@ÔAÜ!ò 	8ˆBÜ‘Dœ R™Ó(×3Ñ3´C¸³MÓBÔCÜ‘D˜“H×'Ñ'¬¨H«Ó6Õ7ñ	8r   c                 ó¶   — t         j                  }	 dt         _        | j                  |«       | j                  |«       |t         _        y # |t         _        w xY wr™   )r%   r   rJ   r—   r›   s      r   r�   z)TestRepositoryAbspath.test_windows_os_sep  sB   € Ü—f‘fˆð	!ØŒBŒFØ×Ñ Ô)Ø× Ñ  Ô*à ŒB�Fø�[ŒB�Fús   ’-A ÁAN)rm   rn   ro   rJ   r—   r�   r   r   r   rŸ   rŸ   ÷   s   „ ò+ò8ó!r   rŸ   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestRepositoryExistsc                 óŠ   — t        j                  t        «       |«      }t        |«      }t	        |j                  |«      «       y r   )rC   r¡   r7   r+   r	   rs   ©rF   rG   r£   r   s       r   rV   z#TestRepositoryExists.test_ValidFile  s1   € ä×%Ñ%¤m£o°xÓ@ˆÜ  Ó*ˆÜ�—‘˜WÓ%Õ&r   c                 óŒ   — t        j                  t        «       |«      }t        |«      }t	        |j                  |«      d«       y ru   )rC   r¡   r7   r.   r
   rs   rª   s       r   rY   z%TestRepositoryExists.test_InvalidFile  s3   € Ü×%Ñ%¤m£o°xÓ@ˆÜ" 8Ó,ˆÜ�U—\‘\ 'Ó*¨EÕ2r   c                 ó„   — t        j                  t        «       |«      }t        |j	                  t        «       «      «       y r   )rC   r¡   r7   r	   rs   r   )rF   rG   r£   s      r   Útest_RemoveHTTPFilez(TestRepositoryExists.test_RemoveHTTPFile  s)   € Ü×%Ñ%¤m£o°xÓ@ˆÜ�—‘œ]›_Ó-Õ.r   c                 óB  — t        «       }t        j                  t        «       |«      }t	        |«      \  }}}}}}t
        j                  j                  |j                  |«      }t        j                  |d«       t        |«      }t        |j                  |«      «       y )NiÀ  )r   rC   r¡   r7   r   r%   r*   r`   r¢   Úmkdirr+   r	   rs   )rF   rG   Ú	localfiler£   r�   r‚   r„   r   s           r   Útest_CachedHTTPFilez(TestRepositoryExists.test_CachedHTTPFile"  sw   € Ü!“Oˆ	ô ×%Ñ%¤m£o°xÓ@ˆÜ (¨Ó 3Ñˆˆ6�1�a˜˜AÜ—W‘W—\‘\ %§/¡/°6Ó:ˆ
Ü
�‰�˜VÔ$Ü  Ó,ˆÜ�—‘˜WÓ%Õ&r   N)rm   rn   ro   rV   rY   r­   r±   r   r   r   r¨   r¨     s   „ ò'ò3ò
/ó
'r   r¨   c                   ó   — e Zd Zd„ Zy)ÚTestOpenFuncc                 óÞ   — t        |«      }t        j                  ||¬«      }t        |«       |j	                  «        t        j                  |«      }t        |«       |j	                  «        y )N)Údestpath)r+   rC   rE   r	   r&   )rF   rG   rU   re   s       r   Útest_DataSourceOpenz TestOpenFunc.test_DataSourceOpen0  sJ   € Ü# HÓ-ˆ
ä�_‰_˜Z°(Ô;ˆÜ�ŒØ
�‰Œ
ä�_‰_˜ZÓ(ˆÜ�ŒØ
�‰�
r   N)rm   rn   ro   r¶   r   r   r   r³   r³   /  s   „ ó	r   r³   c                  óP   — t        j                  «       } | `| j                  «        y r   )rC   rD   Ú
_istmpdestÚ__del__)rH   s    r   Útest_del_attr_handlingrº   ;  s$   € ô 
×	Ñ	Ó	 €Bð 	ˆð ‡J�J…Lr   r   )0r%   Úurllib.requestÚrequestr   Úshutilr   Útempfiler   r   r   Úurllib.errorr   Úurllib.parser   r^   Únumpy.lib._datasourceÚlibÚ_datasourcerC   Únumpy.testingr	   r
   r   r   r   r   r   r0   r1   r3   r4   r•   rb   r+   r.   r   r5   r7   r:   r=   r?   rA   rq   rz   rŸ   r¨   r³   rº   r   r   r   ú<module>rÅ      sÑ   ðÛ 	Ý 'Ý ß 9Ñ 9Ý !Ý !ã ç *Ð *ß >Ñ >ó4ð €ò*ò)ð
 %€	Ø€	à+€Ø€ò@€ð *€
òòò!ò)òòòò÷A)ñ A)÷H0ñ 0÷4;!ñ ;!÷|!ñ !÷6'ñ '÷:
ñ 
ór   