Ë
    ãš¾j>E  ã                   ó"  — 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 ddlmZ  ej*                  d«      Z G d	„ d
e«      Zd„ Zd„ Z ed¬«      ddedefd„«       Z G d„ dej8                  «      Zy)é    N)Ú	lru_cache)Úcompr)Úget_compression)Ú
isfilelikeÚstringify_pathé   )ÚAbstractFileSystemz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$def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ÚlocalTc                 ó2   •— t        ‰| �  di |¤Ž || _        y )N© )ÚsuperÚ__init__Ú
auto_mkdir)Úselfr   ÚkwargsÚ	__class__s      €úf/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/fsspec/implementations/local.pyr   zLocalFileSystem.__init__#   s   ø€ Ü‰ÑÑ"˜6Ò"Ø$ˆ�ó    c                  ó   — y)Nr   r   ©r   s    r   ÚfsidzLocalFileSystem.fsid'   s   € àr   c                 ó¶   — | j                  |«      }| j                  |«      rt        |«      ‚|r| j                  |d¬«       y t	        j
                  |fi |¤Ž y ©NT©Úexist_ok)Ú_strip_protocolÚexistsÚFileExistsErrorÚmakedirsÚosÚmkdir)r   ÚpathÚcreate_parentsr   s       r   r%   zLocalFileSystem.mkdir+   sM   € Ø×#Ñ# DÓ)ˆØ�;‰;�tÔÜ! $Ó'Ð'ÙØ�M‰M˜$¨ˆMÕ.ä�H‰H�TÑ$˜VÓ$r   c                 óT   — | j                  |«      }t        j                  ||¬«       y )Nr   )r    r$   r#   )r   r&   r   s      r   r#   zLocalFileSystem.makedirs4   s    € Ø×#Ñ# DÓ)ˆÜ
