
    6pj}                        S r SSKJr  SSKrSSKJr  SSKJrJr  SSK	J
r  SSKJr  SSKJr  SS	KJr  \" 5       r/ S
Qr " S S\5      r " S S\S9rg)u   Git wrapper — shim delegating to ``modelscope_hub._git``.

Preserves the legacy ``GitCommandWrapper`` Singleton interface used
throughout the SDK while routing primitive Git operations through
:class:`modelscope_hub._git.GitCommand`.
    )annotationsN)Path)ListOptional)
GitCommand)GitError)MASTER_MODEL_BRANCH)
get_logger)r   GitCommandWrapper	Singletonc                  <   ^  \ rS rSr% Sr0 rS\S'   U 4S jrSrU =r	$ )r      uD   Metaclass enforcing one instance per class — preserved for parity.dict
_instancesc                z   > X R                   ;  a  [        TU ]  " U0 UD6U R                   U '   U R                   U    $ N)r   super__call__)clsargskwargs	__class__s      N/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/modelscope/hub/git.pyr   Singleton.__call__   s9    nn$"''"2D"CF"CCNN3~~c""     )
__name__
__module____qualname____firstlineno____doc__r   __annotations__r   __static_attributes____classcell__)r   s   @r   r   r      s    NJ# #r   r   c                  P   \ rS rSrSrSrSSS jjrS rSS jrSS jr	SS	 jr
SS
 jrS S jrS!S jrS"S jr S         S#S jjr  S$     S%S jjr S&           S'S jjr  S(     S)S jjrS*S jrS+S jrS+S jrS S jrS,S jr\4       S-S jjrS.S jrSrg)/r   #   u   Backward-compatible Git wrapper.

