
    BwgK)                     `   d dl Z d dlZd dlmZmZmZ d dlmZ d dlm	c m
Z d dlmZmZmZ d dlmZ d dlmZ d dl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)mkdtempmkstempNamedTemporaryFile)rmtree)assert_assert_equalassert_raises)urlparse)URLErrorc                 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      W/var/www/horilla/myenv/lib/python3.12/site-packages/numpy/lib/tests/test__datasource.pyurlopen_stubr      s'    
mo$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+   2   s&    fX7NHBHHRLKr   c                 |    t        dd|       \  }}t        j                  |       t        j                  |       |S )Nr    r!   )r"   r   r#   )r   r%   r&   remover'   s      r   invalid_textfiler.   9   s/    fX7CHBHHRLIIdOKr   c                      t         t        z   S r   )	http_path	http_filer   r   r   r   r   A   s    Yr   c                      t         t        z   S r   )http_fakepathhttp_fakefiler   r   r   invalid_httpurlr5   E   s    &&r   c                      t         S r   )r0   r   r   r   valid_baseurlr7   I       r   c                      t         S r   )r3   r   r   r   invalid_baseurlr:   M       r   c                      t         S r   )r1   r   r   r   valid_httpfiler=   Q   r8   r   c                      t         S r   )r4   r   r   r   invalid_httpfiler?   U   r;   r   c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestDataSourceOpenc                 j    t               | _        t        j                  | j                        | _        y r   r   tmpdir
datasource
DataSourcedsselfs    r   setup_methodzTestDataSourceOpen.setup_methodZ   !    i''4r   c                 2    t        | j                         | `y r   r   rD   rG   rH   s    r   teardown_methodz"TestDataSourceOpen.teardown_method^       t{{Gr   c                     | j                   j                  t                     }t        |       |j	                          y r   )rG   openr   r   r&   )rI   fhs     r   test_ValidHTTPz!TestDataSourceOpen.test_ValidHTTPb   s&    WW\\-/*

r   c                     t               }t        t        | j                  j                  |       	 | j                  j	                  |       y # t        $ r!}t        |j                  d u        Y d }~y d }~ww xY wr   )r5   r	   OSErrorrG   rQ   r   errno)rI   r   es      r   test_InvalidHTTPz#TestDataSourceOpen.test_InvalidHTTPg   sV    gtww||S1	%GGLL 	%AGGtO$$	%s   A 	A7A22A7c                 ^    t        t        | j                  j                  t	                      y r   )r	   r   rG   _cacher5   rH   s    r   test_InvalidHTTPCacheURLErrorz0TestDataSourceOpen.test_InvalidHTTPCacheURLErrorp   s    h0ABr   c                     t        | j                        }| j                  j                  |      }t	        |       |j                          y r   )r+   rD   rG   rQ   r   r&   )rI   
local_filerR   s      r   test_ValidFilez!TestDataSourceOpen.test_ValidFiles   s2    #DKK0
WW\\*%

r   c                 x    t        | j                        }t        t        | j                  j
                  |       y r   )r.   rD   r	   rU   rG   rQ   )rI   invalid_files     r   test_InvalidFilez#TestDataSourceOpen.test_InvalidFiley   s$    '4gtww||\:r   c                    	 dd l }t        j
                  j                  | j                  d      }j                  |d      }|j                  t               |j                          | 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skipr%   r*   joinrD   rQ   write
magic_liner&   rG   readliner   )rI   rd   filepathfpresults        r   test_ValidGzipFilez%TestDataSourceOpen.test_ValidGzipFile}   s    	
 77<<_=YYx%


