
    çg:                         d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlZd dl	Z	d dl
mZ d dlmZ d dlmZ d dlmZmZ  ej        d          Z G d de          Zd	 Zd
 Z G d dej                  ZdS )    N)AbstractFileSystem)compr)get_compression)
isfilelikestringify_pathzfsspec.localc                       e Zd ZdZdZdZdZd% fd	Zed             Z	d&dZ
d%d	Zd
 Zd%dZd Zd Zd Zd Zd Zd'dZd'dZd Zd Zd ZdefdZd Zd(dZd Zd)dZd&dZd Zd  Z e!d!             Z"e!d"             Z#d# Z$d$ Z% xZ&S )*LocalFileSystema   Interface to files on local storage

    Parameters
    ----------
    auto_mkdir: bool
        Whether, when opening a file, the directory containing it should
        be created (if it doesn't already exist). This is assumed by pyarrow
        code.
    /)filelocalTFc                 H     t                      j        di | || _        d S )N )super__init__
auto_mkdir)selfr   kwargs	__class__s      X/var/www/html/ai-engine/env/lib/python3.11/site-packages/fsspec/implementations/local.pyr   zLocalFileSystem.__init__!   s+    ""6"""$    c                     dS )Nr   r   r   s    r   fsidzLocalFileSystem.fsid%   s    wr   c                     |                      |          }|                     |          rt          |          |r|                     |d           d S t	          j        |fi | d S NTexist_ok)_strip_protocolexistsFileExistsErrormakedirsosmkdir)r   pathcreate_parentsr   s       r   r#   zLocalFileSystem.mkdir)   sy    ##D));;t 	(!$''' 	%MM$M.....HT$$V$$$$$r   c                 \    |                      |          }t          j        ||           d S )Nr   )r   r"   r!   )r   r$   r   s      r   r!   zLocalFileSystem.makedirs2   s0    ##D))
D8,,,,,,r   c                 X    |                      |          }t          j        |           d S N)r   r"   rmdirr   r$   s     r   r)   zLocalFileSystem.rmdir6   s&    ##D))
r   c                                           |          }                     |          }|d         dk    r;t          j        |          5 } fd|D             }d d d            n# 1 swxY w Y   n|g}|sd |D             S |S )Ntype	directoryc                 :    g | ]}                     |          S r   )info).0fr   s     r   
<listcomp>z&LocalFileSystem.ls.<locals>.<listcomp>?   s#    222!1222r   c                     g | ]
}|d          S )namer   )r0   is     r   r2   z&LocalFileSystem.ls.<locals>.<listcomp>D   s    ---!AfI---r   )r   r/   r"   scandir)r   r$   detailr   r/   itinfoss   `      r   lszLocalFileSystem.ls:   s    ##D))yy<;&&D!! 3R2222r2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 FE 	.--u----s   A''A+.A+c                 \   t          |t          j                  r|                    d          }|                                }|                    d          rd}n|                    d          rd}nd}|j        }|r1	 |                    d          }|j        }n# t          $ r d}Y nw xY w| 	                    |j
                  }n| 	                    |          }t          j        |d          }t          j        |j                  }|rt          j        |d          }|j        }t          j        |j                  rd}nt          j        |j                  rd}nd}||||j        |d}d	D ]}	t!          |d
|	           ||	<   |rt          j        |          |d<   |S )NF)follow_symlinksr-   r   otherTr   )r4   sizer,   createdislink)modeuidgidmtimeinonlinkst_destination)
isinstancer"   DirEntrystat
is_symlinkis_diris_filest_sizeOSErrorr   r$   S_ISLNKst_modeS_ISDIRS_ISREGst_ctimegetattrreadlink)
r   r$   r   outlinktr>   out2resultfields
             r   r/   zLocalFileSystem.infoG   s   dBK((  	))E)22C??$$D{{5{11 e44 ;D 99T9::D<DD   DDD''	22DD ''--D'$666C<,,D :gdD999;D|CK(( ck** |
 
 E 	8 	8E#Cu77F5MM 	6$&K$5$5F=!s   B! !B0/B0c                 *    t          j        |          S r(   )osplexists)r   r$   r   s      r   r`   zLocalFileSystem.lexistsv   s    {4   r   c                    |                      |          }|                      |          }| j        r*|                     |                     |          d           |                     |          rt          j        ||           d S |                     |          r|                     |d           d S t          |          r   )
r   r   r!   _parentisfileshutilcopyfileisdirmkdirsFileNotFoundErrorr   path1path2r   s       r   cp_filezLocalFileSystem.cp_filey   s    $$U++$$U++? 	>MM$,,u--M===;;u 	+OE5)))))ZZ 	+KKK-----#E***r   c                 j    |                      |          }t          j                            |          S r(   )r   r"   r$   rc   r*   s     r   rc   zLocalFileSystem.isfile   s)    ##D))w~~d###r   c                 j    |                      |          }t          j                            |          S r(   )r   r"   r$   rf   r*   s     r   rf   zLocalFileSystem.isdir   s)    ##D))w}}T"""r   Nc                     t          |          r@t          |d          5 }t          j        ||           d d d            d S # 1 swxY w Y   d S  | j        ||fi |S )Nrb)r   openrd   copyfileobjrl   )r   rj   rk   callbackr   r1   s         r   get_filezLocalFileSystem.get_file   s    e 	8eT"" -a"1e,,,- - - - - - - - - - - - - - - - - -  4<u77777s   AA
Ac                       | j         ||fi |S r(   )rl   )r   rj   rk   rs   r   s        r   put_filezLocalFileSystem.put_file   s    t|E533F333r   c                     |                      |          }|                      |          }t          j        ||           d S r(   )r   rd   moveri   s       r   mvzLocalFileSystem.mv   s@    $$U++$$U++E5!!!!!r   c                     |                      |          }|                      |          }t          j        ||fi | d S r(   )r   r"   rY   r   srcdstr   s       r   rY   zLocalFileSystem.link   sH    ""3''""3''
S##F#####r   c                     |                      |          }|                      |          }t          j        ||fi | d S r(   )r   r"   symlinkr{   s       r   r   zLocalFileSystem.symlink   sH    ""3''""3''

