
    çg!                     
   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZmZmZmZ d Zda G d d	e          Z ed
g d           G d dej                              Z G d de          ZdS )    N)suppress)cached_propertywraps)parse_qs)AbstractFileSystem)"get_package_version_without_importinfer_storage_optionsmirror_fromtokenizec                 <     t                      fd            }|S )Nc                      	  | i |S # t           $ rK}|j        s |j        ^}} t          |t                    rd|v rt	          t
          j        |          | d }~ww xY w)Nzdoes not exist)OSErrorargs
isinstancestrFileNotFoundErrorerrnoENOENT)r   kwargs	exceptionmessagefuncs       X/var/www/html/ai-engine/env/lib/python3.11/site-packages/fsspec/implementations/arrow.pywrapperz wrap_exceptions.<locals>.wrapper   s    
	4(((( 	 	 	> &^NGd'3'' ,<,G,G'g>>IM	s    
A AAA )r   )r   r   s   ` r   wrap_exceptionsr      s3    
4[[    [ N    c                   f    e Zd ZdZdZ fdZed             Zed             Z	e
d             ZddZd	 Zd
 Zd Zed             Zed             Zed             Zedd            Zedd            Zedd            Zedd            Zed             Zed             Zd fd	Z fdZ xZS )ArrowFSWrapperzwFSSpec-compatible wrapper of pyarrow.fs.FileSystem.

    Parameters
    ----------
    fs : pyarrow.fs.FileSystem

    /c                 f    t          d          a|| _         t                      j        di | d S )Npyarrow )r   PYARROW_VERSIONfssuper__init__)selfr$   r   	__class__s      r   r&   zArrowFSWrapper.__init__3   s:    <YGG""6"""""r   c                     | j         j        S N)r$   	type_namer'   s    r   protocolzArrowFSWrapper.protocol9   s    w  r   c                 P    dt          | j        j        | j        j                  z   S )Nhdfs_)r   r$   hostportr,   s    r   fsidzArrowFSWrapper.fsid=   s    $',====r   c                 r    t          |          }|d         }|                    d          r
|dd          }|S )Npathz//   )r	   
startswith)clsr4   opss      r   _strip_protocolzArrowFSWrapper._strip_protocolA   s>    #D))6{??4   	8Dr   Fc                                            |          }ddlm}  fd j                             ||                    D             }|r|S d |D             S )Nr   )FileSelectorc                 :    g | ]}                     |          S r"   )_make_entry).0entryr'   s     r   
<listcomp>z%ArrowFSWrapper.ls.<locals>.<listcomp>N   s7     
 
 
 U##
 
 
r   c                     g | ]
}|d          S )namer"   )r>   r?   s     r   r@   z%ArrowFSWrapper.ls.<locals>.<listcomp>U   s    777eE&M777r   )r9   
pyarrow.fsr;   r$   get_file_info)r'   r4   detailr   r;   entriess   `     r   lszArrowFSWrapper.lsJ   s    ##D))++++++
 
 
 
..||D/A/ABB
 
 
  	8N77w7777r   c                     |                      |          }| j                            |g          \  }|                     |          S r*   )r9   r$   rD   r=   )r'   r4   r   infos       r   rI   zArrowFSWrapper.infoW   sB    ##D))&&v..%%%r   c                 ~    |                      |          }	 |                     |           dS # t          $ r Y dS w xY w)NTF)r9   rI   r   r'   r4   s     r   existszArrowFSWrapper.exists\   sT    ##D))	IIdOOO 4 ! 	 	 	55	s   . 
