L i(B"ddlZddlZddlZddlZddlmZddlZddlZddl Z ddl m Z ddl m Z ddlmZddlmZddlmZmZej*dZGdd e Zd Zd Ze d ddedefdZGddej8Zy)N) lru_cache)AbstractFileSystem)compr)get_compression) isfilelikestringify_pathz fsspec.localceZdZdZdZdZdZd#fd ZedZ d$dZ d#dZ d Z d#d Z d Zd Zd ZdZdZd%dZd%dZd$defdZdZdZdefdZdZd&dZdZd'dZd$dZdZdZ e!dZ"e!d Z#d!Z$d"Z%xZ&S)(LocalFileSystemaInterface 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. /)filelocalTc 2t|di|||_y)N)super__init__ auto_mkdir)selfrkwargs __class__s b/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/fsspec/implementations/local.pyrzLocalFileSystem.__init__"s "6"$cy)Nr rrs rfsidzLocalFileSystem.fsid&src |j|}|j|r t||r|j|dyt j |fi|yNTexist_ok)_strip_protocolexistsFileExistsErrormakedirsosmkdir)rpathcreate_parentsrs rr$zLocalFileSystem.mkdir*sM##D) ;;t !$' '  MM$M . HHT $V $rcT|j|}tj||y)Nr)rr#r")rr%rs rr"zLocalFileSystem.makedirs3s ##D) D8,rcP|j|}tj|yN)rr#rmdirrr%s rr*zLocalFileSystem.rmdir7s##D) rc ||j|}|j|}g}|ddk(rhtj|5}|D]B} |r|j|n|j|j}|j |D ddd|S|r|gn|dg}|S#t $rYhwxYw#1swY|SxYw)Ntype directoryname)rinfor#scandirr%appendFileNotFoundError) rr%detailr path_infoinfositfr0s rlszLocalFileSystem.ls;s##D)IIdO  V  +D! RA06tyy|4;O;OPQPVPV;W T*   $*YK &0A/BE -  s0B1 ?B"B1" B.+B1-B..B11B;c t|tjr|jd}|j }|j drd}n|j drd}nd}|j}|r |jd}|j}|j|j}n|j|}tj|d}tj|j}|rtj|d}|j}tj|jrd}n$tj|jrd}nd}t|d|j }|||||d } d D]} t|d | | | <|rtj"|| d <| S#t$rd}Y0wxYw) NF)follow_symlinksr.r otherTr st_birthtime)r/sizer-createdislink)modeuidgidmtimeinonlinkst_ destination) isinstancer#DirEntrystat is_symlinkis_diris_filest_sizeOSErrorrr%S_ISLNKst_modeS_ISDIRS_ISREGgetattrst_ctimereadlink) rr%routlinktr>out2 created_timeresultfields rr0zLocalFileSystem.infoNs dBKK ())E)2C??$D{{5{1e4;;D99T9:D<RYY[0$%NOO a  !  rc.|j|}d|S)Nfile://)r)rr/s runstrip_protocolz LocalFileSystem.unstrip_protocols##D)rc |j|}|jr&d|vr"|j|j|dt ||fd|i|S)NwTrfs)rrr"rcLocalFileOpener)rr%rA block_sizers r_openzLocalFileSystem._opensO##D) ??sd{ MM$,,t,tM <tT=d=f==rc 8|j|}|jr"|j|j|d|j |rt j |dnt|dj|rt j|dyy)NTrar) rrr"rcr r#utimerpclosetruncate)rr%rrs rtouchzLocalFileSystem.touchst##D) ?? MM$,,t,tM < ;;t  HHT4 sO ! ! #  KKa  rc|j|}tjj|dtjjS)Nr%r?tzr0datetime fromtimestamptimezoneutcrr%r0s rr?zLocalFileSystem.createdsEyydy#  .. O 1 1 5 5/  rc|j|}tjj|dtjjS)NrrDrrrs rmodifiedzLocalFileSystem.modifieds>yydy#  ..tG}ARARAVAV.WWrc|j|}tjdk(r|jdddxsdS|jddd}t |dkr|dddk(r|ddzS|S)Nr r::/)rr#seprsplitlen)clsr%path_s rrczLocalFileSystem._parents{""4( 66S=;;sA&q)0S 0KKQ'*E5zQ1:$ 8d?*LrcLt|}|jdr|dd}nD|jdr|dd}n-|jdr|dd}n|jdr|dd}t|}tjd k7r|d d d k(r |dd |d d}}nK|dd d k(rA|j d d x}dk(s|j d |d zx}dk(r|d}}n |d|||d}}nd}|j d xs |j}||zS|j d xs |jS)Nrzfile:zlocal://zlocal:r rrr//)r startswithmake_path_posixr#rfindrstrip root_marker)rr%driveindex1index2s rrzLocalFileSystem._strip_protocolsMd# ??9 %8D __W %8D __Z (8D __X &8Dt$ 66S=AayC#2AhQRtbqT!#iiQ//FB6"iiVaZ88F;#'4E"&w-fg4E;;s#6sD4< ;;s#6s 6rcyNTrrs r _isfilestorezLocalFileSystem._isfilestore srcDt|}tj||Sr))rr#chmod)rr%rAs rrzLocalFileSystem.chmod&sd#xxd##r)F)Tr))FN)roN)'__name__ __module__ __qualname____doc__rprotocol local_filerpropertyrr$r"r*r9r0rarkrdrgrsruboolryrYrr@rrrrrr?r classmethodrcrrr __classcell__)rs@rr r sKHJ%%-&1f! +$#84"$"$ ' :d:.  > ! X  $7$7L $rr cTt|ts]t|tttfrt |d|DSt |}t|tstd|dtjdk(rp|jdr|S|jdrtj|S|jdr|dd}n|d k(rd }tjd|S|d d dk(r |dd dk(r|d d}|d ddk(r*t|d kr|d dzS|jdd}|S|d d dk(rt!tj|S|jdrd|ddjddzS|jdr@|jdd}tj"tjd |S|jdd}|jdr|dd}n|d k(rd }t!tjd|S)z-Make path generic and absolute for current OSc32K|]}t|ywr))r).0rs r z"make_path_posix../s?Qoa0?szcould not convert z to stringr ~z./rN.rrrrrr\)z\\rr)rr )rIstrrsettupler-r TypeErrorr#rrr` expanduserrrreplacer splitdrivers rrr+s dC dT3. /4:?$?? ?!$'DdC("4THJ GHH vv} ??3 K __S !>>$' ' __T "8D S[D))+av&& !9 Qq S 08D !9 4yA~Aw~%<<c*DK !AY# "3>>$#78 8 __^ ,$qr(**455 5 __[ )<<c*DnnRYY[1!45dV< <<<c*Dt$ABx%biik231TF; ;rc|jtjxs3tjduxr|jtjS)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#raltseprs r trailing_sepr^s7 == XRYYd%:%Wt}}RYY?WXrr)maxsizemaskrcZtj|}tj||S)zGet the current umask. Follows https://stackoverflow.com/a/44130549 to get the umask. Temporarily sets the umask to the given value, and then resets it to the original value. )r#umask)rvalues r get_umaskrjs! HHTNEHHUO LrceZdZ ddZdZdZdZdZdZdZ d e fd Z d e fd Z d Z d ZdZdZdZdZdZdZdd efdZedZdZddZdZdZdZdZy)rNc tjd|||_||_||_d|_||_t|||_tj|_ |jy)Nz open file: %s) loggerdebugr%rArr8 autocommitr compressionioDEFAULT_BUFFER_SIZE blocksizer)rr%rArrrrs rrzLocalFileOpener.__init__xsZ  _d+  $*4=// rc|j|jjr9|jsd|jvrit |j |j|_|j rt|j }||j|j|_nOtj\}}tj|||_ t ||j|_d|jvrX|jjdd|_|jjd|j|j_yyy)NrrArr)r8closedrrArpr%rrtempfilemkstempr#rtempseekr>)rcompressir/s rrzLocalFileOpener._opens 66>TVV]]#TYY"6diidii8##$T%5%56H%dff499=DF#**,4   d3$))# FFKK1-  A"ii $+rcd|jvrt|j|jj ||jj ||z SNr)rArrr8rread)rstartends r _fetch_rangezLocalFileOpener._fetch_rangesD dii     Evv{{3;''rcd|_|jdd}|jj|d|dvr3d|_|j |jj |yy)NlocrrA)r8pop__dict__updaterr)rstaters r __setstate__zLocalFileOpener.__setstate__s\iit$ U# %- DF JJL FFKK  rc|jj}|jdd|jvr|jj |d<|S|jj s td|S)Nr8rrz+Cannot serialise open write-mode local file)rcopyrrAr8tellrr)rds r __getstate__zLocalFileOpener.__getstate__sc MM    c $)) vv{{}AeH66== !NOOrc|jr td tj|j|j  d}t j|j |t|zy#t$rYywxYw#t$r5}t j j|j s|Yd}~yd}~wwxYw)Nz0Can only commit if not already set to autocommit) r RuntimeErrorrerxrr%r#rrPermissionErrorr )rres rcommitzLocalFileOpener.commits ??QR R  KK 499 - DIdO+;$;<    77>>$)),-  s)*B/A44 B?B C +B<<Ccp|jr tdtj|jy)Nz#Cannot discard if set to autocommit)rrr#rrrs rdiscardzLocalFileOpener.discards% ??DE E $))rrcyrrrs rreadablezLocalFileOpener.readablesrcd|jvSrrrs rwritablezLocalFileOpener.writables$))##rc:|jj|i|Sr))r8rrargsrs rrzLocalFileOpener.readtvv{{D+F++rc:|jj|i|Sr))r8writers rr!zLocalFileOpener.writestvv||T,V,,rc:|jj|i|Sr))r8r rs rr zLocalFileOpener.tellrrc:|jj|i|Sr))r8rrs rrzLocalFileOpener.seekrrc:|jj|i|Sr))r8seekablers rr%zLocalFileOpener.seekabletvv///rc:|jj|i|Sr))r8readliners rr(zLocalFileOpener.readliner&rc:|jj|i|Sr))r8 readlinesrs rr*zLocalFileOpener.readlinesstvv000rc6|jjSr))r8rrs rrzLocalFileOpener.closesvv||~rc8|jj|Sr))r8r)rr>s rrzLocalFileOpener.truncatesvvt$$rc.|jjSr))r8rrs rrzLocalFileOpener.closedsvv}}rc6|jjSr))rawfilenors rr0zLocalFileOpener.filenosxx  rc8|jjyr))r8flushrs rr2zLocalFileOpener.flushs  rc6|jjSr))r8__iter__rs rr4zLocalFileOpener.__iter__svv  rc.t|j|Sr))rUr8)ritems r __getattr__zLocalFileOpener.__getattr__stvvt$$rcd|_|Sr) _incontextrs r __enter__zLocalFileOpener.__enter__s rcLd|_|jj|||y)NF)r9r8__exit__)rexc_type exc_value tracebacks rr<zLocalFileOpener.__exit__s )Y7r)TNNr))rN)rrrrrrr rrrrrrrr!r rr%r(r*rintrrrr0r2r4r7r:r<rrrrrws@D ($(( $$$$,-,,001%S%!!%8rr)r)rrloggingr#os.pathr%r`rerKr functoolsrfsspecrfsspec.compressionr fsspec.corer fsspec.utilsrr getLoggerrr rrr@rIOBaserrrrrJs   %$'3   > *U$(U$p0