Ë
    ¸­ hç  ã                  óÂ  — d dl mZ d dl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mZ d dlmZ d d	lmZmZ d d
lmZ d dlmZmZ d dlmZ ddœd d„Zd!d„Zd"d„Z d dddœ	 	 	 	 	 	 	 	 	 d#d„Z!d dddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 d$d„Z"d%d„Z#dddœ	 	 	 	 	 	 	 	 	 d&d„Z$dddœ	 	 	 	 	 	 	 	 	 d&d„Z%ddddœ	 	 	 	 	 	 	 	 	 	 	 d'd„Z&	 	 d(	 	 	 	 	 	 	 	 	 	 	 d)d„Z'y)*é    )ÚannotationsN)Ú	Generator)Údatetime)ÚAny)Úget_path)Úassert_fileÚassert_not_dirÚexists)Úrequire_requests)Úmake_dirs_for_fileÚremove_file)Úsplit_filepath)Úget_permissionsÚset_permissions)ÚPathInúutf-8©Úencodingc               óœ   — t        | «      } t        | «       d}t        | |¬«      5 }|j                  «       }ddd«       |S # 1 sw Y   |S xY w)zV
    Read the content of the file at the given path using the specified encoding.
    Ú r   N)Ú	_get_pathr   ÚopenÚread)Úpathr   ÚcontentÚfiles       úG/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fsutil/io.pyÚ	read_filer      sK   € ô �T‹?€DÜ�ÔØ€GÜ	ˆd˜XÔ	&ð ¨$Ø—)‘)“+ˆ÷à€N÷à€Nús   ¦AÁAc                óŠ   — t        «       } |j                  | fi |¤Ž}|j                  «        t        |j                  «      }|S )z8
    Read the content of the file at the given url.
    )r   ÚgetÚraise_for_statusÚstrÚtext)ÚurlÚkwargsÚrequestsÚresponser   s        r   Úread_file_from_urlr(       s@   € ô  Ó!€HØˆx�|‰|˜CÑ* 6Ñ*€HØ×ÑÔÜ�(—-‘-Ó €GØ€Nó    c                ó^   — t        | «      } t        | «      }t        j                  |fi |¤Ž}|S )z@
    Read and decode a json encoded file at the given path.
    )r   r   ÚjsonÚloads)r   r%   r   Údatas       r   Úread_file_jsonr.   +   s.   € ô �T‹?€DÜ˜‹o€GÜ�:‰:�gÑ( Ñ(€DØ€Kr)   éÿÿÿÿ©Ú
line_startÚline_endr   c             #  óZ  K  — t        | «      } |dk  }|dk  }|s|r0t        | «      }|rt        d||z   «      }|rt        ||z   |dz
  «      }t	        | d«      5 }|j                  d«       d}|D ]$  }	||k\  r||k  r|	j                  |«      –— |dz  }Œ& 	 d d d «       y # 1 sw Y   y xY w­w)Nr   é   Úrb)r   Úread_file_lines_countÚmaxÚminr   ÚseekÚdecode)
r   r1   r2   r   Úline_start_negativeÚline_end_negativeÚlines_countr   Ú
line_indexÚlines
             r   Ú_read_file_lines_in_ranger@   5   sÇ   è ø€ ô �T‹?€DØ$ q™.ÐØ  1™ÐÙÑ/ä+¨DÓ1ˆáÜ˜Q 
¨[Ñ 8Ó9ˆJÙÜ˜8 kÑ1°;À±?ÓCˆHÜ	ˆd�DÓ	ð ˜TØ�	‰	�!ŒØˆ
Øò 	ˆDØ˜ZÒ'¨J¸(Ò,BØ—k‘k (Ó+Ò+Ø˜!‰O‰Jñ	÷÷ ñ üs   ‚AB+Á=BÂ	B+ÂB(Â$B+T)r1   r2   Ústrip_whiteÚ
skip_emptyr   c               ó,  — t        | «      } t        | «       |dk(  r#|dk(  rt        | |¬«      }|j                  «       }nt	        t        | |||¬«      «      }|r|D �cg c]  }|j                  «       ‘Œ }}|r|D �cg c]  }|sŒ|‘Œ	 }}|S c c}w c c}w )zž
    Read file content lines.
    It is possible to specify the line indexes (negative indexes too),
    very useful especially when reading large files.
    r   r/   r   r0   )r   r   r   Ú
splitlinesÚlistr@   Ústrip)	r   r1   r2   rA   rB   r   r   Úlinesr?   s	            r   Úread_file_linesrH   P   s�   € ô �T‹?€DÜ�ÔØ�Q‚˜8 rš>Ü˜D¨8Ô4ˆØ×"Ñ"Ó$‰äÜ%ØØ%Ø!Ø!ô	ó
ˆñ Ø*/Ö0 $�—‘•Ð0ˆÐ0ÙØ"'Ö0˜$ª4’Ð0ˆÐ0Ø€Lùò 1ùâ0s   ÁBÁ<BÂBc                óÀ   — t        | «      } t        | «       d}t        | d«      5 }|j                  d«       t	        d„ |D «       «      }ddd«       |S # 1 sw Y   |S xY w)z 
    Read file lines count.
    r   r5   c              3  ó    K  — | ]  }d –— Œ y­w)r4   N© )Ú.0r?   s     r   ú	<genexpr>z(read_file_lines_count.<locals>.<genexpr>|   s   è ø€ Ò- œ!Ñ-ùs   ‚N)r   r   r   r9   Úsum)r   r=   r   s      r   r6   r6   s   sa   € ô �T‹?€DÜ�ÔØ€KÜ	ˆd�DÓ	ð .˜TØ�	‰	�!ŒÜÑ-¨Ô-Ó-ˆ÷.ð Ð÷.ð Ðús   ¥$AÁAF©Úappendr   c               ó¢  — t        | «      } |rdnd}|rt        | |¬«      |z   }t        | «      \  }}t        j                  «       dk(  rdnd}	 t        j                  ||||¬«      5 }|j                  |«       |j                  «        t        j                  |j                  «       «       |j                  }	t        | «      rt        | «      nd }