3&&v&&&&&r   returnc                 f    t           j                            |                     |                    S r(   )r"   r$   r@   r   r*   s     r   r@   zLocalFileSystem.islink   s$    w~~d22488999r   c                 T    t          j        |                     |                     d S r(   )r"   remover   r*   s     r   rm_filezLocalFileSystem.rm_file   s&    
	$&&t,,-----r   c                 x   t          |t                    s|g}|D ]}|                     |          }|                     |          r^|st	          d          t          j        |          t          j                    k    rt	          d          t          j
        |           t          j        |           d S )Nz+Cannot delete directory, set recursive=Truez'Cannot delete current working directory)rI   listr   rf   
ValueErrorr_   abspathr"   getcwdrd   rmtreer   )r   r$   	recursivemaxdepthps        r   rmzLocalFileSystem.rm   s    $%% 	6D 		 		A$$Q''Azz!}}   T$%RSSS;q>>RY[[00$%NOOOa    	!		 		r   c                 6    |                      |          }d| S )Nfile://)r   )r   r4   s     r   unstrip_protocolz LocalFileSystem.unstrip_protocol   s#    ##D))r   rp   c                     |                      |          }| j        r.d|v r*|                     |                     |          d           t	          ||fd| i|S )NwTr   fs)r   r   r!   rb   LocalFileOpener)r   r$   rA   
block_sizer   s        r   _openzLocalFileSystem._open   sf    ##D))? 	=sd{{MM$,,t,,tM<<<tT==d=f===r   c                 ^   |                      |          }| j        r*|                     |                     |          d           |                     |          rt          j        |d            n"t          |d                                           |rt          j	        |d           d S d S )NTr   ar   )
r   r   r!   rb   r   r"   utimerq   closetruncate)r   r$   r   r   s       r   touchzLocalFileSystem.touch   s    ##D))? 	=MM$,,t,,tM<<<;;t 	$HT4    sOO!!### 	!Ka     	! 	!r   c                     |                      |          }t          j                            |d         t          j        j                  S )Nr$   r?   tzr/   datetimefromtimestamptimezoneutcr   r$   r/   s      r   r?   zLocalFileSystem.created   sD    yydy## ..O 1 5 / 
 
 	
r   c                     |                      |          }t          j                            |d         t          j        j                  S )Nr   rD   r   r   r   s      r   modifiedzLocalFileSystem.modified   s;    yydy## ..tG}ARAV.WWWr   c                    |                      |          }t          j        dk    r|                    dd          d         pdS |                    dd          d         }t	          |          dk    r|dd         dk    r|d         dz   S |S )Nr
      r         ::/)r   r"   seprsplitlen)clsr$   path_s      r   rb   zLocalFileSystem._parent   s    ""4((6S==;;sA&&q)0S0 KKQ''*E5zzQ1:$$ 8d?*Lr   c                    t          |          }|                    d          r|dd          }n_|                    d          r|dd          }n?|                    d          r|dd          }n|                    d          r
|dd          }t          |          }t          j        d	k    r|d
d         dk    r|d d         |dd          }}ne|d d         dk    rU|                    d	d          x}dk    s|                    d	|d
z             x}dk    r|d}}n|d |         ||d          }}nd}|                    d	          p| j        }||z   S |                    d	          p| j        S )Nr      zfile:   zlocal://   zlocal:   r
   r   r   r   // )r   
