
    ff?                       d dl m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
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ erddl	mZ ddlmZ ddlmZ  ej8                  e      Z G d de      ZddZ ddZ!ddZ"y)    )annotationsN)Path)TYPE_CHECKING   )Configuration)Version)data_from_mime)Workdir)
ScmVersion)meta)tag_to_version)_types)require_command)runc                  H    e Zd Zedd       Zd	dZd
dZddZdddZddZ	y)	HgWorkdirc                n    t        ddg|      }|j                  ry  | t        |j                              S )Nhgroot)_run
returncoder   stdout)clswdress      i/var/dept/share/cheung/public_html/OutSchool/python/env/lib/python3.12/site-packages/setuptools_scm/hg.pyfrom_potential_worktreez!HgWorkdir.from_potential_worktree   s0    D&>2&>>4

#$$    c           	        | j                  dd      j                  d      \  }}}t        g d| j                  d      j                  j                  d      \  }}}t        t        |            }t        j                  j                  |r|n|      }	|dt        |      z  k(  r9t        j                  d| j                         t        t        d	      ||||	
      S d|d d z   }|j                         }
d|
v r|
j                  d       |
r t!        |
d   |      }|rt        ||||      S 	 | j#                         }|| j%                  d      }n| j%                  |      }|dk(  s|t        d	      }|dz  }nt!        ||      }|J | j'                  |      s|rt        |||||||	      S t        |||	      S # t(        $ r }t        j+                  d|       Y d }~y d }~ww xY w)N.z{node}
{tag}
{date|shortdate}
)r   id-Tz+{branch}
{if(dirty, 1, 0)}
{date|shortdate}Tcwdcheck0zinitial node %s0.0)configdirtybranch	node_dateh   tipr   )r*   r+   r)    nullr   r)   )distancenoder*   r+   r)   r,   )r)   r,   zerror %s)hg_logsplitr   pathr   boolintdatetimedatefromisoformatlenlogdebugr   r   remover   get_latest_normalizable_tagget_distance_revscheck_changes_since_tag
ValueError	exception)selfr)   r4   tags_strnode_date_strr+   	dirty_str
dirty_dater*   r,   tagstagtag_strdistes                  r   get_metazHgWorkdir.get_meta#   s    )-2)

%+ 	&h )-O		)
 &t	 	&	:
 S^$MM//e
W	3T?"II'3#  T"1X~~~D=KK a&1CCuVFKK	668G--b1--g6& GOen	$WV<&++G4!!!'  C)DD 	MM*a(		s   .BF? 1F? ?	G(G##G(c                V    ddd|d|g}t        || j                  d      j                  S )Nr   r>   z-rr#   Tr$   )r   r7   r   )rF   revsettemplatecmds       r   r5   zHgWorkdir.hg_logn   s-    UD&$9CTYYd3:::r   c                z    | j                  dd      j                         }|sy |d   j                         d   }|S )Nzancestors(.) and tag('re:\.')z{tags}{if(tags, '
', '')})rR   rS   )r5   r6   )rF   outlinesrL   s      r   rA   z%HgWorkdir.get_latest_normalizable_tags   sK    ;;31  
 %' 	 rl  "2&
r   c                T    d| d| d}| j                  |d      }t        |      dz
  S )N(z::)r    r   )r5   r=   )rF   rev1rev2rR   outs        r   rB   zHgWorkdir.get_distance_revs~   s4    TF"TF!$kk&#&3x!|r   c                Z    |dk(  s|yd|d|d}t        | j                  |d            S )Nr(   Tz(branch(.) and tag(z>)::. and (merge() or file('re:^(?!\.hgtags).*$')) and not tag(z))r    )r8   r5   )rF   rL   rR   s      r   rC   z!HgWorkdir.check_changes_since_tag   sJ    %<3;w   7"	& 	 DKK,--r   N)r   _t.PathTreturnzHgWorkdir | None)r)   r   r`   ScmVersion | None)rR   strrS   rb   r`   rb   )r`   
str | None)r    )r[   rb   r\   rb   r`   r9   )rL   rc   r`   r8   )
__name__
__module____qualname__classmethodr   rP   r5   rA   rB   rC    r   r   r   r      s/    % %IV;
	
.r   r   c                z   t        d       t        j                  j                  t        j                  j	                  | d            rt        ddg|       }|j                  s|j                  j                  d      D ]  }|j                  d      st        |j                         d         }|j                  j                  d      s|dz  j                         s`dd	lm} dd
lm} |j#                  |       }|s |||      c S  t$        j#                  |j&                        }|y |j)                  |      S )Nr   z.hg/gitr7   r!   z	default =   z.gitr   )_git_parse_inner)GitWorkdirHgClient)_require_commandosr7   existsjoinr   r   r   r6   
startswithr   nameendswithgitrk   hg_gitrl   r   r   absolute_rootrP   )	r   r)   r   liner7   rk   rl   wd_hggitr   s	            r   parsery      s    T	ww~~bggll434D&>4(~~

((. 	F??;/

Q0Dyy))&1dVm5K5K5M9>#5#M#Md#S##3FH#EE	F 
	*	*6+?+?	@B	z;;vr   c                ,   t         j                  d|        | j                  dd      d d }|rd|z   }d| v rt        | d   |      S d| v r.t        | d   t	        | d	         || j                  d
      |      S t        |j                  d      ||      S )Nzdata %sr4   r0      r-   rL   r2   	latesttaglatesttagdistancer+   )r3   r4   r+   r)   r(   )r4   r)   )r>   r?   getr   r9   version_cls)datar)   r4   s      r   archival_to_versionr      s    IIi88FB$DTz}DK//		12388H%
 	
 F&&u-DHHr   c                r    t         j                  j                  | d      }t        |      }t	        ||      S )Nz.hg_archival.txtr2   )rn   r7   rp   r	   r   )r   r)   archivalr   s       r   parse_archivalr      s.    ww||D"45H(#DtF33r   )r   r_   r)   r   r`   ra   )r   zdict[str, str]r)   r   r`   r   )r   r_   r)   r   r`   r   )#
__future__r   r:   loggingrn   pathlibr   typingr   r0   r   _version_clsr   integrationr	   scm_workdirr
   versionr   r   r   r   _t_run_cmdr   rm   r   r   	getLoggerrd   r>   r   ry   r   r   rh   r   r   <module>r      si    "   	     ! '     # 9 !g!t. t.n0I&4r   