
    G/PhK)                        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/dS )&    N)mkdtempmkstempNamedTemporaryFile)rmtree)assert_assert_equalassert_raises)urlparse)URLErrorc                 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/test/jupyter/venv/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+   2   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.   9   s9    fX7CCCHBHRLLLIdOOO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                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestDataSourceOpenc                 h    t                      | _        t          j        | j                  | _        d S r   r   tmpdir
datasource
DataSourcedsselfs    r   setup_methodzTestDataSourceOpen.setup_methodZ   %    ii'44r   c                 2    t          | j                   | `d S r   r   rD   rG   rH   s    r   teardown_methodz"TestDataSourceOpen.teardown_method^       t{GGGr   c                     | j                             t                                }t          |           |                                 d S r   )rG   openr   r   r&   )rI   fhs     r   test_ValidHTTPz!TestDataSourceOpen.test_ValidHTTPb   s5    W\\-//**





r   c                     t                      }t          t          | j        j        |           	 | j                            |           d S # t          $ r!}t          |j        d u            Y d }~d S d }~ww xY wr   )r5   r	   OSErrorrG   rQ   r   errno)rI   r   es      r   test_InvalidHTTPz#TestDataSourceOpen.test_InvalidHTTPg   s    gtw|S111	%GLL 	% 	% 	%AGtO$$$$$$$$$	%s   A 
A7A22A7c                 ^    t          t          | j        j        t	                                 d S r   )r	   r   rG   _cacher5   rH   s    r   test_InvalidHTTPCacheURLErrorz0TestDataSourceOpen.test_InvalidHTTPCacheURLErrorp   s$    h0A0ABBBBBr   c                     t          | j                  }| j                            |          }t	          |           |                                 d S r   )r+   rD   rG   rQ   r   r&   )rI   
local_filerR   s      r   test_ValidFilez!TestDataSourceOpen.test_ValidFiles   s@    #DK00
W\\*%%





r   c                 n    t          | j                  }t          t          | j        j        |           d S r   )r.   rD   r	   rU   rG   rQ   )rI   invalid_files     r   test_InvalidFilez#TestDataSourceOpen.test_InvalidFiley   s-    '44gtw|\:::::r   c                    	 dd l }n## t          $ r t          j                     Y nw xY wt          j                            | j        d          }|                    |d          }|	                    t                     |                                 | j                            |          }|                                }|                                 t          t          |           d S )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    	KKKK 	 	 	KMMMMM	 7<<_==YYx%%




W\\(##



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


W\\(##



Z(((((rp   N)__name__
__module____qualname__rJ   rN   rS   rX   r[   r^   ra   ro   rt   r   r   r   rA   rA   Y   s        5 5 5    
% % %C C C  ; ; ;) ) ) ) ) ) ) )r   rA   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestDataSourceExistsc                 h    t                      | _        t          j        | j                  | _        d S r   rC   rH   s    r   rJ   z!TestDataSourceExists.setup_method   rK   r   c                 2    t          | j                   | `d S r   rM   rH   s    r   rN   z$TestDataSourceExists.teardown_method   rO   r   c                 l    t          | j                            t                                           d S r   )r   rG   existsr   rH   s    r   rS   z#TestDataSourceExists.test_ValidHTTP   s(    }//00000r   c                 n    t          | j                            t                                d           d S NF)r   rG   r}   r5   rH   s    r   rX   z%TestDataSourceExists.test_InvalidHTTP   s,    TW^^O$5$566>>>>>r   c                 "   t          | j                  }t          | j                            |                     t                      }t          |          }t          | j                            |                     t          |           d S r   )r+   rD   r   rG   r}   r   r   )rI   r   localdirs      r   r^   z#TestDataSourceExists.test_ValidFile   ss     --w''(((99 **w''(((xr   c                 ~    t          | j                  }t          | j                            |          d           d S r   )r.   rD   r   rG   r}   rI   r   s     r   ra   z%TestDataSourceExists.test_InvalidFile   s5    "4;//TW^^G,,e44444r   N)	ru   rv   rw   rJ   rN   rS   rX   r^   ra   r   r   r   ry   ry      sn        5 5 5  1 1 1? ? ?  5 5 5 5 5r   ry   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestDataSourceAbspathc                     t           j                            t                                | _        t          j        | j                  | _        d S r   )r%   r*   abspathr   rD   rE   rF   rG   rH   s    r   rJ   z"TestDataSourceAbspath.setup_method   s3    googii00'44r   c                 2    t          | j                   | `d S r   rM   rH   s    r   rN   z%TestDataSourceAbspath.teardown_method   rO   r   c                 ^   t          t                                \  }}}}}}t          j                            | j        ||                    t          j                                      d                    }t          || j	        
                    t                                           d S 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   s    /7/H/H,sCW\\$+v"'++bf"5"5";";C"@"@B B
