Ë
    -Œ:j:  ã                   ó”  — d dl 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 dd	lmZmZ erdd
lmZ  e j$                  d«      Z G d„ de«      Zed   Z ed¬«       G d„ d«      «       Zdedeeef   fd„Zdededz  defd„Zdededefd„Zdeedf   deeef   dededef
d „Zd!ed"ededz  d#edz  d$edz  deeef   fd%„Zy)&é    N)Ú	dataclass)ÚPath)ÚTYPE_CHECKINGÚLiteralÚ	TypedDicté   )Ú	constants)Úrepo_folder_nameé   )Úgit_hashÚsha_fileobj)ÚRepoFilez^[0-9a-f]{40}$c                   ó6   — e Zd ZU eed<   eed<   eed<   eed<   y)ÚMismatchÚpathÚexpectedÚactualÚ	algorithmN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__© ó    úe/var/www/html/tokenscope/api/venv/lib/python3.12/site-packages/huggingface_hub/utils/_verification.pyr   r      s   … Ø
ƒIØƒMØƒKØ„Nr   r   )Úsha256úgit-sha1T)Úfrozenc                   ó\   — e Zd ZU eed<   eed<   ee   ed<   ee   ed<   ee   ed<   eed<   y)ÚFolderVerificationÚrevisionÚchecked_countÚ
mismatchesÚmissing_pathsÚextra_pathsÚverified_pathN)	r   r   r   r   r   ÚintÚlistr   r   r   r   r   r!   r!      s1   … àƒMØÓØ�X‘ÓØ˜‘9ÓØ�c‘ÓØÔr   r!   ÚrootÚreturnc                 ó¨   — | j                  d«      D �ci c]3  }|j                  «       sŒ|j                  | «      j                  «       |“Œ5 c}S c c}w )z]
    Return a mapping of repo-relative path -> absolute path for all files under `root`.
    Ú*)ÚrglobÚis_fileÚrelative_toÚas_posix)r*   Úps     r   Úcollect_local_filesr3   '   s?   € ð 8<·z±zÀ#³ÖV°!È!Ï)É)Í+ˆA�M‰M˜$Ó×(Ñ(Ó*¨AÑ-ÒVÐVùÒVs
   ”Aª"AÚstorage_folderr"   c                 óx  — |rt         j                  |«      r|S | dz  }| dz  }|rG||z  }|j                  «       r |j                  d¬«      j	                  «       S t        d|› d|› d�«      ‚|dz  }|j                  «       r |j                  d¬«      j	                  «       S |j                  «       st        d	|› d
�«      ‚|j                  «       D �cg c]?  }|j                  «       sŒt         j                  |j                  «      sŒ4|j                  ‘ŒA }}t        |«      dk(  r|d   S t        d«      ‚c c}w )zR
    Resolve a commit hash from a cache repo folder and an optional revision.
    ÚrefsÚ	snapshotszutf-8)Úencodingz
Revision 'z1' could not be resolved in cache (expected file 'z').Úmainz+Cache repo is missing snapshots directory: z . Provide --revision explicitly.r   r   zhAmbiguous cached revision: multiple snapshots found and no refs to disambiguate. Please pass --revision.)
Ú_REGEX_COMMIT_HASHÚ	fullmatchr/   Ú	read_textÚstripÚ
ValueErrorÚis_dirÚiterdirÚnameÚlen)r4   r"   Úrefs_dirÚsnapshots_dirÚref_pathÚmain_refr2   Ú
candidatess           r   Ú_resolve_commit_hash_from_cacherH   .   sB  € ñ Ô&×0Ñ0°Ô:Øˆà Ñ&€HØ" [Ñ0€MáØ˜hÑ&ˆØ×ÑÔØ×%Ñ%¨wÐ%Ó7×=Ñ=Ó?Ð?Ü˜: h ZÐ/`ÐaiÐ`jÐjmÐnÓoÐoð ˜&Ñ €HØ×ÑÔØ×!Ñ!¨7Ð!Ó3×9Ñ9Ó;Ð;à×ÑÔ!ÜÐFÀ}ÀoÐUuÐvÓwÐwà"/×"7Ñ"7Ó"9Öq˜Q¸Q¿X¹X½ZÔL^×LhÑLhÐij×ioÑioÕLp�!—&“&Ðq€JÐqÜ
ˆ:ƒ˜!ÒØ˜!‰}Ðä
Øróð ùò	 rs   ÃD7Ã)D7Ä	D7r   r   c                 óö   — | j                  d«      5 }|dk(  r"t        |«      j                  «       cddd«       S |dk(  r"t        |j	                  «       «      cddd«       S t        d|› �«      ‚# 1 sw Y   yxY w)zM
    Compute the checksum of a local file using the requested algorithm.
    Úrbr   Nr   zUnsupported hash algorithm: )Úopenr   Úhexr   Úreadr>   )r   r   Ústreams      r   Úcompute_file_hashrO   O   s‚   € ð
 
