§
    dŠtj@C  ã                   ó.  — 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 d dlmZ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j        ¦  «        ZdS )é    N)Ú	lru_cache)Ú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'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ÚlocalTFc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S )N© )ÚsuperÚ__init__Ú
auto_mkdir)Úselfr   ÚkwargsÚ	__class__s      €úZ/var/www/html/CA-Chatbot/venv/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ÑÔð 	(Ý! $Ñ'Ô'Ð'Øð 	%Ø�MŠM˜$¨ˆMÑ.Ô.Ð.Ð.Ð.åŒH�TÐ$Ð$˜VÐ$Ð$Ð$Ð$Ð$r   c                 ó\   — |                       |¦  «        }t          j        ||¬¦  «         d S )Nr   )r   r#   r"   )r   r%   r   s      r   r"   zLocalFileSystem.makedirs3   s0   € Ø×#Ò# DÑ)Ô)ˆÝ
Œ�D 8Ð,Ñ,Ô,Ð,Ð,Ð,r   c                 óX   — |                       |¦  «        }t          j        |¦  «         d S ©N)r   r#   Úrmdir©r   r%   s     r   r*   zLocalFileSystem.rmdir7   s&   € Ø×#Ò# DÑ)Ô)ˆÝ
Œ�‰Œˆˆˆr   c                 ó¦  — |                       |¦  «        }|                      |¦  «        }g }|d         dk    rŠt          j        |¦  «        5 }|D ]Y}	 |r|                      |¦  «        n|                       |j        ¦  «        }|                     |¦  «         ŒJ# t          $ r Y ŒVw xY w	 d d d ¦  «         n# 1 swxY w Y   n|r|gn|d         g}|S )NÚtypeÚ	directoryÚname)r   Úinfor#   Úscandirr%   ÚappendÚFileNotFoundError)	r   r%   Údetailr   Ú	path_infoÚinfosÚitÚfr0   s	            r   ÚlszLocalFileSystem.ls;   s5  € Ø×#Ò# DÑ)Ô)ˆØ—I’I˜d‘O”Oˆ	ØˆØ�VÔ Ò+Ð+Ý”˜DÑ!Ô!ð  RØð ð �Aðð 06ÐW˜tŸyšy¨™|œ|˜|¸4×;OÒ;OÐPQÔPVÑ;WÔ;W˜ØŸš TÑ*Ô*Ð*Ð*øÝ,ð ð ð Ø˜ðøøøððð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øð $*ÐB�Y�K�K°	¸&Ô0AÐ/BˆEàˆs7   ÁB7ÁABÂB7Â
B'Â$B7Â&B'Â'B7Â7B;Â>B;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}t          |d|j        ¦  «        }|||||d	œ}	d
D ]}
t          |d|
› �¦  «        |	|
<   Œ|rt          j        |¦  «        |	d<   |	S )NF)Úfollow_symlinksr.   r   ÚotherTr   Úst_birthtime)r/   Ú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   r0   zLocalFileSystem.infoN   sú  € Ý�d�BœKÑ(Ô(ð  	à—)’)¨E�)Ñ2Ô2ˆCØ—?’?Ñ$Ô$ˆDØ�{Š{¨5ˆ{Ñ1Ô1ð Ø��Ø—’¨e�Ñ4Ô4ð Ø��à�à”;ˆDØð ðØŸ9š9°T˜9Ñ:Ô:�DØœ<�D�DøÝð ð ð Ø�D�D�Dðøøøà×'Ò'¨¬	Ñ2Ô2ˆDˆDð ×'Ò'¨Ñ-Ô-ˆDÝ”'˜$°Ð6Ñ6Ô6ˆCÝ”< ¤Ñ,Ô,ˆDØð :Ý”g˜d°DÐ9Ñ9Ô9�Ø”;ˆDÝŒ|˜CœKÑ(Ô(ð Ø��Ý”˜cœkÑ*Ô*ð Ø��à�õ ˜s N°C´LÑAÔAˆð ØØØ#Øð
ð 
ˆð Eð 	8ð 	8ˆEÝ# C¨¨u¨¨Ñ7Ô7ˆF�5‰MˆMØð 	6Ý$&¤K°Ñ$5Ô$5ˆF�=Ñ!Øˆs   ÂB! Â!B0Â/B0c                 ó*   — t          j        |¦  «        S r)   )ÚospÚlexists)r   r%   r   s      r   ra   zLocalFileSystem.lexists�   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Úmkdirsr3   )r   Úpath1Úpath2r   s       r   Úcp_filezLocalFileSystem.cp_file„   s¾   € Ø×$Ò$ UÑ+Ô+ˆØ×$Ò$ UÑ+Ô+ˆØŒ?ð 	>Ø�MŠM˜$Ÿ,š, uÑ-Ô-¸ˆMÑ=Ô=Ð=Ø�;Š;�uÑÔð 	+ÝŒO˜E 5Ñ)Ô)Ð)Ð)Ð)Ø�ZŠZ˜ÑÔð 	+Ø�KŠK˜¨ˆKÑ-Ô-Ð-Ð-Ð-å# EÑ*Ô*Ð*r   c                 ój   — |                       |¦  «        }t          j                             |¦  «        S r)   )r   r#   r%   rd   r+   s     r   rd   zLocalFileSystem.isfile�   s)   € Ø×#Ò# DÑ)Ô)ˆÝŒw�~Š~˜dÑ#Ô#Ð#r   c                 ój   — |                       |¦  «        }t          j                             |¦  «        S r)   )r   r#   r%   rg   r+   s     r   rg   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   Úopenre   Úcopyfileobjrk   )r   ri   rj   Úcallbackr   r8   s         r   Úget_filezLocalFileSystem.get_file˜   s´   € Ý�eÑÔð 	8Ý�e˜TÑ"Ô"ð - aÝÔ" 1 eÑ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -ð  �4”<  uÐ7Ð7°Ð7Ð7Ð7s    AÁAÁ
Ac                 ó    —  | j         ||fi |¤ŽS r)   )rk   )r   ri   rj   rr   r   s        r   Úput_filezLocalFileSystem.put_fileŸ   s   € ØˆtŒ|˜E 5Ð3Ð3¨FÐ3Ð3Ð3r   Ú	recursivec                 óæ   — |                       |¦  «        }|                       |¦  «        }| j        r*|                      |                      |¦  «        d¬¦  «         t	          j        ||¦  «         dS )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"   rc   re   Úmove)r   ri   rj   rv   r   s        r   ÚmvzLocalFileSystem.mv¢   sn   € ð
 ×$Ò$ UÑ+Ô+ˆØ×$Ò$ UÑ+Ô+ˆàŒ?ð 	>Ø�MŠM˜$Ÿ,š, uÑ-Ô-¸ˆMÑ=Ô=Ð=åŒ�E˜5Ñ!Ô!Ð!Ð!Ð!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Ò2°4Ñ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                 ó¢  — t          |t          ¦  «        s|g}|D ]³}|                      |¦  «        }|                      |¦  «        rs|                      |¦  «        s^|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   rg   r@   Ú
