K iddlmZmZmZddlZddlZddlZddlmZddlZddl Z ddl Z ddl Z ddl Z ddl ZddlmZddlmZmZmZmZddlmZmZmZmZmZmZmZmZmZm Z m!Z!ddl"m#Z#ejHjKejHjMe'Z(Gdd eZ)e jTd Z+e jTd Z,e jTd Z-e jTd Z.e jTdZ/e jTdZ0e jTdZ1e jTdZ2e jTdZ3dZ4e jTdZ5e jTdZ6e jTdZ7e jTdZ8e jTdZ9e jTe jtdde jtdde jtdde jtd d!e jvjx"e jtd#d$e jvjz"e jtd%d&e jvj|"e jtd'd(e jvjl"e jtd)d*e jtd+d,e jtd-d.e jtd/d0e jtd1d2e jtd3d4e jvjx"g 5d6Z?e jTd7Z@e jTd8ZAe jTd9ZBe jTd:ZCd;ZDd<ZEd=ZFd>ZGd?ZHe jvjxd@ZIdAZJdBZKdCZLdDZMdEZNdFZOdGZPdHZQdIZRdJZSdKZTdLZUdMZVdNZWdOZXdPZYdQZZdRZ[dSZ\dTZ]dUZ^dVZ_dWZ`e jvje jvjdXdde`fddYe`fdZdejfdZd[ejfgd\Zcd]Zdd^Zee jvje jvjd_dde`fddYe`fdZdejfdZd[ejfgd`Zge jvje jvjdadde`e`fddYe`e`fdZdejejfdZd[ejejfgdbZhdcZiddZjdeZkdfZldgZme jvjzdhZne jvjxdiZoe jvjxdjZpe jvjxdkZqe jvj|dlZre jvjldmZse jvjdndoedpfdqedrfdsedrfdtedrfduedvfdwedxfdyedxfdzed{fd|ed{fd}ed~fdxedxfd{ed{fdedfg dZte jvjddpdxdrd{e'gdZue jvjxdZve jvjzdZwdZxdZydZzdZ{dZ|dZ}dZ~dZdZdZdZe jvjxdZe jvjxdZe jvjxdZe jvjxdZdZe jvjxdZe jvjxdZe jvje jvje jvjxdZe jvjxe jvjde jvjeddZdZdZy))datetimetimezone timedeltaN)urlopen)assert_file_not_found)_filesystem_uri ProxyHandler_configure_s3_limited_userrunning_on_musllinux) FileTypeFileInfo FileSelector FileSystemLocalFileSystemSubTreeFileSystem_MockFileSystemFileSystemHandler PyFileSystem FSSpecHandler copy_files)find_free_portczeZdZddZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZy) DummyHandlerc||_yN)_value)selfvalues [/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pyarrow/tests/test_fs.py__init__zDummyHandler.__init__/s  c`t|tr|j|jk(StSr isinstancerrNotImplementedrothers r__eq__zDummyHandler.__eq__2& e. /;;%,,. .r!c`t|tr|j|jk7StSrr#r&s r__ne__zDummyHandler.__ne__7r)r!cy)Ndummyrs r get_type_namezDummyHandler.get_type_name<sr!c|Srr.rpaths rnormalize_pathzDummyHandler.normalize_path?s r!crg}|D]}d|vr*|jt|tj1d|vr*|jt|tj_d|vr*|jt|tj d|vr|jt t|S)Nfiledirnotfoundbadtype)appendr r File DirectoryNotFoundobjectIOError)rpathsinfor3s r get_file_infozDummyHandler.get_file_infoBs D~ HT8==9:$ HT8+=+=>?t# HT8+<+<=>d" FH%   r!c.|jdk7r#|jrgSt|jtdtj dtdtj g}|jr |tdtj dgz }|S)Nsomedir somedir/file1{)sizesomedir/subdir1somedir/subdir1/file2i)base_dirallow_not_foundFileNotFoundErrorr r r;r< recursive)rselectorinfoss rget_file_info_selectorz#DummyHandler.get_file_info_selectorRs    )'' '(9(9:: _hmm# > &(:(: ;     0(--cJ E r!c>|dk(r|dusJy|dk(r|dusJyt)NrMT non-recursiveF)r?)rr3rMs r create_dirzDummyHandler.create_dirbs3 ; $ $$ _ $% %%Mr!c|dk(sJy)N delete_dirr.r2s rrUzDummyHandler.delete_dirjs|###r!c@|jdst|dk(sJy)N/delete_dir_contents)strip ValueError)rr3missing_dir_oks rrXz DummyHandler.delete_dir_contentsms"zz# ,,,,r!cyrr.r/s rdelete_root_dir_contentsz%DummyHandler.delete_root_dir_contentsrs r!c|dk(sJy)N delete_filer.r2s rr_zDummyHandler.delete_fileus}$$$r!c |dk(sJ|dk(sJy)N move_frommove_tor.rsrcdests rmovezDummyHandler.movexsk!!!y   r!c |dk(sJ|dk(sJy)Ncopy_file_from copy_file_tor.rcs r copy_filezDummyHandler.copy_file|s&&&&~%%%r!crd|vr t||djd}tj|S)Nr8z :input_streamutf8rLencodepa BufferReaderrr3datas ropen_input_streamzDummyHandler.open_input_streams;  #D) )}%,,V4t$$r!crd|vr t||djd}tj|S)Nr8z :input_filerlrmrqs ropen_input_filezDummyHandler.open_input_files;  #D) ){#**62t$$r!cHd|vr t|tjSNr8rLroBufferOutputStreamrr3metadatas ropen_output_streamzDummyHandler.open_output_stream$  #D) )$$&&r!cHd|vr t|tjSrwrxrzs ropen_append_streamzDummyHandler.open_append_streamr}r!N)*)__name__ __module__ __qualname__r r(r+r0r4rBrPrSrUrXr]r_rfrjrsrur|rr.r!rrr.s\    $-  %!&% % ' 'r!rc8ttfdddS)Nc*|z jSras_posixptempdirs rzlocalfs..'A+//1r!Tfspathfnallow_move_dirallow_append_to_filedictrrequestrs `rlocalfsrs   1!  r!c\ttttfdddS)Nc*|z jSrrrs rrzpy_localfs..rr!Tr)rrr rrs `r py_localfsrs)   _%67 81!  r!c2ttdddS)Nc|Srr.rs rrzmockfs..r!Tr)rrrs rmockfsrs   !  r!cVttttdddS)Nc|Srr.rs rrzpy_mockfs..rr!Tr)rrr rrs r py_mockfsrs(   _%67 8!  r!c<ttdfdddS)NTuse_mmapc*|z jSrrrs rrz#localfs_with_mmap..rr!rrrs `rlocalfs_with_mmaprs!  D )1!  r!cNttt||ddddS)Nrc|Srr.rs rrz!subtree_localfs..rr!Tr)rrstr)rrrs rsubtree_localfsrs*  S\74= 9!  r!c#K|jjjdddlm}|d\}}d}||d|ddt d d } |j |t||jdd|j|y#t$r%}tjd |d|Yd}~Vd}~wwxYww)Ngcsr GcsFileSystem connectionpyarrow-filesystem/:httpT-)secondstest-project-id)endpoint_overridescheme anonymousretry_time_limit project_idzCould not create directory in : Fr) configpyarrowrequires pyarrow.fsrrrSOSErrorpytestskipr__add__rU)r gcs_serverrhostportbucketres rgcsfsrs NN##E*(L)JD$ "F !F!D6*"2.$  B@ f  ~~"   MM& @ 4RD1#>??@s0ACB&-C CB<7C<CCc#K|jjjdddlm}|d\}}}}d}||||d|ddd }|j |t ||jd d |j|yw) Ns3r S3FileSystemrrrrT) access_key secret_keyrrallow_bucket_creationallow_bucket_deletionFr) rrrrrrSrrrU) r s3_serverrrrrrrrs rs3fsrs NN##D)')2<)@&D$ J "F !F!D6*""  BMM&  ~~"   MM&sB B cRd}tt||d|jddS)Nzpyarrow-filesystem/prefix/rFr)rrr)rrprefixs r subtree_s3fsr s/ )F  VT$Z 0~~"  r!a{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:PutObjectTagging", "s3:DeleteObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::*" ] } ] }c#"K|jjjdddlm}|d\}}}}|d|}d}d} |||||||} | j | t | | jd d | j| yw) NazurerAzureFileSystemrrrr account_name account_keyblob_storage_authoritydfs_storage_authorityblob_storage_schemedfs_storage_schemeTr) rrrrrrSrrrU) r azure_serverrrrrrazurite_authorityazurite_scheme containerrs razurefsr-s NN##G,*,8,F)D$ k&$(N%I l%00A/@-;,:  .Wrr!Tr) rrrro have_libhdfsrrrrr)rhdfs_connectionrrrrrs rrrJsg NN##F+ ??  +,+&D$ $T 5B  !  r!ctjd}|jd}tt t |fdddS)Nfsspecr6c*|z jSrrrs rrz#py_fsspec_localfs..crr!Tr)r importorskip filesystemrrrrrrrs ` rpy_fsspec_localfsr]sF   *F   6 "B   b) *1!  r!ctjdd}|jdk(rtjd|j d}t t t|ddd S) Nrz0.7.5) minversionz0.8.5z,Bug in fsspec 0.8.5 for in-memory filesystemmemoryc|Srr.rs rrz$py_fsspec_memoryfs..rrr!Tr)rr __version__rrrrrrs rpy_fsspec_memoryfsrisb  g >F W$ BC   8 $B   b) *!  r!c #8Ktjd}|d\}}}}d}|j||td|d|}t t |}|j |t||jdd |j|yw) Nrrrzhttp://r) endpoint_url)keysecret client_kwargsFTr) rrrrrrrSrrU) rrrrrrrrrs rpy_fsspec_s3fsrxs   v &D)2<)@&D$ J "F   '$q(?@  B mB' (BMM&  ~~!   MM&sBBrzLocalFileSystem())idrzLocalFileSystem(use_mmap=True)rz$SubTreeFileSystem(LocalFileSystem())rr)rmarksrrrrrrrz_MockFileSystem()rz-PyFileSystem(ProxyHandler(LocalFileSystem()))rz-PyFileSystem(ProxyHandler(_MockFileSystem()))rz5PyFileSystem(FSSpecHandler(fsspec.LocalFileSystem()))rz8PyFileSystem(FSSpecHandler(fsspec.filesystem("memory")))rz0PyFileSystem(FSSpecHandler(s3fs.S3FileSystem())))paramsc8|j|jSr)getfixturevalueparamrs rfilesystem_configr sx  " "7== 11r!c |dSNrr.r s rrrs T ""r!c |dS)Nrr.r s rrrs X &&r!c |dS)Nrr.r s rrrs - ..r!c |dS)Nrr.r s rrrs 3 44r!ct|jtsJt|jtsJ|jdk\sJ|jt j |jjdzk(sJ|jj}|J|jdtdk(sJy)NrgeA) r$mtimermtime_nsintrapprox timestamptzinfo utcoffsetr) file_infors r check_mtimers ioox 00 0 i((# .. .    "" "   !!#c)"+ ++ +__ # #F      D !Yq\ 11 1r!c<|jJ|jJyr)rrrs rcheck_mtime_absentrs$ ?? "" "    %% %r!cJ|j t|yt|yr)rrrrs rcheck_mtime_or_absentrs9%Ir!cP|jdk(rtjdyy)Npy::fsspec+('s3', 's3a')zNot working with fsspec's s3fsreason) type_namerxfailrs rskip_fsspec_s3fsr's! ||11 <=2r!cP|jdk(rtj|yy)Nabfsr")r$rr)rr#s r skip_azurer*s ||v 6"r!cddlm}t|tdd|d\}}}}|dd|d|d}|j d t j tjd 5|j d dddt j tjd 5|jddddy#1swYIxYw#1swYyxYw)Nrrtest_fs_limited_user limited123rrr)rrrrzexisting-bucket/testzBucket 'new-bucket' not foundmatchz new-bucketzWould delete bucketzexisting-bucket) rrr _minio_limited_policyrSrraisesro ArrowIOErrorrU)rrrr_rs r+test_s3fs_limited_permissions_create_bucketr4s'y*?5|E .D$1 )!F!D6*  B MM() r.M N$ l#$ r.C D) '())$$))s*C)CC Cc\tjdtj}t d}|j dk(sJ|j dk(sJ|jtjk(sJ|jJt|t dtjdd}|j dk(sJ|j dk(sJ|jtjk(sJ|jdk(sJ|jd k(sJt|t d tj| }|j d k(sJ|j d k(sJ|jtjk(sJ|jJ|j |k(sJ|jd k(sJt|y) NR]foo/barbarz foo/baz.txtrFg`A)typerGrzbaz.txtlt<|+.foo)r9rl4|+.)r fromtimestamprutcr r3 base_namer9r UnknownrGrr;rrr<r)dtrAs rtest_file_info_constructorr@s    HLL 9B I D 99 !! ! >>U "" " 99(( (( ( 99  t M C& (D 99 %% % >>Y && & 99 %% % 99   ==/ // / E 2 2" =D 99   >>U "" " 99** ** * 99   ::   ==/ // /r!cttjt5tdddy#1swYyxYwr)rr1 TypeErrorrr.r!r'test_cannot_instantiate_base_filesystemrC7s( y ! s .7ct}t}t}|j|sJ|j|sJtjt 5|jdddd||cxk(r|k(sJJ|dk7sJ||k(sJ|tk7sJt d|t d|k(sJt d|t d|k7sJt d|t d|k7sJy#1swYxYw)Nstring/basez/other)rrequalsrr1rBr)fs0fs1fs2s rtest_filesystem_equalsrL<s  C  C  C ::c?? ::c?? y ! 8 #     !8O8 #:: /# ## # Wc *.?.M MM M Wc *.?.M MM M Wc *.?#.N NN Ns C77Dctjtd5|jdddd|Jy#1swYxYw)Nz got NoneTyper.)rr1rBrHr&s rtest_filesystem_equals_nonerNPs< y 7 $ >>s ;AcPt}td|}|jdk(sJ|j|k(sJt |j dsJtdt}|jdk(sJ|j|k(sJt |j dsJy)NrGz/base/zHSubTreeFileSystem(base_path=/base/, base_fs=.PathN)rrrr.r!rPathrws r!rxg?cy)Nryr.r.r!rrz1test_non_path_like_input_raises..sr!)tuplepathlibrxrr1rBrS)rrx invalid_pathsr3s rtest_non_path_like_input_raisesr~sr  TVUWb"i\\^%M  ]]9 % MM$      s A00A9 c|d}|d}|d}|d}|j||j|5 ddd|j|5}|jdddd|j||||g\}}} } |j|k(sJdt |vsJ|j dk(sJ|jdk(r|jtjk(s0J|jtjk(sJd t |vsJ|jJt||jt|k(sJ|jd k(sJ|j dk(sJ|jtj k(sJd t |vsJ|jd k(sJ|jd vr t#|| jt|k(sJ| jdk(sJ| j dk(sJ| jtj k(sJd t | vsJ| jdk(sJ|jd vr t#| | jt|k(sJ| jdk(sJ| j dk(sJ| jtjk(sJ| jJ| j$Jdt | vsJt'| |j|} |j| jk(sJ|j| jk(sJy#1swYxYw#1swYxYw)Nrcrdrezzzrfrhr!zFileType.Directoryriz FileType.Filer)zpy::fsspec+memoryr!txtrFzFileType.NotFound)rSr|rgrBr3rR extensionr$r9r r=r<rGrrr=r;rrr) rrrhrirjrrkrlrmrnzzz_info aaa_info2s rtest_get_file_infors6  C BwA -CMM#  r "    q !R +-*:*:CQ;L*M'Hgvx ==C   DN "" "    ## # ||11}} 1 1111}} 2 2222#tH~555 ==  (# <<3r7 "" "    $$ $    "" " <<8== (( ( d7m ++ + <<1   ||LLG ;;#a&    w && &   u $$ $ ;;(-- '' ' d6l ** * ;;!   ||LLF ==CH $$ $    && &    ## # ==H-- -- - ==  >> !! ! $x. 00 0x   %I ==INN ** * ==INN ** *c  sL9M9MMc~|d}|d}|d}|d}|d}|d} |j||j|5 ddd|j|5 ddd|j||j|5 ddd|j|t|dd }|j|k(sJ|j |} |j d k(rt | d k(nt | d k(sJ| D] } | jj|s6| jj|s| jj|r| jtjk(sJ| jjd j|s*| jjd j|r| jtjk(sJtd| jt|  t|d}|j |} |j d k(rt | dk(sJt | d k(sJ|j!|y#1swY.xYw#1swY xYw#1swYxYw#|j!|wxYw)Nz selector-dir/zselector-dir/test_file_azselector-dir/test_file_bzselector-dir/test_dir_az#selector-dir/test_dir_a/test_file_czselector-dir/test_dir_bFT)rKrMr!rFrWzunexpected path rM)rSr|rrJrBr$lenr3endswithr9r r;rstripr<rZrrU) rrrJfile_afile_bdir_afile_cdir_brNrOrAs r test_get_file_info_with_selectorrsro&H . /F . /F , -E 9 :F , -E-  h  " "6 *     " "6 *    e  " "6 *    e %*.0  H,,,  * <<5 5 J!Ou:? "? (D ""6*dii.@.@.HII&&v.yyHMM111))""3'007))""3'007yyH$6$6666 #3DII;!?@@ !$ ' ( E:  * <<5 5u:? "?u:? "? hW      L hsT"J)JJ)/J1*J)JGJ)J J)JJ)J&!J))J<cXt||d}tjtj5|j |ddd|j ||j ||d}|j |d|j |y#1swYXxYw)Nztest-directory/zdeeply/nested/test-directory/Tr)r'rr1ror2rUrS)rrds rtest_create_dirrsR !A r ' aMM!MM!./AMM!tM$MM!s B  B)ct||d}|d}|j||j|tjt j 5|j|dddtjt j 5|j|dddy#1swYGxYw#1swYyxYw)N directory/directory/nested/)r'rSrUrr1ror2rrrnds rtest_delete_dirr#sR|A # $BMM"MM! r ' b r ' as!B9C9CCcdt||d}|d}|j||j||j||j|}|jt j k(sJ|d}|d}|d}|j||j||j|5}|jdddd|j||j|}|jt j k(sJy#1swYKxYw)Nrr directory2zdirectory2/nestedzdirectory2/nested/target-filedata) r'rSrUrBr9r r=r|rg)rrrrdir_infofss r$test_delete_dir_with_explicit_subdirr1s R|A # $BMM!MM"MM!"H ==H-- -- - |A # $B./AMM!MM"  q !Q MM!"H ==H-- -- - s D&&D/c|t||d}|d}|j||j|tjt j 5|j|ddd|j|dtjt j 5|j|ddd|j|tjt j 5|j|dddy#1swYxYw#1swYdxYw#1swYyxYw)NrrT)r[)r'rSrXrr1ror2rUrs rtest_delete_dir_contentsrQsR|A # $BMM"1 r ' b2d3 r '# r"#MM! r ' a ##s$!D1D&?D2D#&D/2D;c|d}|d}|d}|d}|j|tjtj5|j ddddtjtj5|j ddddtjtj5|j dddd|j dd |j dd |j dd tjtj 5|j|dddy#1swYxYw#1swYxYw#1swYxYw#1swYyxYw) NrrrrrrW//Taccept_root_dir)rSrr1ro ArrowInvalidrXr2rU)rrrrrs r_check_root_dir_contentsrcs@ B H F|A # $BMM" r '# r"# r '$ s#$ r '% t$%2t43546 r ' a##$$%% s0E E& E2?E>E#&E/2E;>Fc0t|t|yr)r)rrs rtest_delete_root_dir_contentsrysV$Y'r!c|d}|d}|j|5 ddd|j|||j||j|y#1swY>xYw)Nztest-copy-source-fileztest-copy-target-file)r|rjr_rrrts rtest_copy_filer~sf&'A&'A  q !   LLANN1NN1   s A!!A*ct|d|d}|d}|j||ra|j||tjt j 5|j|ddd|j|ytjt j 5|j||dddy#1swYZxYw#1swYyxYw)N.Not implemented yet in for Azure. See GH-40025z source-dir/z target-dir/)r*rSrfrr1ror2rU)rrrrrs rtest_move_directoryrsrCD }A}AMM! 1 ]]2?? +  MM!   a ]]2?? +  GGAqM       s%C4CCC%cxt|t|d|d}|d}|j|5 ddd|j||t j t j5|j|ddd|j|y#1swYjxYw#1swY'xYw)Nrztest-move-source-fileztest-move-target-file) r'r*r|rfrr1ror2r_rs rtest_move_filersRrCD&'A&'A  q !   GGAqM r ' qNN1   sB$8B0$B-0B9c|d}|j|5 ddd|j|tjtj 5|j|ddd|d}|j ||d}|j|5}|jdddd|j|y#1swYxYw#1swYsxYw#1swY3xYw)Nztest-delete-target-fileztest-delete-nestedztest-delete-nested/target-filer) r|r_rr1ror2rSrgrU)rrrrrrs rtest_delete_filers()A  q !   NN1 r ' q #$AMM!/0A  q !Q MM!   s#CC$C(CC%(C1c|Srr.)vs ridentityrs Hr!) compression buffer_size compressor@gzipc|d}ddz}|j|5}|j||ddd|j|||5}|j}ddd|k(sJy#1swY=xYw#1swYxYw)Nzopen-input-streamssome data for reading )r|rgrsread) rrrrrrrrrresults rtest_open_input_streamrs "#A % +D  q !"Q  4 !"  ak :a T>> ""sA3A?3A<?Bc|d}ddz}|j|5}|j|dddtddz}|j|5}|j }ddd|k(sJ|j|5}|j ||j }ddd|||dk(sJy#1swYxYw#1swYbxYw#1swY,xYw)Nzopen-input-file some datar)r|rgrrurseek)rrrrrr read_fromrrs rtest_open_input_filers !A $ D  q !Q  L!C'I  A ! T>>  A ! y T)*% %% %s#B>C  "C>C CCc|d}tjt5|j|dddy#1swYyxYw)Nzopen-input-stream-not-found)rr1rLrs)rrrs r test_open_input_stream_not_foundrs=,-A ( )  Q   s =A)rr decompressorc |d}ddz}|j|||5}|j|ddd|j|||5}|jt ||k(sJ dddy#1swYFxYw#1swYyxYw)Nzopen-output-streamssome data for writingr)r|rgrsrr)rrrrrrrrrs rtest_open_output_streamrs #$A #d *D  q+{ ;q    ak :)avvc$i D((())))sA8 B8BB )rrrrc.|d}|d}|j|5} | j|ddd|rh|j|||5} | jdddd|j|5} | j } ddd| } | dk(sJyt j tj5|j|||dddy#1swYxYw#1swYxYw#1swYrxYw#1swYyxYw)Nzopen-append-streamsalready existing)rrs newly addedsalready existing newly added) r|rgrrsrrr1roArrowNotImplementedError) rrrrrrrrinitialrrrs rtest_open_append_streamrs" #$A,-G  q !Q   " "1+/:#< &?@ GG$ % & ! !! $ VVXF f%9999 ]]266 7 ;  ! !!.9 " ; ; ; & &    ; ;s/C'C3=C? D 'C03C<?D Dc|d}ddi}d}|j||5}|j|ddd|j|5}|j|k(sJ|j }ddd|j dvsd|j vr=t |d|jD]\}}||jk(rJyik(sJy#1swYxYw#1swYvxYw) Nzopen-output-stream-metadata Content-Typezx-pyarrow/testr)r{)rrr)rYzWAzure filesystem currently only returns system metadata not user metadata. See GH-40026) r|rgrsrr{r$r*itemsrn) rrrr{rrr got_metadatakrs r test_open_output_stream_metadatar1s,-A 01H D  q8  4    a $Avvx4zz| $ ||,,",,0F % &NN$ 1DAq?ahhj0 00 1r!!!$$sC &C(C%(C1ctdtjt5tddddy#1swYyxYw)NFr)xxx)rrr1rBr.r!rtest_localfs_optionsrHs3U# y !#E"###s <Ac|d}t5|jddddt5|jddddt5|jdddddt5|j ddddt5|j ddddt5|j dddddt5|jdddddy#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYkxYw#1swYyxYw)Nrz/non/existent/filez/non/existent/dirFrz /non/existentz/xxx)rrsr|rSrUr_rfrj)rrs rtest_localfs_errorsrPs4 B  3 123  4 234  < )U ;<  + )*+  , *+,  ) ()  . _f-..3344<<++,,))..sRDDD>D+"D7E+EDDD(+D47EE Ec|d}tjt}|j}|j |j |j g\}}|j |jjk(sJ|j|jjk(sJt||j|jjk(sJt|yr ) r|rx__file__parentrBrrGstatst_sizer st_mtime_nsr)rr file_pathdir_pathrrs rtest_localfs_file_infords B X&IH,,i.@.@.B.6.?.?.A.CDY >>Y^^-55 55 5   !1!=!= == =      ; ; ;; ;r!ctjdtj}t |}|j d5 ddd|j dg\}|j|k(sJy#1swY/xYw)Nr6r:)rr;rr<rr|rBr)rr?rrAs rtest_mockfs_mtime_roundtriprrsn    HLL 9B  B  u %     ug &FT ::    s A11A:c Jddlm}tj}|dd|dddd }t ||sJ|j dk(sJ|j dk(sJ|j|j||k(sJ|}t ||sJ|j|j||k(sJ|d }t ||sJ|j|j||k(sJ|d d d}t ||sJ|j|j||k(sJtjt5|ddddtjt5|d ddddtjt5|d ddddtjt5|tjdddy#1swYxYw#1swYxYw#1swY_xYw#1swYyxYw)Nrrabczservice_account@apachezus-west2httpslocalhost:8999r) access_tokentarget_service_accountcredential_token_expirationdefault_bucket_locationrrrTrauthenticated-read text/plainACLrdefault_metadataaccess)rr)rracct)rr)r) rrrnowr$rrr]r\rr1rZ)r^rr?rs rtest_gcs_optionsr|s ( B E.F35/9%9I"3  5B b- (( ( % % 33 3 ==- -- -   }2226 72 == = B b- (( (   }2226 72 == =  &B b- (( (   }2226 72 == = 0D9E)G HB b- (( (   }2226 72 == = z "-8,- z "=8<= z "EVDE z "B(,,.ABB --==EEBBs0 G58 H$ H H5G>H  HH"c ddlm}m}m}m}|dddddd }t ||sJ|j dk(sJ|j|j||k(sJ|d d d d }t ||sJ|j|j||k(sJ||d}t ||sJ||d}t ||sJ|d }t ||sJ|j|j||k(sJ||k7sJ|d}t ||sJ|j|j||k(sJ|d}t ||sJ|j|j||k(sJ|dddd}t ||sJ|j|j||k(sJ||k7sJ|d}t ||sJ|j|j||k(sJ|j|j||k7sJ|dd}t ||sJ|j|j||k(sJ|ddd}t ||sJ|j|j||k(sJ|dd}t ||sJ|j|j||k(sJ|dd}t ||sJ|j|j||k(sJ||k7sJ|dd }t ||sJ|j|j||k(sJ|d!"}t ||sJ|j|j||k(sJ||d#"k7sJ||k7sJtjt5|d$dddtjt5|d%dddtjt5|dd&dddtjt5|dd'dddtjt5|ddd()dddtjt5|ddd*dddtjt5|d(d+dddtjt5|d,d-g.dddtjt5||dddy#1swYqxYw#1swYSxYw#1swY4xYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw)/Nr)AwsDefaultS3RetryStrategyAwsStandardS3RetryStrategyrS3RetryStrategyrrtoken us-east-2rr)rr session_tokenregionrrrolesessionrd)role_arn session_name external_idload_frequencyr) max_attempts)retry_strategy)r Tr)background_writesrrr)rr)allow_delayed_open)rr)rr)check_directory_existence_before_creationg?g?)request_timeoutconnect_timeout)rforce_virtual_addressingzca.pem)tls_ca_file_pathz other_ca.pem)r)r)rr)rrarn)rrr )rrr)r rr:r8r) rrrrrr$rr]r\rr1rZ)r^rrrrrrKs rtest_s3_optionsrs-- h$+K$8H JB b, '' ' 99 ## #   }2226 72 == = vI"&s II I D MB b, '' '   }2226 72 == = D@D FB b, '' '   }2226 72 == = c4 @B b, '' '   }2226 72 == = tS AC c< (( (   }2237 8C ?? ? "99 (8SW XB b, '' '   }2226 72 == = x 0B b, '' '   }2226 72 == = ~> >> >    z "*)* z "*)* z "A@A z "A@A z " Hu   z " H   z "5et45 z "6uen56 z "7O$5677)****AAAA    556677sl* U# U0 U=, V  V V#2 V/ V; W#U-0U:=V VV #V,/V8;WWcddlm}dddd}d}ddd d}d }|| }t||sJ|j|j ||k(sJ|| }t||sJ|j|j ||k(sJ|| }t||sJ|j|j ||k(sJ|| }t||sJ|j|j ||k(sJ|| }|| } || k(sJ|j|j || k(sJ|j|j | |k(sJ|| }|| } || k(sJ|j|j || k(sJ|j|j | |k(sJ|| }|| } || k(sJ|j|j || k(sJ|j|j | |k(sJ|| }|| } || k(sJ|j|j || k(sJ|j|j | |k(sJ|| }|| } || k(sJ|j|j || k(sJ|j|j | |k(sJ|| }|| } || k(sJ|j|j || k(sJ|j|j | |k(sJ|| }|| } || k7sJ|j|j || k7sJ|j|j | |k7sJ|| }|| } || k7sJ|j|j || k7sJ|j|j | |k7sJ|| }|| } || k7sJ|j|j || k7sJ|j|j | |k7sJ|| }|| } || k7sJ|j|j || k7sJ|j|j | |k7sJ|| }|} || k7sJ|j|j || k7sJ|j|j | |k7sJ|| }|} || k7sJ|j|j || k7sJ|j|j | |k7sJ|| }|} || k7sJ|j|j || k7sJ|j|j | |k7sJ|| }|} || k7sJ|j|j || k7sJ|j|j | |k7sJt j t5|d dddt j t5|dd d dddt j t5|dd d dddt j t5|ddd dddt j tj5|d dddt j tj5|dddd dddy#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYtxYw#1swYyxYw)Nrrr localhosti'#)rrrzhttp://localhost:8999rizhttps://localhost:8080) proxy_options)rr#r)rr)rr)rrzhttpsB://localhost:9000httpA) rrr$r]r\rr1rBKeyErrorror) monkeypatchr^rproxy_opts_1_dictproxy_opts_1_strproxy_opts_2_dictproxy_opts_2_strrrJrKs rtest_s3_proxy_optionsr$ s/'$*;M.#*KN/ $5 6B b, '' '   }2226 72 == = $5 6B b, '' '   }2226 72 == = $4 5B b, '' '   }2226 72 == = $4 5B b, '' '   }2226 72 == = %6 7C %6 7C #::   }2237 8C ?? ?   }2237 8C ?? ? %6 7C %6 7C #::   }2237 8C ?? ?   }2237 8C ?? ? %5 6C %5 6C #::   }2237 8C ?? ?   }2237 8C ?? ? %5 6C %5 6C #::   }2237 8C ?? ?   }2237 8C ?? ? %6 7C %5 6C #::   }2237 8C ?? ?   }2237 8C ?? ? %6 7C %5 6C #::   }2237 8C ?? ?   }2237 8C ?? ? %6 7C %6 7C #::   }2237 8C ?? ?   }2237 8C ?? ? %6 7C %5 6C #::   }2237 8C ?? ?   }2237 8C ?? ? %5 6C %6 7C #::   }2237 8C ?? ?   }2237 8C ?? ? %5 6C %5 6C #::   }2237 8C ?? ?   }2237 8C ?? ? %6 7C .C #::   }2237 8C ?? ?   }2237 8C ?? ? %5 6C .C #::   }2237 8C ?? ?   }2237 8C ?? ? %6 7C .C #::   }2237 8C ?? ?   }2237 8C ?? ? %5 6C .C #::   }2237 8C ?? ?   }2237 8C ?? ? y !@#>?@ x HK#FGH x Fgt#DEF x Lfk#JKL r '>#<=> r '3g{,0$2 333@@HHFFLL>>33sH ^ - ^ ^& ^2 ^>6_  ^^#&^/2^;>_ _cddlm}|dd}d}tjt|5}|j ddddd t jvry|d d}|j dy#1swY=xYw) Nrrz eu-north-1T)rraWhen getting information for bucket 'voltrondata-labs-datasets': AWS Error UNKNOWN \(HTTP status 301\) during HeadBucket operation: No response body. Looks like the configured region is 'eu-north-1' while the bucket is located in 'us-east-2'.|NETWORK_CONNECTIONr.voltrondata-labs-datasetsNETWORK_CONNECTIONr)rrrr1rrBrr)rrmsgexcs rtest_s3fs_wrong_regionr*s' \T :B !C wc *6c 456s399~- [D 9B0166s A<<Bchddlm}|d}t||sJ|j|j ||k(sJ|dd}t||sJ|j|j ||k(sJ||k7sJ|ddd d d d }t||sJ|j|j ||k(sJ||k7sJ|dd }t||sJ|j|j ||k(sJ||k7sJ|dddd}t||sJ|j|j ||k(sJ||k7sJ|dd}t||sJ|j|j ||k(sJ||k7sJt j td5|dddddt j td5|dddddd}t j t|5|ddddddt j td5|ddddddt j t|5|ddddddt j t5|ddd dddt j t5|dddy#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYpxYw#1swYyxYw)Nrrzfake-account-name)rfakeaccountkey)rrz fake-account fakeaccountzfake-blob-authorityzfake-dfs-authorityrr fakesastoken)r sas_tokenzfake-tenant-idzfake-client-idzfake-client-secret)r tenant_id client_id client_secret)rr1zclient_id must be specifiedr.)rr0)rr2zInvalid Azure credential configuration: For ManagedIdentityCredential, provide only client_id. For ClientSecretCredential, provide tenant_id, client_id, and client_secret.)rr1r2)rr0r2)rr0r1)rrr/) rrr$r]r\rr1rZrB) r^rrJrKfs3fs4fs5fs6 invalid_msgs rtest_azurefs_optionsr8s`* ': ;C c? ++ +   }2237 8C ?? ? ':&6 8C c? ++ +   }2237 8C ?? ? #:: ~=1F0D.5-4  6C c? ++ +   }2237 8C ?? ? #:: ':$2 4C c? ++ +   }2237 8C ?? ? #:: (""*  C c? ++ +   }2237 8C ?? ? #:: (" C c? ++ +   }2237 8C ?? ? #:: z)F G ,&  z)F G ,.   W z 5 ,&.   z)F G ,&.   z 5 ,&&   z "2%8m"0 22 y !W          22sT8 K& K, K8 L4 L! LL(K),K58LL LL%(L1c $ddlm}tjst j d|\}}}d}d}d}d} |||d||| } |j | j||d|||} |j | j||d |||} |j | j||d |d z||} |||}|j d |d |}|||d}|||dd}|||dtjd}|||dd}|||ddddi}| | k(sJ||k(sJ||k7sJ| | k7sJ| | k7sJ||k7sJ| | k7sJ| | k7sJ||k7sJ||k(sJ||k7sJ||k7sJt jt5|dddt jt5|j dddd| | | | |||||||f D]'}|j|j||k(r'J|\}}}||||}|jtdsJ|j d |d |d|}|jtdsJy#1swYxYw#1swYxYw)NrrriizIhdfs://{}:{}/?user={}&replication={}&buffer_size={}&default_block_size={}libhdfs)r replicationrdefault_block_sizemeryzhdfs://r localuser)r cache_path)r kerb_ticket cache_path2 hdfs_tokenabcd)rrA extra_confrrWz/?user=)rrrorrrfrom_uriformatr|rxr1rBr]r\rBr)rr^rrrrr<rr=urihdfs1hdfs2hdfs3hdfs4hdfs5hdfs6hdfs7hdfs8hdfs9hdfs10hdfs11rrs rtest_hdfs_optionsrT s&+ ??  +,&D$KK$ $C T4i)4+0B DE  % %cjj dI{K9K' E  % %cjj dD+{4F' E  % %cjj dD+/;8J' E T4 (E  % %vQtf&= >E T4k :E T4k)5 7E T4k)0l)C EE dD{*79F dD{*6*6)?AF E>> E>> E>> E>> E>> E>> E>> E>> E>> E>> U?? U?? y ! y !%!!!$%eUE5%ff&B""=#6#6r#:;rAAAB'D$ D$T 2D   l3/ 00 0  $ $ $qgdV, D   l3/ 00 0#%%sI:J:JJ)rHexpected_klass expected_pathzmock:rz mock:foo/barr7z mock:/foo/barzmock:///foo/barzmock:///some%20path/%C3%A9u some path/ézfile:/rWzfile:///z file:/foo/barz/foo/barzfile:///foo/barzfile:///some%20path/%C3%A9u /some path/éu/some path/%20éc^tj|\}}t||sJ||k(sJyr)rrFr$)rHrUrVrr3s rtest_filesystem_from_urirXUs6&""3'HB b. )) ) =  r!r3ctj|}tj|\}}t |t sJ||j jjk(sJyr) r|rxrrFr$rresolveabsoluter)r3rrs r test_filesystem_from_path_objectr\ms\  TA""1%HB b/ ** * 199;'')224 44 4r!c Fddlm}|d\}}}}d|d|d|d|d }tj|\}}t ||sJ|dk(sJ|j ||j |g\} | j|k(sJ| jtjk(sJy) Nrrrs3://rz0@mybucket/foo/bar?scheme=http&endpoint_override=z&allow_bucket_creation=Truemybucket/foo/bar) rrrrFr$rSrBr3r9r r<) rrrrrrrHrr3rAs rtest_filesystem_from_uri_s3r`xs')2<)@&D$ J *Qzl+!F!D6)D FC""3'HB b, '' ' % %% %MM$   tf %FT 99   99** ** *r!cBddlm}|d\}}dd|d|dzdz}tj|\}}t ||sJ|d k(sJ|j ||j |g\}|j|k(sJ|jtjk(sJy) Nrrrzgs://anonymous@z/mybucket/foo/bar?scheme=http&endpoint_override=r&z0retry_limit_seconds=5&project_id=test-project-idr_) rrrrFr$rSrBr3r9r r<)rrrrrHrr3rAs rtest_filesystem_from_uri_gcsrcs(L)JD$  C""3'HB b- (( ( % %% %MM$   tf %FT 99   99** ** *r!ct}t|}t|tsJ|jdk(sJ|j|usJt j t5tddddy#1swYyxYwNz py::dummy)rrr$r$handlerrr1rB)rfrs rtest_py_filesystemrgspnG g B b, '' ' <<; && & ::  y !Ts " A77Bc(td}td}td}t|}t|}t|}t|}||usJ||usJ||usJ||k(sJ||k7sJ||k(sJ|tk7sJ|tk7sJy)Nryr:)rrrr>)handler1handler2handler3rJrKr3r4s rtest_py_filesystem_equalityrlsAHAHAH x C x C x C x C c>> c>> c>> #:: #:: #:: /# ## # &(??r!ct}t|}|j|}|j|}t |t sJ||k(sJ|j |k(sJ|jdk(sJyre)rrr\r]r$rrfr$)r^rfrr_r`s rtest_py_filesystem_picklingrnswnG g B$$R(J"":.H h ++ + r>>   w && &    ,, ,r!cRt}t|}t|tsJtj|}d}|Jd}|Jt}t|}tj|}d}||j usJ|Jd}|Jyr)rrr$weakrefrefrf)rfrwrs rtest_py_filesystem_lifetimerssnG g B b, '' ' W BG 4   B 4<<nG g B W BG 42::   4   B 4<xYw#1swYyxYw)Nzsome/dirz some/filer8r9r) rrrBr3r9r r<r;r=rr1rBr?)rfrrAs r test_py_filesystem_get_file_inforus4nG g B   zl +FT 99 "" " 99** ** *   {m ,FT 99 ## # 99 %% %   zl +FT 99 "" " 99)) )) ) y !& )%& w " %!""&&""s;E /E EE cZt}t|}td}|j|}t |dk(sJ|dj dk(sJ|dj tjk(sJ|djdk(sJ|dj dk(sJ|dj tjk(sJ|djJtdd }|j|}t |d k(sJ|dj dk(sJ|dj dk(sJ|dj d k(sJtd }tjt5|j|dddtd d }|j|gk(sJy#1swY-xYw)NrD)rJr:rrErFryrHT)rJrMrrIr8)rJrK)rrrrBrr3r9r r;rGr<rr1rL)rfrrNrOs r)test_py_filesystem_get_file_info_selectorrwsnG g BY/H   X &E u:?? 8==O ++ + 8==HMM )) ) 8==C   8==- -- - 8==H.. .. . 8==  Y$?H   X &E u:?? 8==O ++ + 8==- -- - 8==3 33 3Z0H ( )# "#ZFH  H % ++ + ##s #F!!F*cXt}t|}|jdd|jddtjt 5|jdddd|j d|jdd D]H}tjt5|j|ddd|j|d J|jd |jd d |jddy#1swYxYw#1swY`xYw)NrMTrrRFfoobarrUrX)rrWrrr_rarbrhri) rrrSrr1r?rUrXrZr_rfrj)rfrr3s rtest_py_filesystem_opsrzsnG g BMM+M.MM/UM3 w   h MM,01; ]]: & )  " "4 ( ) tT:;NN=!GGK#LL!>2   ) )sD/D D D) c tt}|jd5}|jdk(sJ dddt j t 5|jddddy#1swY=xYw#1swYyxYw)Nsomefilessomefile:input_streamr8)rrrsrrr1rLrrs rtest_py_open_input_streamr~'s} ln %B  j )4Qvvx33334 ( )) Z())44))A8B8BB c tt}|jd5}|jdk(sJ dddt j t 5|jddddy#1swY=xYw#1swYyxYw)Nr|ssomefile:input_filer8)rrrurrr1rLr}s rtest_py_open_input_filer0s} ln %B  J '21vvx11112 ( )' :&''22''rctt}|jd5}|jddddy#1swYyxYwNr|r)rrr|rgr}s rtest_py_open_output_streamr9? ln %B  z *a  AA ctt}|jd5}|jddddy#1swYyxYwr)rrrrgr}s rtest_py_open_append_streamr@rrcddlm}tjj dxsd}|d}|j |k(sJ|dd}|j td }t|dkDsJd }|j|5}|j}d |vsJ|d d k(sJ|ddk(sJ dddy#1swYyxYw)NrrPYARROW_TEST_S3_REGIONz us-east-1Trr)rrz"voltrondata-labs-datasets/nyc-taxizCvoltrondata-labs-datasets/nyc-taxi/year=2019/month=6/part-0.parquetrz Last-Modifieds2022-07-12T23:32:00ZETags%"4c6a76826a695c6ac61592bc30cda3df-16") rrosenvirongetrrBrrrsr{)rdefault_regionrentriesrrmds rtest_s3_real_awsrGs(jjnn%=>"!  %B 99 && & [ 9B|, ./G w?=>?""#UVHB 99 ## # ""WYHB  " "4 (F w  +GG??s#EE 'EE  EE"c$ddlm}|ddk(sJ|ddk(sJtjtd5|d dddtjtd5|d dddy#1swY6xYw#1swYyxYw) Nrresolve_s3_regionr&rz mf-nwp-modelsrzNot a valid bucket namer.r7z s3:bucket)rrrr1rZrs rtest_resolve_s3_regionr~s, 8 9[ HH H _ - << < z)B C%)$% z)B C'+&''%%''s A:( B:BBc `|d}|d}|d}|j|5}|jdddd|\}}} } d| d| d|d|d| } t|d z } t| | t } | j | 5}|j dk(sJ dddt|d z }t||| | j |5}|j dk(sJ dddt|d z }t|}t| || j |5}|j dk(sJ dddt|d z }t| || | j |5}|j dk(sJ dddt|dz }t| |dd| j |5}|j dk(sJ dddy#1swYxYw#1swYRxYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw)Nrrrerfr^r@z?scheme=http&endpoint_override=z c_copied1.txtz c_copied2.txt)source_filesystemz c_copied3.txtz c_copied4.txt)destination_filesystemz c_copied5.txtryF chunk_size use_threads)r|rgrrrrsrr) s3_connectionrrrrr3rrrrr source_uri local_path1r local_path2 local_path3destination_uri local_path4 local_path5s rtest_copy_filesrsN dB (^F '?D  t $ *7&D$ J  |1ZL$ )$q 8 g/0Kz;'G  " "; /#1vvx7"""#g/0Kt[B7  " "; /#1vvx7"""#g/0K%k2Oz?+  " "; /#1vvx7"""#g/0Kz;wG  " "; /#1vvx7"""#g/0Kz;1%H  " "; /#1vvx7"""##U## ########sGG% G2G?,H 8HH$%G/2G<?H  HH!$H-c t |dz }|j jt|dz 5}|j dddd jt|dz 5}|j dddd fd}|dz }|jt t|t||||dz }|jt t|t| |||d z }|jt t|}t t|}t |||||d z } | jt || || |d z } | jt || d d|| y#1swYfxYw#1swY.check_copied_filess  & &s?W+D'E F (!668x' '' (  & &s?W+D'E F (!668x' '' ( ( ( ( ( (sA;B;BB destination1 destination2)rr destination3 destination4 destination5ryFr)rmkdirr|rrgrr) r source_dirrrdestination_dir1destination_dir2destination_dir3rrdestination_dir4destination_dir5rs @rtest_copy_files_directoryrsG8#J  # #C W(<$= >!   # #C W(<$= >! (/s:$4 56'(/s:$4 5!(J'(/ Z1J%c*:&;G cTd}tjtjd|gy)Naif 1: import pytest from pyarrow.fs import (FileSystem, S3FileSystem, ensure_s3_initialized, finalize_s3) fs, path = FileSystem.from_uri('s3://mf-nwp-models/README.txt') assert fs.region == 'eu-west-1' f = fs.open_input_stream(path) f.read(50) finalize_s3() with pytest.raises(ValueError, match="S3 .* finalized"): f.read(50) with pytest.raises(ValueError, match="S3 .* finalized"): fs.open_input_stream(path) with pytest.raises(ValueError, match="S3 .* finalized"): S3FileSystem(anonymous=True) with pytest.raises(ValueError, match="S3 .* finalized"): FileSystem.from_uri('s3://mf-nwp-models/README.txt') -c subprocess check_callsys executablecodes rtest_s3_finalizers$ D*3>>467r!cTd}tjtjd|gy)Naif 1: import pytest from pyarrow.fs import resolve_s3_region, ensure_s3_initialized, finalize_s3 resolve_s3_region('mf-nwp-models') finalize_s3() # Testing both cached and uncached accesses with pytest.raises(ValueError, match="S3 .* finalized"): resolve_s3_region('mf-nwp-models') with pytest.raises(ValueError, match="S3 .* finalized"): resolve_s3_region('voltrondata-labs-datasets') rrrs r test_s3_finalize_region_resolverrs$ D3>>467r!cTd}tjtjd|gy)Naif 1: import threading import pytest from pyarrow.fs import (FileSystem, S3FileSystem, ensure_s3_initialized, finalize_s3) threads = [] fn = lambda: FileSystem.from_uri('s3://mf-nwp-models/README.txt') for i in range(4): thread = threading.Thread(target = fn) threads.append(thread) thread.start() for thread in threads: thread.join() finalize_s3() rrrs rtest_concurrent_s3fs_initr#s$  D"3>>467r!zUatexit(ensure_s3_finalized) will be called too late with bundled aws-sdk-cpp 1.11.587r"z?Leaking S3ClientFinalizer causes segfault on musl based systemsc H tjddgt }dddd|dt jjtdg}tj|tj } d |d }tj}d}tj|d zkr( t|5}|jd k(sJ dddntj"d|d||j%|j'dk(sJy#t$rtjdYwxYw#1swYpxYw#t$r!}|}tj dYd}~nd}~wwxYwtj|d zkr⌻#|j%wxYw)Nuwsgiz --versionz"uwsgi not installed on this Pythonz-iz--httpz 127.0.0.1:z --wsgi-filezwsgi_examples.py)stdinzhttp://127.0.0.1:z/s3/rg?zCould not fetch r)rrrLrrrrr3joinherePopenDEVNULLtimerstatusrsleepfail terminatewait)rargsprocurl start_timeerrorresprs rtest_uwsgi_integrationr<ss:w 45  D T8z$%8 277<<.@A CD   D (:(: ;D!$t,YY[ iikJN* S\.T;;#---. KK*3'E7; <  99;"  3 : 89:..  3 iikJN* s_D66F- E8D: EFD76D7:E?E E0E+&F+E00FF!c^ ddlm}ddlm}tjd\}}tt}||k(sJ|dk(sJd}tjd|\}}tt}||k(sJy#t$rt j dYwxYw) Nr)r)MemoryFileSystemzfsspec not installedz$fsspec+memory://path/to/data.parquetz/path/to/data.parquetzfile:///tmp/my.filezfsspec+) fsspec.implementations.localrfsspec.implementations.memoryr ImportErrorrrrrFrr)rrrr3 expected_fsrHr3s rtest_fsspec_filesystem_from_uriras,@B""#IJHB}-=-?@AK    * ** * C   '# 0EB}_->?@K    , *+,s B B,+B,ctjd ddlm}t jd\}}tt}||k(sJ|dk(sJy#t$rtj dY`wxYw)Nrr) HfFileSystemzhuggingface_hub not installedzFhf://datasets/stanfordnlp/imdb/plain_text/train-00000-of-00001.parquetzAdatasets/stanfordnlp/imdb/plain_text/train-00000-of-00001.parquet) rrhuggingface_hubrrrrrFrr)rrr3rs r$test_huggingface_filesystem_from_urirus !50""PHB}\^<=K    V VV V 5 345sAA>=A>)rrrrrr|urllib.requestrrrrrrprropyarrow.tests.test_iorpyarrow.tests.utilrr r r rr r rrrrrrrrr pyarrow.utilrr3dirnameabspathrrrfixturerrrrrrrrrr0rrrrrr markrrrr rrrrrrrr'r*r4r@rCrLrNrUrarorrrtr~rrrrrrrrrrrrr parametrizecompressrrr decompressrrrrrrrrrr$r*r8rTrXr\r`rcrgrlrnrsrurwrzr~rrrrrrrrrr processes threadingrrskipifrrrr.r!rrsO $32 " 766$$$$( wwrwwx01f'$f'R:4,8$  ,FLL FLL +FLL 1FLL kknn FLL kkoo FLL kk FLL kk FLL FLL :FLL :FLL BFLL EFLL =kknnk::v2w:v2##''//55 2& > # ))*: O( K (,"-  8+v5 p" .@$,( (($ 0 tX r8 t}}% dmm$   && 2 tX r8 t' doo&  ) )@ tXx( r8X& t}}doo6 dmmT__5 ;;0".#.( "B"BJd7d7NI3I3X22.ZZzD1D1NC or"_i0oy13!?NC $#&oz24!?OD/3*-*<=!F$!%$!  iX.5 5++$++&( -*".,:3()'FF.<''1#1#h1)h88688&88,67(*4TUU7 @( Wr!