WW\\(#

Z(  	KKM	   B3 3CCc                    	 dd l }t        j
                  j                  | j                  d      }j                  |d      }|j                  t               |j                          | j                  j                  |      }|j                         }|j                          t        t        |       y # t        $ r t        j                          Y w xY w)Nr   zfoobar.txt.bz2rc   )bz2re   rf   rg   r%   r*   rh   rD   BZ2Fileri   rj   r&   rG   rQ   rk   r   )rI   rr   rl   rm   rn   s        r   test_ValidBz2Filez$TestDataSourceOpen.test_ValidBz2File   s    	
 77<<-=>[[3'


WW\\(#

Z(  	KKM	rp   N)__name__
__module____qualname__rJ   rN   rS   rX   r[   r^   ra   ro   rt   r   r   r   rA   rA   Y   s0    5
%C;) )r   rA   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestDataSourceExistsc                 j    t               | _        t        j                  | j                        | _        y r   rC   rH   s    r   rJ   z!TestDataSourceExists.setup_method   rK   r   c                 2    t        | j                         | `y r   rM   rH   s    r   rN   z$TestDataSourceExists.teardown_method   rO   r   c                 \    t        | j                  j                  t                            y r   )r   rG   existsr   rH   s    r   rS   z#TestDataSourceExists.test_ValidHTTP   s    }/0r   c                 ^    t        | j                  j                  t                     d       y NF)r   rG   r}   r5   rH   s    r   rX   z%TestDataSourceExists.test_InvalidHTTP   s    TWW^^O$56>r   c                     t        | j                        }t        | j                  j	                  |             t               }t        |      }t        | j                  j	                  |             t        |       y r   )r+   rD   r   rG   r}   r   r   )rI   r   localdirs      r   r^   z#TestDataSourceExists.test_ValidFile   sS     -w'(9 *w'(xr   c                 x    t        | j                        }t        | j                  j	                  |      d       y r   )r.   rD   r   rG   r}   rI   r   s     r   ra   z%TestDataSourceExists.test_InvalidFile   s'    "4;;/TWW^^G,e4r   N)	ru   rv   rw   rJ   rN   rS   rX   r^   ra   r   r   r   ry   ry      s     51?5r   ry   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestDataSourceAbspathc                     t         j                  j                  t                     | _        t        j                  | j                        | _        y r   )r%   r*   abspathr   rD   rE   rF   rG   rH   s    r   rJ   z"TestDataSourceAbspath.setup_method   s.    ggoogi0''4r   c                 2    t        | j                         | `y r   rM   rH   s    r   rN   z%TestDataSourceAbspath.teardown_method   rO   r   c                 @   t        t                     \  }}}}}}t        j                  j	                  | j
                  ||j                  t        j                        j                  d            }t        || j                  j                  t                            y N/)r
   r   r%   r*   rh   rD   stripsepr   rG   r   )rI   schemenetlocupathpmsqryfrg
local_paths           r   rS   z$TestDataSourceAbspath.test_ValidHTTP   sj    /7/H,sCWW\\$++v"'++bff"5";";C"@B
Z!ABr   c                    t        | j                        }t        j                  j	                  |      d   }t        || j                  j                  |             t        || j                  j                  |             y N)r+   rD   r%   r*   splitr   rG   r   )rI   r   tmpfilenames      r   r^   z$TestDataSourceAbspath.test_ValidFile   sU     -ggmmG,R0Wdggook:;Wdggoog67r   c                 D   t        t                     \  }}}}}}t        j                  j	                  | j
                  ||j                  t        j                        j                  d            }t        || j                  j                  t                     k7         y r   )r
   r5   r%   r*   rh   rD   r   r   r   rG   r   r   )rI   r   r   r   r   r   r   invalidhttps           r   rX   z&TestDataSourceAbspath.test_InvalidHTTP   sn    /78I/J,sCggll4;;#(;;rvv#6#<#<S#ACtww}??@r   c                 8   t        | j                        }t        | j                        }t        j                  j	                  |      d   }t        || j                  j                  |      k7         t        || j                  j                  |      k7         y r   )r+   rD   r%   r*   r   r   rG   r   )rI   invalidfiler   r   s       r   ra   z&TestDataSourceAbspath.test_InvalidFile   si    $T[[1 -ggmmG,R0tww{;;<twww778r   c                     t         j                        }t        j                  j	                  |      d   } fd}t         |t                     j                   j                               t         |t                     j                   j                               t         ||      j                   j                               t         ||      j                   j                               t        D ]]  }t         |t        |z         j                   j                               t         ||      j                   j                               _ y )Nr   c                 t    t         j                  j                  j                  j                  |             S r   )r%   r*   r   rG   xrI   s    r   <lambda>z7TestDataSourceAbspath.test_sandboxing.<locals>.<lambda>   s!    RWW__TWW__Q-?@ r   )r+   rD   r%   r*   r   r   r   
startswithr5   malicious_filesr0   )rI   r   r   tmp_pathfns   `    r   test_sandboxingz%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                    t         j                  }	 dt         _        | j                          | j                          | j	                          | j                          | j                          |t         _        y # |t         _        w xY wN\)r%   r   rS   r^   rX   ra   r   rI   orig_os_seps     r   test_windows_os_sepz)TestDataSourceAbspath.test_windows_os_sep   sb    ff	!BF!!!!#!!#  " BF[BFs   AA9 9BN)ru   rv   rw   rJ   rN   rS   r^   rX   ra   r   r   r   r   r   r   r      s,    5C8A9:
!r   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestRepositoryAbspathc                     t         j                  j                  t                     | _        t        j                  t               | j                        | _        y r   )	r%   r*   r   r   rD   rE   
Repositoryr7   reposrH   s    r   rJ   z"TestRepositoryAbspath.setup_method   s2    ggoogi0**=?DKKH
r   c                 2    t        | j                         | `y r   r   rD   r   rH   s    r   rN   z%TestRepositoryAbspath.teardown_method      t{{Jr   c                 X   t        t                     \  }}}}}}t        j                  j	                  | j
                  j                  ||j                  t        j                        j                  d            }| j
                  j                  t                     }t        ||       y r   )r
   r   r%   r*   rh   r   	_destpathr   r   r   r=   r   )	rI   r   r   r   r   r   r   r   rl   s	            r   rS   z$TestRepositoryAbspath.test_ValidHTTP  sx    /7/H,sCWW\\$**"6"6"'++bff"5";";C"@B
