
    <>i6                       S SK J r JrJr  S SKrS SKrS SKrS SKJr  S SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKJr  S SKJrJrJrJr  S SKJrJrJrJrJrJrJrJrJrJ r J!r!  S SK"J#r#  \RH                  RK                  \RH                  RM                  \'5      5      r( " S S	\5      r)\RT                  S
 5       r+\RT                  S 5       r,\RT                  S 5       r-\RT                  S 5       r.\RT                  S 5       r/\RT                  S 5       r0\RT                  S 5       r1\RT                  S 5       r2\RT                  S 5       r3Sr4\RT                  S 5       r5\RT                  S 5       r6\RT                  S 5       r7\RT                  S 5       r8\RT                  S 5       r9\RT                  " \Rt                  " SSS9\Rt                  " SSS9\Rt                  " SSS9\Rt                  " S S!\Rv                  Rx                  S"9\Rt                  " S#S$\Rv                  Rz                  S"9\Rt                  " S%S&\Rv                  R|                  S"9\Rt                  " S'S(\Rv                  Rl                  S"9\Rt                  " S)S*S9\Rt                  " S+S,S9\Rt                  " S-S.S9\Rt                  " S/S0S9\Rt                  " S1S2S9\Rt                  " S3S4\Rv                  Rx                  S"9/S59S6 5       r?\RT                  S7 5       r@\RT                  S8 5       rA\RT                  S9 5       rB\RT                  S: 5       rCS; rDS< rES= rFS> rGS? rH\Rv                  Rx                  S@ 5       rISA rJSB rKSC rLSD rMSE rNSF rOSG rPSH rQSI rRSJ rSSK rTSL rUSM rVSN rWSO rXSP rYSQ rZSR r[SS r\ST r]SU r^SV r_SW r`\Rv                  R                  \Rv                  R                  SXSS\`4SSY\`4SZS\R                  4SZS[\R                  4/5      S\ 5       5       rcS] rdS^ re\Rv                  R                  \Rv                  R                  S_SS\`4SSY\`4SZS\R                  4SZS[\R                  4/5      S` 5       5       rg\Rv                  R                  \Rv                  R                  SaSS\`\`4SSY\`\`4SZS\R                  \R                  4SZS[\R                  \R                  4/5      Sb 5       5       rhSc riSd rjSe rkSf rlSg rm\Rv                  Rz                  Sh 5       rn\Rv                  Rx                  Si 5       ro\Rv                  Rx                  Sj 5       rp\Rv                  Rx                  Sk 5       rq\Rv                  R|                  Sl 5       rr\Rv                  Rl                  Sm 5       rs\Rv                  R                  SnSo\Sp4Sq\Sr4Ss\Sr4St\Sr4Su\Sv4Sw\Sx4Sy\Sx4Sz\S{4S|\S{4S}\S~4Sx\Sx4S{\S{4S\S4/5      S 5       rtS ru\Rv                  R                  SSpSxSrS{\'/5      S 5       rv\Rv                  Rx                  S 5       rw\Rv                  Rz                  S 5       rxS ryS rzS r{S r|S r}S r~S rS rS rS rS r\Rv                  Rx                  S 5       r\Rv                  Rx                  S 5       r\Rv                  Rx                  S 5       r\Rv                  Rx                  S 5       rS r\Rv                  Rx                  S 5       r\Rv                  Rx                  S 5       r\Rv                  GR                  \Rv                  GR                  \Rv                  Rx                  S 5       5       5       r\Rv                  Rx                  \Rv                  GR                  SS9\Rv                  GR                  \" 5       SS9S 5       5       5       rS rS rS rg)    )datetimetimezone	timedeltaN)urlopen)assert_file_not_found)_filesystem_uriProxyHandler_configure_s3_limited_userrunning_on_musllinux)FileTypeFileInfoFileSelector
FileSystemLocalFileSystemSubTreeFileSystem_MockFileSystemFileSystemHandlerPyFileSystemFSSpecHandler
copy_files)find_free_portc                       \ rS rSrSS jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rSrg)DummyHandler.   c                     Xl         g N_value)selfvalues     T/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pyarrow/tests/test_fs.py__init__DummyHandler.__init__/   s        c                 j    [        U[        5      (       a  U R                  UR                  :H  $ [        $ r   
isinstancer   r   NotImplementedr   others     r!   __eq__DummyHandler.__eq__2   )    e.//;;%,,..r$   c                 j    [        U[        5      (       a  U R                  UR                  :g  $ [        $ r   r&   r)   s     r!   __ne__DummyHandler.__ne__7   r-   r$   c                     g)Ndummy r   s    r!   get_type_nameDummyHandler.get_type_name<   s    r$   c                     U$ r   r3   r   paths     r!   normalize_pathDummyHandler.normalize_path?   s    r$   c                    / nU H  nSU;   a+  UR                  [        U[        R                  5      5        M4  SU;   a+  UR                  [        U[        R                  5      5        Me  SU;   a+  UR                  [        U[        R
                  5      5        M  SU;   a  UR                  [        5       5        M  [        e   U$ )Nfiledirnotfoundbadtype)appendr   r   File	DirectoryNotFoundobjectIOError)r   pathsinfor9   s       r!   get_file_infoDummyHandler.get_file_infoB   s    D~HT8==9:$HT8+=+=>?t#HT8+<+<=>d"FH%  r$   c                 8   UR                   S:w  a(  UR                  (       a  / $ [        UR                   5      e[        S[        R
                  SS9[        S[        R                  5      /nUR                  (       a  U[        S[        R
                  SS9/-  nU$ )Nsomedirsomedir/file1{   )sizesomedir/subdir1somedir/subdir1/file2i  )base_dirallow_not_foundFileNotFoundErrorr   r   rB   rC   	recursive)r   selectorinfoss      r!   get_file_info_selector#DummyHandler.get_file_info_selectorR   s    	)''	'(9(9::_hmm#>&(:(:;
 0(--cJ E r$   c                 F    US:X  a  USL d   eg US:X  a  USL d   eg [         e)NrU   Tnon-recursiveF)rF   )r   r9   rU   s      r!   
create_dirDummyHandler.create_dirb   s3    ;$$$_$%%%Mr$   c                     US:X  d   eg )N
delete_dirr3   r8   s     r!   r_   DummyHandler.delete_dirj   s    |###r$   c                 L    UR                  S5      (       d  [        eUS:X  d   eg )N/delete_dir_contents)strip
ValueError)r   r9   missing_dir_oks      r!   rc    DummyHandler.delete_dir_contentsm   s$    zz#,,,,r$   c                     g r   r3   r4   s    r!   delete_root_dir_contents%DummyHandler.delete_root_dir_contentsr   s    r$   c                     US:X  d   eg )Ndelete_filer3   r8   s     r!   rl   DummyHandler.delete_fileu   s    }$$$r$   c                 $    US:X  d   eUS:X  d   eg )N	move_frommove_tor3   r   srcdests      r!   moveDummyHandler.movex   s    k!!!y   r$   c                 $    US:X  d   eUS:X  d   eg )Ncopy_file_fromcopy_file_tor3   rq   s      r!   	copy_fileDummyHandler.copy_file|   s    &&&&~%%%r$   c                 x    SU;   a  [        U5      eU S3R                  S5      n[        R                  " U5      $ )Nr?   z:input_streamutf8rT   encodepaBufferReaderr   r9   datas      r!   open_input_streamDummyHandler.open_input_stream   s;    #D))}%,,V4t$$r$   c                 x    SU;   a  [        U5      eU S3R                  S5      n[        R                  " U5      $ )Nr?   z:input_filer|   r}   r   s      r!   open_input_fileDummyHandler.open_input_file   s;    #D)){#**62t$$r$   c                 N    SU;   a  [        U5      e[        R                  " 5       $ Nr?   rT   r   BufferOutputStreamr   r9   metadatas      r!   open_output_streamDummyHandler.open_output_stream   $    #D))$$&&r$   c                 N    SU;   a  [        U5      e[        R                  " 5       $ r   r   r   s      r!   open_append_streamDummyHandler.open_append_stream   r   r$   r   N)*   )__name__
__module____qualname____firstlineno__r"   r+   r/   r5   r:   rI   rX   r\   r_   rc   ri   rl   rt   ry   r   r   r   r   __static_attributes__r3   r$   r!   r   r   .   s\    

  $-
%!&%%'
'r$   r   c                 4   ^ [        [        5       U4S jSSS9$ )Nc                 *   > TU -  R                  5       $ r   as_posixptempdirs    r!   <lambda>localfs.<locals>.<lambda>       'A+//1r$   Tfspathfnallow_move_dirallow_append_to_filedictr   requestr   s    `r!   localfsr      s    1!	 r$   c                 X   ^ [        [        [        [        5       5      5      U4S jSSS9$ )Nc                 *   > TU -  R                  5       $ r   r   r   s    r!   r   py_localfs.<locals>.<lambda>   r   r$   Tr   )r   r   r	   r   r   s    `r!   
py_localfsr      s)    _%6781!	 r$   c                 ,    [        [        5       S SSS9$ )Nc                     U $ r   r3   r   s    r!   r   mockfs.<locals>.<lambda>       r$   Tr   )r   r   r   s    r!   mockfsr      s    !	 r$   c                 P    [        [        [        [        5       5      5      S SSS9$ )Nc                     U $ r   r3   r   s    r!   r   py_mockfs.<locals>.<lambda>   r   r$   Tr   )r   r   r	   r   r   s    r!   	py_mockfsr      s(    _%678!	 r$   c                 2   ^ [        [        SS9U4S jSSS9$ )NTuse_mmapc                 *   > TU -  R                  5       $ r   r   r   s    r!   r   #localfs_with_mmap.<locals>.<lambda>   r   r$   r   r   r   s    `r!   localfs_with_mmapr      s!    D)1!	 r$   c                 H    [        [        [        U5      US   5      S SSS9$ )Nr   c                     U $ r   r3   r   s    r!   r   !subtree_localfs.<locals>.<lambda>   r   r$   Tr   )r   r   str)r   r   r   s      r!   subtree_localfsr      s*    S\74=9!	 r$   c           	   #   |  #    U R                   R                  R                  S5        SSKJn  US   u  p4SnU" U SU 3SS[        S	S
9SS9n UR                  U5        [        UUR                  SSS9v   UR                  U5        g ! [         a&  n[        R                  " SU SU 35         S nANUS nAff = f7f)Ngcsr   GcsFileSystem
connectionpyarrow-filesystem/:httpT-   )secondstest-project-id)endpoint_overridescheme	anonymousretry_time_limit
project_idzCould not create directory in : Fr   )configpyarrowrequires
pyarrow.fsr   r   r\   OSErrorpytestskipr   __add__r_   )r   
gcs_serverr   hostportbucketr   es           r!   gcsfsr      s     NN##E*(L)JD"F	!F!D6*"2.$
B@
f ~~"	  MM&  @4RD1#>??@s0   AB<B	 *B<	
B9B4/B<4B99B<c           	   #   
  #    U R                   R                  R                  S5        SSKJn  US   u  p4pVSnU" UUU SU 3SSSS	9nUR                  U5        [        UUR                  S
S
S9v   UR                  U5        g 7f)Ns3r   S3FileSystemr   r   r   r   T)
access_key
secret_keyr   r   allow_bucket_creationallow_bucket_deletionFr   )	r   r   r   r   r   r\   r   r   r_   )	r   	s3_serverr   r   r   r   r   r   r   s	            r!   s3fsr      s     NN##D)')2<)@&D
"F	!F!D6*""
B MM&
~~"	  MM&s   BBc                 J    Sn[        [        X!S   5      UR                  SSS9$ )Nzpyarrow-filesystem/prefix/r   Fr   )r   r   r   )r   r   prefixs      r!   subtree_s3fsr     s-    )FV$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:::*"
            ]

        },
        {
            "Effect": "Deny",
            "Action": [
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::no-delete-bucket*"
            ]
        }
    ]
}c           	   #     #    U R                   R                  R                  S5        SSKJn  US   u  p4pVU SU 3nSnSn	U" UUUUUUS9n
U
R                  U	5        [        U
U	R                  S	S	S
9v   U
R                  U	5        g 7f)Nazurer   AzureFileSystemr   r   r   r   account_nameaccount_keyblob_storage_authoritydfs_storage_authorityblob_storage_schemedfs_storage_schemeTr   )	r   r   r   r   r   r\   r   r   r_   )r   azure_serverr   r   r   r   r   azurite_authorityazurite_scheme	containerr   s              r!   azurefsr  7  s     NN##G,*,8,F)D&$(N%I	l%00A/@-;,:
<B MM)
  !	  MM)s   BBc                     U R                   R                  R                  S5        [        R                  " 5       (       d  [
        R                  " S5        SSKJn  Uu  p4nU" X4US9n[        US SSS9$ )	NhdfsCannot locate libhdfsr   HadoopFileSystem)r   userc                     U $ r   r3   r   s    r!   r   hdfs.<locals>.<lambda>a  r   r$   Tr   )
