
    KhK)                     b   S SK r S SKrS SKJrJrJr  S SKJr  S SKJ	s  J
r  S SKJrJrJr  S SKJr  S SKJr  S SKJr  S%S jrSqS rS	 rS
rSrSrSr/ SQrSr S r!S r"S r#S r$S r%S r&S r'S r( " S S5      r) " S S5      r* " S S5      r+ " S S5      r, " S  S!5      r- " S" S#5      r.S$ r/g)&    N)mkdtempmkstempNamedTemporaryFile)rmtree)assert_assert_equalassert_raises)urlparse)URLErrorc                 J    U [        5       :X  a  [        SS9nU$ [        S5      e)z$Stub to replace urlopen for testing.urltmp_)prefixzName or service not known)valid_httpurlr   r   )urldatatmpfiles      R/var/www/html/env/lib/python3.13/site-packages/numpy/lib/tests/test__datasource.pyurlopen_stubr      s'    
mo$I6233    c                  B    [         R                  q[        [         l        g N)urllib_requesturlopenold_urlopenr    r   r   setup_moduler      s     !((K)Nr   c                  "    [         [        l        g 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                 N    [        SSU SS9u  p[        R                  " U5        U$ )N.txtdstmp_T)suffixr   dirtext)r   osclosefiledirfdpaths      r   valid_textfiler+   2   s$    fX7NHBHHRLKr   c                 x    [        SSU S9u  p[        R                  " U5        [        R                  " U5        U$ )Nr    r!   )r"   r   r#   )r   r%   r&   remover'   s      r   invalid_textfiler.   9   s-    fX7CHBHHRLIIdOKr   c                      [         [        -   $ r   )	http_path	http_filer   r   r   r   r   A   s    Yr   c                      [         [        -   $ r   )http_fakepathhttp_fakefiler   r   r   invalid_httpurlr5   E   s    &&r   c                      [         $ r   )r0   r   r   r   valid_baseurlr7   I       r   c                      [         $ r   )r3   r   r   r   invalid_baseurlr:   M       r   c                      [         $ r   )r1   r   r   r   valid_httpfiler=   Q   r8   r   c                      [         $ r   )r4   r   r   r   invalid_httpfiler?   U   r;   r   c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)TestDataSourceOpenY   c                 l    [        5       U l        [        R                  " U R                  5      U l        g r   r   tmpdir
datasource
DataSourcedsselfs    r   setup_methodTestDataSourceOpen.setup_methodZ   !    i''4r   c                 2    [        U R                  5        U ?g r   r   rE   rH   rI   s    r   teardown_method"TestDataSourceOpen.teardown_method^       t{{Gr   c                     U R                   R                  [        5       5      n[        U5        UR	                  5         g r   )rH   openr   r   r&   )rJ   fhs     r   test_ValidHTTP!TestDataSourceOpen.test_ValidHTTPb   s&    WW\\-/*

r   c                     [        5       n[        [        U R                  R                  U5         U R                  R	                  U5        g ! [         a!  n[        UR                  S L 5         S nAg S nAff = fr   )r5   r	   OSErrorrH   rT   r   errno)rJ   r   es      r   test_InvalidHTTP#TestDataSourceOpen.test_InvalidHTTPg   sV    gtww||S1	%GGLL 	%AGGtO$$	%s   A 
A8A33A8c                 ^    [        [        U R                  R                  [	        5       5        g r   )r	   r   rH   _cacher5   rI   s    r   test_InvalidHTTPCacheURLError0TestDataSourceOpen.test_InvalidHTTPCacheURLErrorp   s    h0ABr   c                     [        U R                  5      nU R                  R                  U5      n[	        U5        UR                  5         g r   )r+   rE   rH   rT   r   r&   )rJ   
local_filerU   s      r   test_ValidFile!TestDataSourceOpen.test_ValidFiles   s2    #DKK0
WW\\*%

r   c                 x    [        U R                  5      n[        [        U R                  R
                  U5        g r   )r.   rE   r	   rY   rH   rT   )rJ   invalid_files     r   test_InvalidFile#TestDataSourceOpen.test_InvalidFiley   s$    '4gtww||\:r   c                     SS K n[        R
                  R                  U R                  S5      nWR                  US5      nUR                  [        5        UR                  5         U R                  R                  U5      nUR                  5       nUR                  5         [        [        U5        g ! [         a    [        R                  " 5          Nf = f)Nr   zfoobar.txt.gzw)gzipImportErrorpytestskipr%   r*   joinrE   rT   write
magic_liner&   rH   readliner   )rJ   rl   filepathfpresults        r   test_ValidGzipFile%TestDataSourceOpen.test_ValidGzipFile}   s    	
 77<<_=YYx%


WW\\(#

Z(  	KKM	   B3 3CCc                     SS K n[        R
                  R                  U R                  S5      nWR                  US5      nUR                  [        5        UR                  5         U R                  R                  U5      nUR                  5       nUR                  5         [        [        U5        g ! [         a    [        R                  " 5          Nf = f)Nr   zfoobar.txt.bz2rk   )bz2rm   rn   ro   r%   r*   rp   rE   BZ2Filerq   rr   r&   rH   rT   rs   r   )rJ   r{   rt   ru   rv   s        r   test_ValidBz2File$TestDataSourceOpen.test_ValidBz2File   s    	
 77<<-=>[[3'


WW\\(#

Z(  	KKM	ry   rH   rE   N)__name__
__module____qualname____firstlineno__rK   rP   rV   r\   r`   rd   rh   rw   r}   __static_attributes__r   r   r   rA   rA   Y   s0    5
%C;) )r   rA   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestDataSourceExists   c                 l    [        5       U l        [        R                  " U R                  5      U l        g r   rD   rI   s    r   rK   !TestDataSourceExists.setup_method   rM   r   c                 2    [        U R                  5        U ?g r   rO   rI   s    r   rP   $TestDataSourceExists.teardown_method   rR   r   c                 \    [        U R                  R                  [        5       5      5        g r   )r   rH   existsr   rI   s    r   rV   #TestDataSourceExists.test_ValidHTTP   s    }/0r   c                 ^    [        U R                  R                  [        5       5      S5        g NF)r   rH   r   r5   rI   s    r   r\   %TestDataSourceExists.test_InvalidHTTP   s    TWW^^O$56>r   c                     [        U R                  5      n[        U R                  R	                  U5      5        [        5       n[        U5      n[        U R                  R	                  U5      5        [        U5        g r   )r+   rE   r   rH   r   r   r   )rJ   r   localdirs      r   rd   #TestDataSourceExists.test_ValidFile   sS     -w'(9 *w'(xr   c                 x    [        U R                  5      n[        U R                  R	                  U5      S5        g r   )r.   rE   r   rH   r   rJ   r   s     r   rh   %TestDataSourceExists.test_InvalidFile   s'    "4;;/TWW^^G,e4r   r   N)r   r   r   r   rK   rP   rV   r\   rd   rh   r   r   r   r   r   r      s     51?5r   r   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestDataSourceAbspath   c                     [         R                  R                  [        5       5      U l        [
        R                  " U R                  5      U l        g r   )r%   r*   abspathr   rE   rF   rG   rH   rI   s    r   rK   "TestDataSourceAbspath.setup_method   s.    ggoogi0''4r   c                 2    [        U R                  5        U ?g r   rO   rI   s    r   rP   %TestDataSourceAbspath.teardown_method   rR   r   c                 8   [        [        5       5      u  pp4pV[        R                  R	                  U R
                  UUR                  [        R                  5      R                  S5      5      n[        XpR                  R                  [        5       5      5        g N/)r
   r   r%   r*   rp   rE   stripsepr   rH   r   )rJ   schemenetlocupathpmsqryfrg
local_paths           r   rV   $TestDataSourceAbspath.test_ValidHTTP   sb    /7/H,CWW\\$++v"'++bff"5";";C"@B
Z!ABr   c                    [        U R                  5      n[        R                  R	                  U5      S   n[        XR                  R                  U5      5        [        XR                  R                  U5      5        g N)r+   rE   r%   r*   splitr   rH   r   )rJ   r   tmpfilenames      r   rd   $TestDataSourceAbspath.test_ValidFile   sQ     -ggmmG,R0Wggook:;Wggoog67r   c                 <   [        [        5       5      u  pp4pV[        R                  R	                  U R
                  UUR                  [        R                  5      R                  S5      5      n[        XpR                  R                  [        5       5      :g  5        g r   )r
   r5   r%   r*   rp   rE   r   r   r   rH   r   r   )rJ   r   r   r   r   r   r   invalidhttps           r   r\   &TestDataSourceAbspath.test_InvalidHTTP   sf    /78I/J,Cggll4;;#(;;rvv#6#<#<S#ACww}??@r   c                 4   [        U R                  5      n[        U R                  5      n[        R                  R	                  U5      S   n[        XR                  R                  U5      :g  5        [        XR                  R                  U5      :g  5        g r   )r+   rE   r%   r*   r   r   rH   r   )rJ   invalidfiler   r   s       r   rh   &TestDataSourceAbspath.test_InvalidFile   se    $T[[1 -ggmmG,R0ww{;;<www778r   c                   ^  [        T R                  5      n[        R                  R	                  U5      S   nU 4S jn[        U" [        5       5      R                  T R                  5      5        [        U" [        5       5      R                  T R                  5      5        [        U" U5      R                  T R                  5      5        [        U" U5      R                  T R                  5      5        [         H^  n[        U" [        U-   5      R                  T R                  5      5        [        U" U5      R                  T R                  5      5        M`     g )Nr   c                 t   > [         R                  R                  TR                  R                  U 5      5      $ r   )r%   r*   r   rH   xrJ   s    r   <lambda>7TestDataSourceAbspath.test_sandboxing.<locals>.<lambda>   s    RWW__TWW__Q-?@r   )r+   rE   r%   r*   r   r   r   
startswithr5   malicious_filesr0   )rJ   r   r   tmp_pathfns   `    r   test_sandboxing%TestDataSourceAbspath.test_sandboxing   s     -ggmmG,R0@)44T[[AB*+66t{{CD!,,T[[9:%00=>!BHYr\*55dkkBCHRL++DKK89 "r   c                    [         R                  n S[         l        U R                  5         U R                  5         U R	                  5         U R                  5         U R                  5         U[         l        g ! U[         l        f = fN\)r%   r   rV   rd   r\   rh   r   rJ   orig_os_seps     r   test_windows_os_sep)TestDataSourceAbspath.test_windows_os_sep   sb    ff	!BF!!!!#!!#  " BF[BFs   AA9 9Br   N)r   r   r   r   rK   rP   rV   rd   r\   rh   r   r   r   r   r   r   r   r      s,    5C8A9:
!r   r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestRepositoryAbspath   c                     [         R                  R                  [        5       5      U l        [
        R                  " [        5       U R                  5      U l        g r   )	r%   r*   r   r   rE   rF   
Repositoryr7   reposrI   s    r   rK   "TestRepositoryAbspath.setup_method   s2    ggoogi0**=?DKKH
r   c                 2    [        U R                  5        U ?g r   r   rE   r   rI   s    r   rP   %TestRepositoryAbspath.teardown_method      t{{Jr   c                 P   [        [        5       5      u  pp4pV[        R                  R	                  U R
                  R                  UUR                  [        R                  5      R                  S5      5      nU R
                  R                  [        5       5      n[        Xx5        g r   )r
   r   r%   r*   rp   r   	_destpathr   r   r   r=   r   )	rJ   r   r   r   r   r   r   r   rt   s	            r   rV   $TestRepositoryAbspath.test_ValidHTTP  sp    /7/H,CWW\\$**"6"6"'++bff"5";";C"@B
::%%n&67Z*r   c                 F  ^  U 4S jn[        U" [        5       5      R                  T R                  5      5        [         H^  n[        U" [
        U-   5      R                  T R                  5      5        [        U" U5      R                  T R                  5      5        M`     g )Nc                 t   > [         R                  R                  TR                  R                  U 5      5      $ r   )r%   r*   r   r   r   s    r   r   7TestRepositoryAbspath.test_sandboxing.<locals>.<lambda>  s!    RWW__TZZ-?-?-BCr   )r   r=   r   rE   r   r0   )rJ   r   r   s   `  r   r   %TestRepositoryAbspath.test_sandboxing  sl    C)*55dkkBC!BHYr\*55dkkBCHRL++DKK89 "r   c                     [         R                  n S[         l        U R                  5         U R                  5         U[         l        g ! U[         l        f = fr   )r%   r   rV   r   r   s     r   r   )TestRepositoryAbspath.test_windows_os_sep  s>    ff	!BF!  " BF[BFs   +A	 	Ar   rE   N)
r   r   r   r   rK   rP   rV   r   r   r   r   r   r   r   r      s    I+:!r   r   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestRepositoryExistsi  c                 ~    [        5       U l        [        R                  " [	        5       U R                  5      U l        g r   )r   rE   rF   r   r7   r   rI   s    r   rK   !TestRepositoryExists.setup_method  s%    i**=?DKKH
r   c                 2    [        U R                  5        U ?g r   r   rI   s    r   rP   $TestRepositoryExists.teardown_method#  r   r   c                 v    [        U R                  5      n[        U R                  R	                  U5      5        g r   )r+   rE   r   r   r   r   s     r   rd   #TestRepositoryExists.test_ValidFile'  s'     -

!!'*+r   c                 x    [        U R                  5      n[        U R                  R	                  U5      S5        g r   )r.   rE   r   r   r   r   s     r   rh   %TestRepositoryExists.test_InvalidFile,  s)    "4;;/TZZ&&w/7r   c                 \    [        U R                  R                  [        5       5      5        g r   )r   r   r   r   rI   s    r   test_RemoveHTTPFile(TestRepositoryExists.test_RemoveHTTPFile0  s    

!!-/23r   c                 *   [        5       n[        U5      u  p#pEpg[        R                  R	                  U R
                  R                  U5      n[        R                  " US5        [        U5      n	[        U R
                  R                  U	5      5        g )Ni  )r   r
   r%   r*   rp   r   r   mkdirr+   r   r   )
rJ   	localfiler   r   r   r   r   r   r   r   s
             r   test_CachedHTTPFile(TestRepositoryExists.test_CachedHTTPFile3  si    !O	 08	/B,CWW\\$**"6"6?

V$ ,

!!'*+r   r   N)r   r   r   r   rK   rP   rd   rh   r   r   r   r   r   r   r   r     s!    I,
84	,r   r   c                   &    \ rS rSrS rS rS rSrg)TestOpenFunci?  c                 "    [        5       U l        g r   )r   rE   rI   s    r   rK   TestOpenFunc.setup_method@  s    ir   c                 .    [        U R                  5        g r   )r   rE   rI   s    r   rP   TestOpenFunc.teardown_methodC  s    t{{r   c                    [        U R                  5      n[        R                  " XR                  S9n[	        U5        UR                  5         [        R                  " U5      n[	        U5        UR                  5         g )N)destpath)r+   rE   rF   rT   r   r&   )rJ   rc   ru   s      r   test_DataSourceOpen TestOpenFunc.test_DataSourceOpenF  sP    #DKK0
__Z++>

__Z(

r   )rE   N)r   r   r   r   rK   rP   r   r   r   r   r   r   r   ?  s     	r   r   c                  R    [         R                  " 5       n U ?U R                  5         g r   )rF   rG   
_istmpdest__del__)rH   s    r   test_del_attr_handlingr   Q  s$     
			 B 	 JJLr   r   )0r%   rn   tempfiler   r   r   shutilr   numpy.lib._datasourcelib_datasourcerF   numpy.testingr   r   r	   urllib.requestrequestr   urllib.parser
   urllib.errorr   r   r   r   r   r0   r1   r3   r4   r   rr   r+   r.   r   r5   r7   r:   r=   r?   rA   r   r   r   r   r   r   r   r   r   <module>r     s    	  9 9  * * > > ' ! !4 *) %		+@ *
'B) B)J5 5<>! >!B! !B, ,B $r   