+
    &j	C                     "   ^ RI t ^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RIt^ RI	t	^ RI
Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHtHt ]P*                  ! R4      t ! R R	]4      tR
 tR t]! ^R7      RR R ll4       t ! R R]P6                  4      tR# )    N)	lru_cache)AbstractFileSystem)compr)get_compression)
isfilelikestringify_pathzfsspec.localc                   B  a a ] tR t^t oRtRtR#tRtR$V 3R llt]	R 4       t
R%R ltR$R ltR tR$R	 ltR
 tR tR tR tR tR&R ltR&R ltR%V3R lR lltR tR tV3R lR ltR tR'R ltR tR(R ltR%R ltR tR t ]!R 4       t"]!R 4       t#R  t$R! t%R"t&Vt'V ;t(# ))LocalFileSystemzInterface 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.
/Tc                4   < \         SV `  ! R/ VB  Wn        R # )N )super__init__
auto_mkdir)selfr   kwargs	__class__s   &&,t/Users/jameslopez/projects/CWCArchive/cwc-podcast/.venv/lib/python3.14/site-packages/fsspec/implementations/local.pyr   LocalFileSystem.__init__"   s    "6"$    c                    R # )localr   r   s   &r   fsidLocalFileSystem.fsid&   s    r   c                    V P                  V4      pV P                  V4      '       d   \        V4      hV'       d   V P                  VR R7       R# \        P
                  ! V3/ VB  R# Texist_okN)_strip_protocolexistsFileExistsErrormakedirsosmkdir)r   pathcreate_parentsr   s   &&&,r   r%   LocalFileSystem.mkdir*   sP    ##D);;t!$''MM$M.HHT$V$r   c                V    V P                  V4      p\        P                  ! WR 7       R# )r   N)r    r$   r#   )r   r&   r   s   &&&r   r#   LocalFileSystem.makedirs3   s    ##D)
D,r   c                T    V P                  V4      p\        P                  ! V4       R # N)r    r$   rmdirr   r&   s   &&r   r-   LocalFileSystem.rmdir7   s    ##D)
r   c                   V P                  V4      pV P                  V4      p. pVR ,          R8X  dy   \        P                  ! V4      ;_uu_ 4       pV FI  p V'       d   V P                  V4      MV P                  VP                  4      pVP                  V4       KK  	  RRR4       V# V'       d   V.M	VR,          .pV#   \         d     K|  i ; i  + '       g   i     T# ; i)type	directoryNname)r    infor$   scandirr&   appendFileNotFoundError)	r   r&   detailr   	path_infoinfositfr4   s	   &&&,     r   lsLocalFileSystem.ls;   s    ##D)IIdO	V+D!!RA 06tyy|4;O;OPQPVPV;WT*  "  $*YK	&0A/BE -  "! s1   CACCC	CC	CC%	c           
        \        V\        P                  4      '       d   VP                  R R7      pVP	                  4       pVP                  R R7      '       d   RpMVP                  R R7      '       d   RpMRpVP                  pV'       d     VP                  RR7      pVP                  pV P                  VP                  4      pMV P                  V4      p\        P                  ! VR R7      p\        P                  ! VP                  4      pV'       d   \        P                  ! VRR7      pVP                  p\        P                  ! VP                  4      '       d   RpM+\        P                  ! VP                  4      '       d   RpMRp\        VRVP                   4      pRVRVR	VR
VRV/p	R F  p
\        VRV
 24      W&   K  	  V'       d   \        P"                  ! V4      V	R&   V	#   \         d    ^ p ELUi ; i)F)follow_symlinksr2   fileotherTst_birthtimer3   sizer1   createdislinkst_destination)modeuidgidmtimeinonlink)
isinstancer$   DirEntrystat
is_symlinkis_diris_filest_sizeOSErrorr    r&   S_ISLNKst_modeS_ISDIRS_ISREGgetattrst_ctimereadlink)r   r&   r   outlinktrD   out2created_timeresultfields   &&,        r   r4   LocalFileSystem.infoN   s   dBKK(())E)2C??$D{{5{11e44;;D99T9:D<<D ''		2D ''-D''$6C<<,DggdD9;;D||CKK((ckk** sNCLLA DDA|d
 EE#C3ug7FM E$&KK$5F=!A  Ds   G3 3HHc                .    \         P                  ! V4      # r,   )osplexists)r   r&   r   s   &&,r   rh   LocalFileSystem.lexists   s    {{4  r   c                z   V P                  V4      pV P                  V4      pV P                  '       d#   V P                  V P                  V4      R R7       V P	                  V4      '       d   \
        P                  ! W4       R# V P                  V4      '       d   V P                  VR R7       R# \        V4      hr   )
r    r   r#   _parentisfileshutilcopyfileisdirmkdirsr7   )r   path1path2r   s   &&&,r   cp_fileLocalFileSystem.cp_file   s    $$U+$$U+???MM$,,u-M=;;uOOE)ZZKKK-#E**r   c                b    V P                  V4      p\        P                  P                  V4      # r,   )r    r$   r&   rl   r.   s   &&r   rl   LocalFileSystem.isfile   s%    ##D)ww~~d##r   c                b    V P                  V4      p\        P                  P                  V4      # r,   )r    r$   r&   ro   r.   s   &&r   ro   LocalFileSystem.isdir   s%    ##D)ww}}T""r   c                    \        V4      '       d6   \        VR 4      ;_uu_ 4       p\        P                  ! WR4       RRR4       R# V P                  ! W3/ VB #   + '       g   i     R# ; irbN)r   openrm   copyfileobjrs   )r   rq   rr   callbackr   r<   s   &&&&, r   get_fileLocalFileSystem.get_file   sT    eeT""a""1, #" <<777 #""s   AA+	c                (    V P                   ! W3/ VB # r,   )rs   )r   rq   rr   r~   r   s   &&&&,r   put_fileLocalFileSystem.put_file   s    ||E3F33r   c                    < V ^8  d   QhRS[ /# )   	recursivebool)format__classdict__s   "r   __annotate__LocalFileSystem.__annotate__   s     " "$ "r   c                    V P                  V4      pV P                  V4      pV P                  '       d#   V P                  V P                  V4      RR7       \        P
                  ! W4       R# )zMove files/directories
For the specific case of local, all ops on directories are recursive and
the recursive= kwarg is ignored.
Tr   N)r    r   r#   rk   rm   move)r   rq   rr   r   r   s   &&&&,r   mvLocalFileSystem.mv   sR    
 $$U+$$U+???MM$,,u-M=E!r   c                x    V P                  V4      pV P                  V4      p\        P                  ! W3/ VB  R # r,   )r    r$   r_   r   srcdstr   s   &&&,r   r_   LocalFileSystem.link   s3    ""3'""3'
#F#r   c                x    V P                  V4      pV P                  V4      p\        P                  ! W3/ VB  R # r,   )r    r$   symlinkr   s   &&&,r   r   LocalFileSystem.symlink   s3    ""3'""3'


3&v&r   c                    < V ^8  d   QhRS[ /# r   returnr   )r   r   s   "r   r   r      s     : :d :r   c                ^    \         P                  P                  V P                  V4      4      # r,   )r$   r&   rF   r    r.   s   &&r   rF   LocalFileSystem.islink   s     ww~~d224899r   c                P    \         P                  ! V P                  V4      4       R # r,   )r$   remover    r.   s   &&r   rm_fileLocalFileSystem.rm_file   s    
		$&&t,-r   c                   \        V\        4      '       g   V.pV F  pV P                  V4      pV P                  V4      '       de   V'       g   \	        R 4      h\
        P                  ! V4      \        P                  ! 4       8X  d   \	        R4      h\        P                  ! V4       K  \        P                  ! V4       K  	  R# )z+Cannot delete directory, set recursive=Truez'Cannot delete current working directoryN)rO   listr    ro   
ValueErrorrg   abspathr$   getcwdrm   rmtreer   )r   r&   r   maxdepthps   &&&& r   rmLocalFileSystem.rm   s    $%%6DA$$Q'Azz!}} $%RSS;;q>RYY[0$%NOOa 		! r   c                    \        V P                  \        4      '       d   V P                  MV P                  ^ ,          pV P                  V4      pV RV 2# )r   ://)rO   protocolstrr    )r   r3   r   s   && r   unstrip_protocol LocalFileSystem.unstrip_protocol   sH    $.t}}c$B$B4==VWHX##D)3tf%%r   c                    V P                  V4      pV P                  '       d*   R V9   d#   V P                  V P                  V4      RR7       \	        W3RV /VB # )wTr   fs)r    r   r#   rk   LocalFileOpener)r   r&   rI   
block_sizer   s   &&&&,r   _openLocalFileSystem._open   sO    ##D)???sd{MM$,,t,tM<t=d=f==r   c                d   V P                  V4      pV P                  '       d#   V P                  V P                  V4      R R7       V P	                  V4      '       d   \
        P                  ! VR4       M\        VR4      P                  4        V'       d   \
        P                  ! V^ 4       R# R# )Tr   Na)
r    r   r#   rk   r!   r$   utimer|   closetruncate)r   r&   r   r   s   &&&,r   touchLocalFileSystem.touch   sy    ##D)???MM$,,t,tM<;;tHHT4 sO!!#KKa  r   c                    V P                  VR 7      p\        P                  P                  VR,          \        P                  P                  R7      # )r&   rE   tzr4   datetimefromtimestamptimezoneutcr   r&   r4   s   && r   rE   LocalFileSystem.created   sE    yydy#  ..O 1 1 5 5 / 
 	
r   c                    V P                  VR 7      p\        P                  P                  VR,          \        P                  P                  R7      # )r   rL   r   r   r   s   && r   modifiedLocalFileSystem.modified   s>    yydy#  ..tG}ARARAVAV.WWr   c                &   V P                  V4      p\        P                  R 8X  d$   VP                  R ^4      ^ ,          ;'       g    R # VP                  R ^4      ^ ,          p\	        V4      ^8:  d   VR,          R8X  d   V^ ,          R,           # V# )r      r   N::/)r    r$   seprsplitlen)clsr&   path_s   && r   rk   LocalFileSystem._parent   s|    ""4(66S=;;sA&q)00S0 KKQ'*E5zQ:$ 8d?*Lr   c                   \        V4      p\        V P                  \        4      '       d   V P                  3MV P                  pR  V 4       pV F-  pVP	                  V4      '       g   K  VP                  V4      p M	  \        V4      p\        P                  R8w  d   VR,          R8X  d   VR,          VR,          rMVVR,          R8X  dG   VP                  R^4      ;pR	8X  g!   VP                  RV^,           4      ;pR	8X  d   TRrMVRV WR rMRpVP                  R4      ;'       g    V P                  pWQ,           # VP                  R4      ;'       g    V P                  # )
c              3   D   "   T F  pR F  q!V,           x  K  	  K  	  R# 5i)r   N)r   r   r   ).0r   r   s   &  r   	<genexpr>2LocalFileSystem._strip_protocol.<locals>.<genexpr>  s     R6x\csNN\N6s    r   r   r   :Nr   Nr   NN// N)r   rO   r   r   
startswithremoveprefixmake_path_posixr$   r   findrstriproot_marker)r   r&   protosprefixesprefixdriveindex1index2s   &&      r   r    LocalFileSystem._strip_protocol   s>   d#$.s||S$A$A#,,s||R6RFv&&((0 
 t$66S= CyC #2hRtbT! #iiQ//FB6"iiVaZ88F; #'4"&w-g4 ;;s#66sD< ;;s#66s6r   c                    R # Tr   r   s   &r   _isfilestoreLocalFileSystem._isfilestore#  s     r   c                D    \        V4      p\        P                  ! W4      # r,   )r   r$   chmod)r   r&   rI   s   &&&r   r   LocalFileSystem.chmod)  s    d#xx##r   )r   )rA   r   )Fr   r,   FNrz   ))__name__
__module____qualname____firstlineno____doc__r   r   
local_filer   propertyr   r%   r#   r-   r=   r4   rh   rs   rl   ro   r   r   r   r_   r   rF   r   r   r   r   r   rE   r   classmethodrk   r    r   r   __static_attributes____classdictcell____classcell__)r   r   s   @@r   r
   r
      s      KHJ%  %-&1f!
+$#84" "$
'
: :.&
>	!
X   "7 "7H$ $r   r
   c                N   \        V \        4      '       gk   \        V \        \        \        34      '       d   \        V 4      ! R V  4       4      # \        V 4      p \        V \        4      '       g   \        RV : R24      h\        P                  R8X  d   V P                  R4      '       d   V # V P                  R4      '       d   \        P                  ! V 4      # V P                  R4      '       d   V R,          p M	V R8X  d   R	p \        P                  ! 4        RV  2# V R
,          R8X  d   V R,          R8X  d
   V R,          p V R,          R8X  d5   \        V 4      ^8:  d   V ^ ,          R,           # V P                  RR4      p V # V R
,          R8X  d    \!        \        P                  ! V 4      4      # V P                  R4      '       d!   RV R,          P                  RR4      ,           # V P                  R4      '       dG   V P                  RR4      p \        P"                  ! \        P                  ! 4       4      ^ ,           V  2# V P                  RR4      p V P                  R4      '       d   V R,          p M	V R8X  d   R	p \!        \        P                  ! 4       4       RV  2# )z-Make path generic and absolute for current OSc              3   8   "   T F  p\        V4      x  K  	  R # 5ir,   )r   )r   r   s   & r   r   "make_path_posix.<locals>.<genexpr>2  s     ?$Qoa00$s   zcould not convert z
 to stringr   ~z./r   .r   :r   r   N:r      Nr   :r   NNr   r   \r   )z\\r   )r  r   )rO   r   r   settupler1   r   	TypeErrorr$   r   r   rg   
expanduserr   r   replacer   
splitdriver   s   &r   r   r   .  s   dC  dT3.//:?$???!$'DdC(("4THJ GHH	vv}??3K__S!!>>$''__T""8DS[D))+av&& 9S	S 08D94yA~Aw~%<<c*DK#Y#"3>>$#788__^,,$r(**4555__[))<<c*DnnRYY[1!45dV<<<<c*Dt$$Bx%biik231TF;;r   c                    V P                  \        P                  4      ;'       g:    \        P                  RJ;'       d     V P                  \        P                  4      # )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  a  s=     == XXRYYd%:%W%Wt}}RYY?WXr   )maxsizec                0    V ^8  d   QhR\         R\         /# )r   maskr   int)r   s   "r   r   r   n  s     	 	C 	C 	r   c                ^    \         P                  ! V 4      p\         P                  ! V4       V# )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)r  values   & r   	get_umaskr  m  s!     HHTNEHHUOLr   c                      a  ] tR tRt o R!R ltR tR tR tR tR t	R	 t
V 3R
 lR ltV 3R lR ltR tR tR tR tR tR tR tR tR"V 3R lR llt]R 4       tR tV 3R lR ltR tR tR tR tR tV tR# )#r   iz  Nc                    \         P                  R V4       Wn        W n        W@n        RV n        W0n        \        W4      V n        \        P                  V n        V P                  4        R# )zopen file: %sN)loggerdebugr&   rI   r   r<   
autocommitr   compressionioDEFAULT_BUFFER_SIZE	blocksizer   )r   r&   rI   r   r   r!  r   s   &&&&&&,r   r   LocalFileOpener.__init__{  sP     	_d+		$*4=//

r   c                   V P                   e   V P                   P                  '       EdQ   V P                  '       g   RV P                  9  dt   \	        V P
                  V P                  R7      V n         V P                  '       d;   \        V P                  ,          pV! V P                   V P                  R7      V n         MN\        P                  ! 4       w  r#\        P                  ! V4       W0n        \	        W0P                  R7      V n         RV P                  9  dZ   V P                   P                  ^ ^4      V n        V P                   P                  ^ 4       V P                  V P                   n        R # R # R # )Nr   rI   )r<   closedr   rI   r|   r&   r!  r   tempfilemkstempr$   r   tempseekrD   )r   compressir3   s   &   r   r   LocalFileOpener._open  s    66>TVV]]]#TYY"6diidii8###$T%5%56H%dff499=DF #**, 	d3$))# FFKK1-	A"ii $ +r   c                    R V P                   9  d   \        hV P                  4        V P                  P	                  V4       V P                  P                  W!,
          4      # r)rI   r   r   r<   r,  read)r   startends   &&&r   _fetch_rangeLocalFileOpener._fetch_range  sB    dii

Evv{{3;''r   c                    R V n         VP                  RR 4      pV P                  P                  V4       RVR,          9   d5   R V n         V P	                  4        V P                   P                  V4       R # R # )Nlocr2  rI   )r<   pop__dict__updater   r,  )r   stater9  s   && r   __setstate__LocalFileOpener.__setstate__  s\    iit$U#%-DFJJLFFKK  r   c                
   V P                   P                  4       pVP                  R 4       RV P                  9   d    V P                  P                  4       VR&   V# V P                  P                  '       g   \        R4      hV# )r<   r2  r9  z+Cannot serialise open write-mode local file)r;  copyr:  rI   r<   tellr(  r   )r   ds   & r   __getstate__LocalFileOpener.__getstate__  se    MM 	c
$))vv{{}AeH  66=== !NOOr   c                   V P                   '       d   \        R 4      h \        P                  ! V P                  V P
                  4        Rp\        P                  ! V P
                  V\        V4      ( ,          4       R#   \         d     R# i ; i  \         d=   p\        P
                  P                  T P
                  4      '       g   Th Rp?R# Rp?ii ; i)z0Can only commit if not already set to autocommit  N)r   RuntimeErrorrm   r   r+  r&   r$   r   r  PermissionErrorr!   )r   r  es   &  r   commitLocalFileOpener.commit  s    ???QRR	KK		499-DIdO+;$;<   	
 77>>$)),, -	s)   +B 4B BBC1CCc                    V P                   '       d   \        R 4      h\        P                  ! V P                  4       R# )z#Cannot discard if set to autocommitN)r   rH  r$   r   r+  r   s   &r   discardLocalFileOpener.discard  s'    ???DEE
		$))r   c                    < V ^8  d   QhRS[ /# r   r   )r   r   s   "r   r   LocalFileOpener.__annotate__  s      $ r   c                    R # r   r   r   s   &r   readableLocalFileOpener.readable  s    r   c                    < V ^8  d   QhRS[ /# r   r   )r   r   s   "r   r   rQ    s     $ $$ $r   c                     R V P                   9  # r1  r'  r   s   &r   writableLocalFileOpener.writable  s    $))##r   c                :    V P                   P                  ! V/ VB # r,   )r<   r3  r   argsr   s   &*,r   r3  LocalFileOpener.read      vv{{D+F++r   c                :    V P                   P                  ! V/ VB # r,   )r<   writerZ  s   &*,r   r_  LocalFileOpener.write  s    vv||T,V,,r   c                :    V P                   P                  ! V/ VB # r,   )r<   rB  rZ  s   &*,r   rB  LocalFileOpener.tell  r]  r   c                :    V P                   P                  ! V/ VB # r,   )r<   r,  rZ  s   &*,r   r,  LocalFileOpener.seek  r]  r   c                :    V P                   P                  ! V/ VB # r,   )r<   seekablerZ  s   &*,r   rf  LocalFileOpener.seekable      vv///r   c                :    V P                   P                  ! V/ VB # r,   )r<   readlinerZ  s   &*,r   rj  LocalFileOpener.readline  rh  r   c                :    V P                   P                  ! V/ VB # r,   )r<   	readlinesrZ  s   &*,r   rm  LocalFileOpener.readlines  s    vv000r   c                6    V P                   P                  4       # r,   )r<   r   r   s   &r   r   LocalFileOpener.close  s    vv||~r   c                    < V ^8  d   QhRS[ /# r   r  )r   r   s   "r   r   rQ    s     % %S %r   c                8    V P                   P                  V4      # r,   )r<   r   )r   rD   s   &&r   r   LocalFileOpener.truncate  s    vvt$$r   c                .    V P                   P                  # r,   )r<   r(  r   s   &r   r(  LocalFileOpener.closed  s    vv}}r   c                6    V P                   P                  4       # r,   )rawfilenor   s   &r   rx  LocalFileOpener.fileno  s    xx  r   c                   < V ^8  d   QhRR/# )r   r   Nr   )r   r   s   "r   r   rQ    s      t r   c                :    V P                   P                  4        R # r,   )r<   flushr   s   &r   r|  LocalFileOpener.flush  s    r   c                6    V P                   P                  4       # r,   )r<   __iter__r   s   &r   r  LocalFileOpener.__iter__  s    vv  r   c                .    \        V P                  V4      # r,   )r[   r<   )r   items   &&r   __getattr__LocalFileOpener.__getattr__  s    tvvt$$r   c                    R V n         V # r   )
_incontextr   s   &r   	__enter__LocalFileOpener.__enter__  s    r   c                L    R V n         V P                  P                  WV4       R# r   )r  r<   __exit__)r   exc_type	exc_value	tracebacks   &&&&r   r  LocalFileOpener.__exit__  s    Y7r   )
r  r   r$  r!  r<   r   rI   r&   rD   r+  )TNNr,   ) r   r   r   r   r   r   r6  r>  rD  rK  rN  rS  rW  r3  r_  rB  r,  rf  rj  rm  r   r   r   r(  rx  r|  r  r  r  r  r   r   )r   s   @r   r   r   z  s     ($((
 $ $,-,,001% %  ! !%8 8r   r   )rG  )r   r"  loggingr$   os.pathr&   rg   rm   rQ   r)  	functoolsr   fsspecr   fsspec.compressionr   fsspec.corer   fsspec.utilsr   r   	getLoggerr  r
   r   r  r  IOBaser   r   r   r   <module>r     s     	  	      % $ ' 3			>	*X$( X$v0<f	Y 1	 	K8bii K8r   