startswithmake_path_posixr"   r   findrstriproot_marker)r   r$   driveindex1index2s        r   r   zLocalFileSystem._strip_protocol   s   d##??9%% 	8DD__W%% 	8DD__Z(( 	8DD__X&& 	8Dt$$6S== AaCyC #2A2hQRRtbqbT!! #iiQ///FB66"iiVaZ888F; ; #'4EE"&ww-fgg4EE ;;s##6sD4< ;;s##6s6r   c                     dS NTr   r   s    r   _isfilestorezLocalFileSystem._isfilestore  s	     tr   c                 J    t          |          }t          j        ||          S r(   )r   r"   chmod)r   r$   rA   s      r   r   zLocalFileSystem.chmod  s!    d##xd###r   )F)Tr(   )FN)rp   N)'__name__
__module____qualname____doc__r   protocol
local_filer   propertyr   r#   r!   r)   r:   r/   r`   rl   rc   rf   rt   rv   ry   rY   r   boolr@   r   r   r   r   r   r?   r   classmethodrb   r   r   r   __classcell__)r   s   @r   r	   r	      sJ         KHJ% % % % % %   X% % % %- - - -     - - -^! ! !
+ 
+ 
+$ $ $# # #8 8 8 84 4 4 4" " "
$ $ $
' ' '
:d : : : :. . .        > > > >	! 	! 	! 	!
 
 
X X X   [ $7 $7 [$7L  $ $ $ $ $ $ $r   r	   c                 Z   t          | t                    s{t          | t          t          t          f          r" t          |           d | D                       S t          |           } t          | t                    st          d| d          t          j	        dk    r| 
                    d          r| S | 
                    d          rt          j        |           S | 
                    d          r| dd         } n| d	k    rd
} t          j                     d|  S | dd         dk    r| dd         dk    r
| dd         } | dd         dk    r6t          |           dk    r| d         dz   S |                     dd          } | S | dd         dk    r!t!          t          j        |                     S | 
                    d          r!d| dd                             dd          z   S | 
                    d          rE|                     dd          } t          j        t          j                              d          |  S |                     dd          } | 
                    d          r| dd         } n| d	k    rd
} t!          t          j                               d|  S )z-Make path generic and absolute for current OSc              3   4   K   | ]}t          |          V  d S r(   )r   )r0   r   s     r   	<genexpr>z"make_path_posix.<locals>.<genexpr>   s*      ??Qoa00??????r   zcould not convert z
 to stringr
   ~z./r   N.r   r   r   r   r   r   \)z\\r   r   )r   r
   )rI   strr   settupler,   r   	TypeErrorr"   r   r   r_   
expanduserr   r   replacer   
splitdriver   s    r   r   r     s   dC   IdT3.// 	I4::??$??????!$''DdC(( I GT G G GHHH	v}}??3 	K__S!! 	>$'''__T"" 	8DDS[[D)++&&&&& !9QqS	S 0 08D!94yyA~~Aw~%<<c**DK!A#Y#"3>$#7#7888__^,, 	<$qrr(**45555__[)) 
	<<<c**DnRY[[11!4<d<<<<<c**Dt$$ ABBx%bikk22;;T;;;r   c                     |                      t          j                  p,t          j        duo|                      t          j                  S )zReturn True if the path ends with a path separator.

    A forward slash is always considered a path separator, even on Operating
    Systems that normally use a backslash.
    N)endswithr"   r   altsepr   s    r   trailing_sepr   O  s7     ==  XRYd%:%Wt}}RY?W?WXr   c                       e Zd Z	 ddZd Zd Zd Zd Zd Zd	 Z	d
e
fdZd
e
fdZd Zd Zd Zd Zd Zd Zd Zd Zdd
efdZed             Zd ZddZd Zd Zd Zd ZdS ) r   TNc                     t                               d|           || _        || _        || _        d | _        || _        t          ||          | _        t          j
        | _        |                                  d S )Nzopen file: %s)loggerdebugr$   rA   r   r1   
autocommitr   compressionioDEFAULT_BUFFER_SIZE	blocksizer   )r   r$   rA   r   r   r   r   s          r   r   zLocalFileOpener.__init__\  sh     	_d+++		$*4==/