t        j                  |	| «       |
rt!        | |
«       d d d «       	rt        |	«      rt%        |	«       y y y # 1 sw Y   Œ$xY w# t"        $ r Y Œ2w xY w# 	rt        |	«      rt%        |	«       w w w xY w)NÚaÚwr   ÚWindowsFT)ÚmodeÚdirÚdeleter   )r   r   r   ÚplatformÚsystemÚtempfileÚNamedTemporaryFileÚwriteÚflushÚosÚfsyncÚfilenoÚnamer
   r   Úreplacer   ÚFileNotFoundErrorr   )r   r   rP   r   rU   ÚdirpathÚ_Úauto_delete_temp_filer   Ú	temp_pathÚpermissionss              r   Ú_write_file_atomicri   €   s0  € ô �T‹?€DÙ‰3˜c€DÙÜ˜D¨8Ô4°wÑ>ˆÜ Ó%�J€GˆQÜ%-§_¡_Ó%6¸)Ò%C™EÈÐð#Ü×(Ñ(ØØØ(àô
ð 	3ð Ø�J‰J�wÔØ�J‰JŒLÜ�H‰H�T—[‘[“]Ô#ØŸ	™	ˆIÜ39¸$´<œ/¨$Ô/ÀTˆKÜ�J‰J�y $Ô'ÙÜ  kÔ2÷	3ñ. œ 	Ô*Ü˜	Õ"ð +ˆ9÷/	3ð 	3ûô ò ñ 	ð	ûñ œ 	Ô*Ü˜	Õ"ð +ˆ9ús=   ÁD# Á'BDÃ4D# ÄD ÄD# Ä#	D/Ä,D2 Ä.D/Ä/D2 Ä2Ec               óx   — |rdnd}t        | ||¬«      5 }|j                  |«       d d d «       y # 1 sw Y   y xY w)NrR   rS   r   )r   r\   )r   r   rP   r   rU   r   s         r   Ú_write_file_non_atomicrk   ©   s<   € ñ ‰3˜c€DÜ	ˆd�D 8Ô	,ð °Ø�
‰
�7Ô÷÷ ñ ús   •0°9©rP   r   Úatomicc               óz   — t        | «      } t        | «       t        | «       |rt        nt        } || |||¬«       y)zB
    Write file with the specified content at the given path.
    rO   N)r   r	   r   ri   rk   )r   r   rP   r   rm   Úwrite_file_funcs         r   Ú
write_filerp   µ   s<   € ô �T‹?€DÜ�4ÔÜ�tÔÙ,2Õ(Ô8N€OÙØØØØö	r)   c                ó’   — t        | «      } dd„}|j                  d|«       t        j                  |fi |¤Ž}t	        | |d||¬«       y)z]
    Write a json file at the given path with the specified data encoded in json format.
    c                óŽ   — t        | t        «      r| j                  «       S t        | t        «      rt	        | «      S t        | «      S )N)Ú
isinstancer   Ú	isoformatÚsetrE   r"   )Úobjs    r   Údefault_encoderz(write_file_json.<locals>.default_encoderØ   s5   € Ü�cœ8Ô$Ø—=‘=“?Ð"Ü˜œSÔ!Ü˜“9ÐÜ�3‹xˆr)   ÚdefaultFrl   N)rv   r   Úreturnr   )r   Ú
setdefaultr+   Údumpsrp   )r   r-   r   rm   r%   rw   r   s          r   Úwrite_file_jsonr|   Ì   sN   € ô �T‹?€Dóð ×Ñ�i Ô1Ü�j‰j˜Ñ( Ñ(€GÜØØØØØör)   )r   r   r   r"   ry   r"   )r$   r"   r%   r   ry   r"   )r   r   r%   r   ry   r   )
r   r   r1   Úintr2   r}   r   r"   ry   zGenerator[str])r   r   r1   r}   r2   r}   rA   ÚboolrB   r~   r   r"   ry   z	list[str])r   r   ry   r}   )
r   r   r   r"   rP   r~   r   r"   ry   ÚNone)r   r   r   r"   rP   r~   r   r"   rm   r~   ry   r   )r   F)r   r   r-   r   r   r"   rm   r~   r%   r   ry   r   )(Ú
__future__r   r+   r^   rX   rZ   Úcollections.abcr   r   Útypingr   Úfsutil.argsr   r   Úfsutil.checksr   r	   r
   Úfsutil.depsr   Úfsutil.operationsr   r   Úfsutil.pathsr   Úfsutil.permsr   r   Úfsutil.typesr   r   r(   r.   r@   rH   r6   ri   rk   rp   r|   rK   r)   r   ú<module>rŠ      sí  ðÝ "ã Û 	Û Û Ý %Ý Ý å -ß =Ñ =Ý (ß =Ý 'ß 9Ý ð 07õ 	óóð ØØñØ
ðð ðð ð	ð
 ðð óð< ØØØØñ Ø
ð ð ð ð ð	 ð
 ð ð ð ð ð ð ó óF
ð" Øñ&#Ø
ð&#àð&#ð ð	&#ð
 ð&#ð 
ó&#ðZ Øñ	Ø
ð	àð	ð ð		ð
 ð	ð 
ó	ð  ØØñØ
ðàðð ð	ð
 ðð ðð 
óð4 Øð	Ø
ðà
ðð ðð ð	ð
 ðð 
ôr)   