::%%n&67Z*r   c                 @     fd}t         |t                     j                   j                               t        D ]]  }t         |t
        |z         j                   j                               t         ||      j                   j                               _ y )Nc                 t    t         j                  j                  j                  j                  |             S r   )r%   r*   r   r   r   s    r   r   z7TestRepositoryAbspath.test_sandboxing.<locals>.<lambda>  s#    RWW__TZZ-?-?-BC r   )r   r=   r   rD   r   r0   )rI   r   r   s   `  r   r   z%TestRepositoryAbspath.test_sandboxing  sq    C)*55dkkBC! 	:BHYr\*55dkkBCHRL++DKK89	:r   c                     t         j                  }	 dt         _        | j                          | j                          |t         _        y # |t         _        w xY wr   )r%   r   rS   r   r   s     r   r   z)TestRepositoryAbspath.test_windows_os_sep  s>    ff	!BF!  " BF[BFs   +A	 	AN)ru   rv   rw   rJ   rN   rS   r   r   r   r   r   r   r      s    I+:!r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestRepositoryExistsc                 |    t               | _        t        j                  t	               | j                        | _        y r   )r   rD   rE   r   r7   r   rH   s    r   rJ   z!TestRepositoryExists.setup_method  s%    i**=?DKKH
r   c                 2    t        | j                         | `y r   r   rH   s    r   rN   z$TestRepositoryExists.teardown_method#  r   r   c                 v    t        | j                        }t        | j                  j	                  |             y r   )r+   rD   r   r   r}   r   s     r   r^   z#TestRepositoryExists.test_ValidFile'  s'     -

!!'*+r   c                 x    t        | j                        }t        | j                  j	                  |      d       y r   )r.   rD   r   r   r}   r   s     r   ra   z%TestRepositoryExists.test_InvalidFile,  s)    "4;;/TZZ&&w/7r   c                 \    t        | j                  j                  t                            y r   )r   r   r}   r   rH   s    r   test_RemoveHTTPFilez(TestRepositoryExists.test_RemoveHTTPFile0  s    

!!-/23r   c                 .   t               }t        |      \  }}}}}}t        j                  j	                  | j
                  j                  |      }t        j                  |d       t        |      }	t        | j
                  j                  |	             y )Ni  )r   r
   r%   r*   rh   r   r   mkdirr+   r   r}   )
rI   	localfiler   r   r   r   r   r   r   r   s
             r   test_CachedHTTPFilez(TestRepositoryExists.test_CachedHTTPFile3  so    !O	 08	/B,sCWW\\$**"6"6?

V$ ,

!!'*+r   N)	ru   rv   rw   rJ   rN   r^   ra   r   r   r   r   r   r   r     s!    I,
84	,r   r   c                       e Zd Zd Zd Zd Zy)TestOpenFuncc                 "    t               | _        y r   )r   rD   rH   s    r   rJ   zTestOpenFunc.setup_method@  s    ir   c                 .    t        | j                         y r   )r   rD   rH   s    r   rN   zTestOpenFunc.teardown_methodC  s    t{{r   c                    t        | j                        }t        j                  || j                        }t	        |       |j                          t        j                  |      }t	        |       |j                          y )N)destpath)r+   rD   rE   rQ   r   r&   )rI   r]   rm   s      r   test_DataSourceOpenz TestOpenFunc.test_DataSourceOpenF  sR    #DKK0
__Z$++>

__Z(

r   N)ru   rv   rw   rJ   rN   r   r   r   r   r   r   ?  s     	r   r   c                  P    t        j                         } | `| j                          y r   )rE   rF   
_istmpdest__del__)rG   s    r   test_del_attr_handlingr   Q  s$     
			 B 	 JJLr   r   )0r%   rf   tempfiler   r   r   shutilr   numpy.lib._datasourcelib_datasourcerE   numpy.testingr   r   r	   urllib.requestrequestr   urllib.parser
   urllib.errorr   r   r   r   r   r0   r1   r3   r4   r   rj   r+   r.   r   r5   r7   r:   r=   r?   rA   ry   r   r   r   r   r   r   r   r   <module>r      s    	  9 9  * * > > ' ! !4 *) %		+@ *
'B) B)J5 5<>! >!B! !B, ,B $r   