Z!A!ABBBBBr   c                    t          | j                  }t          j                            |          d         }t          || j                            |                     t          || j                            |                     d S N)r+   rD   r%   r*   splitr   rG   r   )rI   r   tmpfilenames      r   r^   z$TestDataSourceAbspath.test_ValidFile   sk     --gmmG,,R0Wdgook::;;;Wdgoog6677777r   c                 d   t          t                                \  }}}}}}t          j                            | j        ||                    t          j                                      d                    }t          || j	        
                    t                                k               d S 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   s    /78I8I/J/J,sCgll4;#(;;rv#6#6#<#<S#A#AC Ctw}???@@@@@r   c                 L   t          | j                  }t          | j                  }t          j                            |          d         }t          || j                            |          k               t          || j                            |          k               d S r   )r+   rD   r%   r*   r   r   rG   r   )rI   invalidfiler   r   s       r   ra   z&TestDataSourceAbspath.test_InvalidFile   s    $T[11 --gmmG,,R0tw{;;;<<<tww77788888r   c                     t           j                  }t          j                            |          d         } fd}t           |t                                                     j                             t           |t                                                     j                             t           ||                               j                             t           ||                               j                             t          D ]j}t           |t          |z                                  j                             t           ||                               j                             kd S )Nr   c                 r    t           j                            j                            |                     S r   )r%   r*   r   rG   xrI   s    r   <lambda>z7TestDataSourceAbspath.test_sandboxing.<locals>.<lambda>   s#    RW__TW__Q-?-?@@ r   )r+   rD   r%   r*   r   r   r   
