
    i:                        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__     t/var/www/vps2.regionflexible.com/Desarrollo/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<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	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"[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   readr>   )r   r   streams      r   compute_file_hashrO   O   s    
 
4 EF v&**,E E 
"FKKM*	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/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: )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{{}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	   file_downloadr
   shar   r   hf_apir   compiler:   r   HashAlgor!   rX   r   r3   rH   rO   rf   tupleru   r   r   r   <module>r      sg   	 !  4 4  , & !  RZZ 12 y  '( $  Wd WtCI WD C$J SV B
ED 
EX 
E# 
E-j)- T	?- 	-
 - -`     Dj	 
 d{  d{  49 r   