K iU)`ddlZddlmZddlmZddlmZmZm Z ddl m Z ddl m Z ddlZddlmcmZddlmZmZmZd%dZdadZd Zd Zd Zd Zd ZgdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(GddZ)GddZ*GddZ+GddZ,Gd d!Z-Gd"d#Z.d$Z/y)&N)rmtree)NamedTemporaryFilemkdtempmkstemp)URLError)urlparse)assert_ assert_equal assert_raisescN|tk(rtd}|Std)z$Stub to replace urlopen for testing.urltmp_)prefixzName or service not known) valid_httpurlrr)urldatatmpfiles f/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/numpy/lib/tests/test__datasource.py urlopen_stubrs' mo$I6233cBtjatt_yN)urllib_requesturlopen old_urlopenrrr setup_modulers!((K)Nrc"tt_yr)rrrrrrteardown_moduler"s (Nrzhttp://www.google.com/z index.htmlzhttp://fake.abc.web/site/zfake.txt)z /etc/shadowz ../../shadowz ..\system.datzc:\windows\system.datsthree is the magic numbercTtdd|d\}}tj||S)N.txtdstmp_T)suffixrdirtext)rosclosefiledirfdpaths rvalid_textfiler+4s&fX7NHBHHRL Krc|tdd|\}}tj|tj||S)Nr r!)r"rr#)rr%r&remover's rinvalid_textfiler.;s/fX7CHBHHRLIIdO KrcttzSr) http_path http_filerrrrrCs y  rcttzSr) http_fakepath http_fakefilerrrinvalid_httpurlr5Gs = ((rctSr)r0rrr valid_baseurlr7K rctSr)r3rrrinvalid_baseurlr:O rctSr)r1rrrvalid_httpfiler=Sr8rctSr)r4rrrinvalid_httpfiler?Wr;rcBeZdZdZdZdZdZdZdZdZ dZ d Z y ) TestDataSourceOpencjt|_tj|j|_yrrtmpdir datasource DataSourcedsselfs r setup_methodzTestDataSourceOpen.setup_method\!i '' 4rc2t|j|`yrrrDrGrHs rteardown_methodz"TestDataSourceOpen.teardown_method`t{{ Grc|jjt}t||j yr)rGopenrr r&)rIfhs rtest_ValidHTTPz!TestDataSourceOpen.test_ValidHTTPds& WW\\-/ *   rct}tt|jj| |jj |y#t$r!}t |j duYd}~yd}~wwxYwr)r5r OSErrorrGrQr errno)rIres rtest_InvalidHTTPz#TestDataSourceOpen.test_InvalidHTTPisVgtww||S1 % GGLL  % AGGtO $ $ %sA A7A22A7c^tt|jjt yr)r rrG_cacher5rHs rtest_InvalidHTTPCacheURLErrorz0TestDataSourceOpen.test_InvalidHTTPCacheURLErrorrsh0ABrct|j}|jj|}t ||j yr)r+rDrGrQr r&)rI local_filerRs rtest_ValidFilez!TestDataSourceOpen.test_ValidFileus2#DKK0 WW\\* %   rcxt|j}tt|jj |yr)r.rDr rUrGrQ)rI invalid_files rtest_InvalidFilez#TestDataSourceOpen.test_InvalidFile{s$' 4 gtww||\:rc ddl}tj j |jd}j|d}|jt|j|jj|}|j}|jtt|y#t$rtjYwxYw)Nrz foobar.txt.gzw)gzip ImportErrorpytestskipr%r*joinrDrQwrite magic_liner&rGreadliner )rIrdfilepathfpresults rtest_ValidGzipFilez%TestDataSourceOpen.test_ValidGzipFiles   77<< _= YYx %   WW\\( #  Z(  KKM B33CCc ddl}tj j |jd}j|d}|jt|j|jj|}|j}|jtt|y#t$rtjYwxYw)Nrzfoobar.txt.bz2rc)bz2rerfrgr%r*rhrDBZ2Filerirjr&rGrQrkr )rIrrrlrmrns rtest_ValidBz2Filez$TestDataSourceOpen.test_ValidBz2Files   77<< -=> [[3 '   WW\\( #  Z(  KKM rpN) __name__ __module__ __qualname__rJrNrSrXr[r^rarortrrrrArA[s05 %C ;) )rrAc0eZdZdZdZdZdZdZdZy)TestDataSourceExistscjt|_tj|j|_yrrCrHs rrJz!TestDataSourceExists.setup_methodrKrc2t|j|`yrrMrHs rrNz$TestDataSourceExists.teardown_methodrOrc\t|jjtyr)r rGexistsrrHs rrSz#TestDataSourceExists.test_ValidHTTPs}/0rc^t|jjtdyNF)r rGr}r5rHs rrXz%TestDataSourceExists.test_InvalidHTTPsTWW^^O$56>rct|j}t|jj |t }t|}t|jj |t |yr)r+rDr rGr}rr)rIrlocaldirs rr^z#TestDataSourceExists.test_ValidFilesS -w'(9 *w'(xrcxt|j}t|jj |dyr)r.rDr rGr}rIrs rraz%TestDataSourceExists.test_InvalidFiles'"4;;/TWW^^G,e4rN) rurvrwrJrNrSrXr^rarrrryrys 51?5rryc<eZdZdZdZdZdZdZdZdZ dZ y ) TestDataSourceAbspathctjjt|_t j |j|_yr)r%r*abspathrrDrErFrGrHs rrJz"TestDataSourceAbspath.setup_methods.ggoogi0 '' 4rc2t|j|`yrrMrHs rrNz%TestDataSourceAbspath.teardown_methodrOrc@tt\}}}}}}tjj |j ||j tjj d}t||jjtyN/) rrr%r*rhrDstripsepr rGr)rIschemenetlocupathpmsqryfrg local_paths rrSz$TestDataSourceAbspath.test_ValidHTTPsj/7 /H,sCWW\\$++v"'++bff"5";";C"@B Z!ABrct|j}tjj |d}t ||j j|t ||j j|yN)r+rDr%r*splitr rGr)rIr tmpfilenames rr^z$TestDataSourceAbspath.test_ValidFilesU -ggmmG,R0 Wdggook:;Wdggoog67rcDtt\}}}}}}tjj |j ||j tjj d}t||jjtk7yr) rr5r%r*rhrDrrr rGrr)rIrrrrrr invalidhttps rrXz&TestDataSourceAbspath.test_InvalidHTTPsn/78I/J,sCggll4;;#(;;rvv#6#<#z7TestDataSourceAbspath.test_sandboxing..s!RWW__TWW__Q-?@r) r+rDr%r*rr r startswithr5malicious_filesr0)rIrrtmp_pathfns` rtest_sandboxingz%TestDataSourceAbspath.test_sandboxings -ggmmG,R0 @)44T[[AB*+66t{{CD!,,T[[9:%00=>! :B HY^,77 D E HRL++DKK8 9 :rctj} dt_|j|j|j |j |j |t_y#|t_wxYwN\)r%rrSr^rXrarrI orig_os_seps rtest_windows_os_sepz)TestDataSourceAbspath.test_windows_os_sepsbff  !BF    !    !  ! ! #  ! ! #  " BF[BFs AA99 BN) rurvrwrJrNrSr^rXrarrrrrrrs,5C 8A 9 : !rrc*eZdZdZdZdZdZdZy)TestRepositoryAbspathctjjt|_t j t|j|_yr) r%r*rrrDrE Repositoryr7reposrHs rrJz"TestRepositoryAbspath.setup_methods2ggoogi0 **=?DKKH rc2t|j|`yrrrDrrHs rrNz%TestRepositoryAbspath.teardown_methodt{{ JrcXtt\}}}}}}tjj |j j ||jtjjd}|j jt}t||yr) rrr%r*rhr _destpathrrrr=r ) rIrrrrrrrrls rrSz$TestRepositoryAbspath.test_ValidHTTPsx/7 /H,sCWW\\$**"6"6"'++bff"5";";C"@B ::%%n&67Z*rc@fd}t|tjjtD]]}t|t |zjjt||jj_y)Ncttjjjj|Sr)r%r*rrrs rrz7TestRepositoryAbspath.test_sandboxing..s#RWW__TZZ-?-?-BCr)r r=rrDrr0)rIrrs` rrz%TestRepositoryAbspath.test_sandboxingsqC)*55dkkBC! :B HY^,77 D E HRL++DKK8 9 :rctj} dt_|j|j|t_y#|t_wxYwr)r%rrSrrs rrz)TestRepositoryAbspath.test_windows_os_seps>ff  !BF    !  " BF[BFs +A AN)rurvrwrJrNrSrrrrrrrsI+:!rrc0eZdZdZdZdZdZdZdZy)TestRepositoryExistsc|t|_tjt |j|_yr)rrDrErr7rrHs rrJz!TestRepositoryExists.setup_method!s%i **=?DKKH rc2t|j|`yrrrHs rrNz$TestRepositoryExists.teardown_method%rrcvt|j}t|jj |yr)r+rDr rr}rs rr^z#TestRepositoryExists.test_ValidFile)s' - !!'*+rcxt|j}t|jj |dyr)r.rDr rr}rs rraz%TestRepositoryExists.test_InvalidFile.s)"4;;/TZZ&&w/7rc\t|jjtyr)r rr}rrHs rtest_RemoveHTTPFilez(TestRepositoryExists.test_RemoveHTTPFile2s !!-/23rc.t}t|\}}}}}}tjj |j j |}tj|dt|} t|j j| y)Ni) rrr%r*rhrrmkdirr+r r}) rI localfilerrrrrrrrs rtest_CachedHTTPFilez(TestRepositoryExists.test_CachedHTTPFile5so!O 08 /B,sCWW\\$**"6"6?  V$ , !!'*+rN) rurvrwrJrNr^rarrrrrrr s!I, 84 ,rrceZdZdZdZdZy) TestOpenFuncc"t|_yr)rrDrHs rrJzTestOpenFunc.setup_methodBs i rc.t|jyr)rrDrHs rrNzTestOpenFunc.teardown_methodEst{{rct|j}tj||j}t ||j tj|}t ||j y)N)destpath)r+rDrErQr r&)rIr]rms rtest_DataSourceOpenz TestOpenFunc.test_DataSourceOpenHsR#DKK0 __Z$++ >   __Z (   rN)rurvrwrJrNrrrrrrAs  rrcPtj}|`|jyr)rErF _istmpdest__del__)rGs rtest_del_attr_handlingrSs$    B JJLrr)0r%urllib.requestrequestrshutilrtempfilerrr urllib.errorr urllib.parserrfnumpy.lib._datasourcelib _datasourcerE numpy.testingr r r rrrrr0r1r3r4rrjr+r.rr5r7r:r=r?rAryrrrrrrrrrs '99!! **>>4 *) %  +  @* !)B)B)J55<>!>!B!!B,,B$ r