�‰�D 8Ö,r   c                 óP   — | j                  |«      }t        j                  |«       y ©N)r    r$   Úrmdir©r   r&   s     r   r+   zLocalFileSystem.rmdir8   s   € Ø×#Ñ# DÓ)ˆÜ
�‰��r   c                 ó|  — | j                  |«      }| j                  |«      }g }|d   dk(  rht        j                  |«      5 }|D ]B  }	 |r| j                  |«      n| j                  |j                  «      }|j                  |«       ŒD 	 d d d «       |S |r|gn|d   g}|S # t        $ r Y Œhw xY w# 1 sw Y   |S xY w)NÚtypeÚ	directoryÚname)r    Úinfor$   Úscandirr&   ÚappendÚFileNotFoundError)	r   r&   Údetailr   Ú	path_infoÚinfosÚitÚfr1   s	            r   ÚlszLocalFileSystem.ls<   sÐ   € Ø×#Ñ# DÓ)ˆØ—I‘I˜d“Oˆ	ØˆØ�VÑ Ò+Ü—‘˜DÓ!ð  RØò �Aðñ 06˜tŸy™y¨œ|¸4×;OÑ;OÐPQ×PVÑPVÓ;W˜ØŸ™ TÕ*ñ÷ð ˆñ $*�Y‘K°	¸&Ñ0AÐ/BˆEàˆøô -ò Ùðú÷ð ˆús0   ÁB1Á	?B"ÂB1Â"	B.Â+B1Â-B.Â.B1Â1B;c                 ó”  — t        |t        j                  «      r—|j                  d¬«      }|j	                  «       }|j                  d¬«      rd}n|j                  d¬«      rd}nd}|j                  }|r	 |j                  d¬«      }|j                  }| j                  |j                  «      }n²| j                  |«      }t        j                  |d¬«      }t        j                  |j                  «      }|rt        j                  |d¬«      }|j                  }t        j                  |j                  «      rd}n$t        j                  |j                  «      rd}nd}t        |d|j                   «      }|||||d	œ}	d
D ]  }
t        |d|
› �«      |	|
<   Œ |rt        j"                  |«      |	d<   |	S # t        $ r d}Y �Œ0w xY w)NF)Úfollow_symlinksr/   r   ÚotherTr   Úst_birthtime)r0   Ú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ÚgetattrÚst_ctimeÚreadlink)r   r&   r   ÚoutÚlinkÚtr?   Úout2Úcreated_timeÚresultÚfields              r   r1   zLocalFileSystem.infoO   sœ  € Ü�dœBŸK™KÔ(à—)‘)¨E�)Ó2ˆCØ—?‘?Ó$ˆDØ�{‰{¨5ˆ{Ô1Ø‘Ø—‘¨e�Ô4Ø‘à�à—;‘;ˆDÙðØŸ9™9°T˜9Ó:�DØŸ<™<�Dð ×'Ñ'¨¯	©	Ó2‰Dð ×'Ñ'¨Ó-ˆDÜ—'‘'˜$°Ô6ˆCÜ—<‘< §¡Ó,ˆDÙÜ—g‘g˜d°DÔ9�Ø—;‘;ˆDÜ�|‰|˜CŸK™KÔ(Ø‘Ü—‘˜cŸk™kÔ*Ø‘à�ô ˜s N°C·L±LÓAˆð ØØØ#Øñ
ˆð Eò 	8ˆEÜ# C¨3¨u¨g¨Ó7ˆF�5ŠMð	8áÜ$&§K¡K°Ó$5ˆF�=Ñ!ØˆøôA ò Ø“Dðús   Á8F8 Æ8GÇGc                 ó,   — t        j                  |«      S r*   )ÚospÚlexists)r   r&   r   s      r   rb   zLocalFileSystem.lexists‚   s   € Ü�{‰{˜4Ó Ð r   c                 óR  — | j                  |«      }| j                  |«      }| j                  r"| j                  | j                  |«      d¬«       | j	                  |«      rt        j                  ||«       y | j                  |«      r| j                  |d¬«       y t        |«      ‚r   )
r    r   r#   Ú_parentÚisfileÚshutilÚcopyfileÚisdirÚmkdirsr4   )r   Úpath1Úpath2r   s       r   Úcp_filezLocalFileSystem.cp_file…   sƒ   € Ø×$Ñ$ UÓ+ˆØ×$Ñ$ UÓ+ˆØ�?Š?Ø�M‰M˜$Ÿ,™, uÓ-¸ˆMÔ=Ø�;‰;�uÔÜ�O‰O˜E 5Õ)Ø�Z‰Z˜ÔØ�K‰K˜¨ˆKÕ-ä# EÓ*Ð*r   c                 ób   — | j                  |«      }t        j                  j                  |«      S r*   )r    r$   r&   re   r,   s     r   re   zLocalFileSystem.isfile‘   s%   € Ø×#Ñ# DÓ)ˆÜ�w‰w�~‰~˜dÓ#Ð#r   c                 ób   — | j                  |«      }t        j                  j                  |«      S r*   )r    r$   r&   rh   r,   s     r   rh   zLocalFileSystem.isdir•   s%   € Ø×#Ñ# DÓ)ˆÜ�w‰w�}‰}˜TÓ"Ð"r   c                 ó°   — t        |«      r,t        |d«      5 }t        j                  ||«       d d d «       y  | j                  ||fi |¤ŽS # 1 sw Y   y xY w)NÚrb)r   Úopenrf   Úcopyfileobjrl   )r   rj   rk   Úcallbackr   r9   s         r   Úget_filezLocalFileSystem.get_file™   sZ   € Ü�eÔÜ�e˜TÓ"ð - aÜ×"Ñ" 1 eÔ,÷-ð -ð  �4—<‘<  uÑ7°Ñ7Ð7÷-ð -ús   ˜AÁAc                 ó*   —  | j                   ||fi |¤ŽS r*   )rl   )r   rj   rk   rs   r   s        r   Úput_filezLocalFileSystem.put_file    s   € Øˆt�|‰|˜E 5Ñ3¨FÑ3Ð3r   Ú	recursivec                 óÐ   — | j                  |«      }| j                  |«      }| j                  r"| j                  | j                  |«      d¬«       t	        j
                  ||«       y)z™Move 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#   rd   rf   Úmove)r   rj   rk   rw   r   s        r   ÚmvzLocalFileSystem.mv£   sR   € ð
 ×$Ñ$ UÓ+ˆØ×$Ñ$ UÓ+ˆà�?Š?Ø�M‰M˜$Ÿ,™, uÓ-¸ˆMÔ=ä�‰�E˜5Õ!r   c                 óv   — | j                  |«      }| j                  |«      }t        j                  ||fi |¤Ž y r*   )r    r$   rZ   ©r   ÚsrcÚdstr   s       r   rZ   zLocalFileSystem.link°   s5   € Ø×"Ñ" 3Ó'ˆØ×"Ñ" 3Ó'ˆÜ