ValueErrorr`   Úabspathr#   Úgetcwdre   Úrmtreerƒ   )r   r%   rv   ÚmaxdepthÚps        r   ÚrmzLocalFileSystem.rm¿   sÌ   € Ý˜$¥Ñ%Ô%ð 	Ø�6ˆDàð 		ð 		ˆAØ×$Ò$ QÑ'Ô'ˆAØ�zŠz˜!‰}Œ}ð  T§[¢[°¡^¤^ð Ø ð TÝ$Ð%RÑSÔSÐSÝ”;˜q‘>”>¥R¤Y¡[¤[Ò0Ð0Ý$Ð%NÑOÔOÐOÝ”˜aÑ Ô Ð Ð å”	˜!‘”��ð		ð 		r   c                 ó–   — t          | j        t          ¦  «        r| j        n| j        d         }|                      |¦  «        }|› d|› �S )Nr   ú://)rI   ÚprotocolÚstrr   )r   r/   r�   s      r   Úunstrip_protocolz LocalFileSystem.unstrip_protocolÎ   sM   € Ý$.¨t¬}½cÑ$BÔ$BÐX�4”=�=ÈÌÐVWÔHXˆØ×#Ò# DÑ)Ô)ˆØÐ%Ð%˜tÐ%Ð%Ð%r   ro   c                 óÆ   — |                       |¦  «        }| j        r6d|v sd|v sd|v r*|                      |                      |¦  «        d¬¦  «         t	          ||fd| i|¤ŽS )NÚwÚxÚaTr   Úfs)r   r   r"   rc   ÚLocalFileOpener)r   r%   rA   Ú
block_sizer   s        r   Ú_openzLocalFileSystem._openÓ   sv   € Ø×#Ò# DÑ)Ô)ˆØŒ?ð 	=  t  ¨s°d¨{¨{¸cÀT¸k¸kØ�MŠM˜$Ÿ,š, tÑ,Ô,°tˆMÑ<Ô<Ð<Ý˜t TÐ=Ð=¨dÐ=°fÐ=Ð=Ð=r   c                 ó^  — |                       |¦  «        }| j        r*|                      |                      |¦  «        d¬¦  «         |                      |¦  «        rt          j        |d ¦  «         n"t          |d¦  «                             ¦   «          |rt          j	        |d¦  «         d S d S )NTr   r–   r   )
r   r   r"   rc   r    r#   Úutimerp   ÚcloseÚtruncate)r   r%   rž   r   s       r   ÚtouchzLocalFileSystem.touchÙ   s®   € Ø×#Ò# DÑ)Ô)ˆØŒ?ð 	=Ø�MŠM˜$Ÿ,š, tÑ,Ô,°tˆMÑ<Ô<Ð<Ø�;Š;�tÑÔð 	$ÝŒH�T˜4Ñ Ô Ð Ð å��s‰OŒO×!Ò!Ñ#Ô#Ð#Øð 	!ÝŒK˜˜aÑ Ô Ð Ð Ð ð	!ð 	!r   c                 óš   — |                       |¬¦  «        }t          j                             |d         t          j        j        ¬¦  «        S )N©r%   r?   ©Útz©r0   ÚdatetimeÚfromtimestampÚtimezoneÚutc©r   r%   r0   s      r   r?   zLocalFileSystem.createdä   sD   € Ø�yŠy˜dˆyÑ#Ô#ˆÝÔ ×.Ò.Ø�ŒO¥Ô 1Ô 5ð /ñ 
ô 
ð 	
r   c                 óš   — |                       |¬¦  «        }t          j                             |d         t          j        j        ¬¦  «        S )Nr¡   rD   r¢   r¤   r©   s      r   ÚmodifiedzLocalFileSystem.modifiedê   s;   € Ø�yŠy˜dˆyÑ#Ô#ˆÝÔ ×.Ò.¨t°G¬}ÅÔARÔAVÐ.Ñ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   rc   zLocalFileSystem._parentî   s�   € à×"Ò" 4Ñ(Ô(ˆÝŒ6�SŠ=ˆ=à—;’;˜s AÑ&Ô& qÔ)Ð0¨SÐ0ð —K’K  QÑ'Ô'¨Ô*ˆEÝ�5‰zŒz˜QŠˆØ˜˜1˜”: Ò$Ð$à  œ8 d™?Ð*àˆLr   c                 ó´  — t          |¦  «        }t          | j        t          ¦  «        r| j        fn| j        }d„ |D ¦   «         }|D ].}|                     |¦  «        r|                     |¦  «        } nŒ/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 )	Nc              3   ó*   K  — | ]}d D ]	}||z   V — Œ
ŒdS ))r�   r°   Nr   )Ú.0r�   r²   s      r   ú	<genexpr>z2LocalFileSystem._strip_protocol.<locals>.<genexpr>  s3   è è € ÐRÐR xÀ\ÐRÐR¸c�H˜s‘NÐRÐRÐRÐRÐRÐRÐRr   r   r­   r¯   r°   ú//éÿÿÿÿÚ )r   rI   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þ   s”  € å˜dÑ#Ô#ˆÝ$.¨s¬|½SÑ$AÔ$AÐS�#”,��ÀsÄ|ˆØRÐR°6ÐRÑRÔRˆØð 	ð 	ˆFØ�Š˜vÑ&Ô&ð Ø×(Ò(¨Ñ0Ô0�Ø�ðõ ˜tÑ$Ô$ˆÝŒ6�SŠ=ˆ=ð �A�a�CŒy˜CÒÐð # 2 A 2œh¨¨Q¨R¨R¬�t��Ø�b�q�b”˜TÒ!Ð!ð #Ÿiši¨¨QÑ/Ô/Ð/�F°BÒ6Ð6Ø"Ÿiši¨¨V°a©ZÑ8Ô8Ð8�FØò;ð ;ð #'¨˜4�E�Eà"& w¨ w¤-°°f°g°g´˜4�E�Eð �à—;’;˜sÑ#Ô#Ð6 s¤ˆDØ˜4‘<Ðð —;’;˜sÑ#Ô#Ð6 s¤Ð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)ro   N)'Ú__name__Ú
__module__Ú__qualname__Ú__doc__rÃ   r�   Ú
local_filer   Úpropertyr   r$   r"   r*   r9   r0   ra   rk   rd   rg   rs   ru   Úboolry   rY   r   r@   r„   r�   r’   rš   rŸ   r?   r«   Úclassmethodrc   r   rÌ   rÎ   Ú__classcell__)r   s   @r   r
   r
      s[  ø€ € € € € ðð ð €KØ€HØ€Jð%ð %ð %ð %ð %ð %ð ðð ñ „Xðð%ð %ð %ð %ð-ð -ð -ð -ðð ð ðð ð ð ð&1ð 1ð 1ðf!ð !ð !ð
+ð 
+ð 
+ð$ð $ð $ð#ð #ð #ð8ð 8ð 8ð 8ð4ð 4ð 4ð 4ð"ð "¨$ð "ð "ð "ð "ð$ð $ð $ð
'ð 'ð 'ð
:˜dð :ð :ð :ð :ð.ð .ð .ðð ð ð ð&ð &ð &ð
>ð >ð >ð >ð	!ð 	!ð 	!ð 	!ð
ð 
ð 
ðXð Xð Xð ðð ñ „[ðð ð"7ð "7ñ „[ð"7ðHð ð ð$ð $ð $ð $ð $ð $ð $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À   )r¹   rŒ   s     r   rº   z"make_path_posix.<locals>.<genexpr>2  s*   è è € Ð?Ð?°Q�o¨aÑ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   r‘   r†   ÚsetÚtupler-   r   Ú	TypeErrorr#   r²   r¾   r`   Ú
expanduserr‰   r´   ÚreplacerÀ   Ú
splitdriver¡   s    r   rÀ   rÀ   .  s²  € å�d�CÑ Ô ð IÝ�d�T¥3­Ð.Ñ/Ô/ð 	IØ•4˜‘:”:Ð?Ð?¸$Ð?Ñ?Ô?Ñ?Ô?Ð?å! $Ñ'Ô'ˆDÝ˜d¥CÑ(Ô(ð IÝÐ G°TÐ GÐ GÐ GÑHÔHÐHÝ	„v�‚}€}à�?Š?˜3ÑÔð 	àˆKØ�_Š_˜SÑ!Ô!ð 	Ý”> $Ñ'Ô'Ð'Ø�_Š_˜TÑ"Ô"ð 	Ø˜˜˜”8ˆDˆDØ�SŠ[ˆ[ØˆDÝ”)‘+”+Ð&Ð& Ð&Ð&Ð&ð ��!�Œ9˜ÒÐ  Q q S¤	¨SÒ 0Ð 0à˜˜˜”8ˆDØ��!�Œ9˜ÒÐå�4‰yŒy˜AŠ~ˆ~à˜A”w ‘~Ð%Ø—<’<  cÑ*Ô*ˆDØˆKØ�!�A�#ŒY˜#ÒÐÝ"¥3¤>°$Ñ#7Ô#7Ñ8Ô8Ð8Ø�_Š_˜^Ñ,Ô,ð 	<à˜$˜q˜r˜rœ(×*Ò*¨4°Ñ5Ô5Ñ5Ð5Ø�_Š_˜[Ñ)Ô)ð 
	<à—<’<  cÑ*Ô*ˆDÝ”n¥R¤Y¡[¤[Ñ1Ô1°!Ô4Ð<°dÐ<Ð<Ð<à—<’<  cÑ*Ô*ˆDØ�Š˜tÑ$Ô$ð Ø˜A˜B˜B”x��Ø˜’�Ø�Ý%¥b¤i¡k¤kÑ2Ô2Ð;Ð;°TÐ;Ð;Ð;r   c                 óš   — |                       t          j        ¦  «        p,t          j        duo|                       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æ   a  s7   € ð �=Š=�œÑ Ô ÐX¥R¤Y°dÐ%:Ð%W¸t¿}º}ÍRÌYÑ?WÔ?WÐXr   r­   )Úmaxsizeé¶  Úmaskr€   c                 óV   — 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í   m  s#   € õ ŒH�T‰NŒN€EÝ„HˆU�O„O€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dS ) r˜   TNc                 óö   — t                                d|¦  «         || _        || _        || _        d | _        || _        t          ||¦  «        | _        t          j
        | _        |                      ¦   «          d S )Nzopen file: %s)ÚloggerÚdebugr%   rA   r—   r8   Ú
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¯   )r8   Úclosedrò   rA   rp   r%   ró   r   ÚtempfileÚmkstempr#   r�   ÚtempÚseekr>   )r   ÚcompressÚir/   s       r   rš   zLocalFileOpener._openˆ  s  € ØŒ6ˆ>˜TœVœ]‰>ØŒð 
4 #¨T¬YÐ"6Ð"6Ý˜dœi¨d¬iÐ8Ñ8Ô8�”ØÔ#ð >Ý$ TÔ%5Ô6�HØ%˜X d¤f°4´9Ð=Ñ=Ô=�D”Føõ #Ô*Ñ,Ô,‘��4Ý”˜‘”�Ø �”	Ý˜d¨¬Ð3Ñ3Ô3�”Ø˜$œ)Ð#Ð#Ø œFŸKšK¨¨1Ñ-Ô-�”	Ø”—’˜A‘”�Ø"œi�””��ð ˆ>ð $Ð#r   c                 ó¸   — d| j         vrt          ‚|                      ¦   «          | j                             |¦  «         | j                             ||z
  ¦  «        S ©NÚr)rA   r‡   rš   r8   rý   Úread)r   ÚstartÚends      r   Ú_fetch_rangezLocalFileOpener._fetch_rangeš  sN   € à�d”iÐÐÝÐØ�
Š
‰ŒˆØŒ�Š�EÑÔÐØŒv�{Š{˜3 ™;Ñ'Ô'Ð'r   c                 óö   — d | _         |                     dd ¦  «        }| j                             |¦  «         d|d         v r7d | _         |                      ¦   «          | j                              |¦  «         d S d S )NÚlocr  rA   )r8   ÚpopÚ__dict__Úupdaterš   rý   )r   Ústater  s      r   Ú__setstate__zLocalFileOpener.__setstate__¢  sw   € ØˆŒØ�iŠi˜˜tÑ$Ô$ˆØŒ×Ò˜UÑ#Ô#Ð#Ø�%˜”-ÐÐØˆDŒFØ�JŠJ‰LŒLˆLØŒF�KŠK˜ÑÔÐÐÐð  Ðr   c                 óä   — | j                              ¦   «         }|                     d¦  «         d| j        v r| j                             ¦   «         |d<   n| j        j        st          d¦  «        ‚|S )Nr8   r  r  z+Cannot serialise open write-mode local file)r
  Úcopyr	  rA   r8   Útellrù   r‡   )r   Úds     r   Ú__getstate__zLocalFileOpener.__getstate__«  sg   € ØŒM×ÒÑ Ô ˆØ	�Šˆc‰
Œ
ˆ
Ø�$”)ÐÐØ”v—{’{‘}”}ˆAˆe‰HˆHà”6”=ð PÝ Ð!NÑOÔOÐOØˆr   c                 ól  — | j         rt          d¦  «        ‚	 t          j        | j        | j        ¦  «         	 d}t          j        | j        |t          |¦  «         z  ¦  «         d S # t          $ r Y d S w xY w# t          $ r1}t          j         
                    | j        ¦  «        s|‚Y d }~d S d }~ww xY w)Nz0Can only commit if not already set to autocommitrè   )rò   ÚRuntimeErrorre   rx   rü   r%   r#   rÎ   rí   ÚPermissionErrorr    )r   ré   Úes      r   ÚcommitzLocalFileOpener.commitµ  sé   € ØŒ?ð 	SÝÐQÑRÔRÐRð	ÝŒK˜œ	 4¤9Ñ-Ô-Ð-ðØ�Ý”˜œ D­I°d©O¬OÐ+;Ñ$;Ñ<Ô<Ð<Ð<Ð<øÝð ð ð Ø��ðøøøøõ ð 	ð 	ð 	õ
 ”7—>’> $¤)Ñ,Ô,ð Ø�ðð ð ð ð ð øøøøð	øøøs(   ˜A8 ¸-A' Á'
A5Á4A5Á8
B3Â&B.Â.B3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)   )r8   r  ©r   Úargsr   s      r   r  zLocalFileOpener.readÔ  ó   € ØˆtŒvŒ{˜DÐ+ FÐ+Ð+Ð+r   c                 ó&   —  | j         j        |i |¤ŽS r)   )r8   Úwriter  s      r   r#  zLocalFileOpener.write×  s   € ØˆtŒvŒ|˜TÐ, VÐ,Ð,Ð,r   c                 ó&   —  | j         j        |i |¤ŽS r)   )r8   r  r  s      r   r  zLocalFileOpener.tellÚ  r!  r   c                 ó&   —  | j         j        |i |¤ŽS r)   )r8   rý   r  s      r   rý   zLocalFileOpener.seekÝ  r!  r   c                 ó&   —  | j         j        |i |¤ŽS r)   )r8   Úseekabler  s      r   r'  zLocalFileOpener.seekableà  ó   € ØˆtŒvŒ Ð/¨Ð/Ð/Ð/r   c                 ó&   —  | j         j        |i |¤ŽS r)   )r8   Úreadliner  s      r   r*  zLocalFileOpener.readlineã  r(  r   c                 ó&   —  | j         j        |i |¤ŽS r)   )r8   Ú	readlinesr  s      r   r,  zLocalFileOpener.readlinesæ  s   € ØˆtŒvÔ Ð0¨Ð0Ð0Ð0r   c                 ó4   — | j                              ¦   «         S r)   )r8   r�   r   s    r   r�   zLocalFileOpener.closeé  s   € ØŒv�|Š|‰~Œ~Ðr   c                 ó6   — | j                              |¦  «        S r)   )r8   rž   )r   r>   s     r   rž   zLocalFileOpener.truncateì  s   € ØŒv�Š˜tÑ$Ô$Ð$r   c                 ó   — | j         j        S r)   )r8   rù   r   s    r   rù   zLocalFileOpener.closedï  s   € àŒvŒ}Ðr   c                 ó4   — | j                              ¦   «         S r)   )ÚrawÚfilenor   s    r   r2  zLocalFileOpener.filenoó  s   € ØŒx�ŠÑ Ô Ð r   c                 ó8   — | j                              ¦   «          d S r)   )r8   Úflushr   s    r   r4  zLocalFileOpener.flushö  s   € ØŒ�Š‰Œˆˆˆr   c                 ó4   — | j                              ¦   «         S r)   )r8   Ú__iter__r   s    r   r6  zLocalFileOpener.__iter__ù  s   € ØŒv�ŠÑ Ô Ð r   c                 ó,   — t          | j        |¦  «        S r)   )rU   r8   )r   Úitems     r   Ú__getattr__zLocalFileOpener.__getattr__ü  s   € Ý�t”v˜tÑ$Ô$Ð$r   c                 ó   — d| _         | S rË   )Ú
_incontextr   s    r   Ú	__enter__zLocalFileOpener.__enter__ÿ  s   € ØˆŒØˆr   c                 óL   — d| _         | j                             |||¦  «         d S )NF)r;  r8   Ú__exit__)r   Úexc_typeÚ	exc_valueÚ	tracebacks       r   r>  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ù   r2  r4  r6  r9  r<  r>  r   r   r   r˜   r˜   z  sÍ  € € € € € à@Dðð ð ð ð(ð (ð (ð$(ð (ð (ðð ð ðð ð ðð ð ð(ð ð ð
˜$ð ð ð ð ð$˜$ð $ð $ð $ð $ð,ð ,ð ,ð-ð -ð -ð,ð ,ð ,ð,ð ,ð ,ð0ð 0ð 0ð0ð 0ð 0ð1ð 1ð 1ðð ð ð%ð % Sð %ð %ð %ð %ð ðð ñ „Xðð!ð !ð !ðð ð ð ð!ð !ð !ð%ð %ð %ðð ð ð8ð 8ð 8ð 8ð 8r   r˜   )rè   )r¥   rô   Úloggingr#   Úos.pathr%   r`   re   rK   rú   Ú	functoolsr   Úfsspecr   Úfsspec.compressionr   Úfsspec.corer   Úfsspec.utilsr   r   Ú	getLoggerrð   r
   rÀ   ræ   rB  rí   ÚIOBaser˜   r   r   r   ú<module>rL     sŸ  ðØ €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à	ˆÔ	˜>Ñ	*Ô	*€ðX$ð X$ð X$ð X$ð X$Ð(ñ X$ô X$ð X$ðv0<ð 0<ð 0<ðf	Yð 	Yð 	Yð €�1ÐÑÔð	ð 	�Cð 	 Cð 	ð 	ð 	ñ Ôð	ðK8ð K8ð K8ð K8ð K8�b”iñ K8ô K8ð K8ð K8ð K8r   