
    iiD)                        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/dS )&    N)rmtree)NamedTemporaryFilemkdtempmkstemp)URLError)urlparse)assert_assert_equalassert_raisesc                 h    | 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      [/var/www/html/ecfs/ecfsenv/lib/python3.11/site-packages/numpy/lib/tests/test__datasource.pyurlopen_stubr      s5    
moo$I6662333    c                  @    t           j        at          t           _        d S N)urllib_requesturlopenold_urlopenr    r   r   setup_moduler      s     !(K)Nr   c                  (    t           t          _        d S 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                 Z    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.    fX7NNNHBHRLLLKr   c                     t          dd|           \  }}t          j        |           t          j        |           |S )Nr    r!   )r"   r   r#   )r   r%   r&   remover'   s      r   invalid_textfiler.   ;   s9    fX7CCCHBHRLLLIdOOO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                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestDataSourceOpenc                     t          j        |          }|                    t                                }t	          |           |                                 d S r   )
datasource
DataSourceopenr   r	   r&   )selftmp_pathdsfhs       r   test_ValidHTTPz!TestDataSourceOpen.test_ValidHTTP\   sC    "8,,WW]__%%





r   c                    t          j        |          }t                      }t          t          |j        |           	 |                    |           d S # t          $ r!}t          |j        d u            Y d }~d S 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,,grw,,,	%GGCLLLLL 	% 	% 	%AGtO$$$$$$$$$	%s   A 
B A<<Bc                 |    t          j        |          }t          t          |j        t                                 d S r   )rC   rD   r   r   _cacher5   rF   rG   rH   s      r   test_InvalidHTTPCacheURLErrorz0TestDataSourceOpen.test_InvalidHTTPCacheURLErrorl   s2    "8,,h	?+<+<=====r   c                     t          j        |          }t          |          }|                    |          }t	          |           |                                 d S r   )rC   rD   r+   rE   r	   r&   )rF   rG   rH   
local_filerI   s        r   test_ValidFilez!TestDataSourceOpen.test_ValidFilep   sL    "8,,#H--
WWZ  





r   c                     t          j        |          }t          |          }t          t          |j        |           d S r   )rC   rD   r.   r   rL   rE   )rF   rG   rH   invalid_files       r   test_InvalidFilez#TestDataSourceOpen.test_InvalidFilew   s9    "8,,'11grw55555r   c                    	 dd l }n## t          $ r t          j                     Y nw xY wt	          j        |          }t          j                            |d          }|	                    |d          }|
                    t                     |                                 |	                    |          }|                                }|                                 t          t          |           d S )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    	KKKK 	 	 	KMMMMM	 "8,,7<</::YYx%%




WWX