�‰��SÑ#˜FÓ#r   c                 óv   — | j                  |«      }| j                  |«      }t        j                  ||fi |¤Ž y r*   )r    r$   Úsymlinkr|   s       r   r€   zLocalFileSystem.symlinkµ   s5   € Ø×"Ñ" 3Ó'ˆØ×"Ñ" 3Ó'ˆÜ
�
‰
�3˜Ñ&˜vÓ&r   Úreturnc                 ó^   — t         j                  j                  | j                  |«      «      S r*   )r$   r&   rA   r    r,   s     r   rA   zLocalFileSystem.islinkº   s    € Ü�w‰w�~‰~˜d×2Ñ2°4Ó8Ó9Ð9r   c                 óL   — t        j                  | j                  |«      «       y r*   )r$   Úremover    r,   s     r   Úrm_filezLocalFileSystem.rm_file½   s   € Ü
�	‰	�$×&Ñ& tÓ,Õ-r   c                 óx  — t        |t        «      s|g}|D ]¢  }| j                  |«      }| j                  |«      ri| j	                  |«      sX|st        d«      ‚t        j                  |«      t        j                  «       k(  rt        d«      ‚t        j                  |«       ŒŽt        j                  |«       Œ¤ y )Nz+Cannot delete directory, set recursive=Truez'Cannot delete current working directory)rJ   Úlistr    rh   rA   Ú
ValueErrorra   Úabspathr$   Úgetcwdrf   Úrmtreer„   )r   r&   rw   ÚmaxdepthÚps        r   ÚrmzLocalFileSystem.rmÀ   s�   € Ü˜$¤Ô%Ø�6ˆDàò 		ˆAØ×$Ñ$ QÓ'ˆAØ�z‰z˜!Œ} T§[¡[°¤^Ù Ü$Ð%RÓSÐSÜ—;‘;˜q“>¤R§Y¡Y£[Ò0Ü$Ð%NÓOÐOÜ—‘˜aÕ ä—	‘	˜!•ñ		r   c                 óœ   — t        | j                  t        «      r| j                  n| j                  d   }| j                  |«      }|› d|› �S )Nr   ú://)rJ   ÚprotocolÚstrr    )r   r0   r‘   s      r   Úunstrip_protocolz LocalFileSystem.unstrip_protocolÏ   sE   € Ü$.¨t¯}©}¼cÔ$B�4—=’=ÈÏÉÐVWÑHXˆØ×#Ñ# DÓ)ˆØ�˜3˜t˜fÐ%Ð%r   c                 ó¶   — | j                  |«      }| j                  r.d|v sd|v sd|v r"| j                  | j                  |«      d¬«       t	        ||fd| i|¤ŽS )NÚwÚxÚaTr   Úfs)r    r   r#   rd   ÚLocalFileOpener)r   r&   rB   Ú
block_sizer   s        r   Ú_openzLocalFileSystem._openÔ   s[   € Ø×#Ñ# DÓ)ˆØ�?Š?  t¡¨s°d©{¸cÀT¹kØ�M‰M˜$Ÿ,™, tÓ,°tˆMÔ<Ü˜t TÑ=¨dÐ=°fÑ=Ð=r   c                 ó8  — | j                  |«      }| j                  r"| j                  | j                  |«      d¬«       | j	                  |«      rt        j                  |d «       nt        |d«      j                  «        |rt        j                  |d«       y y )NTr   r—   r   )
r    r   r#   rd   r!   r$   Úutimerq   ÚcloseÚtruncate)r   r&   rŸ   r   s       r   ÚtouchzLocalFileSystem.touchÚ   st   € Ø×#Ñ# DÓ)ˆØ�?Š?Ø�M‰M˜$Ÿ,™, tÓ,°tˆMÔ<Ø�;‰;�tÔÜ�H‰H�T˜4Õ ä��s‹O×!Ñ!Ô#ÙÜ�K‰K˜˜aÕ ð r   c                 óž   — | j                  |¬«      }t        j                  j                  |d   t        j                  j                  ¬«      S )N©r&   r@   ©Útz©r1   ÚdatetimeÚfromtimestampÚtimezoneÚutc©r   r&   r1   s      r   r@   zLocalFileSystem.createdå   sE   € Ø�y‰y˜dˆyÓ#ˆÜ× Ñ ×.Ñ.Ø�‰O¤× 1Ñ 1× 5Ñ 5ð /ó 
ð 	
r   c                 óž   — | j                  |¬«      }t        j                  j                  |d   t        j                  j                  ¬«      S )Nr¢   rE   r£   r¥   rª   s      r   ÚmodifiedzLocalFileSystem.modifiedë   s>   € Ø�y‰y˜dˆyÓ#ˆÜ× Ñ ×.Ñ.¨t°G©}Ä×ARÑAR×AVÑAVÐ.ÓWÐWr   c                 óæ   — | j                  |«      }t        j                  dk(  r|j                  dd«      d   xs dS |j                  dd«      d   }t	        |«      dk  r|dd dk(  r|d   dz   S |S )Nr   é   r   é   r   ú:ú:/)r    r$   ÚsepÚrsplitÚlen)Úclsr&   Úpath_s      r   rd   zLocalFileSystem._parentï   s{   € à×"Ñ" 4Ó(ˆÜ�6‰6�SŠ=à—;‘;˜s AÓ& qÑ)Ò0¨SÐ0ð —K‘K  QÓ'¨Ñ*ˆEÜ�5‹z˜QŠØ˜˜1�: Ò$à  ™8 d™?Ð*àˆLr   c                 ód  — t        |«      }t        | j                  t        «      r| j                  fn| j                  }d„ |D «       }|D ]&  }|j	                  |«      sŒ|j                  |«      } n t        |«      }t        j                  dk7  r‚|dd dk(  r|d d |dd  }}nK|d d dk(  rA|j                  dd«      x}dk(  s|j                  d|dz   «      x}dk(  r|d}}n|d | ||d  }}nd}|j                  d«      xs | j                  }||z   S |j                  d«      xs | j                  S )	Nc              3   ó4   K  — | ]  }d D ]	  }||z   –— Œ Œ y­w))r�   r°   Nr   )Ú.0r‘   r²   s      r   ú	<genexpr>z2LocalFileSystem._strip_protocol.<locals>.<genexpr>  s    è ø€ ÒR xÀ\ÒR¸c�H˜s•NÐR�NÑRùs   ‚r   r®   r   r°   ú//éÿÿÿÿÚ )r   rJ   r‘   r’   Ú
startswithÚremoveprefixÚmake_path_posixr$   r²   ÚfindÚrstripÚroot_marker)rµ   r&   ÚprotosÚprefixesÚprefixÚdriveÚindex1Úindex2s           r   r    zLocalFileSystem._strip_protocolÿ   sI  € ä˜dÓ#ˆÜ$.¨s¯|©|¼SÔ$A�#—,‘,‘ÀsÇ|Á|ˆÙR°6ÔRˆØò 	ˆFØ�‰˜vÕ&Ø×(Ñ(¨Ó0�Ùð	ô
 ˜tÓ$ˆÜ�6‰6�SŠ=ð �A�aˆy˜CÒð # 2 A˜h¨¨Q¨R¨�t‘Ø�b�q�˜TÒ!ð #Ÿi™i¨¨QÓ/Ð/�F°BÒ6Ø"Ÿi™i¨¨V°a©ZÓ8Ð8�FØò;ð #'¨˜4‘Eà"& w¨ -°°f°g°˜4‘Eð �à—;‘;˜sÓ#Ò6 s§¡ˆDØ˜4‘<Ðð —;‘;˜sÓ#Ò6 s§¡Ð6r   c                  ó   — y©NTr   r   s    r   Ú_isfilestorezLocalFileSystem._isfilestore$  s   € ð r   c                 óD   — t        |«      }t        j                  ||«      S r*   )r   r$   Úchmod)r   r&   rB   s      r   rÎ   zLocalFileSystem.chmod*  s   € Ü˜dÓ#ˆÜ�x‰x˜˜dÓ#Ð#r   )F)Tr*   )FN)rp   N)'Ú__name__Ú
