Ë
    Q^(hU  ã                   ó  — U d dl mZ d dlZd dl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mZmZmZ d dlZd dlmZmZmZmZ ddlmZ d	d
lmZ  ej:                  e«      Z eej@                  dd¬«      Z!ede"f   e#d<   ejH                  	 	 	 ddee"   dee"   deeee"f      deeddf   fd„«       Z%d„ Z&ejH                  ddœdee"ef   dee'   deeddf   fd„«       Z(y# e$ r 	 d dlmZ n# e$ r	 d dlmZ Y nw xY wY Œþw xY w)é    )ÚJSONDecodeErrorN)Úpartial)ÚPath)ÚCallableÚ	GeneratorÚOptionalÚUnion)ÚBaseFileLockÚFileLockÚSoftFileLockÚTimeouté   )Ú	constantsé   )ÚloggingT)ÚstreamÚallow_unicode.Ú	yaml_dumpÚsuffixÚprefixÚdirÚreturnc              +   ó’  K  — t        j                  d|| |dœ|¤Ž}t        |j                  «      j	                  «       –— 	 t        j                  |j                  «       	 |j                  «        y# t        $ r9 	 t        j                  |j                  t        ¬«       n# t        $ r Y nw xY wY ŒSw xY w# t        $ r Y yw xY w­w)a´  
    Context manager to create a temporary directory and safely delete it.

    If tmp directory cannot be deleted normally, we set the WRITE permission and retry.
    If cleanup still fails, we give up but don't raise an exception. This is equivalent
    to  `tempfile.TemporaryDirectory(..., ignore_cleanup_errors=True)` introduced in
    Python 3.10.

    See https://www.scivision.dev/python-tempfile-permission-error-windows/.
    )r   r   r   )ÚonerrorN© )
ÚtempfileÚTemporaryDirectoryr   ÚnameÚresolveÚshutilÚrmtreeÚ	ExceptionÚ_set_write_permission_and_retryÚcleanup)r   r   r   ÚkwargsÚtmpdirs        úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/huggingface_hub/utils/_fixes.pyÚSoftTemporaryDirectoryr(   +   s®   è ø€ ô" ×(Ñ(ÐY°¸vÈ3ÑYÐRXÑY€FÜ
ˆv�{‰{Ó
×
#Ñ
#Ó
%Ò%ðä�‰�f—k‘kÔ"ðØ�‰Õøô ò ð	Ü�M‰M˜&Ÿ+™+Ô/NÖOøÜò 	Ùð	üð	ûô ò Ùðüsk   ‚?CÁA3 Á"B8 Á2CÁ3	B5Á=%B#Â"B5Â#	B/Â,B5Â.B/Â/B5Â2CÂ4B5Â5CÂ8	CÃCÃCÃCc                 ó\   — t        j                  |t        j                  «        | |«       y )N)ÚosÚchmodÚstatÚS_IWRITE)ÚfuncÚpathÚexcinfos      r'   r#   r#   Q   s   € Ü‡H�HˆT”4—=‘=Ô!Ùˆ…Jó    ©ÚtimeoutÚ	lock_filer3   c             #   ón  K  — t         j                  }t        | |¬«      }t        j                  «       }	 t        j                  «       |z
  }|�||k\  rt	        t        | «      «      ‚	 |j                  |rt        |||z
  «      n|¬«       	 	 |–— 	 |j                  «        y# t        $ r5 t        j                  d| › dt        j                  «       |z
  d›d�«       Y nJt        $ r?}dt        |«      v r(t        j                  d| «       t        | |¬«      }Y d}~ŒéY d}~nd}~ww xY wŒö# t        $ r/ 	 t        | «      j!                  «        n# t        $ r Y nw xY wY yY yw xY w# 	 |j                  «        w # t        $ r- 	 t        | «      j!                  «        Y w # t        $ r Y Y w w xY ww xY wxY w­w)	aÄ  A filelock with some custom logic.

    This filelock is weaker than the default filelock in that:
    1. It won't raise an exception if release fails.
    2. It will default to a SoftFileLock if the filesystem does not support flock.

    An INFO log message is emitted every 10 seconds if the lock is not acquired immediately.
    If a timeout is provided, a `filelock.Timeout` exception is raised if the lock is not acquired within the timeout.
    r2   Nz!Still waiting to acquire lock on z (elapsed: z.1fz	 seconds)zuse SoftFileLock insteadzPFileSystem does not appear to support flock. Falling back to SoftFileLock for %s)r   ÚFILELOCK_LOG_EVERY_SECONDSr   Útimer   ÚstrÚacquireÚminÚloggerÚinfoÚNotImplementedErrorÚwarningr   ÚreleaseÚOSErrorr   Úunlink)r4   r3   Úlog_intervalÚlockÚ
start_timeÚelapsed_timeÚes          r'   ÚWeakFileLockrG   V   s¡  è ø€ ô ×7Ñ7€LÜ�I |Ô4€DÜ—‘“€Jà
Ü—y‘y“{ ZÑ/ˆØÐ <°7Ò#:Üœ#˜i›.Ó)Ð)ð	Ø�L‰LÉg¤ \°7¸\Ñ3IÔ!JÐ[gˆLÔhð ð	ØŠ
ð	Ø�L‰L�Nøô% ò 	Ü�K‰KØ3°I°;¸kÌ$Ï)É)Ë+ÐXbÑJbÐcfÐIgÐgpÐqöô #ò 	Ø)¬S°«VÑ3Ü—‘ØfÐhqôô $ I°|ÔD�Üô 4ûð	úð øô4 ò 	ðÜ�Y“×&Ñ&Õ(øÜò ÙðúÙñ )ð	ûð	Ø�L‰L�NøÜò 	ðÜ�Y“×&Ñ&Ö(øÜò Úðúð	ÿsØ   ‚A%F5Á(#B# ÂF5ÂE& ÂD+ Â"F5Â#;D'ÃF5Ã D'Ã(0D"Ä
F5Ä"D'Ä'F5Ä+	E#Ä5EÅE#Å	EÅE#ÅEÅE#ÅF5Å"E#Å#F5Å&F2Å(E9Å8F2Å9	F/ÆFÆF2Æ	F+	Æ'F/Æ(F2Æ*F+	Æ+F/Æ/F2Æ2F5)NNN))Úrequestsr   ÚImportErrorÚ
simplejsonÚjsonÚ
contextlibr*   r    r,   r   r7   Ú	functoolsr   Úpathlibr   Útypingr   r   r   r	   ÚyamlÚfilelockr
   r   r   r   Ú r   r   Ú
get_loggerÚ__name__r;   Údumpr   r8   Ú__annotations__Úcontextmanagerr(   r#   ÚfloatrG   r   r1   r'   ú<module>rY      s[  ðð)Ý(ó Û 	Û Û Û Û Ý Ý ß 7Ó 7ã ß BÓ Bå Ý ð 
ˆ×	Ñ	˜HÓ	%€ñ !(¨¯	©	¸$ÈdÔ S€	ˆ8�C˜�HÑÓ Sð ×Ñà Ø Ø&*ñ"Ø�S‰Mð"à�S‰Mð"ð 
�%˜˜c˜	Ñ"Ñ	#ð"ð
 ˆt�T˜4ÐÑ ò"ó ð"òJð
 ×Ñà?Cò.Ø�S˜$�YÑð.Ø-5°e©_ð.àˆ|˜T 4Ð'Ñ(ò.ó ñ.øðc ò )ð)Þ.øØò )ß(ð)üð)ús5   ‚C& Ã&DÃ,C3Ã2DÃ3DÃ>DÄ DÄDÄD