
    6h6                        S SK Jr  S SKrS SKrS SKJ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
\R                  \R                   5      rg)    )annotationsN)Tuple)_)errorpycompat)dateutil   )commonc                      \ rS rSrSS jrS rS rS rSS jrSS jr	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rSrg)monotone_source   Nc                   [         R                  R                  XX#U5        U(       a.  [        U5      S:  a  [        R
                  " [        S5      5      e[         R                  R                  XS5        Xl        X0l	        SU l
        X@l        [         R                  " [        S5      U-  5      n[        R                  R                  [        R                  R                  US5      5      (       d/   [!        US5       nUR#                  S5      nS S S 5        WS
:w  a  UeSnSn	U	n
SnSn[&        R(                  " US-   U	-   5      U l        [&        R(                  " US-   U	-   S-   U-   5      U l        [&        R(                  " US-   U	-   S-   U-   5      U l        [&        R(                  " US-   U	-   S-   U-   S-   U-   5      U l        [&        R(                  " US-   U	-   S-   U	-   5      U l        [&        R(                  " US-   U	-   5      U l        [&        R(                  " US-   U	-   S-   U-   5      U l        [&        R(                  " X-   S-   U	-   S-   U
-   5      U l        US-   U-   U-   S-   U-   n[&        R(                  " US-   U-   S-   5      U l        S U l        S U l        S U l         S U l!        [         RD                  " SSSS 9  g ! , (       d  f       GN= f! [$         a    S	n GNf = f)!Nr	   s9   monotone source does not support specifying multiple revss   mtnFs+   %s does not look like a monotone repositorys   _MTNrb       s   SQLite format 3 s   \s*s   \s+"((?:\\"|[^"])*)"\s*s   \s+\[(\w+)\]\s*s	   (?:.|\n)+s   dirs   files   contents   add_files   patchs   froms   tos   renames   deletes   tags   revisions   names   values   attrs   "mtn:execute"s   "true"s   monotone)abortdebname)#r
   converter_source__init__lenr   Abortr   commandlineuipathautomatestdiorevsNoRepoosexistsjoinopenreadOSErrorrecompiledir_refile_readd_file_repatch_re	rename_re	delete_retag_recert_reattr_execute_remanifest_revmanifestfilesdirs	checktool)selfr   repotyper   r   norepofheaderspacenamevaluerevisionlinesattrs                 8/usr/lib/python3/dist-packages/hgext/convert/monotone.pyr   monotone_source.__init__   s   ((84HCIM++%  	##Df5	"	<=D
 ww~~bggll49::$%VVBZF & // *&jj$!67zzGOd"Z/(:
 ::K$&3h>
 

Ht#g-85@8K
 EI$5$<u$Dt$KLEI$5$<=jj$!6!Dx!OPzzMG#d*X5=
 w&.85@!zz##e+i7 

 !
	ukBU &% s0   5K K	K 	
KK K K+*K+c                l    U R                   (       a  U R                  " U0 UD6$ U R                  " U0 UD6$ N)r   mtnrunstdiomtnrunsingler4   argskwargss      r?   mtnrunmonotone_source.mtnrun^   s7    ##T4V44$$d5f55r   c                L    U R                   US'   U R                  " S/UQ70 UD6$ )Nd   automate)r   run0rE   s      r?   rD   monotone_source.mtnrunsingled   s(    iisyy6t6v66r   c                   [         R                  " U5      n/ nUR                  5        HL  u  pEUR                  S[	        U5      U4-  5        U(       d  M-  UR                  S[	        U5      U4-  5        MN     U(       a#  UR                  SS5        UR                  S5        UR                  S5        U H"  nUR                  S[	        U5      U4-  5        M$     UR                  S5        SR                  U5      nU R                  R                  SU-  5        U R                  R                  U5        U R                  R                  5         U R                  U5      $ )Ns   %d:%sr      o   e   lr   s   mtn: sending '%s'
)r   byteskwargsitemsappendr   insertr    r   debug
mtnwritefpwriteflushmtnstdioreadcommandoutput)r4   rF   rG   commandkvargs          r?   rC   monotone_source.mtnrunstdioh   s   %%f-LLNDANN8s1vqk12qx3q61+56 # NN1d#NN4 tCNN8s3xo56 t((7#,w67g&--g66r   c                   S nSnUS:w  aM  U R                   R                  S5      nU(       d  [        R                  " [	        S5      5      eX!-  nUS:w  a  MM  US S nU R                   R                  S5      nUS;  a"  [        R                  " [	        S5      U-  5      eU R                   R                  S5      nUS:w  a  [        R                  " [	        S5      5      eS nSnUS:w  aM  U R                   R                  S5      nU(       d  [        R                  " [	        S	5      5      eXA-  nUS:w  a  MM   [        US S 5      nU R                   R                  U5      n[        U5      U:w  a-  [        R                  " [	        S5      [        U5      U4-  5      eX#XQ4$ ! [         a#    [        R                  " [	        S
5      U-  5      ef = f)Nr      :r	   s%   bad mtn packet - no end of commandnbrs   mewptls#   bad mtn packet - bad stream type %ss'   bad mtn packet - no divider before sizes&   bad mtn packet - no end of packet sizes#   bad mtn packet - bad packet size %ss9   bad mtn packet - unable to read full packet read %s of %d)	mtnreadfpr"   r   r   r   int	TypeErrorr   )r4   r"   
commandnbrstream	lengthstrlengths         r?   mtnstdioreadpacket"monotone_source.mtnstdioreadpacket   s   
dl>>&&q)Dkk!$L"MNNJ	 dl
  _
$$Q'"++89FB  ~~""1%4<++a JKLL	dl>>&&q)Dkk!$M"NOOI	 dl
	3B(F ~~""6*t9++% t9f%	&  F11  	++89IE 	s   8F! !-Gc                   / n U R                  5       u  p4pVU R                  R                  SX4U4-  5        US:X  a*  US:w  a#  [        R                  " [        S5      X4-  5      eOUS;   aM  U R                  R                  [        S5      U R                  -  5        U R                  R                  U5        O<US:X  a  U R                  R                  SU-   5        OUS	:X  a  UR                  U5        M  S
R                  U5      $ )Ns   mtn: read packet %s:%s:%d
rR      0s   mtn command '%s' returned %ss   ews
   %s error:
   ps   mtn:    mr   )
rk   r   rW   r   r   r   warnr\   rU   r    )r4   r\   retvalrg   rh   rj   outputs          r?   r[   )monotone_source.mtnstdioreadcommandoutput   s    151H1H1J.JGGMM.*f1MM ~T>++9:g=NN  5Q~.=>V$4h/04f%- 0 xxr   c                :   U R                   U:X  a  g U R                  SU5      R                  S5      U l        Xl         0 U l        0 U l        U R                   H  nU R                  R                  U5      nU(       aY  SnUR                  S5      nUR                  S5      nU R                  R                  U5      (       a  US-  nXd4U R                  U'   U R                  R                  U5      nU(       d  M  SU R
                  UR                  S5      '   M     g )Ns   get_manifest_of   

r   r	         xT)r/   rH   splitr0   r1   r2   r'   matchgroupr.   r&   )r4   revemr>   r:   nodes          r?   mtnloadmanifestmonotone_source.mtnloadmanifest   s    #$6<BB7K
	A""1%Awwqzwwqz''--a00DLD$(<

4 !!!$Aq(,		!''!*% r   c                @    U R                  U5        XR                  ;   $ rB   )r   r1   r4   r:   r|   s      r?   	mtnisfilemonotone_source.mtnisfile   s    S!zz!!r   c                @    U R                  U5        XR                  ;   $ rB   )r   r2   r   s      r?   mtnisdirmonotone_source.mtnisdir   s    S!yy  r   c                x   SSSSS.nU R                  SU5      n[        R                  " SU5      nU Hf  nU R                  R	                  U5      nU(       d  M'  UR                  5       u  pgUc   eUR                  SS5      nUR                  SS5      nXrU'   Mh     US	   R                  S
5      S   S-   US	'   U$ )Ns	   <missing>)   author   date	   changelog   branchs   certss   \n\n {6}key ["\[]s   \"   "s   \\   \r      .r   s    UTC)rH   r$   ry   r-   rz   groupsreplace)r4   r|   certscertlistr}   r~   r:   r;   s           r?   mtngetcertsmonotone_source.mtngetcerts   s    #!&#	
 ;;x-
 8818<A""1%Aqhhj(((fd3fe4#d  w--d3A6@gr   c                z    U R                   (       d  U R                  S5      R                  5       $ U R                   $ )Ns   leaves)r   rH   
splitlinesr4   s    r?   getheadsmonotone_source.getheads  s+    yy;;y)446699r   c                   U(       a  [         R                  " [        S5      5      eU R                  SU5      R	                  S5      n0 n0 n/ n0 nU GHP  nU R
                  R                  U5      n	U	(       a&  XU	R                  S5      '   XU	R                  S5      '   U R                  R                  U5      n	U	(       a  XU	R                  S5      '   U R                  R                  U5      n	U	(       a  XU	R                  S5      '   U R                  R                  U5      n	U	(       d  M  U	R                  S5      n
U	R                  S5      nU R                  X5      (       a  SXZ'   XU
'   XU
'   XU'   GM%  U R                  X5      (       d  GM>  UR                  X45        GMS     U H  u  p0 nU R                   H;  nX;   a  M
  UR                  US-   5      (       d  M%  X[!        U5      S  -   X'   SX_'   M=     UR#                  5        H/  u  nnU R$                  R'                  SUU4-  S5        XU'   UX'   M1     UR)                  5        H  nXU'   M	     M     UR#                  5       U[+        5       4$ )	Ns-   convert from monotone does not support --fulls   get_revisionrv   r	   rw      /s3   copying file in renamed directory from '%s' to '%s'   
)r   r   r   rH   ry   r(   rz   r{   r)   r+   r*   r   r   rU   r1   
startswithr   rT   r   rW   valuesset)r4   r|   fullr<   r1   
ignoremoverenameddirscopiesr}   r~   tonamefromnamefromdirtodirrenamedtofilefromfiles                    r?   
getchangesmonotone_source.getchanges
  s;   ++BC  ;;4::7C
A  &&q)A$'aggaj!),1771:&##A&A$'aggaj! $$Q'A$'aggaj!$$Q'Aq771:>>&..)*J&%-6N$'&M&)(O]]6//&&'9:1 8 *NGG**'$$UT\22&-s5z|0D&DGO *+J& % %,MMO J()
 !$f!) %4 $NN,"%h -' *, vsu--r   c                    U R                  X5      (       d  g U R                  SXS9nU R                  U5        U R                  R                  US5      u  pEX54$ ! [         a     gf = f)NNNs   get_file_of)r)Nr   )r   rH   	Exceptionr   r1   get)r4   r:   r|   datar   r>   s         r?   getfilemonotone_source.getfileH  sm    ~~d((	;;~t;;D 	S!ZZ^^D+6
z	  		s   A 
A('A(c           
     @   0 nU R                  U5      nUR                  S5      US   :X  a  SUS'   Sn[        R                  " US   [        R
                  " [        R                  " US   U5      5      US   UU R                  S	U5      R                  5       US   US
9$ )Ns   suspendr      1s   closes   %Y-%m-%dT%H:%M:%Sr   r   r   s   parents)authordatedescr|   parentsbranchextra)	r   r   r
   commitr   datestrstrdaterH   r   )r4   r|   r   r   
dateformats        r?   	getcommitmonotone_source.getcommitS  s      %99Z E)$44"E(O)
}}#!!("2"25>:"NO|$KK
C0;;=#
 	
r   c                    0 nU R                  S5      R                  S5       HI  nU R                  R                  U5      nU(       d  M'  UR	                  S5      XR	                  S5      '   MK     U$ )Ns   tagsrv   rw   r	   )rH   ry   r,   rz   r{   )r4   tagsr}   r~   s       r?   gettagsmonotone_source.gettagsc  s]    W%++G4A!!!$Aq#$771:WWQZ  5 r   c                    [         erB   )NotImplementedError)r4   r|   is      r?   getchangedfilesmonotone_source.getchangedfilesk  s
     "!r   c                    U R                  S5      n[        U5      nUS:  a  SU l        U R                  R                  SU-  5        U R                  SSSU R                  5      u  U l        U l        U R                  R                  5       nUS	:w  a"  [        R                  " [        S
5      U-  5      eUS:w  aI  U R                  R                  5       nU(       d  [        R                  " [        S5      5      eUS:w  a  MH  g g U R                  R                  SU-  5        g ! [         a     [        R                  " [        S5      5      ef = f)Ns   interface_versions2   unable to determine mtn automate interface versiong      (@Ts/   mtn automate version %f - using automate stdio
rL   s   stdios   -ds   format-version: 2
s(   mtn automate stdio header unexpected: %sr   s1   failed to reach end of mtn automate stdio headerss^   mtn automate version %f - not using automate stdio (automate >= 12.0 - mtn >= 0.46 is needed)
)rD   floatr   r   r   r   r   r   rW   _run2r   rX   rd   readline)r4   
versionstrversionr"   s       r?   beforemonotone_source.beforep  s>   	**+?@JJ'G d?!%DGGMMCgM
 /3jjXudii/+DOT^ >>**,D--kkABTI  %-~~..0++-  %- GGMM@BIJ?  	++GH 	s   D% %*Ec                    U R                   (       aC  U R                  R                  5         S U l        U R                  R                  5         S U l        g g rB   )r   rX   closerd   r   s    r?   aftermonotone_source.after  s>    OO!!#"DONN  "!DN	 r   )r(   r.   r   r-   r+   r&   r2   r'   r1   r0   r/   rd   rX   r)   r   r*   r   r,   r   r   )returnzTuple[bytes, bytes, int, bytes])r   bytes)__name__
__module____qualname____firstlineno__r   rH   rD   rC   rk   r[   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__ r   r?   r   r      sb    @CD6770,2\ 8-*"
!8<.|	
 "
'R"r   r   )
__future__r   r   r$   typingr   mercurial.i18nr   	mercurialr   r   mercurial.utilsr    r
   r   r   r   r   r   r?   <module>r      sC    # 	 	  % C"f--v/A/A C"r   