__module__Ú__qualname__Ú__doc__rÃ   r‘   Ú
local_filer   Úpropertyr   r%   r#   r+   r:   r1   rb   rl   re   rh   rt   rv   Úboolrz   rZ   r€   rA   r…   rŽ   r“   r›   r    r@   r¬   Úclassmethodrd   r    rÌ   rÎ   Ú__classcell__)r   s   @r   r   r      sã   ø„ ñð €KØ€HØ€Jõ%ð ñó ðó%ó-òóò&1òf!ò
+ò$ò#ó8ó4ñ"¨$ó "ò$ò
'ð
:˜dó :ò.óò&ó
>ó	!ò
òXð ñó ðð ñ"7ó ð"7òHö$r   r   c                 ó~  — t        | t        «      s]t        | t        t        t        f«      r t        | «      d„ | D «       «      S t        | «      } t        | t        «      st        d| ›d�«      ‚t        j                  dk(  rp| j                  d«      r| S | j                  d«      rt        j                  | «      S | j                  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(  r?t        | «      dk(  st        | «      dk(  r| d   dv r| d   dz   S | j                  dd«      } | S | dd dk(  rt!        t        j                  | «      «      S | j                  d«      rd| dd j                  dd«      z   S | j                  d«      r@| j                  dd«      } t        j"                  t        j                  «       «      d   › | › �S | j                  dd«      } | j                  d«      r| dd } n| d	k(  rd
} t!        t        j                  «       «      › d| › �S )z-Make path generic and absolute for current OSc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr*   )rÀ   )r¹   r�   s     r   rº   z"make_path_posix.<locals>.<genexpr>3  s   è ø€ Ò?°Qœo¨a×0Ñ?ùs   ‚zcould not convert z
 to stringr   ú~z./r   Nú.r½   r   r®   r¯   r°   z/\r±   ú\)z\\r»   r»   )rÜ   r   )rJ   r’   r‡   ÚsetÚtupler.   r   Ú	TypeErrorr$   r²   r¾   ra   Ú