r   r   r   r   have_libhdfsr   r   r   r  r   )r   hdfs_connectionr  r   r   r	  r   s          r!   r  r  T  sf    NN##F+??+,+&D	$	5B!	 r$   c                    ^ [         R                  " S5      nUR                  S5      n[        [	        [        U5      5      U4S jSSS9$ )Nfsspecr=   c                 *   > TU -  R                  5       $ r   r   r   s    r!   r   #py_fsspec_localfs.<locals>.<lambda>m  r   r$   Tr   )r   importorskip
filesystemr   r   r   r   r   r  r   s    `  r!   py_fsspec_localfsr  g  sF      *F			6	"Bb)*1!	 r$   c                     [         R                  " SSS9nUR                  S:X  a  [         R                  " S5        UR	                  S5      n[        [        [        U5      5      S SSS	9$ )
Nr  z0.7.5)
minversionz0.8.5z,Bug in fsspec 0.8.5 for in-memory filesystemmemoryc                     U $ r   r3   r   s    r!   r   $py_fsspec_memoryfs.<locals>.<lambda>|  r   r$   Tr   )r   r  __version__r   r  r   r   r   r  s       r!   py_fsspec_memoryfsr  s  sb      g>FW$BC			8	$Bb)*!	 r$   c           
   #   $  #    [         R                  " S5      nUS   u  p4pVSnUR                  UU[        SU SU 3S9S9n[	        [        U5      5      nUR                  U5        [        UUR                  SS	S
9v   UR                  U5        g 7f)Nr   r   r   zhttp://r   )endpoint_url)keysecretclient_kwargsFTr   )	r   r  r   r   r   r   r\   r   r_   )	r   r   r   r   r   r   r   r   r   s	            r!   py_fsspec_s3fsr"    s     v&D)2<)@&D
"F			'$q(?@ 
 
B
 
mB'	(BMM&
~~!	  MM&s   BBr   zLocalFileSystem())idr   zLocalFileSystem(use_mmap=True)r   z$SubTreeFileSystem(LocalFileSystem())r   r   )r#  marksr   r   r  r   r  r  r   z_MockFileSystem()r   z-PyFileSystem(ProxyHandler(LocalFileSystem()))r   z-PyFileSystem(ProxyHandler(_MockFileSystem()))r  z5PyFileSystem(FSSpecHandler(fsspec.LocalFileSystem()))r  z8PyFileSystem(FSSpecHandler(fsspec.filesystem("memory")))r"  z0PyFileSystem(FSSpecHandler(s3fs.S3FileSystem())))paramsc                 8    U R                  U R                  5      $ r   )getfixturevalueparamr   s    r!   filesystem_configr)    s    x ""7==11r$   c                     U S   $ Nr   r3   r)  s    r!   r   r     s    T""r$   c                     U S   $ )Nr   r3   r,  s    r!   r   r     s    X&&r$   c                     U S   $ )Nr   r3   r,  s    r!   r   r     s    -..r$   c                     U S   $ )Nr   r3   r,  s    r!   r   r     s    344r$   c                    [        U R                  [        5      (       d   e[        U R                  [        5      (       d   eU R                  S:  d   eU R                  [
        R                  " U R                  R                  5       S-  5      :X  d   eU R                  R                  nUc   eUR                  S 5      [        S5      :X  d   eg )Nr   g    eA)r'   mtimer   mtime_nsintr   approx	timestamptzinfo	utcoffsetr   )	file_infor6  s     r!   check_mtimer9    s    ioox0000i((#...."""!!#c)"+ + + + __##FD!Yq\111r$   c                 @    U R                   b   eU R                  b   eg r   )r1  r2  r8  s    r!   check_mtime_absentr<    s$    ??"""%%%r$   c                 L    U R                   c  [        U 5        g [        U 5        g r   )r1  r<  r9  r;  s    r!   check_mtime_or_absentr>    s    9%Ir$   c                 N    U R                   S:X  a  [        R                  " SS9  g g )Npy::fsspec+('s3', 's3a')zNot working with fsspec's s3fsreason)	type_namer   xfailr   s    r!   skip_fsspec_s3fsrF    s!    	||11<= 2r$   c                 N    U R                   S:X  a  [        R                  " US9  g g )NabfsrA  )rC  r   r   )r   rB  s     r!   
skip_azurerI  	  s    	||v6" r$   c                 <   SSK Jn  [        U [        SS5        U S   u  p#  nU" SSU SU 3SS9nUR	                  S	5        [
        R                  " [        R                  S
S9   UR	                  S5        S S S 5        [
        R                  " [        R                  SS9   UR                  S5        S S S 5        [
        R                  " [        SS9   UR                  SS5        S S S 5        [
        R                  " [        R                  SS9   UR                  S5       nUR                  S5        S S S 5        S S S 5        UR                  S5       nUR                  S5        S S S 5        [
        R                  " [        SS9   UR                  S5        S S S 5        g ! , (       d  f       GN6= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r   test_fs_limited_user
limited123r   r   r   )r   r   r   r   zexisting-bucket/testzBucket 'new-bucket' not foundmatchz
new-bucketzWould delete bucketzexisting-bucketzRequest ID:zexisting-bucket/test-filezexisting-bucket/test-file-copyznon-existing-bucket/test-file   testzno-delete-bucket/test-file)r   r   r
   _minio_limited_policyr\   r   raisesr   ArrowIOErrorr_   r   ry   r   writerl   )r   r   r   r   _r   fs          r!   +test_s3fs_limited_permissions_create_bucketrV    s   'y*?5|E .D1	)!F!D6*	
B MM()	r.M	N
l# 
O 
r.C	D
'( 
E 
wm	4
02RS 
5 
rm	<""#BCqGGG D 
=
 
		;	<	 
= 
wm	4
34 
5	4# 
O	N 
E	D 
5	4 DC 
=	<
 
=	< 
5	4s`   $F%!F7G	G+$G6G+G<
H%
F47
G	
G
G(	$G++
G9<
H

Hc                  p   [         R                  " S[        R                  5      n [	        S5      nUR
                  S:X  d   eUR                  S:X  d   eUR                  [        R                  :X  d   eUR                  b   e[        U5        [	        S[        R                  SSS9nUR
                  S:X  d   eUR                  S:X  d   eUR                  [        R                  :X  d   eUR                  S:X  d   eUR                  S	:X  d   e[        U5        [	        S
[        R                  U S9nUR
                  S
:X  d   eUR                  S
:X  d   eUR                  [        R                  :X  d   eUR                  b   eUR                   U :X  d   eUR                  S:X  d   e[        U5        g )NR]foo/barbarzfoo/baz.txtrN   g  `A)typerO   r1  zbaz.txtl    t<|+. foo)r[  r1  l    4 |+. )r   fromtimestampr   utcr   r9   	base_namer[  r   UnknownrO   r<  rB   r2  r9  rC   r1  )dtrH   s     r!   test_file_info_constructorrb  2  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$   c                      [         R                  " [        5         [        5         S S S 5        g ! , (       d  f       g = fr   )r   rQ  	TypeErrorr   r3   r$   r!   'test_cannot_instantiate_base_filesystemre  O  s    	y	! 
"	!	!s   /
=c                  2   [        5       n [        5       n[        5       nU R                  U 5      (       d   eU R                  U5      (       d   e[        R                  " [
        5         U R                  S5        S S S 5        X s=:X  a  U:X  d   e   eU S:w  d   eX":X  d   eU[        5       :w  d   e[        SU 5      [        SU 5      :X  d   e[        SU 5      [        SU5      :w  d   e[        SU 5      [        SU 5      :w  d   eg ! , (       d  f       N= f)Nstring   /basez/other)r   r   equalsr   rQ  rd  r   )fs0fs1fs2s      r!   test_filesystem_equalsrn  T  s    

C

C

C::c???::c???	y	!

8 
"!8O8::/####Wc*.?.MMMMWc*.?.MMMMWc*.?#.NNNN 
"	!s   )D
Dc                     [         R                  " [        SS9   U R                  S 5        S S S 5        U c   eg ! , (       d  f       N= f)Nzgot NoneTyperM  )r   rQ  rd  rj  rE  s    r!   test_filesystem_equals_nonerp  h  s5    	y	7
		$ 
8 >> 
8	7s	   :
Ac                  l   [        5       n [        SU 5      nUR                  S:X  d   eUR                  U :X  d   e[	        U5      R                  S5      (       d   e[        S[        5       5      nUR                  S:X  d   eUR                  U :X  d   e[	        U5      R                  S5      (       d   eg )Nri  z/base/zHSubTreeFileSystem(base_path=/base/, base_fs=<pyarrow._fs.LocalFileSystemz/another/base/zPSubTreeFileSystem(base_path=/another/base/, base_fs=<pyarrow._fs.LocalFileSystem)r   r   	base_pathbase_fsrepr
startswith)r   subfss     r!   test_subtree_filesystemrw  o  s    Ggw/E??h&&&==G###;!! #I J J J J .0ABE??....==G###;!! #J K K K Kr$   c                    U R                   R                  S5      S   S:X  a  [        R                  " SS9  UR	                  U 5      nUR                  U5      n[        U[        5      (       d   eUR                  U 5      (       d   eg )N::mock"MockFileSystem is not serializablerA  )	rC  splitr   rD  dumpsloadsr'   r   rj  )r   pickle_module
serializedrestoreds       r!   test_filesystem_picklingr    ss    	||$#v-@A$$R(J"":.Hh
++++??2r$   c                    U R                   R                  S5      S   S:X  a  [        R                  " SS9  [	        U 5        U" S5      nU" S5      nU" S5      nU R                  U5        U R                  U5          S S S 5        U R                  U5       nUR                  S	5        S S S 5        UR                  UR                  U 5      5      nUR                  X4U/5      u  pn
UR                  [        R                  :X  d   eU	R                  [        R                  :X  d   eU
R                  [        R                  :X  d   eg ! , (       d  f       N= f! , (       d  f       N= f)
Nry  rz  r{  r|  rA  	a/aa/aaa/a/bbc.txtrO  )rC  r}  r   rD  rF  r\   r   rS  r  r~  rI   r[  r   rC   rB   )r   r   r  aaabbcfpr  aaa_infobb_infoc_infos              r!   ,test_filesystem_is_functional_after_picklingr    s   	||$#v-@AR

C	BwAMM#			r	" 
#			q	!R
 
" ""=#6#6r#:;H ( 6 6| DHv==H.....<<8==(((;;(--''' 
#	"	!	!s   <EE
E
E'c                  t    [        5       n U R                  S:X  d   e[        5       n U R                  S:X  d   eg )Nlocalr{  )r   rC  r   rE  s    r!   test_type_namer    s6    		B<<7"""		B<<6!!!r$   c                 2    U R                  S5      S:X  d   eg )Nr\  )r:   rE  s    r!   test_normalize_pathr    s     U#u,,,r$   c           	          " S S5      nSSU" 5       [        5       0 / S [        R                  " 5       /nU H7  n[        R                  " [
        5         U R                  U5        S S S 5        M9     g ! , (       d  f       MK  = f)Nc                       \ rS rSrSrg)-test_non_path_like_input_raises.<locals>.Pathi  r3   N)r   r   r   r   r   r3   r$   r!   Pathr    s    r$   r     g?c                      g)Nr  r3   r3   r$   r!   r   1test_non_path_like_input_raises.<locals>.<lambda>  s    ar$   )tuplepathlibr  r   rQ  rd  r\   )r   r  invalid_pathsr9   s       r!   test_non_path_like_input_raisesr    sb      TVUWb"i\\^%M]]9%MM$ &% %%s   A44
B	c                     U" S5      nU" S5      nU" S5      nU" S5      nU R                  U5        U R                  U5          S S S 5        U R                  U5       nUR                  S5        S S S 5        U R                  X#XE/5      u  pxpUR                  U:X  d   eS[        U5      ;   d   eUR                  S:X  d   eU R                  S:X  a!  UR                  [        R                  :X  d   eO1UR                  [        R                  :X  d   eS	[        U5      ;   d   eUR                  b   e[        U5        UR                  [        U5      :X  d   eUR                  S
:X  d   eUR                  S:X  d   eUR                  [        R                   :X  d   eS[        U5      ;   d   eUR                  S:X  d   eU R                  S;  a  [#        U5        U	R                  [        U5      :X  d   eU	R                  S:X  d   eU	R                  S:X  d   eU	R                  [        R                   :X  d   eS[        U	5      ;   d   eU	R                  S:X  d   eU R                  S;  a  [#        U	5        U
R                  [        U5      :X  d   eU
R                  S:X  d   eU
R                  S:X  d   eU
R                  [        R                  :X  d   eU
R                  b   eU
R$                  b   eS[        U
5      ;   d   e['        U
5        U R                  U5      nUR                  UR                  :X  d   eUR                  UR                  :X  d   eg ! , (       d  f       GN= f! , (       d  f       GN= f)Nr  r  r  zzzrO  r   r@  zFileType.Directoryr  zFileType.Filer   )zpy::fsspec+memoryr@  txtrh  zFileType.NotFound)r\   r   rS  rI   r9   rt  	extensionrC  r[  r   rD   rC   rO   r>  r   r_  rB   r9  r1  r<  )r   r   r  r  r  r  r  r  r  r  zzz_info	aaa_info2s               r!   test_get_file_infor    s   

C	BwA
-CMM#			r	" 
#			q	!R
 
" +-*:*:CQ;L*M'Hv==CDN"""###	||11}} 1 1111}} 2 2222#tH~555==   (#<<3r7"""$$$"""<<8==(((d7m+++<<1	||LLG;;#a&   w&&&u$$$;;(--'''d6l***;;!	||LLF==CH$$$&&&###==H-----==   >>!!!$x.000x    %I==INN***==INN***c 
#	"	!	!s   MM.
M+.
M=c                    U" S5      nU" S5      nU" S5      nU" S5      nU" S5      nU" S5      n U R                  U5        U R                  U5          S S S 5        U R                  U5          S S S 5        U R                  U5        U R                  U5          S S S 5        U R                  U5        [        USSS	9nUR                  U:X  d   eU R	                  U5      n	U R
                  S
:X  a  [        U	5      S:H    O[        U	5      S:X  d   eU	 GH'  n
U
R                  R                  U5      (       d@  U
R                  R                  U5      (       d   U
R                  R                  U5      (       a!  U
R                  [        R                  :X  d   eOU
R                  R                  S5      R                  U5      (       d/  U
R                  R                  S5      R                  U5      (       a!  U
R                  [        R                  :X  d   eO[        SU
R                   35      e[        U
5        GM*     [        USS9nU R	                  U5      n	U R
                  S
:X  a  [        U	5      S:X  d   eO[        U	5      S:X  d   eU R!                  U5        g ! , (       d  f       GNS= f! , (       d  f       GNJ= f! , (       d  f       GN0= f! U R!                  U5        f = f)Nzselector-dir/zselector-dir/test_file_azselector-dir/test_file_bzselector-dir/test_dir_az#selector-dir/test_dir_a/test_file_czselector-dir/test_dir_bFT)rS   rU   r@  rh     rb   zunexpected path rU      )r\   r   r   rR   rI   rC  lenr9   endswithr[  r   rB   rstriprC   re   r>  r_   )r   r   rR   file_afile_bdir_afile_cdir_brV   rW   rH   s              r!    test_get_file_info_with_selectorr    se   o&H./F./F,-E9:F,-E- 
h""6* +""6* +
e""6* +
e  %*.0  H,,,  *<<55J!Ou:?"?D		""6**dii.@.@.H.HII&&v..yyHMM111))""3'0077))""3'0077yyH$6$6666 #3DII;!?@@!$'   E:  *<<55u:?"?u:?"? 	hW +*** +*L 	hsT   "K J"K /J41*K KG3K "
J1,K 4
K>K 
KK K+c                 ^   [        U 5        U" S5      n[        R                  " [        R                  5         U R                  U5        S S S 5        U R                  U5        U R                  U5        U" S5      nU R                  USS9  U R                  U5        g ! , (       d  f       NZ= f)Nztest-directory/zdeeply/nested/test-directory/Tr  )rF  r   rQ  r   rR  r_   r\   )r   r   ds      r!   test_create_dirr  *  s     R !A	r	'
a 
( MM!MM!./AMM!tM$MM! 
(	's   B
B,c                    [        U 5        U" S5      nU" S5      nU R                  U5        U R                  U5        [        R                  " [
        R                  5         U R                  U5        S S S 5        [        R                  " [
        R                  5         U R                  U5        S S S 5        g ! , (       d  f       NM= f! , (       d  f       g = f)N
directory/directory/nested/)rF  r\   r_   r   rQ  r   rR  r   r   r  nds       r!   test_delete_dirr  ;  s    R|A	#	$BMM"MM!	r	'
b 
(	r	'
a 
(	' 
(	'	'	's   "B; C;
C	
Cc                 r   [        U 5        U" S5      nU" S5      nU R                  U5        U R                  U5        U R                  U5        U R                  U5      nUR                  [
        R                  :X  d   eU" S5      nU" S5      nU" S5      nU R                  U5        U R                  U5        U R                  U5       nUR                  S5        S S S 5        U R                  U5        U R                  U5      nUR                  [
        R                  :X  d   eg ! , (       d  f       NQ= f)Nr  r  
directory2zdirectory2/nestedzdirectory2/nested/target-file   data)	rF  r\   r_   rI   r[  r   rD   r   rS  )r   r   r  r  dir_inforU  ss          r!   $test_delete_dir_with_explicit_subdirr  I  s	   
 R|A	#	$B MM!MM"MM!"H==H----- 	|A	#	$B./AMM!MM"			q	!Q	 
" MM!"H==H----- 
"	!s   D((
D6c                    [        U 5        U" S5      nU" S5      nU R                  U5        U R                  U5        [        R                  " [
        R                  5         U R                  U5        S S S 5        U R                  USS9  [        R                  " [
        R                  5         U R                  U5        S S S 5        U R                  U5        [        R                  " [
        R                  5         U R                  U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       No= f! , (       d  f       g = f)Nr  r  T)rf   )rF  r\   rc   r   rQ  r   rR  r_   r  s       r!   test_delete_dir_contentsr  i  s    R|A	#	$BMM"1	r	'
b 
(2d3	r	'
r" 
(MM!	r	'
a 
(	' 
(	' 
(	' 
(	's$   "D0D+?D<
D(+
D9<
E
c                 2   U S   nU S   nU" S5      nU" S5      nUR                  U5        [        R                  " [        R                  5         UR                  S5        S S S 5        [        R                  " [        R                  5         UR                  S5        S S S 5        [        R                  " [        R                  5         UR                  S5        S S S 5        UR                  SSS	9  UR                  SSS	9  UR                  SSS	9  [        R                  " [        R                  5         UR                  U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)
Nr   r   r  r  r  rb   //Taccept_root_dir)r\   r   rQ  r   ArrowInvalidrc   rR  r_   )r   r   r   r  r  s        r!   _check_root_dir_contentsr  {  s   	BHF|A	#	$BMM"	r	'
r" 
(	r	'
s# 
(	r	'
t$ 
( 2t43546	r	'
a 
(	' 
(	'	'	'	'	' 
(	's0   EE&E7:F
E#&
E47
F
Fc                 0    [        U 5        [        U5        g r   )r  )r   r   s     r!   test_delete_root_dir_contentsr    s    V$Y'r$   c                     U" S5      nU" S5      nU R                  U5          S S S 5        U R                  X#5        U R                  U5        U R                  U5        g ! , (       d  f       NB= f)Nztest-copy-source-fileztest-copy-target-file)r   ry   rl   r   r   r  ts       r!   test_copy_filer    s]    &'A&'A			q	! 
" LLNN1NN1 
"	!s   A  
A.c                    [        U S5        U" S5      nU" S5      nU R                  U5        U(       aa  U R                  X45        [        R                  " [
        R                  5         U R                  U5        S S S 5        U R                  U5        g [        R                  " [
        R                  5         U R                  X45        S S S 5        g ! , (       d  f       N_= f! , (       d  f       g = f)N.Not implemented yet in for Azure. See GH-40025zsource-dir/ztarget-dir/)rI  r\   rt   r   rQ  r   rR  r_   )r   r   r   r  r  s        r!   test_move_directoryr    s    rCD 	}A}AMM!
]]2??+MM! ,
a]]2??+GGAM ,+	 ,+ ,+s   *C:C&
C#&
C4c                    [        U 5        [        U S5        U" S5      nU" S5      nU R                  U5          S S S 5        U R                  X#5        [        R
                  " [        R                  5         U R                  U5        S S S 5        U R                  U5        g ! , (       d  f       No= f! , (       d  f       N1= f)Nr  ztest-move-source-fileztest-move-target-file)	rF  rI  r   rt   r   rQ  r   rR  rl   r  s       r!   test_move_filer    s     R rCD&'A&'A			q	! 
" GGAM	r	'
q 
(NN1 
"	! 
(	's   B$8B5$
B25
Cc                    U" S5      nU R                  U5          S S S 5        U R                  U5        [        R                  " [        R
                  5         U R                  U5        S S S 5        U" S5      nU R                  U5        U" S5      nU R                  U5       nUR                  S5        S S S 5        U R                  U5        g ! , (       d  f       N= f! , (       d  f       N}= f! , (       d  f       NB= f)Nztest-delete-target-fileztest-delete-nestedztest-delete-nested/target-filer  )	r   rl   r   rQ  r   rR  r\   rS  r_   )r   r   r   r  rU  r  s         r!   test_delete_filer    s    ()A			q	! 
" NN1	r	'
q 
( 	#$AMM!/0A			q	!Q	 
" MM! 
"	! 
(	' 
"	!s#   CC"%C3
C"
C03
Dc                     U $ r   r3   )vs    r!   identityr    s    Hr$   )compressionbuffer_size
compressor@   gzip   c                 *   U" S5      nSS-  nU R                  U5       nUR                  U" U5      5        S S S 5        U R                  XRU5       nUR                  5       nS S S 5        WU:X  d   eg ! , (       d  f       NB= f! , (       d  f       N(= f)Nzopen-input-streams   some data for reading
   )r   rS  r   read)	r   r   r  r  r  r   r   r  results	            r!   test_open_input_streamr    s     	"#A%+D			q	!Q	
4 ! 
" 
		ak	:a 
; T>> 
"	! 
;	:s   A3B3
B
Bc                    U" S5      nSS-  nU R                  U5       nUR                  U5        S S S 5        [        S5      S-  nU R                  U5       nUR	                  5       nS S S 5        WU:X  d   eU R                  U5       nUR                  U5        UR	                  5       nS S S 5        XsUS  :X  d   eg ! , (       d  f       N= f! , (       d  f       Nm= f! , (       d  f       N;= f)Nzopen-input-file	   some data   r  )r   rS  r  r   r  seek)r   r   r   r   r  	read_fromrU  r  s           r!   test_open_input_filer    s     !A$D			q	!Q	 
" L!C'I			A	! 
T>>			A	!	y 
 )*%%%% 
"	! 
	 
	s#   B?C
"C!?
C
C!
C/c                     U" S5      n[         R                  " [        5         U R                  U5        S S S 5        g ! , (       d  f       g = f)Nzopen-input-stream-not-found)r   rQ  rT   r   )r   r   r   s      r!    test_open_input_stream_not_foundr    s4    ,-A	(	)
Q 
*	)	)s	   >
A)r  r  decompressorc                 2   U" S5      nSS-  nU R                  XRU5       nUR                  U5        S S S 5        U R                  XRU5       nUR                  [	        U5      5      U:X  d   e S S S 5        g ! , (       d  f       NK= f! , (       d  f       g = f)Nzopen-output-streams   some data for writingr  )r   rS  r   r  r  )r   r   r  r  r  r   r   rU  s           r!   test_open_output_streamr    s     	#$A#d*D			q{	;q	 
< 
		ak	:avvc$i D((( 
;	: 
<	; 
;	:s   A7!B7
B
B)r  r  r  r  c                 T   U" S5      nU" S5      nU R                  U5       n	U	R                  U5        S S S 5        U(       ae  U R                  XrUS9 n
U
R                  S5        S S S 5        U R                  U5       n
U
R	                  5       nS S S 5        U" W5      nUS:X  d   eg [
        R                  " [        R                  5         U R                  XrUS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nzopen-append-streams   already existing)r  r  s   
newly addeds   already existing
newly added)	r   rS  r   r   r  r   rQ  r   ArrowNotImplementedError)r   r   r  r  r  r  r   r   initialr  rU  r  s               r!   test_open_append_streamr  (  s    	#$A,-G			q	!Q	 
" ""1/: # <?@GG$%< !!!$VVXF % f%9999]]2667!!!.9 " ; 87 
"	!< < %$ 87s/   C&C7>DD&
C47
D
D
D'c                    U" S5      nSS0nSnU R                  X#S9 nUR                  U5        S S S 5        U R                  U5       nUR                  5       U:X  d   eUR	                  5       nS S S 5        U R
                  S;   d  SU R
                  ;   a?  [        U S5        UR                  5        H  u  pxWU   UR                  5       :X  a  M   e   g W0 :X  d   eg ! , (       d  f       N= f! , (       d  f       N= f)	Nzopen-output-stream-metadataContent-Typezx-pyarrow/testr  r   )r   r   rH  r{  zWAzure filesystem currently only returns system metadata not user metadata. See GH-40026)	r   rS  r   r  r   rC  rI  itemsr~   )	r   r   r   r   r   rU  got_metadatakr  s	            r!    test_open_output_stream_metadatar  J  s    ,-A 01HD			q		4	 
5 
		a	 Avvx4zz| 
! 
||,,",,0F %	& NN$DA?ahhj000 % r!!! 
5	4 
!	 s   C 	'C1 
C.1
C?c                      [        SS9  [        R                  " [        5         [        SS9  S S S 5        g ! , (       d  f       g = f)NFr   )xxx)r   r   rQ  rd  r3   r$   r!   test_localfs_optionsr  a  s*    U#	y	!E" 
"	!	!s	   
7
Ac                    U S   n[        5          UR                  S5        S S S 5        [        5          UR                  S5        S S S 5        [        5          UR                  SSS9  S S S 5        [        5          UR	                  S5        S S S 5        [        5          UR                  S5        S S S 5        [        5          UR                  SS5        S S S 5        [        5          UR                  SS5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   z/non/existent/filez/non/existent/dirFr  z/non/existentz/xxx)r   r   r   r\   r_   rl   rt   ry   )r   r   s     r!   test_localfs_errorsr  i  s     
B		 
12 
!		 
23 
!		 
)U; 
!		 
)* 
!		 
*+ 
!		 
( 
!		 
_f- 
!	  
!	 	 	 	 	 	 	 	 	 	 	 	 	 sR   DDD&;D7EE(E*
D
D#&
D47
E
E
E'*
E8c                    U S   n[         R                  " [        5      nUR                  nUR	                  UR                  5       UR                  5       /5      u  pEUR                  UR                  5       R                  :X  d   eUR                  UR                  5       R                  :X  d   e[        U5        UR                  UR                  5       R                  :X  d   e[        U5        g r+  )r  r  __file__parentrI   r   rO   statst_sizer2  st_mtime_nsr9  )r   r   	file_pathdir_pathr8  r  s         r!   test_localfs_file_infor
  }  s    	BX&IH,,i.@.@.B.6.?.?.A.C DY>>Y^^-55555!1!=!====	 ; ;;;;r$   c                    [         R                  " S[        R                  5      n[	        U5      nUR                  S5          S S S 5        UR                  S/5      u  nUR                  U:X  d   eg ! , (       d  f       N5= f)NrX  r\  )r   r]  r   r^  r   r   rI   r1  )r   ra  r   rH   s       r!   test_mockfs_mtime_roundtripr    sg    			
HLL	9B		B			u	% 
&ug&FT:: 
&	%s   A33
Bc           
         SSK Jn  [        R                  " 5       nU" SSUSSSSS	9n[	        X15      (       d   eUR
                  S:X  d   eUR                  S:X  d   eU R                  U R                  U5      5      U:X  d   eU" 5       n[	        X15      (       d   eU R                  U R                  U5      5      U:X  d   eU" S
S9n[	        X15      (       d   eU R                  U R                  U5      5      U:X  d   eU" SSS.S9n[	        X15      (       d   eU R                  U R                  U5      5      U:X  d   e[        R                  " [        5         U" SS9  S S S 5        [        R                  " [        5         U" S
SS9  S S S 5        [        R                  " [        5         U" S
SS9  S S S 5        [        R                  " [        5         U" [        R                  " 5       S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nm= f! , (       d  f       g = f)Nr   r   abczservice_account@apachezus-west2httpslocalhost:8999r   )access_tokentarget_service_accountcredential_token_expirationdefault_bucket_locationr   r   r   Tr   authenticated-read
text/plainACLr  default_metadataaccess)r  r   )r   r  acct)r   r  )r  )r   r   r   nowr'   r  r   r  r~  r   rQ  re   )r  r   ra  r   s       r!   test_gcs_optionsr    s   (	B	E.F35/9%9I"3
5B b((((%%333==----}222672===	Bb((((}222672===		&Bb((((}222672===	0D9E)G 
HBb((((}222672===	z	"8, 
#	z	"8< 
#	z	"VD 
#	z	"(,,.A 
#	" 
#	"	"	"	"	"	"	"s0   G<H/HH/<
H

H
H,/
H=c           	         SSK JnJnJnJn  U" SSSSSSS	9n[        XS5      (       d   eUR                  S:X  d   eU R                  U R                  U5      5      U:X  d   eU" S
SSSS9n[        XS5      (       d   eU R                  U R                  U5      5      U:X  d   eU" U" SS9S9n[        XS5      (       d   eU" U" SS9S9n[        XS5      (       d   eU" S
S9n[        Xc5      (       d   eU R                  U R                  U5      5      U:X  d   eXe:w  d   eU" SS9n[        XS5      (       d   eU R                  U R                  U5      5      U:X  d   eU" SS9n[        XS5      (       d   eU R                  U R                  U5      5      U:X  d   eU" SSSS.S9n[        Xc5      (       d   eU R                  U R                  U5      5      U:X  d   eXe:w  d   eU" SS9n[        XS5      (       d   eU R                  U R                  U5      5      U:X  d   eU R                  U R                  U5      5      U" 5       :w  d   eU" SSS9n[        XS5      (       d   eU R                  U R                  U5      5      U:X  d   eU" SSSS9n[        XS5      (       d   eU R                  U R                  U5      5      U:X  d   eU" SSS9n[        XS5      (       d   eU R                  U R                  U5      5      U:X  d   eU" SSS9n[        Xc5      (       d   eU R                  U R                  U5      5      U:X  d   eXe:w  d   eU" SSS 9n[        XS5      (       d   eU R                  U R                  U5      5      U:X  d   eU" S!S"9n[        XS5      (       d   eU R                  U R                  U5      5      U:X  d   eXS" S#S"9:w  d   eXS" 5       :w  d   e[        R                  " [        5         U" SS$9  S S S 5        [        R                  " [        5         U" SS%9  S S S 5        [        R                  " [        5         U" SSS&9  S S S 5        [        R                  " [        5         U" SSS'9  S S S 5        [        R                  " [        5         U" SSS(S)9  S S S 5        [        R                  " [        5         U" SSSS*9  S S S 5        [        R                  " [        5         U" S(SS+9  S S S 5        [        R                  " [        5         U" S,S-/S.9  S S S 5        [        R                  " [        5         U" U" 5       S9  S S S 5        g ! , (       d  f       GNf= f! , (       d  f       GNO= f! , (       d  f       GN7= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)/Nr   )AwsDefaultS3RetryStrategyAwsStandardS3RetryStrategyr   S3RetryStrategyr  r   token	us-east-2r  r  )r   r   session_tokenregionr   r   rolesessionr#  d   )role_arnsession_nameexternal_idload_frequencyr  )max_attempts)retry_strategy)r+  Tr  )background_writesr  r  r  )r1  r  )allow_delayed_open)r   r   )r   r   )check_directory_existence_before_creationg      ?g      ?)request_timeoutconnect_timeout)r   force_virtual_addressingzca.pem)tls_ca_file_pathzother_ca.pem)r   )r   )r   r&  )r   r&  arn)r   r   r+  )r   r   r   )r+  r   r\  rZ  r  )r   r!  r"  r   r#  r'   r'  r  r~  r   rQ  re   )r  r!  r"  r   r#  r   rm  s          r!   test_s3_optionsr9    s   - - 
h$+K$8H
JB b''''99###}222672===	vI"&s
<Bb''''}222672=== 
1qA
CBb''''	0a@
BBb''''

'Cc((((}22378C???99		%Bb''''}222672===		-Bb''''}222672===
0D9E)GHC c((((}22378C???99		.Bb''''}222672===}22267<>III	D	MBb''''}222672===	D@D
FBb''''}222672===	c4	@Bb''''}222672===
tS
ACc((((}22378C???99	(8SW	XBb''''}222672===	x	0Bb''''}222672===~>>>>	z	") 
#	z	") 
#	z	"@ 
#	z	"@ 
#	z	"Hu	
 
# 
z	"H	
 
# 
z	"et4 
#	z	"uen5 
#	z	"O$56 
#	") 
#	"	"	"	"	"	"	"	"	" 
#	" 
#	"	"	"	"	"sl    U&)U8V
<V&	V.	W <W&	W"W3&
U58
V

V
V+.
V= 
W
W"
W03
Xc                    SSK Jn  SSSS.nSnSSS	S.nS
nU" US9n[        Xr5      (       d   eUR                  UR	                  U5      5      U:X  d   eU" US9n[        Xr5      (       d   eUR                  UR	                  U5      5      U:X  d   eU" US9n[        Xr5      (       d   eUR                  UR	                  U5      5      U:X  d   eU" US9n[        Xr5      (       d   eUR                  UR	                  U5      5      U:X  d   eU" US9nU" US9n	X:X  d   eUR                  UR	                  U5      5      U	:X  d   eUR                  UR	                  U	5      5      U:X  d   eU" US9nU" US9n	X:X  d   eUR                  UR	                  U5      5      U	:X  d   eUR                  UR	                  U	5      5      U:X  d   eU" US9nU" US9n	X:X  d   eUR                  UR	                  U5      5      U	:X  d   eUR                  UR	                  U	5      5      U:X  d   eU" US9nU" US9n	X:X  d   eUR                  UR	                  U5      5      U	:X  d   eUR                  UR	                  U	5      5      U:X  d   eU" US9nU" US9n	X:X  d   eUR                  UR	                  U5      5      U	:X  d   eUR                  UR	                  U	5      5      U:X  d   eU" US9nU" US9n	X:X  d   eUR                  UR	                  U5      5      U	:X  d   eUR                  UR	                  U	5      5      U:X  d   eU" US9nU" US9n	X:w  d   eUR                  UR	                  U5      5      U	:w  d   eUR                  UR	                  U	5      5      U:w  d   eU" US9nU" US9n	X:w  d   eUR                  UR	                  U5      5      U	:w  d   eUR                  UR	                  U	5      5      U:w  d   eU" US9nU" US9n	X:w  d   eUR                  UR	                  U5      5      U	:w  d   eUR                  UR	                  U	5      5      U:w  d   eU" US9nU" US9n	X:w  d   eUR                  UR	                  U5      5      U	:w  d   eUR                  UR	                  U	5      5      U:w  d   eU" US9nU" 5       n	X:w  d   eUR                  UR	                  U5      5      U	:w  d   eUR                  UR	                  U	5      5      U:w  d   eU" US9nU" 5       n	X:w  d   eUR                  UR	                  U5      5      U	:w  d   eUR                  UR	                  U	5      5      U:w  d   eU" US9nU" 5       n	X:w  d   eUR                  UR	                  U5      5      U	:w  d   eUR                  UR	                  U	5      5      U:w  d   eU" US9nU" 5       n	X:w  d   eUR                  UR	                  U5      5      U	:w  d   eUR                  UR	                  U	5      5      U:w  d   e[
        R                  " [        5         U" SS9  S S S 5        [
        R                  " [        5         U" SSS.S9  S S S 5        [
        R                  " [        5         U" SSS.S9  S S S 5        [
        R                  " [        5         U" SSS.S9  S S S 5        [
        R                  " [        R                  5         U" SS9  S S S 5        [
        R                  " [        R                  5         U" SSSS.S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r   	localhosti'#  )r   r   r   zhttp://localhost:8999r  i  zhttps://localhost:8080)proxy_options)r   r;  #  r=  )r   r   )r   r   )r   r   zhttpsB://localhost:9000httpA)r   r   r'   r  r~  r   rQ  rd  KeyErrorr   r  )
monkeypatchr  r   proxy_opts_1_dictproxy_opts_1_strproxy_opts_2_dictproxy_opts_2_strr   rl  rm  s
             r!   test_s3_proxy_optionsrE  #  s   ' $*;M.#*KN/ 
$5	6Bb''''}222672===	$5	6Bb''''}222672=== 
$4	5Bb''''}222672===	$4	5Bb''''}222672=== %6
7C
%6
7C::}22378C???}22378C???
%6
7C
%6
7C::}22378C???}22378C??? %5
6C
%5
6C::}22378C???}22378C???
%5
6C
%5
6C::}22378C???}22378C??? %6
7C
%5
6C::}22378C???}22378C???
%6
7C
%5
6C::}22378C???}22378C??? %6
7C
%6
7C::}22378C???}22378C???
%6
7C
%5
6C::}22378C???}22378C???
%5
6C
%6
7C::}22378C???}22378C???
%5
6C
%5
6C::}22378C???}22378C??? %6
7C
.C::}22378C???}22378C???
%5
6C
.C::}22378C???}22378C???
%6
7C
.C::}22378C???}22378C???
%5
6C
.C::}22378C???}22378C??? 
y	!#>? 
" 
x	 K#FG 
! 
x	 gt#DE 
! 
x	 fk#JK 
! 
r	'#<= 
( 
r	'g{,0$2 	3 
(	' 
"	! 
!	  
!	  
!	  
(	' 
(	'sH   ]
].4
]? 
^^!	^2
]+.
]<?
^
^!
^/2
_ c                     SSK Jn   U " SSS9nSn[        R                  " [        US9 nUR                  S5        S S S 5        S	[        WR                  5      ;   a  g U " S
SS9nUR                  S5        g ! , (       d  f       NA= f)Nr   r   z
eu-north-1T)r'  r   zWhen getting information for bucket 'arrow-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-1'.|NETWORK_CONNECTIONrM  arrow-datasetsNETWORK_CONNECTION	us-east-1)r   r   r   rQ  r   rI   r   r    )r   r   msgexcs       r!   test_s3fs_wrong_regionrL    sy    ' 
\T	:B!C
 
wc	*c
)* 
+ s399~-	[D	9B%& 
+	*s   A66
Bc           	         SSK Jn  U" SS9n[        X!5      (       d   eU R                  U R	                  U5      5      U:X  d   eU" SSS9n[        X15      (       d   eU R                  U R	                  U5      5      U:X  d   eX2:w  d   eU" SSS	S
SSS9n[        XA5      (       d   eU R                  U R	                  U5      5      U:X  d   eXC:w  d   eU" SSS9n[        XQ5      (       d   eU R                  U R	                  U5      5      U:X  d   eXT:w  d   eU" SSSSS9n[        Xa5      (       d   eU R                  U R	                  U5      5      U:X  d   eXe:w  d   eU" SSS9n[        Xq5      (       d   eU R                  U R	                  U5      5      U:X  d   eXv:w  d   e[
        R                  " [        SS9   U" SSS9  S S S 5        [
        R                  " [        SS9   U" SSS9  S S S 5        Sn[
        R                  " [        US9   U" SSSS9  S S S 5        [
        R                  " [        SS9   U" SSSS9  S S S 5        [
        R                  " [        US9   U" SSSS9  S S S 5        [
        R                  " [        5         U" SSSS9  S S S 5        [
        R                  " [        5         U" 5         S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r   zfake-account-name)r   fakeaccountkey)r   r   zfake-accountfakeaccountzfake-blob-authorityzfake-dfs-authorityr  r   fakesastoken)r   	sas_tokenzfake-tenant-idzfake-client-idzfake-client-secret)r   	tenant_id	client_idclient_secret)r   rS  zclient_id must be specifiedrM  )r   rR  )r   rT  zInvalid Azure credential configuration: For ManagedIdentityCredential, provide only client_id. For ClientSecretCredential, provide tenant_id, client_id, and client_secret.)r   rS  rT  )r   rR  rT  )r   rR  rS  )r   r   rQ  )	r   r   r'   r  r~  r   rQ  re   rd  )	r  r   rl  rm  fs3fs4fs5fs6invalid_msgs	            r!   test_azurefs_optionsrZ    s/   *
':
;Cc++++}22378C???
':&68Cc++++}22378C???::
~=1F0D.5-4	6C
 c++++}22378C???::
':$24Cc++++}22378C???::
(""*	C c++++}22378C???::
("C c++++}22378C???::	z)F	G,&	
 
H 
z)F	G,.	
 
H	W  
z	5,&.	
 
6 
z)F	G,&.	
 
H 
z	5,&&	
 
6 
z	"%8m"0	2 
# 
y	! 
"	!W 
H	G 
H	G 
6	5 
H	G 
6	5 
#	" 
"	!sT   K+K#	K4 	L*	L	L' L8
K #
K14
L
L
L$'
L58
Mc                     SSK Jn  [        R                  " 5       (       d  [        R
                  " S5        U u  p4nSnSnSnSn	U" X4SXgUS	9n
UR                  U	R                  X4SXgU5      5      nUR                  U	R                  X4S
XgU5      5      nUR                  U	R                  X4S
US-   Xx5      5      nU" X45      nUR                  SU SU 35      nU" X4SS9nU" X4SSS9nU" X4S[        R                  " S5      S9nU" X4SSS9nU" X4SSSS0S9nX:X  d   eX:X  d   eUU:w  d   eX:w  d   eX:w  d   eUU:w  d   eX:w  d   eX:w  d   eUU:w  d   eUU:X  d   eUU:w  d   eUU:w  d   e[        R                  " [        5         U" 5         S S S 5        [        R                  " [        5         UR                  S5        S S S 5        XXXUUUUU4 H)  nUR                  UR                  U5      5      U:X  a  M)   e   U u  p4nU" X4US9nUR                  [        S5      5      (       d   eUR                  SU SU SU 35      nUR                  [        S5      5      (       d   eg ! , (       d  f       N= f! , (       d  f       N= f)Nr   r  r     i   i   zIhdfs://{}:{}/?user={}&replication={}&buffer_size={}&default_block_size={}libhdfs)r	  replicationr  default_block_sizemer  zhdfs://r   	localuser)r	  
cache_path)r	  kerb_ticketcache_path2
hdfs_tokenabcd)r	  rc  
extra_confr  rb   z/?user=)r   r  r   r  r   r   from_uriformatr  r  rQ  rd  r  r~  rI   r   )r  r  r  r   r   r	  r^  r  r_  urihdfs1hdfs2hdfs3hdfs4hdfs5hdfs6hdfs7hdfs8hdfs9hdfs10hdfs11r   r  s                          r!   test_hdfs_optionsrv  &  s   +??+,&DKK$$C Ti)40BDE %%cjjI{9K' E %%cjjD+4F' E %%cjjD+/;' E T(E%%vQtf&=>ETk:ETk)57ETk)0l)CEEd{*79Fd{*6*6)?AF >>>>E>>>>>>E>>>>>>E>>E>>U??U??	y	! 
"	y	!!!!$ 
" U5ff&""=#6#6r#:;rAAA& 'DDT2Dl3/0000$$
$qgdV,D l3/0000# 
"	!	!	!s   
I.4I?.
I<?
J)rj  expected_klassexpected_pathzmock:r  zmock:foo/barrY  zmock:/foo/barzmock:///foo/barzmock:///some%20path/%C3%A9u   some path/éfile:/rb   zfile:///zfile:/foo/barz/foo/barzfile:///foo/barzfile:///some%20path/%C3%A9u   /some path/éu   /some path/%20éc                 f    [         R                  " U 5      u  p4[        X15      (       d   eXB:X  d   eg r   )r   rh  r'   )rj  rw  rx  r   r9   s        r!   test_filesystem_from_urir{  n  s3    & ""3'HBb))))   r$   c                  L   [         R                  " S5      u  p[        U [        5      (       d   eUS:X  d   e[         R                  " SS9u  p[        U [        5      (       d   eUS:X  d   e[        5       R                  SS9u  p[        U [        5      (       d   eUS:X  d   eg )Nry  rb   )rj  )r   rh  r'   r   )r   r9   s     r!    test_filesystem_from_uri_callingr}    s    ""8,HBb/****3;; ""x0HBb/****3;;  ))h)7HBb/****3;;r$   r9   c                     [         R                  " U 5      n[        R                  " U5      u  p [	        U[
        5      (       d   eXR                  5       R                  5       R                  5       :X  d   eg r   )	r  r  r   rh  r'   r   resolveabsoluter   )r9   r   r   s      r!    test_filesystem_from_path_objectr    s[    
 	TA""1%HBb/****99;'')224444r$   c           	      P   SSK Jn  U S   u  p#pESU SU SU SU S3	n[        R                  " U5      u  px[	        Xq5      (       d   eUS:X  d   eUR                  U5        UR                  U/5      u  n	U	R                  U:X  d   eU	R                  [        R                  :X  d   eg )	Nr   r   r   s3://r   z0@mybucket/foo/bar?scheme=http&endpoint_override=z&allow_bucket_creation=Truemybucket/foo/bar)r   r   r   rh  r'   r\   rI   r9   r[  r   rC   )
r   r   r   r   r   r   rj  r   r9   rH   s
             r!   test_filesystem_from_uri_s3r    s    ')2<)@&D
*Qzl +!F!D6)DFC ""3'HBb''''%%%%MM$tf%FT9999*****r$   c                 N   SSK Jn  U S   u  p#SSU SU S3-   S-   n[        R                  " U5      u  pV[	        XQ5      (       d   eUS	:X  d   eUR                  U5        UR                  U/5      u  nUR                  U:X  d   eUR                  [        R                  :X  d   eg )
Nr   r   r   zgs://anonymous@z/mybucket/foo/bar?scheme=http&endpoint_override=r   &z0retry_limit_seconds=5&project_id=test-project-idr  )r   r   r   rh  r'   r\   rI   r9   r[  r   rC   )r   r   r   r   rj  r   r9   rH   s           r!   test_filesystem_from_uri_gcsr    s    (L)JD<TF!D6KL=>C ""3'HBb((((%%%%MM$tf%FT9999*****r$   c                      [        5       n [        U 5      n[        U[        5      (       d   eUR                  S:X  d   eUR                  U L d   e[
        R                  " [        5         [        S 5        S S S 5        g ! , (       d  f       g = fNz	py::dummy)r   r   r'   rC  handlerr   rQ  rd  )r  r   s     r!   test_py_filesystemr    sj    nG	g	Bb,''''<<;&&&::   	y	!T 
"	!	!s   *A??
Bc                  ,   [        S5      n [        S5      n[        S5      n[        U 5      n[        U 5      n[        U5      n[        U5      nXCLd   eXTLd   eXeLd   eXC:X  d   eXT:w  d   eXe:X  d   eU[        5       :w  d   eU[        5       :w  d   eg )Nr  r\  )r   r   r   rE   )handler1handler2handler3rl  rm  rU  rV  s          r!   test_py_filesystem_equalityr    s    AHAHAH
x
 C
x
 C
x
 C
x
 C>>>>>>::::::/####&(??r$   c                     [        5       n[        U5      nU R                  U5      nU R                  U5      n[	        U[
        5      (       d   eXB:X  d   eUR                  U:X  d   eUR                  S:X  d   eg r  )r   r   r~  r  r'   r   r  rC  )r  r  r   r  r  s        r!   test_py_filesystem_picklingr    sx    nG	g	B$$R(J"":.Hh
++++>>w&&&,,,r$   c                  j   [        5       n [        U 5      n[        U[        5      (       d   e[        R                  " U 5      nS n U" 5       c   eS nU" 5       b   e[        5       n [        U 5      n[        R                  " U 5      nS n U" 5       UR
                  L d   eU" 5       c   eS nU" 5       b   eg r   )r   r   r'   weakrefrefr  )r  r   wrs      r!   test_py_filesystem_lifetimer    s    nG	g	Bb,''''	W	BG4	B4<< nG	g	B	W	BG42::4	B4<<r$   c                     [        5       n [        U 5      nUR                  S/5      u  nUR                  S:X  d   eUR                  [
        R                  :X  d   eUR                  S/5      u  nUR                  S:X  d   eUR                  [
        R                  :X  d   eUR                  S/5      u  nUR                  S:X  d   eUR                  [
        R                  :X  d   e[        R                  " [        5         UR                  S/5        S S S 5        [        R                  " [        5         UR                  S/5        S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)Nzsome/dirz	some/filer?   r@   r  )r   r   rI   r9   r[  r   rC   rB   rD   r   rQ  rd  rF   )r  r   rH   s      r!    test_py_filesystem_get_file_infor  	  s$   nG	g	Bzl+FT99
"""99*****{m,FT99###99%%%zl+FT99
"""99)))))	y	!
)% 
" 
w	
%! 
 	 
"	! 
 	s   E7E$
E!$
E2c                  f   [        5       n [        U 5      n[        SS9nUR                  U5      n[	        U5      S:X  d   eUS   R
                  S:X  d   eUS   R                  [        R                  :X  d   eUS   R                  S:X  d   eUS   R
                  S:X  d   eUS   R                  [        R                  :X  d   eUS   R                  b   e[        SS	S
9nUR                  U5      n[	        U5      S:X  d   eUS   R
                  S:X  d   eUS   R
                  S:X  d   eUS   R
                  S:X  d   e[        SS9n[        R                  " [        5         UR                  U5        S S S 5        [        SS	S9nUR                  U5      / :X  d   eg ! , (       d  f       N0= f)NrL   )rR   r\  r   rM   rN   r  rP   T)rR   rU   r  rQ   r?   )rR   rS   )r   r   r   rI   r  r9   r[  r   rB   rO   rC   r   rQ  rT   )r  r   rV   rW   s       r!   )test_py_filesystem_get_file_info_selectorr     s   nG	g	BY/HX&Eu:??8==O+++8==HMM)))8==C8==----8==H.....8==   Y$?HX&Eu:??8==O+++8==----8==3333Z0H	(	)
" 
* ZFHH%+++	 
*	)s   &F""
F0c                  b   [        5       n [        U 5      nUR                  SSS9  UR                  SSS9  [        R                  " [
        5         UR                  S5        S S S 5        UR                  S5        UR                  S5        S	 HG  n[        R                  " [        5         UR                  U5        S S S 5        UR                  USS
9  MI     UR                  S5        UR                  SS5        UR                  SS5        g ! , (       d  f       N= f! , (       d  f       Ni= f)NrU   Tr  r[   Ffoobarr_   rc   )r  rb   r  r  rl   ro   rp   rw   rx   )r   r   r\   r   rQ  rF   r_   rc   re   rl   rt   ry   )r  r   r9   s      r!   test_py_filesystem_opsr  =  s    nG	g	BMM+M.MM/UM3	w	
h 
  MM,01]]:&""4( '
tT:   NN=!GGK#LL!>2 
 	 '&s   D+D 
D 
D.	c                  8   [        [        5       5      n U R                  S5       nUR                  5       S:X  d   e S S S 5        [        R
                  " [        5         U R                  S5        S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)Nsomefiles   somefile:input_streamr?   )r   r   r   r  r   rQ  rT   r   rU  s     r!   test_py_open_input_streamr  Q  sk    	ln	%B			j	)Qvvx3333 
*	(	)
Z( 
*	) 
*	)	)	)   A:B:
B
Bc                  8   [        [        5       5      n U R                  S5       nUR                  5       S:X  d   e S S S 5        [        R
                  " [        5         U R                  S5        S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)Nr  s   somefile:input_filer?   )r   r   r   r  r   rQ  rT   r  s     r!   test_py_open_input_filer  Z  sk    	ln	%B			J	'1vvx1111 
(	(	)
:& 
*	) 
(	'	)	)r  c                      [        [        5       5      n U R                  S5       nUR                  S5        S S S 5        g ! , (       d  f       g = fNr  r  )r   r   r   rS  r  s     r!   test_py_open_output_streamr  c  6    	ln	%B			z	*a	 
+	*	*   A  
Ac                      [        [        5       5      n U R                  S5       nUR                  S5        S S S 5        g ! , (       d  f       g = fr  )r   r   r   rS  r  s     r!   test_py_open_append_streamr  j  r  r  c                     SSK Jn   [        R                  R	                  S5      =(       d    SnU " SS9nUR
                  U:X  d   eU " SSS9nUR                  [        S5      5      n[        U5      S:  d   eS	nUR                  U5       nUR                  5       nS
U;   d   eUS   S:X  d   eUS   S:X  d   e S S S 5        g ! , (       d  f       g = f)Nr   r   PYARROW_TEST_S3_REGIONrI  Tr  )r   r'  zarrow-datasets/nyc-taxiz8arrow-datasets/nyc-taxi/year=2019/month=6/part-0.parquetr  zLast-Modifieds   2025-11-26T10:28:55ZETags%   "4c6a76826a695c6ac61592bc30cda3df-16")r   r   osenvirongetr'  rI   r   r  r   r   )r   default_regionr   entriesr  rU  mds          r!   test_s3_real_awsr  q  s     (jjnn%=> "! 		%B99&&&	[	9B|! # $Gw<!
DC			c	"aZZ\###/"&==== &zEEEE 
#	"	"s   /C
Cc                     [         R                  " S5      u  pU R                  S:X  d   eU R                  U5       nSUR	                  S5      ;   d   e S S S 5        [         R                  " S5      u  pU R                  S:X  d   e[
        R                  " [        SS9   [         R                  " S	5        S S S 5        [         R                  " S
5      u  pU R                  S:X  d   e[         R                  " S5      u  pU R                  U5      n[
        R                  " [        5         UR                  5         S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nzs3://mf-nwp-models/README.txt	eu-west-1s&   Meteo-France Atmospheric models on AWS2   z.s3://mf-nwp-models/README.txt?region=us-east-2r%  zBucket '.*' not foundrM  z s3://x-arrow..nonexistent-bucketz0s3://x-arrow-nonexistent-bucket?region=us-east-3z	us-east-3zMs3://x-arrow-nonexistent-bucket/T.md?region=us-east-2&allow_delayed_open=true)
r   rh  r'  r   r  r   rQ  rF   r   close)r   r9   rU  streams       r!   !test_s3_real_aws_region_selectionr    s'    ""#BCHB99###			d	#q8AFF2JFFF 
$ ""8:HB99### 
w&=	>>? 
?""#UVHB99###
 ""WYHB""4(F	w	 
 	1 
$	# 
?	> 
 	s#   E E,E(
E
E%(
E6c                  4   SSK Jn   U " S5      S:X  d   eU " S5      S:X  d   e[        R                  " [        SS9   U " S	5        S S S 5        [        R                  " [        SS9   U " S
5        S S S 5        g ! , (       d  f       N9= f! , (       d  f       g = f)Nr   resolve_s3_regionrG  rI  zmf-nwp-modelsr  zNot a valid bucket namerM  rY  z	s3:bucket)r   r  r   rQ  re   r  s    r!   test_resolve_s3_regionr    sz    ,-.+===_-<<<	z)B	C)$ 
D	z)B	C+& 
D	C 
D	C	C	Cs   	A8&	B	8
B	
Bc           
         US   nUS   nU" S5      nUR                  U5       nUR                  S5        S S S 5        U u  pxpSU	 SU
 SU SU SU 3
n[        US	-  5      n[        X5        [	        5       nUR                  U5       nUR                  5       S:X  d   e S S S 5        [        US
-  5      n[        X^US9  UR                  U5       nUR                  5       S:X  d   e S S S 5        [        US-  5      n[        U5      n[        UU5        UR                  U5       nUR                  5       S:X  d   e S S S 5        [        US-  5      n[        UUUS9  UR                  U5       nUR                  5       S:X  d   e S S S 5        [        US-  5      n[        UUSSS9  UR                  U5       nUR                  5       S:X  d   e S S S 5        g ! , (       d  f       GN= f! , (       d  f       GNV= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r  rO  r  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.txtr  F
chunk_sizeuse_threads)r   rS  r   r   r   r   r  r   )s3_connectionr   r   r   r   r9   rU  r   r   r   r   
source_urilocal_path1r   local_path2local_path3destination_urilocal_path4local_path5s                      r!   test_copy_filesr    s   	dB(^F '?D			t	$	 
% *7&D


|1ZL$
)$q	8 
 g/0Kz'G		"	";	/1vvx7""" 
0 g/0KtB7		"	";	/1vvx7""" 
0 g/0K%k2Oz?+		"	";	/1vvx7""" 
0 g/0Kz;wG		"	";	/1vvx7""" 
0 g/0Kz;1%H		"	";	/1vvx7""" 
0	/U 
%	$ 
0	/ 
0	/ 
0	/ 
0	/ 
0	/sG   GG/H'H1H$<H5
G,/
G>
H
H!$
H25
Ic                   ^ [        5       mU S-  nUR                  5         TR                  [        US-  5      5       nUR	                  S5        S S S 5        TR                  [        US-  5      5       nUR	                  S5        S S S 5        U4S jnU S-  nUR                  5         [        [        U5      [        U5      5        U" U5        U S-  nUR                  5         [        [        U5      [        U5      TTS	9  U" U5        U S
-  nUR                  5         [        [        U5      5      n[        [        U5      5      n[        Xx5        U" U5        U S-  n	U	R                  5         [        X5        U" U	5        U S-  n
U
R                  5         [        XSSS9  U" U
5        g ! , (       d  f       GNc= f! , (       d  f       GN>= f)Nsourcefile1   test1file2   test2c                 >  > TR                  [        U S-  5      5       nUR                  5       S:X  d   e S S S 5        TR                  [        U S-  5      5       nUR                  5       S:X  d   e S S S 5        g ! , (       d  f       NL= f! , (       d  f       g = f)Nr  r  r  r  )r   r   r  )destination_dirrU  r   s     r!   check_copied_files5test_copy_files_directory.<locals>.check_copied_files  s    &&s?W+D'EF!668x''' G&&s?W+D'EF!668x''' GF GFFFs   A=B=
B
Bdestination1destination2)r  r  destination3destination4destination5r  Fr  )r   mkdirr   r   rS  r   r   )r   
source_dirrU  r  destination_dir1destination_dir2destination_dir3r  r  destination_dir4destination_dir5r   s              @r!   test_copy_files_directoryr    s   G 8#J		#	#C
W(<$=	>!	 
?		#	#C
W(<$=	>!	 
?( /s:$4 56'( /s:$4 5!(J'( / Z1J%c*:&;<Oz+'( /z,'( /zuM'(U 
?	>	>	>s   F,5F>,
F;>
Gc                  V    Sn [         R                  " [        R                  SU /5        g )Na  if 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_callsys
executablecodes    r!   test_s3_finalizer    s$    D* 3>>467r$   c                  V    Sn [         R                  " [        R                  SU /5        g )Na  if 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('arrow-datasets')
        r  r  r  s    r!    test_s3_finalize_region_resolverr  ;  s$    D 3>>467r$   c                  V    Sn [         R                  " [        R                  SU /5        g )Na  if 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()
        r  r  r  s    r!   test_concurrent_s3fs_initr  O  s$    
D" 3>>467r$   zUatexit(ensure_s3_finalized) will be called too late with bundled aws-sdk-cpp 1.11.587rA  z?Leaking S3ClientFinalizer causes segfault on musl based systemsc            	      l    [         R                  " SS/5        [        5       n SSSSU  3S[        R                  R                  [        S5      /n[         R                  " U[         R                  S	9n S
U  S3n[        R                  " 5       nS n[        R                  " 5       US-   :  a)   [        U5       nUR                  S:X  d   e S S S 5        O[        R"                  " SU< SU 35        UR%                  5         UR'                  5       S:X  d   eg ! [         a    [        R                  " S5         GN$f = f! , (       d  f       Nz= f! [         a"  nUn[        R                   " S5         S nAOS nAff = f[        R                  " 5       US-   :  a  M  N! UR%                  5         f = f)Nuwsgiz	--versionz"uwsgi not installed on this Pythonz-iz--httpz
127.0.0.1:z--wsgi-filezwsgi_examples.py)stdinzhttp://127.0.0.1:z/s3/r     g?zCould not fetch r      )r  r  rT   r   r   r   r  r9   joinherePopenDEVNULLtimer   statusr   sleepfail	terminatewait)r   argsprocurl
start_timeerrorrespr   s           r!   test_uwsgi_integrationr  h  sk   :w45 DT8z$%8277<<.@ACDD
(:(:;D!$t,YY[
iikJN* S\T;;#--- "
 KK*3'E7;<99;"3  :89: "\   

3  iikJN* 	s_   D 59F! /E :EE F!  D?>D?
EE 
E?E:5F! :E??F! !F3c                  d    SSK Jn   SSKJn  [        R                  " S5      u  p#[        [        W" 5       5      5      nX$:X  d   eUS:X  d   eSn[        R                  " SU 35      u  p&[        [        W " 5       5      5      nX$:X  d   eg ! [         a    [
        R                  " S5         Nf = f)	Nr   )r   MemoryFileSystemfsspec not installedz$fsspec+memory://path/to/data.parquetz/path/to/data.parquetzfile:///tmp/my.filezfsspec+)fsspec.implementations.localr   fsspec.implementations.memoryr  ImportErrorr   r   r   rh  r   r   )r   r  r   r9   expected_fsrj  rT  s          r!   test_fsspec_filesystem_from_urir    s    ,@B ""#IJHB}-=-?@AK****  C'#0EB}_->?@K  ,*+,s   B  B/.B/c                  .  ^  SSK Jn   [        W " 5       5      mTR                  SSS9  TR                  SSS9  TR                  S0 S	9 nUR                  S
5        S S S 5        TR                  S0 S	9 nUR                  S5        S S S 5        U4S jnU" S5      [        R                  :X  d   eU" S5      [        R                  :X  d   eU" S5      [        R                  :X  d   eTR                  5         U" S5      [        R                  :X  d   eU" S5      [        R                  :X  d   eU" S5      [        R                  :X  d   eg ! [         a    [        R                  " S5         GNff = f! , (       d  f       GN= f! , (       d  f       GN= f)Nr   r  r  test_dirTr  ztest_dir/subdirztest_file.txtr  s   test contentztest_dir/nested_file.txts   nested contentc                 B   > TR                  U /5      S   R                  $ )Nr   )rI   r[  )r9   r   s    r!   get_type6test_fsspec_delete_root_dir_contents.<locals>.get_type  s!    '*///r$   )r  r  r  r   r   r   r\   r   rS  r   rB   rC   ri   rD   )r  r  r  r   s      @r!   $test_fsspec_delete_root_dir_contentsr    sk   ,B 
')	*B MM*M-MM#tM4					<_% 
= 
		9B		G6&' 
H0 O$555J8#5#5555./8==@@@ ! O$(9(9999J8#4#4444./83D3DDDD;  ,*+, 
=	< 
H	Gs)   E 	E33F E0/E03
F
Fc                  
   [         R                  " S5         SSKJn   [        R                  " S5      u  p[        [        W " 5       5      5      nX:X  d   eUS:X  d   eg ! [         a    [         R
                  " S5         Ncf = f)Nr  r   )HfFileSystemzhuggingface_hub not installedzFhf://datasets/stanfordnlp/imdb/plain_text/train-00000-of-00001.parquetzAdatasets/stanfordnlp/imdb/plain_text/train-00000-of-00001.parquet)
r   r  huggingface_hubr  r  r   r   rh  r   r   )r  r   r9   r  s       r!   $test_huggingface_filesystem_from_urir    s{    
!50 ""PHB }\^<=KVVVV  5345s   A  BB)r   r   r   r  r  r  urllib.requestr   r  r  r   r   r  r   r   pyarrow.tests.test_ior   pyarrow.tests.utilr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   pyarrow.utilr   r9   dirnameabspathr  r  r   fixturer   r   r   r   r   r   r   r   r   rP  r  r  r  r  r"  r(  markr   r   r   r)  r   r   r   r   r9  r<  r>  rF  rI  rV  rb  re  rn  rp  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  parametrizecompressr  r  r  
decompressr  r  r  r  r  r
  r  r  r9  rE  rL  rZ  rv  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  	processes	threadingr  r   skipifr  r  r  r  r3   r$   r!   <module>r.     sB	  $ 3 2  	  "  
     76 6$ $ $ $ ( 
wwrwwx01f'$ f'R              :  4   @  8  $      , 
LL LL+ LL1 LLkknn
 LLkkoo
 LLkk
 LLkk
 LL LL: LL: LLB LLE LL=kknnk: :v2w:v2 # # ' ' / / 5 5	2&
>
#
  5  5F:
O(K (,"- 8+v5 p".@$.(
	(($ 0	tX	r8	t}}%	dmm$	
 
&&  2	tX	r8	t'	doo&		) 	) @	tXx(	r8X&	t}}doo6	dmmT__5	; ;0".#.( "B "BJ d7 d7N I3 I3X ' '. Z Zz D1 D1N C or"_i0oy13!?NC$#&oz24!?OD/3*-*<=!F $!%$!" 
iX.5	5 + +$ + +&(	-*".,:3()' F F.  B ' ' 1# 1#h0)f 8 86 8 8& 8   8,  6 7(* 4T UU7 
@( EFWr$   