
    	^cM                         d Z ddlmZ ddlmZ ddlmZ ddl	m
Z
mZmZmZmZmZmZmZ ddlmZ ddlmZ i Z ej        e          Z edd	d
            eddd
            eddd
           d Zd ZddZdS )a  changeset_obsoleted is a hook to send a mail when an
existing draft changeset is obsoleted by an obsmarker without successor.

Correct message threading requires the same messageidseed to be used for both
the original notification and the new mail.

Usage:
  [notify]
  messageidseed = myseed

  [hooks]
  txnclose.changeset_obsoleted =     python:hgext.hooklib.changeset_obsoleted.hook
    N)_)encodingerror	formatter
logcmdutilmailobsutilpycompat	registrar)dateutil   )notify   notify_obsoleted   domain)default   messageidseed   templatesA   Subject: changeset abandoned

This changeset has been abandoned.
c                    |                      dd          p|                      dd          }|                      dd          p|                      dd          }|                      dd          }t          j        |          }t          j        | ||          }|                                  t          j        | |d          }t                      }	|j	        D ]k\  }
}||	
                    |
           |                    d||                                          }t          |          r|	
                    |
           klt          |	          dk    r|                     d	           d S |                    ||                                |                      d
d          |j        |j                   |                                 }	 t'          j        |          }n+# t*          j        $ r}t/          j        |          d }~ww xY wt          j        |||          |d<   t          j        |||dz             |d<   t5          j        t9          j        d                    |d<   |d         sk|                      dd          p|                                 }d|vsd|v r|                    |          }t'          j         | ||j!        |j"                  |d<   d#                    tI          |	                    |d<   |%                                }| &                    dd          rC| '                    |           |(                    d          s| '                    d           d S d S | )                    tU          d          |                                z             t'          j+        | tY          j-        |d                   d         |	||j.                   d S )Nr   r   s   notifyr   r   s   incomings
   %r and %d:r   s=   notify_obsoleted: no subscribers to selected repo and revset
s   webs   baseurl)changesbaseurlrootwebrootzIn-reply-tos
   -obsoletedz
Message-Ids   %a, %d %b %Y %H:%M:%S %1%2)formatDateFroms   emails   from   @s
   @localhostz, Tos   test   
s&   notify_obsoleted: sending mail for %d
   )mbox)/configr   literal_templatespecr   changesettemplater
pushbufferr   notifiersetsubsaddrevsrevlendebugshow	changesetr   	popbufferr   
parsebytesemailerrorsMessageParseErrorr   Abort	messageidr   strfromlocalr   datestrusernamefixmailaddressencodecharsetstestjoinsortedas_bytes
configboolwriteendswithstatusr   sendmail
emailutils	parseaddrr    )uirepoctxdomainmessageidseedtemplatespec	templaternr'   subr)   datamsginstsendermsgtexts                    C/usr/lib/python3/dist-packages/hgext/hooklib/changeset_obsoleted.py_report_commitrV   =   s   YY*I66 "))9; ;F II-  0	9.	/	/  yy,k::H)(33D-b$==IMMOOOD+..A55DV  	T<HHSMMMyycggii88t99 	HHSMMM	 4yyA~~
M	
 	
 	
 	NN		&*--Y     <<>>D od##(      k$   )#v}EEC(V]]2 C ' =>>> CK v; I8W-->v&!8!8YYv&&F(VQZHHF		&,,''CIllnnG	}}Y(( 

&& 	HHUOOOOO	 	 			!>??#''))KLLL
$S[11!4dG!&	
 	
 	
 	
 	
 	
s   G" "H
1HH
c                 l    t          fdt          j        | j        g          D                       S )Nc              3   (   K   | ]}|k    |V  d S N ).0rr*   s     rU   	<genexpr>z has_successor.<locals>.<genexpr>   s0        !s((((((     )anyr	   allsuccessorsobsstore)rG   r*   s    `rU   has_successorrb      sL        (>>     r^   c                 V   |dk    r6t          j        t          d          t          j        |          z            t          j        ||d                   D ]O}|                                |         }t          ||	                                          st          | ||           Pd S )Ns   txncloses   Unsupported hook type %rr   )r   )r   r3   r   r
   bytestrr	   getobsoleted
unfilteredrb   noderV   )rF   rG   hooktyperg   kwargsr*   rH   s          rU   hookrj      s    ;k)**X-=h-G-GG
 
 	
 #D&2CDDD * *oo$T388::.. 	*2tS)))* *r^   rY   )__doc__email.errorserrorsr1   email.utilsutilsrD   mercurial.i18nr   	mercurialr   r   r   r   r   r	   r
   r   mercurial.utilsr    r   configtable
configitemrV   rb   rj   rZ   r^   rU   <module>rv      s  
   # " " " " "                  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 % $ $ $ $ $      !Y!+..
 

   
 
   
 
   A
 A
 A
H  * * * * * *r^   