expanduserrŠ   r´   ÚreplacerÀ   Ú
splitdriver¢   s    r   rÀ   rÀ   /  s%  € ä�dœCÔ Ü�dœT¤3¬Ð.Ô/Ø”4˜“:Ñ?¸$Ô?Ó?Ð?ä! $Ó'ˆDÜ˜d¤CÔ(ÜÐ"4°T°H¸JÐ GÓHÐHÜ	‡v�v�‚}à�?‰?˜3ÔàˆKØ�_‰_˜SÔ!Ü—>‘> $Ó'Ð'Ø�_‰_˜TÔ"Ø˜˜�8‰DØ�SŠ[ØˆDÜ—)‘)“+�˜a ˜vÐ&Ð&ð ��!ˆ9˜Ò  Q q 	¨SÒ 0à˜˜�8ˆDØ��!ˆ9˜Òä�4‹y˜AŠ~¤# d£)¨q¢.°T¸!±WÀÑ5Eð ˜A‘w ‘~Ð%Ø—<‘<  cÓ*ˆDØˆKØ�!�AˆY˜#ÒÜ"¤3§>¡>°$Ó#7Ó8Ð8Ø�_‰_˜^Ô,à˜$˜q˜r˜(×*Ñ*¨4°Ó5Ñ5Ð5Ø�_‰_˜[Ô)à—<‘<  cÓ*ˆDÜ—n‘n¤R§Y¡Y£[Ó1°!Ñ4Ð5°d°VÐ<Ð<à—<‘<  cÓ*ˆDØ�‰˜tÔ$Ø˜A˜B�x‘Ø˜’Ø�Ü%¤b§i¡i£kÓ2Ð3°1°T°FÐ;Ð;r   c                 óª   — | j                  t        j                  «      xs3 t        j                  duxr | j                  t        j                  «      S )z±Return 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æ   d  s7   € ð �=‰=œŸ™Ó ÒX¤R§Y¡Y°dÐ%:Ò%W¸t¿}¹}ÌRÏYÉYÓ?WÐXr   r®   )ÚmaxsizeÚmaskr�   c                 óZ   — t        j                  | «      }t        j                  |«       |S )zÀGet 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ì   p  s!   € ô �H‰H�T‹N€EÜ‡H�HˆU„OØ€Lr   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y)r™   Nc                 óâ   — t         j                  d|«       || _        || _        || _        d | _        || _        t        ||«      | _        t        j                  | _        | j                  «        y )Nzopen file: %s)ÚloggerÚdebugr&   rB   r˜   r9   Ú
autocommitr   ÚcompressionÚioÚDEFAULT_BUFFER_SIZEÚ	blocksizer›   )r   r&   rB   rñ   r˜   rò   r   s          r   r   zLocalFileOpener.__init__~  sZ   € ô 	�‰�_ dÔ+ØˆŒ	ØˆŒ	ØˆŒØˆŒØ$ˆŒÜ*¨4°Ó=ˆÔÜ×/Ñ/ˆŒØ�
‰
�r   c                 ó¼  — | j                   �| j                   j                  �r9| j                  sd| j                  vrit	        | j
                  | j                  ¬«      | _         | j                  r†t        | j                     } || j                   | j                  ¬«      | _         nOt        j                  «       \  }}t        j                  |«       || _        t	        || j                  ¬«      | _         d| j                  vrX| j                   j                  dd«      | _        | j                   j                  d«       | j                  | j                   _        y y y )Nr•   ©rB   r   r   )r9   Úclosedrñ   rB   rq   r&   rò   r   ÚtempfileÚmkstempr$   rž   ÚtempÚseekr?   )r   ÚcompressÚir0   s       r   r›   zLocalFileOpener._open‹  sî   € Ø�6‰6ˆ>˜TŸV™VŸ]›]Ø�Š #¨T¯Y©YÑ"6Ü˜dŸi™i¨d¯i©iÔ8�”Ø×#Ò#Ü$ T×%5Ñ%5Ñ6�HÙ% d§f¡f°4·9±9Ô=�D•Fô #×*Ñ*Ó,‘��4Ü—‘˜”Ø �”	Ü˜d¨¯©Ô3�”Ø˜$Ÿ)™)Ñ#Ø ŸF™FŸK™K¨¨1Ó-�”	Ø—‘—‘˜A”Ø"Ÿi™i�—‘•ð $ð +r   c                 ó¼   — d| j                   vrt        ‚| j                  «        | j                  j	                  |«       | j                  j                  ||z
  «      S ©NÚr)rB   rˆ   r›   r9   rü   Úread)r   ÚstartÚends      r   Ú_fetch_rangezLocalFileOpener._fetch_range�  sD   € à�d—i‘iÑÜÐØ�
‰
ŒØ�‰�‰�EÔØ�v‰v�{‰{˜3 ™;Ó'Ð'r   c                 óà   — d | _         |j                  dd «      }| j                  j                  |«       d|d   v r3d | _         | j	                  «        | j                   j                  |«       y y )NÚlocr  rB   )r9   ÚpopÚ__dict__Úupdater›   rü   )r   Ústater  s      r   Ú__setstate__zLocalFileOpener.__setstate__¥  s\   € ØˆŒØ�i‰i˜˜tÓ$ˆØ�‰×Ñ˜UÔ#Ø�%˜‘-ÑØˆDŒFØ�J‰JŒLØ�F‰F�K‰K˜Õð  r   c                 óø   — | j                   j                  «       }|j                  d«       d| j                  v r| j                  j                  «       |d<   |S | j                  j                  st        d«      ‚|S )Nr9   r  r  z+Cannot serialise open write-mode local file)r	  Úcopyr  rB   r9   Útellrø   rˆ   )r   Úds     r   Ú__getstate__zLocalFileOpener.__getstate__®  sc   € Ø�M‰M×ÑÓ ˆØ	�‰ˆcŒ
Ø�$—)‘)ÑØ—v‘v—{‘{“}ˆAˆe‰Hð ˆð —6‘6—=’=Ü Ð!NÓOÐOØˆr   c                 óè  — | j                   rt        d«      ‚| j                  j                  s| j                  j	                  «        	 t        j                  | j                  | j                  «       	 d}t        j                  | j                  |t        |«       z  «       y # t        $ r Y y w xY w# t        $ r5}t        j                  j                  | j                  «      s|‚Y d }~y d }~ww xY w)Nz0Can only commit if not already set to autocommité¶  )rñ   ÚRuntimeErrorr9   rø   rž   rf   ry   rû   r&   r$   rÎ   rì   ÚPermissionErrorr!   )r   rè   Úes      r   ÚcommitzLocalFileOpener.commit¸  sµ   € Ø�?Š?ÜÐQÓRÐRØ�v‰v�}Š}ð �F‰F�L‰LŒNð	Ü�K‰K˜Ÿ	™	 4§9¡9Ô-ðØ�Ü—‘˜Ÿ™ D¬I°d«OÐ+;Ñ$;Õ<øÜò Ùðûô ò 	ô
 —7‘7—>‘> $§)¡)Ô,Ø�ô -ûð	ús*   Á	*B3 Á4/B$ Â$	B0Â/B0Â3	C1Â<+C,Ã,C1c                 óp   — | j                   rt        d«      ‚t        j                  | j                  «       y )Nz#Cannot discard if set to autocommit)rñ   r  r$   r„   rû   r   s    r   ÚdiscardzLocalFileOpener.discardÑ  s%   € Ø�?Š?ÜÐDÓEÐEÜ