Wraps :class:`modelscope_hub._git.GitCommand` to expose the legacy
instance-method API (``clone``, ``push``, ``pull``, ``tag``…) used
by callers that pre-date the SDK refactor.
gitNc                x    U=(       d    U R                   U l        [        R                  " U R                  5        g r   )default_git_pathgit_path_GitCommandset_git_path)selfpaths     r   __init__GitCommandWrapper.__init__-   s&    5 5 5  /r   c                     [         R                  " U Vs/ s H  o"(       d  M  UPM     sn6 $ s  snf ! [         a  n[        [	        U5      5      UeSnAff = f)z;Run a git subcommand, raising :class:`GitError` on failure.N)r+   _run	Exceptionr   str)r-   r   aexcs       r   _run_git_command"GitCommandWrapper._run_git_command4   sM    	.##%;Aa%;<<%; 	.3s8$#-	.s$   3 
..3 3 
AAAc                .    [         R                  " X!5      $ r   )r+   _inject_token)r-   	git_tokenurls      r   _add_git_token GitCommandWrapper._add_git_token>   s    ((88r   c                .    [         R                  " U5      $ r   )r+   strip_token_from_url)r-   r<   s     r   remove_token_from_url'GitCommandWrapper.remove_token_from_urlA   s    //44r   c                ,    [         R                  " 5       $ r   )r+   is_lfs_available)r-   s    r   is_lfs_installed"GitCommandWrapper.is_lfs_installedG   s    ++--r   c                d     [         R                  " [        U5      5        g! [         a     gf = f)NTF)r+   lfs_installr   r3   )r-   repo_dirs     r   git_lfs_install!GitCommandWrapper.git_lfs_installJ   s.    	##DN3 		s   " 
//c                    U R                  SUSS5      nUR                  R                  5       R                  5        Vs/ s H   nU(       d  M  UR	                  S5      S   PM"     sn$ s  snf )N-Clfszls-files )r7   stdoutstrip
splitlinessplit)r-   rI   rsplines       r   list_lfs_files GitCommandWrapper.list_lfs_filesQ   se    ##D(E:F,/JJ,<,<,>,I,I,K
,KD  DJJsOB,K
 	
 
s   A)A)c                    U R                  U5      nSU;   a  g U R                  X#5      nU R                  SUSSSU5        g )Nz//oauth2rM   remotezset-urlorigin)get_repo_remote_urlr=   r7   )r-   rI   r;   r<   auth_urls        r   config_git_token"GitCommandWrapper.config_git_token[   sH    &&x0&&y6dHh	8&	(r   c                    SSK Jn  UR                  5       u  pEU(       a  U(       d  g [        R                  R                  X5      nU R                  SUSSU5        U R                  SUSSU5        g )Nr   )ModelScopeConfigrM   configz	user.namez
user.email)modelscope.hub.apira   get_user_infoosr.   joinr7   )r-   repo_base_dir	repo_namera   	user_name
user_emailrI   s          r   add_user_infoGitCommandWrapper.add_user_infoc   s_    7 0 > > @	j77<<9dHhYOdHh(	*r   c                    [        U5      U-  n [        R                  " X6XRS9  g ! [         aM  nUS-  R	                  5       (       a  [
        R                  SU5         S nAg [        [        U5      5      UeS nAff = f)N)r<   
target_dirbranchtokenz.gitz`git clone exited non-zero but repository was cloned at %s. Likely a post-clone hook. Continuing.)	r   r+   cloner3   is_dirloggerwarningr   r4   )r-   rg   r;   r<   rh   ro   targetr6   s           r   rq   GitCommandWrapper.clonep   s{     m$y0		.6L 	.''))CDJL 3s8$#-	.s   & 
A=.A8#A88A=c                *    U R                  SUSX#5      $ )NrM   pullr7   )r-   rI   rZ   ro   s       r   rx   GitCommandWrapper.pull   s     $$T8VVLLr   c                    U R                  X#5      nSUSXt SU 3/nU(       a  UR                  S5        U R                  " U6 $ )NrM   push:z-f)r=   appendr7   )	r-   rI   r;   r<   local_branchremote_branchforcer]   r   s	            r   r|   GitCommandWrapper.push   sQ     &&y6(FHa.O
 KK$$d++r   c                t    U(       a  U R                  SUSS5      $ U R                   " SUS/U=(       d    / Q76 $ )NrM   addz-Ary   )r-   rI   files	all_filess       r   r   GitCommandWrapper.add   s<     ((xEE$$T8UKekrKKr   c           	     4    U R                  SUSSSU S35      $ )NrM   commit-m'ry   )r-   rI   messages      r   r   GitCommandWrapper.commit   s(    $$T8Xt'(	^5 	5r   c                *    U R                  SUSU5      $ )NrM   checkoutry   r-   rI   revisions      r   r   GitCommandWrapper.checkout   s    $$T8ZJJr   c                ,    U R                  SUSSU5      $ )NrM   r   z-bry   r   s      r   
new_branchGitCommandWrapper.new_branch   s     $$T8Z%-/ 	/r   c                   U R                  SUSS5      nUR                  R                  5       R                  5        Vs/ s H  o3(       d  M  UR                  5       PM     nn[	        U5      S::  a0  U(       a'  SR                  US   R                  S5      SS  5      /$ / $ USS   Vs/ s H&  nSR                  UR                  S5      SS  5      PM(     sn$ s  snf s  snf )NrM   ro   z-r   /r   )r7   rQ   rR   rS   lenrf   rT   )r-   rI   rU   rV   infos        r   get_remote_branches%GitCommandWrapper.get_remote_branches   s    ##D(HdC%(ZZ%5%5%7%B%B%D
%DTLDJJL%D 	 
 t9>9=CHHT!W]]3/345E2E:>qr(C($C,-(CC

 Ds   
CC)-Cc                `    U R                  SUSSS5      nUR                  R                  5       $ )NrM   rb   z--getzremote.origin.url)r7   rQ   rR   )r-   rI   rU   s      r   r\   %GitCommandWrapper.get_repo_remote_url   s0    ##D(Hg$79zz!!r   c           
     8    U R                  SUSUSSU S3U5      $ )NrM   tagr   "ry   )r-   rI   tag_namer   refs        r   r   GitCommandWrapper.tag   s.    
 $$T8UHd'(	^S: 	:r   c                ,    U R                  SUSSU5      $ )NrM   r|   r[   ry   )r-   rI   r   s      r   push_tagGitCommandWrapper.push_tag   s     $$T8VX%-/ 	/r   )r*   r   )r.   Optional[str])r;   r4   r<   r4   returnr4   )r<   r4   r   r4   )r   bool)rI   r4   r   r   )rI   r4   r   z	List[str])rI   r4   r;   r4   r   None)rg   r4   rh   r4   r   r   )
rg   r4   r;   r   r<   r4   rh   r4   ro   r   )r[   master)rI   r4   rZ   r4   ro   r4   )F)rI   r4   r;   r4   r<   r4   r   r4   r   r4   r   r   )NF)rI   r4   r   zOptional[List[str]]r   r   )rI   r4   r   r4   )rI   r4   r   r4   )rI   r4   r   r4   )rI   r4   r   r4   r   r4   r   r4   )rI   r4   r   r4   )r   r   r   r    r!   r)   r/   r7   r=   rA   rE   rJ   rW   r^   rk   rq   rx   r|   r   r   r   r   r   r\   r	   r   r   r#   r   r   r   r   r   #   sZ    0.95.
(*$ '+. .&. . 	.
 $.( $#MMM M !,,, , 	,
  , ,( *.#LL&L L5K/D" +	::: : 	:/r   r   )	metaclass)r!   
__future__r   re   pathlibr   typingr   r   modelscope_hub._gitr   r+   modelscope.hub.errorsr   modelscope.utils.constantr	   modelscope.utils.loggerr
   rs   __all__typer   r   r   r   r   <module>r      sJ    # 	  ! 9 * 9 .	
8# #e/) e/r   