
    7P[ix                        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	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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e   defdZdededefdZdeee
d
   f   deeef   dededef
dZd ed!edee   d"ee   d#ee   de eef   fd$Z!y)%    N)	dataclass)Path)TYPE_CHECKINGLiteralOptional	TypedDictUnion   )	constants)repo_folder_name   )git_hashsha_fileobj)RepoFile
RepoFolderz^[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__     q/var/www/html/chatbot/Makanify-Chatbot-2/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_filesr6   '   s?     8<zz#V!!))+AMM$((*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	fullmatchr2   	read_textstrip
ValueErroris_diriterdirnamelen)r7   r%   refs_dirsnapshots_dirref_pathmain_refr5   
candidatess           r   _resolve_commit_hash_from_cacherK   .   sB    &00:&H"[0Mh&%%w%7==??:hZ/`ai`jjmnoo & H!!7!399;;!F}oUuvww"/"7"7"9qQQXXZL^LhLhijioioLp!&&qJ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   readrA   )r   r   streams      r   compute_file_hashrR   O   s    
 
4 EF v&**,E E 
"FKKM*	E E
 7	{CDDE Es   A/A/!A//A8remote_by_path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_idrR   appendr   r$   rE   )rS   rT   r%   r*   remote_pathslocal_pathsmissingextrabothr'   rel_pathremote_entry
local_pathrV   lfs_shar   r   r^   r   s                      r   verify_mapsri   \   s=    ~&Lm$K\K/0G;-.E,,-D!#J n%h/"8,
lE4025/'#x.t?z#t4ggh'G"*I7|))+H"**G"I7|))+H":y9XhHxPVbk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: )rj   rk   zRepo is not present in cache: z.. Use 'hf download' first or pass --local-dir.r:   z0Snapshot directory does not exist for revision 'z': .)r   
expanduserresolverB   rA   r   DEFAULT_REVISIONHF_HUB_CACHEr   existsrK   )
rj   rk   r%   rl   rm   r-   
cache_rootr7   commitsnapshot_dirs
             r   resolve_local_rootrx      s    I))+335{{}UVZU[\]]h<)"<"<==i99#9#9:EEGOOQJ"27i"XXN  ",^,<<jk
 	
 -^XFF!K/&8L KF8SVWcVddefggr   )"redataclassesr   pathlibr   typingr   r   r   r   r	    r   file_downloadr   shar   r   hf_apir   r   compiler=   r   HashAlgor$   r[   r   r6   rK   rR   ri   tuplerx   r   r   r   <module>r      sn   	 !  E E  , & -  RZZ 12 y  '( $  Wd WtCI WD HSM VY B
ED 
EX 
E# 
E-e$<==>- T	?- 	-
 - -`     sm	 
 ~  ~  49 r   