�	‰	�$—)‘)Õr   r�   c                  ó   — yrË   r   r   s    r   ÚreadablezLocalFileOpener.readableÖ  s   € Ør   c                 ó   — d| j                   vS r   r÷   r   s    r   ÚwritablezLocalFileOpener.writableÙ  s   € Ø˜$Ÿ)™)Ð#Ð#r   c                 ó:   —  | j                   j                  |i |¤ŽS r*   )r9   r  ©r   Úargsr   s      r   r  zLocalFileOpener.readÜ  ó   € Øˆt�v‰v�{‰{˜DÐ+ FÑ+Ð+r   c                 ó:   —  | j                   j                  |i |¤ŽS r*   )r9   Úwriter  s      r   r#  zLocalFileOpener.writeß  s   € Øˆt�v‰v�|‰|˜TÐ, VÑ,Ð,r   c                 ó:   —  | j                   j                  |i |¤ŽS r*   )r9   r  r  s      r   r  zLocalFileOpener.tellâ  r!  r   c                 ó:   —  | j                   j                  |i |¤ŽS r*   )r9   rü   r  s      r   rü   zLocalFileOpener.seekå  r!  r   c                 ó:   —  | j                   j                  |i |¤ŽS r*   )r9   Úseekabler  s      r   r'  zLocalFileOpener.seekableè  ó   € Øˆt�v‰v�‰ Ð/¨Ñ/Ð/r   c                 ó:   —  | j                   j                  |i |¤ŽS r*   )r9   Úreadliner  s      r   r*  zLocalFileOpener.readlineë  r(  r   c                 ó:   —  | j                   j                  |i |¤ŽS r*   )r9   Ú	readlinesr  s      r   r,  zLocalFileOpener.readlinesî  s   € Øˆt�v‰v×Ñ Ð0¨Ñ0Ð0r   c                 ó6   — | j                   j                  «       S r*   )r9   rž   r   s    r   rž   zLocalFileOpener.closeñ  s   € Ø�v‰v�|‰|‹~Ðr   c                 ó8   — | j                   j                  |«      S r*   )r9   rŸ   )r   r?   s     r   rŸ   zLocalFileOpener.truncateô  s   € Ø�v‰v�‰˜tÓ$Ð$r   c                 ó.   — | j                   j                  S r*   )r9   rø   r   s    r   rø   zLocalFileOpener.closed÷  s   € à�v‰v�}‰}Ðr   c                 ó6   — | j                   j                  «       S r*   )ÚrawÚfilenor   s    r   r2  zLocalFileOpener.filenoû  s   € Ø�x‰x�‰Ó Ð r   c                 ó8   — | j                   j                  «        y r*   )r9   Úflushr   s    r   r4  zLocalFileOpener.flushþ  s   € Ø�‰�‰�r   c                 ó6   — | j                   j                  «       S r*   )r9   Ú__iter__r   s    r   r6  zLocalFileOpener.__iter__  s   € Ø�v‰v�‰Ó Ð r   c                 ó.   — t        | j                  |«      S r*   )rV   r9   )r   Úitems     r   Ú__getattr__zLocalFileOpener.__getattr__  s   € Ü�t—v‘v˜tÓ$Ð$r   c                 ó   — d| _         | S rË   )Ú
_incontextr   s    r   Ú	__enter__zLocalFileOpener.__enter__  s   € ØˆŒØˆr   c                 óL   — d| _         | j                  j                  |||«       y )NF)r;  r9   Ú__exit__)r   Úexc_typeÚ	exc_valueÚ	tracebacks       r   r>  zLocalFileOpener.__exit__  s   € ØˆŒØ�‰�‰˜ )¨YÕ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ø   r2  r4  r6  r9  r<  r>  r   r   r   r™   r™   }  s¦   „ à@Dóò(ò$(òòòò2ð
˜$ó ð$˜$ó $ò,ò-ò,ò,ò0ò0ò1òñ% Só %ð ñó ðò!óò!ò%òó8r   r™   )r  )r¦   ró   Úloggingr$   Úos.pathr&   ra   rf   rL   rù   Ú	functoolsr   Úfsspec.compressionr   Úfsspec.corer   Úfsspec.utilsr   r   Úspecr	   Ú	getLoggerrï   r   rÀ   ræ   rB  rì   ÚIOBaser™   r   r   r   ú<module>rL     s“   ðÛ Û 	Û Û 	Ý Û Û Û Ý å $Ý 'ß 3å %à	ˆ×	Ñ	˜>Ó	*€ôX$Ð(ô X$òv2<òj	Yñ �1Ôñ	�Cð 	 Cò 	ó ð	ôP8�b—i‘iõ P8r   