�‰�4‹ð E˜FØ˜Ò Ü˜vÓ&×*Ñ*Ó,÷Eñ Eð ˜
Ò"Ü˜FŸK™K›MÓ*÷	Eñ Eô
 Ð7¸	°{ÐCÓDÐD÷Eð Eús   ’A/ºA/Á!A/Á/A8Úremote_by_pathr   Úlocal_by_pathr'   c           	      óH  — t        | «      }t        |«      }t        ||z
  «      }t        ||z
  «      }t        ||z  «      }g }	|D ]Â  }
| |
   }||
   }t        |dd«      }|�t        |dd«      nd}|€!t        |t        «      r|j                  d«      }|rd}t        |«      j                  «       }n'|j                  }d}t        |«      j                  «       }t        ||«      }||k7  sŒ¥|	j                  t        |
|||¬«      «       ŒÄ t        |t        |«      |	|||¬«      S )zHCompare remote entries and local files and return a verification result.ÚlfsNr   r   )r   r   r   r   )r"   r#   r$   r%   r&   r'   )ÚsetÚsortedÚgetattrÚ
isinstanceÚdictÚgetr   ÚlowerÚblob_idrO   Úappendr   r!   rB   )rP   rQ   r"   r'   Úremote_pathsÚlocal_pathsÚmissingÚextraÚbothr$   Úrel_pathÚremote_entryÚ
local_pathrS   Úlfs_shar   r   r[   r   s                      r   Úverify_mapsrf   \   s=  € ô �~Ó&€LÜ�mÓ$€Kä�\ KÑ/Ó0€GÜ�; Ñ-Ó.€EÜ�, Ñ,Ó-€Dà!#€Jàò nˆØ% hÑ/ˆØ" 8Ñ,ˆ
ä�l E¨4Ó0ˆØ25°/”'˜#˜x¨Ô.ÀtˆØˆ?œz¨#¬tÔ4Ø—g‘g˜hÓ'ˆGÙØ"*ˆIÜ˜7“|×)Ñ)Ó+‰Hà"×*Ñ*ˆGØ"ˆIÜ˜7“|×)Ñ)Ó+ˆHä" :¨yÓ9ˆà�XÓØ×Ñœh¨H¸xÐPVÐbkÔlÕmð'nô* ØÜ˜$“iØØØØ#ôð r   Úrepo_idÚ	repo_typeÚ	cache_dirÚ	local_dirc                 ó   — |�[t        |«      j                  «       j                  «       }|j                  «       st	        d|› �«      ‚||xs t
        j                  fS t        |xs t
        j                  «      j                  «       j                  «       }|t        | |¬«      z  }|j                  «       st	        d|› d�«      ‚t        ||«      }|dz  |z  }	|	j                  «       st	        d|› d|	› d�«      ‚|	|fS )	zW
    Resolve the root directory to scan locally and the remote revision to verify.
    z6Local directory does not exist or is not a directory: )rg   rh   zRepo is not present in cache: z.. Use 'hf download' first or pass --local-dir.r7   z0Snapshot directory does not exist for revision 'z': ú.)r   Ú
expanduserÚresolver?   r>   r	   ÚDEFAULT_REVISIONÚHF_HUB_CACHEr
   ÚexistsrH   )
rg   rh   r"   ri   rj   r*   Ú
cache_rootr4   ÚcommitÚsnapshot_dirs
             r   Úresolve_local_rootru   Œ   s  € ð ÐÜ�I‹×)Ñ)Ó+×3Ñ3Ó5ˆØ�{‰{Œ}ÜÐUÐVZÐU[Ð\Ó]Ð]Ø�hÒ<¤)×"<Ñ"<Ð=Ð=ä�iÒ9¤9×#9Ñ#9Ó:×EÑEÓG×OÑOÓQ€JØÔ"2¸7ÈiÔ"XÑX€NØ× Ñ Ô"ÜØ,¨^Ð,<Ð<jÐkó
ð 	
ô -¨^¸XÓF€FØ! KÑ/°&Ñ8€LØ×ÑÔ ÜÐKÈFÈ8ÐSVÐWcÐVdÐdeÐfÓgÐgØ˜ÐÐr   )ÚreÚdataclassesr   Úpathlibr   Útypingr   r   r   Ú r	   Úfile_downloadr
   Úshar   r   Úhf_apir   Úcompiler:   r   ÚHashAlgor!   rX   r   r3   rH   rO   rf   Útupleru   r   r   r   ú<module>r�      sg  ðÛ 	Ý !Ý ß 4Ñ 4å Ý ,ß &ñ Ý!ð  �R—Z‘ZÐ 1Ó2Ð ôˆyô ð Ð'Ñ(€ñ �$Ô÷ð ó ððW˜dð W t¨C°¨I¡ó Wð°Dð ÀCÈ$ÁJð ÐSVó ðB
E˜Dð 
E¨Xð 
E¸#ó 
Eð-à˜˜j˜Ñ)ð-ð ˜˜T˜	‘?ð-ð ð	-ð
 ð-ð ó-ð` àð ð ð ð �D‰jð	 ð
 �d‰{ð ð �d‰{ð ð ˆ4�ˆ9Ñô r   