Ë
    °ëjÍ  ã                   óü  — 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
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j8                  e«      Z eej>                  dd¬«      Z ede!f   e"d<   ejF                  	 	 	 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jF                  dee!ef   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        úi/home/oem/CyberBrain26-unified/dev-env/.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#   P   s   € Ü‡H�HˆT”4—=‘=Ô!Ùˆ…Jó    Ú	lock_filec              #   óö  K  — t        | t        j                  ¬«      }	 	 |j                  «        	 |–— 	 |j                  «       S # t        $ r t
        j                  d| «       Y nXt        $ rM}dt        |«      v r6t
        j                  d| «       t        | t        j                  ¬«      }Y d}~Œ”Y d}~nd}~ww xY wŒ¡# t        $ r- 	 t        | «      j                  «        Y y# t        $ r Y Y yw xY ww xY w­w)aM  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.
    )Útimeoutz#still waiting to acquire lock on %szuse SoftFileLock insteadzPFileSystem does not appear to support flock. Falling back to SoftFileLock for %sN)r   r   ÚFILELOCK_LOG_EVERY_SECONDSÚacquirer   ÚloggerÚinfoÚNotImplementedErrorÚstrÚwarningr   ÚreleaseÚOSErrorr   Úunlink)r2   ÚlockÚes      r'   ÚWeakFileLockrA   U   sè   è ø€ ô �I¤y×'KÑ'KÔL€DØ
ð	Ø�L‰LŒNð à
‚JðØ�|‰|‹~Ðøô# ò 	JÜ�K‰KÐ=¸yÖIÜ"ò 	Ø)¬S°«VÑ3ô —‘ØfÐhqôô $ I´y×7[Ñ7[Ô\�Üô 4ûð	úð øô* ò ð	Ü�‹O×"Ñ"Ö$øÜò 	Úð	úðüsz   ‚C9 A °C9¶C  ÁC9ÁB<Á%C9Á'B<Á/>B7Â-
C9Â7B<Â<C9Ã 	C6Ã
C%Ã#C9Ã%	C2Ã.C6Ã/C9Ã1C2Ã2C6Ã6C9)NNN)'Úrequestsr   ÚImportErrorÚ
simplejsonÚjsonÚ
contextlibr*   r    r,   r   Ú	functoolsr   Úpathlibr   Útypingr   r   r   r	   ÚyamlÚfilelockr
   r   r   r   Ú r   r   Ú
get_loggerÚ__name__r7   Údumpr   r:   Ú__annotations__Úcontextmanagerr(   r#   rA   r   r1   r'   ú<module>rR      sG  ðð)Ý(ó Û 	Û Û Û Ý Ý ß 7Ó 7ã ß BÓ Bå Ý ð 
ˆ×	Ñ	˜HÓ	%€ñ !(¨¯	©	¸$ÈdÔ S€	ˆ8�C˜�HÑÓ Sð ×Ñà Ø Ø&*ñ"Ø�S‰Mð"à�S‰Mð"ð 
�%˜˜c˜	Ñ"Ñ	#ð"ð
 ˆt�T˜4ÐÑ ò"ó ð"òJð
 ×Ñð#˜E # t )Ñ,ð #°¸<ÈÈtÐ;SÑ1Tò #ó ñ#øða ò )ð)Þ.øØò )ß(ð)üð)ús5   ‚C ÃC;Ã C'Ã&C;Ã'C5Ã2C;Ã4C5Ã5C;Ã:C;