<<c                    ddl m} |j        |j        u rd}n]|j        |j        u rd}nL|j        |j        u r<t          t          j        t          j
        t          j                  |j                  d}|j        |j        ||j        dS )Nr   )FileType	directoryfileother)rB   sizetypemtime)rC   rN   rS   	DirectoryFileNotFoundr   r   r   osstrerrorr4   rR   rT   )r'   rI   rN   kinds       r   r=   zArrowFSWrapper._make_entrye   s    ''''''9***DDY(-''DDY(+++#EL"+el2K2KTYWWWD IIZ	
 
 	
r   c                    |                      |                              d          }|                      |                              d          }|                     |d          5 }| dt          j        d           }	 |                     |d          5 }t          j        ||           d d d            n# 1 swxY w Y   | j        	                    ||           nU# t          $ rH t          t                    5  | j                            |           d d d            n# 1 swxY w Y    w xY w	 d d d            d S # 1 swxY w Y   d S )Nr   rbz.tmp.   wb)r9   rstrip_opensecrets	token_hexopenshutilcopyfileobjr$   moveBaseExceptionr   r   delete_file)r'   path1path2r   lstream	tmp_fnamerstreams          r   cp_filezArrowFSWrapper.cp_filex   s   $$U++22377$$U++22377ZZt$$ 		 ==w'8';';==IYYy$// 97&w8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9Y....    /00 3 3G''	2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 /		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		sr   'EC!B:.C!:B>	>C!B>	C! E!D3?D&D3&D**D3-D*.D33EEEc                     |                      |                              d          }|                      |                              d          }| j                            ||           d S )Nr   )r9   r_   r$   rf   )r'   ri   rj   r   s       r   mvzArrowFSWrapper.mv   s`    $$U++22377$$U++22377UE"""""r   c                 d    |                      |          }| j                            |           d S r*   )r9   r$   rh   rK   s     r   rm_filezArrowFSWrapper.rm_file   s1    ##D))D!!!!!r   Nc                    |                      |                              d          }|                     |          r-|r| j                            |           d S t          d          | j                            |           d S )Nr   z0Can't delete directories without recursive=False)r9   r_   isdirr$   
delete_dir
ValueErrorrh   )r'   r4   	recursivemaxdepths       r   rmzArrowFSWrapper.rm   s    ##D))0055::d 	& U""4((((( !STTTG%%%%%r   r\   Tc                 j   |dk    r|r| j         j        }nE| j         j        }n8|dk    r| j         j        }n%|dk    r| j         j        }nt          d|          i }|dk    s|s6t          t                              d          d                   dk    rd |d<    ||fi |}t          | ||||fi |S )	Nr\   r^   abz'unsupported mode for Arrow filesystem: .r      compression)
r$   open_input_fileopen_input_streamopen_output_streamopen_append_streamrv   intr#   split	ArrowFile)	r'   r4   mode
block_sizeseekabler   method_kwargsstreams	            r   r`   zArrowFSWrapper._open   s    4<< 302T\\W/FFT\\W/FFOtOOPPP4<<x<?((--a011Q66)-&((((vtT:HHHHHr   c                     |                      |          }|r|                     |d           d S | j                            |d           d S )NT)exist_okFrw   )r9   makedirsr$   
create_dir)r'   r4   create_parentsr   s       r   mkdirzArrowFSWrapper.mkdir   sZ    ##D)) 	6MM$M.....Gtu55555r   c                 h    |                      |          }| j                            |d           d S )NTr   )r9   r$   r   )r'   r4   r   s      r   r   zArrowFSWrapper.makedirs   s6    ##D))4400000r   c                 d    |                      |          }| j                            |           d S r*   )r9   r$   ru   rK   s     r   rmdirzArrowFSWrapper.rmdir   s1    ##D))4     r   c                 j    |                      |          }| j                            |          j        S r*   )r9   r$   rD   rT   rK   s     r   modifiedzArrowFSWrapper.modified   s.    ##D))w$$T**00r   c                 L    |dv|d<    t                      j        |fd d d|S )N)Nr   r   )startend)r%   cat_file)r'   r4   r   r   r   r(   s        r   r   zArrowFSWrapper.cat_file   s8    ")3zuwwEDdEEfEEEr   c                 H    d|d<    t                      j        ||fi | d S )NFr   )r%   get_file)r'   rpathlpathr   r(   s       r   r   zArrowFSWrapper.get_file   s4    "z0000000r   )F)FN)r\   NT)T)NN)__name__
__module____qualname____doc__root_markerr&   propertyr-   r   r2   classmethodr9   rG   rI   rL   r=   r   rn   rp   rr   ry   r`   r   r   r   r   r   r   __classcell__r(   s   @r   r   r   (   s#         K# # # # # ! ! X! > > _>   [8 8 8 8& & &
  
 
 
&   _ # # _#
 " " _" & & & _& I I I _I, 6 6 6 _6 1 1 1 _1 ! ! _! 1 1 _1F F F F F F1 1 1 1 1 1 1 1 1r   r   r   )	readseektellwritereadablewritablecloserR   r   c                   "    e Zd ZddZd Zd ZdS )r   Nc                 h    || _         || _        || _        || _        |x| _        | _        || _        d S r*   )r4   r   r$   r   	blocksizer   r   )r'   r$   r   r4   r   r   r   s          r   r&   zArrowFile.__init__   s7    		+55r   c                     | S r*   r"   r,   s    r   	__enter__zArrowFile.__enter__   s    r   c                 *    |                                  S r*   )r   )r'   r   s     r   __exit__zArrowFile.__exit__   s    zz||r   r*   )r   r   r   r&   r   r   r"   r   r   r   r      sF                 r   r   c                   J     e Zd ZdZdZ	 	 	 	 	 	 d	 fd	Zed             Z xZS )
HadoopFileSystemz]A wrapper on top of the pyarrow.fs.HadoopFileSystem
    to connect it's interface with fsspechdfsdefaultr   N   c                 l    ddl m}  |||||||          }	 t                      j        dd|	i| dS )a;  

        Parameters
        ----------
        host: str
            Hostname, IP or "default" to try to read from Hadoop config
        port: int
            Port to connect on, or default from Hadoop config if 0
        user: str or None
            If given, connect as this username
        kerb_ticket: str or None
            If given, use this ticket for authentication
        replication: int
            set replication factor of file for write operations. default value is 3.
        extra_conf: None or dict
            Passed on to HadoopFileSystem
        r   )r   )r0   r1   userkerb_ticketreplication
extra_confr$   Nr"   )rC   r   r%   r&   )r'   r0   r1   r   r   r   r   r   r   r$   r(   s             r   r&   zHadoopFileSystem.__init__   sj    6 	0/////##!
 
 
 	))B)&)))))r   c                    t          |           }i }|                    dd           r|d         |d<   |                    dd           r|d         |d<   |                    dd           r|d         |d<   |                    dd           rIt          |d                   }|                    dd           rt          |d         d                   |d<   |S )Nr0   usernamer   r1   	url_queryr   r   )r	   getr   r   )r4   r8   outqueriess       r   _get_kwargs_from_urlsz&HadoopFileSystem._get_kwargs_from_urls"  s    #D))7764   	&f+CK77:t$$ 	*j/CK7764   	&f+CK77;%% 	Ds;/00G{{=$// D%()?)B%C%CM"
r   )r   r   NNr   N)	r   r   r   r   r-   r&   staticmethodr   r   r   s   @r   r   r      s~        - - H %* %* %* %* %* %*N   \    r   r   )r   iorX   ra   rd   
contextlibr   	functoolsr   r   urllib.parser   fsspec.specr   fsspec.utilsr   r	   r
   r   r   r#   r   IOBaser   r   r"   r   r   <module>r      s    				 				         , , , , , , , , ! ! ! ! ! ! * * * * * *             $ j1 j1 j1 j1 j1' j1 j1 j1Z 
 
 
     	   $; ; ; ; ;~ ; ; ; ; ;r   