Z(((((    ''c                    	 dd l }n## t          $ r t          j                     Y nw xY wt	          j        |          }t          j                            |d          }|	                    |d          }|
                    t                     |                                 |                    |          }|                                }|                                 t          t          |           d S )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    	JJJJ 	 	 	KMMMMM	 "8,,7<<*:;;[[3''




WWX



Z(((((rh   N)
__name__
__module____qualname__rJ   rO   rS   rV   rY   rg   rl   r   r   r   rA   rA   [   s}          % % %> > >  6 6 6
) ) )") ) ) ) )r   rA   c                   &    e Zd Zd Zd Zd Zd ZdS )TestDataSourceExistsc                     t          j        |          }t          |                    t	                                           d S r   )rC   rD   r	   existsr   rR   s      r   rJ   z#TestDataSourceExists.test_ValidHTTP   s6    "8,,		-//**+++++r   c                     t          j        |          }t          |                    t	                                d           d S NF)rC   rD   r
   rs   r5   rR   s      r   rO   z%TestDataSourceExists.test_InvalidHTTP   s:    "8,,RYY0011599999r   c                 ,   t          j        |          }t          |          }t          |                    |                     t                      }t          |          }t          |                    |                     t          |           d S r   )rC   rD   r+   r	   rs   r   r   )rF   rG   rH   r   localdirs        r   rV   z#TestDataSourceExists.test_ValidFile   s}    "8,, **		'""###99 **		'""###xr   c                     t          j        |          }t          |          }t          |                    |          d           d S ru   )rC   rD   r.   r
   rs   )rF   rG   rH   r   s       r   rY   z%TestDataSourceExists.test_InvalidFile   sA    "8,,"8,,RYYw''/////r   N)rm   rn   ro   rJ   rO   rV   rY   r   r   r   rq   rq      sP        , , ,: : :	 	 	0 0 0 0 0r   rq   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestDataSourceAbspathc                 r   t          j        |          }t          t                                \  }}}}}}t          j                            |||                    t          j                                      d                    }t          ||
                    t                                           d S N/)rC   rD   r   r   r%   r*   r`   stripsepr
   abspath)rF   rG   rH   _netlocupath
local_paths          r   rJ   z$TestDataSourceAbspath.test_ValidHTTP   s    "8,,$,]__$=$=!65!QW\\(F"'++bf"5"5";";C"@"@B B
ZMOO!<!<=====r   c                 "   t          j        |          }t          |          }t          j                            |          d         }t          ||                    |                     t          ||                    |                     d S N)rC   rD   r+   r%   r*   splitr
   r   )rF   rG   rH   r   tmpfilenames        r   rV   z$TestDataSourceAbspath.test_ValidFile   su    "8,, **gmmG,,R0Wbjj55666Wbjj1122222r   c                 x   t          j        |          }t          t                                \  }}}}}}t          j                            |||                    t          j                                      d                    }t          ||
                    t                                k               d S 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   s    "8,,$,_->->$?$?!65!Qgll8V#(;;rv#6#6#<#<S#A#AC Crzz-//:::;;;;;r   c                 L   t          j        |          }t          |          }t          |          }t          j                            |          d         }t          ||                    |          k               t          ||                    |          k               d S r   )rC   rD   r+   r%   r*   r   r	   r   )rF   rG   rH   invalidfiler   r   s         r   rY   z&TestDataSourceAbspath.test_InvalidFile   s    "8,,$X.. **gmmG,,R0rzz+666777rzz'22233333r   c                    t          j        |          t          |          }t          j                            |          d         }fd}t           |t                                                    t          |                               t           |t                                                    t          |                               t           ||                              t          |                               t           ||                              t          |                               t          D ]z}t           |t          |z                                 t          |                               t           ||                              t          |                               {d S )Nr   c                 h    t           j                                                |                     S r   r%   r*   r   )xrH   s    r   <lambda>z7TestDataSourceAbspath.test_sandboxing.<locals>.<lambda>   s    A7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   st   "8,, **gmmG,,R07777]__%%00X??@@@_&&''223x==AABBBW((X77888[!!,,S]];;<<<! 	8 	8BDDR((33CMMBBCCCDDHH''H667777	8 	8r   c                 D   t           j        }	 dt           _        |                     |           |                     |           |                     |           |                     |           |                     |           |t           _        d S # |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   s    f	!BF))))))!!(+++!!(+++  *** BFFF[BF    s   A5B BN)	rm   rn   ro   rJ   rV   rO   rY   r   r   r   r   r   rz   rz      sn        > > >3 3 3< < <4 4 48 8 8
! 
! 
! 
! 
!r   rz   c                        e Zd Zd Zd Zd ZdS )TestRepositoryAbspathc                    t          j        t                      |          }t          t	                                \  }}}}}}t
          j                            |j        ||	                    t
          j
                  	                    d                    }|                    t                                }t          ||           d S 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    %moox@@$,]__$=$=!65!QW\\%/6"'++bf"5"5";";C"@"@B B
==!1!122Z*****r   c                    t          j        t                      |          fd}t           |t	                                                    t          |                               t          D ]z}t           |t          |z                                 t          |                               t           ||                              t          |                               {d S )Nc                 h    t           j                                                |                     S r   r   )r   r   s    r   r   z7TestRepositoryAbspath.test_sandboxing.<locals>.<lambda>  s!    q)9)9:: r   )	rC   r   r7   r	   r=   r   r   r   r0   )rF   rG   r*   r   r   s       @r   r   z%TestRepositoryAbspath.test_sandboxing   s    %moox@@::::^%%&&11#h--@@AAA! 	8 	8BDDR((33CMMBBCCCDDHH''H667777	8 	8r   c                     t           j        }	 dt           _        |                     |           |                     |           |t           _        d S # |t           _        w xY wr   )r%   r   rJ   r   r   s      r   r   z)TestRepositoryAbspath.test_windows_os_sep  s[    f	!BF)))  *** BFFF[BF    s   6A A N)rm   rn   ro   rJ   r   r   r   r   r   r   r      sA        + + +8 8 8! ! ! ! !r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestRepositoryExistsc                     t          j        t                      |          }t          |          }t	          |                    |                     d S r   )rC   r   r7   r+   r	   rs   rF   rG   r   r   s       r   rV   z#TestRepositoryExists.test_ValidFile  sE    %moox@@ **W%%&&&&&r   c                     t          j        t                      |          }t          |          }t	          |                    |          d           d S ru   )rC   r   r7   r.   r
   rs   r   s       r   rY   z%TestRepositoryExists.test_InvalidFile  sG    %moox@@"8,,U\\'**E22222r   c                     t          j        t                      |          }t          |                    t                                           d S r   )rC   r   r7   r	   rs   r   )rF   rG   r   s      r   test_RemoveHTTPFilez(TestRepositoryExists.test_RemoveHTTPFile  s<    %moox@@]__--.....r   c                 f   t                      }t          j        t                      |          }t	          |          \  }}}}}}t
          j                            |j        |          }t          j	        |d           t          |          }t          |                    |                     d S )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"  s    !OO	 %moox@@ ( 3 361aAW\\%/6::

V$$$ ,,W%%&&&&&r   N)rm   rn   ro   rV   rY   r   r   r   r   r   r   r     sP        ' ' '3 3 3
/ / /
' 
' 
' 
' 
'r   r   c                       e Zd Zd ZdS )TestOpenFuncc                    t          |          }t          j        ||          }t          |           |                                 t          j        |          }t          |           |                                 d S )N)destpath)r+   rC   rE   r	   r&   )rF   rG   rU   re   s       r   test_DataSourceOpenz TestOpenFunc.test_DataSourceOpen0  sf    #H--
_Z(;;;



_Z((





r   N)rm   rn   ro   r   r   r   r   r   r   /  s#        	 	 	 	 	r   r   c                  X    t          j                    } | `|                                  d S r   )rC   rD   
_istmpdest__del__)rH   s    r   test_del_attr_handlingr   ;  s,     
		 	 B 	 JJLLLLLr   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 9 9 9 9 9 9 9 9 ! ! ! ! ! ! ! ! ! ! ! !  * * * * * * * * * > > > > > > > > > >4 4 4 4 * * *) ) )
 %		+@ @ @ *
    ! ! !) ) )        A) A) A) A) A) A) A) A)H0 0 0 0 0 0 0 04;! ;! ;! ;! ;! ;! ;! ;!|! ! ! ! ! ! ! !6' ' ' ' ' ' ' ':
 
 
 
 
 
 
 
    r   