r   c                 B   | j         | j         j        r| j        s	d| j        vrVt	          | j        | j                  | _         | j        r.t          | j                 } || j         | j                  | _         nLt          j	                    \  }}t          j        |           || _        t	          || j                  | _         d| j        vrO| j                             dd          | _        | j                             d           | j        | j         _        d S d S d S )Nr   rA   r   r   )r1   closedr   rA   rq   r$   r   r   tempfilemkstempr"   r   tempseekr>   )r   compressr5   r4   s       r   r   zLocalFileOpener._openi  s   6>TV]> 
4#TY"6"6didi888# >$T%56H%Xdf49===DF #*,,4 	d333$)## FKK1--	A"i > $#r   c                     d| j         vrt          |                                  | j                            |           | j                            ||z
            S Nr)rA   r   r   r1   r   read)r   startends      r   _fetch_rangezLocalFileOpener._fetch_range{  sN    di

Ev{{3;'''r   c                     d | _         |                    dd           }| j                            |           d|d         v r7d | _         |                                  | j                             |           d S d S )Nlocr   rA   )r1   pop__dict__updater   r   )r   stater   s      r   __setstate__zLocalFileOpener.__setstate__  sw    iit$$U###%-DFJJLLLFKK  r   c                     | j                                         }|                    d           d| j        v r| j                                        |d<   n| j        j        st          d          |S )Nr1   r   r   z+Cannot serialise open write-mode local file)r   copyr   rA   r1   tellr   r   )r   ds     r   __getstate__zLocalFileOpener.__getstate__  sg    M  	c


$)v{{}}AeHH6= P !NOOOr   c                 p    | j         rt          d          t          j        | j        | j                   d S )Nz0Can only commit if not already set to autocommit)r   RuntimeErrorrd   rx   r   r$   r   s    r   commitzLocalFileOpener.commit  s8    ? 	SQRRRDIty)))))r   c                 d    | j         rt          d          t          j        | j                   d S )Nz#Cannot discard if set to autocommit)r   r
  r"   r   r   r   s    r   discardzLocalFileOpener.discard  s4    ? 	FDEEE
	$)r   r   c                     dS r   r   r   s    r   readablezLocalFileOpener.readable  s    tr   c                     d| j         vS r   r   r   s    r   writablezLocalFileOpener.writable  s    $)##r   c                 &     | j         j        |i |S r(   )r1   r   r   argsr   s      r   r   zLocalFileOpener.read      tv{D+F+++r   c                 &     | j         j        |i |S r(   )r1   writer  s      r   r  zLocalFileOpener.write  s    tv|T,V,,,r   c                 &     | j         j        |i |S r(   )r1   r  r  s      r   r  zLocalFileOpener.tell  r  r   c                 &     | j         j        |i |S r(   )r1   r   r  s      r   r   zLocalFileOpener.seek  r  r   c                 &     | j         j        |i |S r(   )r1   seekabler  s      r   r  zLocalFileOpener.seekable      tv////r   c                 &     | j         j        |i |S r(   )r1   readliner  s      r   r  zLocalFileOpener.readline  r  r   c                 &     | j         j        |i |S r(   )r1   	readlinesr  s      r   r   zLocalFileOpener.readlines  s    tv0000r   c                 4    | j                                         S r(   )r1   r   r   s    r   r   zLocalFileOpener.close  s    v||~~r   c                 6    | j                             |          S r(   )r1   r   )r   r>   s     r   r   zLocalFileOpener.truncate  s    vt$$$r   c                     | j         j        S r(   )r1   r   r   s    r   r   zLocalFileOpener.closed  s    v}r   c                 4    | j                                         S r(   )rawfilenor   s    r   r&  zLocalFileOpener.fileno  s    x   r   c                 8    | j                                          d S r(   )r1   flushr   s    r   r(  zLocalFileOpener.flush  s    r   c                 4    | j                                         S r(   )r1   __iter__r   s    r   r*  zLocalFileOpener.__iter__  s    v   r   c                 ,    t          | j        |          S r(   )rV   r1   )r   items     r   __getattr__zLocalFileOpener.__getattr__  s    tvt$$$r   c                     d| _         | S r   )
_incontextr   s    r   	__enter__zLocalFileOpener.__enter__  s    r   c                 L    d| _         | j                            |||           d S )NF)r/  r1   __exit__)r   exc_type	exc_value	tracebacks       r   r2  zLocalFileOpener.__exit__  s'    )Y77777r   )TNNr(   )r   N)r   r   r   r   r   r   r  r  r  r  r   r  r  r   r  r  r   r  r  r   r   intr   r   r   r&  r(  r*  r-  r0  r2  r   r   r   r   r   [  s       @D   ( ( ($( ( (    * * *
  
$    $$ $ $ $ $, , ,- - -, , ,, , ,0 0 00 0 01 1 1  % %S % % % %   X! ! !   ! ! !% % %  8 8 8 8 8r   r   )r   r   loggingr"   os.pathr$   r_   rd   rK   r   fsspecr   fsspec.compressionr   fsspec.corer   fsspec.utilsr   r   	getLoggerr   r	   r   r   IOBaser   r   r   r   <module>r?     sL    				  				          % % % % % % $ $ $ $ $ $ ' ' ' ' ' ' 3 3 3 3 3 3 3 3		>	*	*G$ G$ G$ G$ G$( G$ G$ G$T0< 0< 0<f	Y 	Y 	Y|8 |8 |8 |8 |8bi |8 |8 |8 |8 |8r   