startswithr5   malicious_filesr0   )rI   r   r   tmp_pathfns   `    r   test_sandboxingz%TestDataSourceAbspath.test_sandboxing   sP    --gmmG,,R0@@@@))44T[AABBB**++66t{CCDDD!!,,T[99:::%%00==>>>! 	: 	:BHHYr\**55dkBBCCCHHRLL++DK889999	: 	:r   c                 :   t           j        }	 dt           _        |                                  |                                  |                                  |                                  |                                  |t           _        d S # |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   s    f	!BF!!!!!!!!###!!###  """ BFFF[BF    s   A0B BN)ru   rv   rw   rJ   rN   rS   r^   rX   ra   r   r   r   r   r   r   r      s        5 5 5  C C C8 8 8A A A9 9 9: : :
! 
! 
! 
! 
!r   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestRepositoryAbspathc                     t           j                            t                                | _        t          j        t                      | j                  | _        d S r   )	r%   r*   r   r   rD   rE   
Repositoryr7   reposrH   s    r   rJ   z"TestRepositoryAbspath.setup_method   s9    googii00*=??DKHH


r   c                 2    t          | j                   | `d S r   r   rD   r   rH   s    r   rN   z%TestRepositoryAbspath.teardown_method      t{JJJr   c                 l   t          t                                \  }}}}}}t          j                            | j        j        ||                    t          j                                      d                    }| j        	                    t                                }t          ||           d S 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  s    /7/H/H,sCW\\$*"6"'++bf"5"5";";C"@"@B B
:%%n&6&677Z*****r   c                 n     fd}t           |t                                                     j                             t          D ]j}t           |t
          |z                                  j                             t           ||                               j                             kd S )Nc                 r    t           j                            j                            |                     S r   )r%   r*   r   r   r   s    r   r   z7TestRepositoryAbspath.test_sandboxing.<locals>.<lambda>  s%    RW__TZ-?-?-B-BCC r   )r   r=   r   rD   r   r0   )rI   r   r   s   `  r   r   z%TestRepositoryAbspath.test_sandboxing  s    CCCC))**55dkBBCCC! 	: 	:BHHYr\**55dkBBCCCHHRLL++DK889999	: 	:r   c                     t           j        }	 dt           _        |                                  |                                  |t           _        d S # |t           _        w xY wr   )r%   r   rS   r   r   s     r   r   z)TestRepositoryAbspath.test_windows_os_sep  sW    f	!BF!!!  """ BFFF[BF    s   4A AN)ru   rv   rw   rJ   rN   rS   r   r   r   r   r   r   r      sb        I I I  + + +: : :! ! ! ! !r   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestRepositoryExistsc                     t                      | _        t          j        t	                      | j                  | _        d S r   )r   rD   rE   r   r7   r   rH   s    r   rJ   z!TestRepositoryExists.setup_method  s+    ii*=??DKHH


r   c                 2    t          | j                   | `d S r   r   rH   s    r   rN   z$TestRepositoryExists.teardown_method#  r   r   c                 |    t          | j                  }t          | j                            |                     d S r   )r+   rD   r   r   r}   r   s     r   r^   z#TestRepositoryExists.test_ValidFile'  s5     --
!!'**+++++r   c                 ~    t          | j                  }t          | j                            |          d           d S r   )r.   rD   r   r   r}   r   s     r   ra   z%TestRepositoryExists.test_InvalidFile,  s7    "4;//TZ&&w//77777r   c                 l    t          | j                            t                                           d S r   )r   r   r}   r   rH   s    r   test_RemoveHTTPFilez(TestRepositoryExists.test_RemoveHTTPFile0  s*    
!!-//2233333r   c                 8   t                      }t          |          \  }}}}}}t          j                            | j        j        |          }t          j        |d           t          |          }	t          | j        
                    |	                     d S )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  s    !OO	 08	/B/B,sCW\\$*"6??

V$$$ ,,
!!'**+++++r   N)	ru   rv   rw   rJ   rN   r^   ra   r   r   r   r   r   r   r     sq        I I I  , , ,
8 8 84 4 4	, 	, 	, 	, 	,r   r   c                        e Zd Zd Zd Zd ZdS )TestOpenFuncc                 ,    t                      | _        d S r   )r   rD   rH   s    r   rJ   zTestOpenFunc.setup_method@  s    iir   c                 .    t          | j                   d S r   )r   rD   rH   s    r   rN   zTestOpenFunc.teardown_methodC  s    t{r   c                    t          | j                  }t          j        || j                  }t	          |           |                                 t          j        |          }t	          |           |                                 d S )N)destpath)r+   rD   rE   rQ   r   r&   )rI   r]   rm   s      r   test_DataSourceOpenz TestOpenFunc.test_DataSourceOpenF  sj    #DK00
_Z$+>>>



_Z((





r   N)ru   rv   rw   rJ   rN   r   r   r   r   r   r   ?  sA               	 	 	 	 	r   r   c                  X    t          j                    } | `|                                  d S r   )rE   rF   
_istmpdest__del__)rG   s    r   test_del_attr_handlingr   Q  s,     
		 	 B 	 JJLLLLLr   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 9 9 9 9 9 9 9 9       * * * * * * * * * > > > > > > > > > > ' ' ' ' ' ' ! ! ! ! ! ! ! ! ! ! ! !4 4 4 4 * * *) ) ) %		+@ @ @ *
      ' ' '        B) B) B) B) B) B) B) B)J5 5 5 5 5 5 5 5<>! >! >! >! >! >! >! >!B! ! ! ! ! ! ! !B, , , , , , , ,B       $    r   