o ]Lb@sdZddlmZddlmZddlmZddl m Z ddl m Z m Z mZmZmZmZmZmZddlmZddlmZiZeeZed d dd ed d dd ed d dd ddZddZdddZdS)achangeset_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 )absolute_importN)_)encodingerror formatter logcmdutilmailobsutilpycompat registrar)dateutil)notifynotify_obsoleteddomain)default messageidseedtemplatesASubject: changeset abandoned This changeset has been abandoned. c Cs\|ddp |dd}|ddp|dd}|dd}t|}t|||}|t||d}t} |j D]!\} }|durI| | q;| d|| } t | r\| | q;q;t | dkrj|d dS|j|||d d |j|jd |} zt| } Wntjy}zt|d}~wwt|||| d <t|||d| d<ttjdd| d<| ds|ddp|}d|vsd|vr||}t |||j!|j"| d<d#t$| | d<t%j&r| 'n| (}|)ddr|*||+ds |*ddSdS|,t-d| tj.|t/0| dd| ||j1ddS)Nrrsnotifyrrsincomings %r and %d:rs=notify_obsoleted: no subscribers to selected repo and revset swebsbaseurl)changesbaseurlrootwebrootz In-reply-tos -obsoletedz Message-Ids%a, %d %b %Y %H:%M:%S %1%2)formatDateFromsemailsfrom@s @localhostz, Tostest s&notify_obsoleted: sending mail for %d )mbox)2configrliteral_templatespecrchangesettemplater pushbufferrnotifiersetsubsaddrevsrevlendebugshow changesetr popbufferr parsebytes emailerrorsMessageParseErrorrAbort messageidr strfromlocalr datestrusernamefixmail addressencodecharsetstestjoinsortedr ispy3as_bytes as_string configboolwriteendswithstatusrsendmail emailutils parseaddrr)uirepoctxdomain messageidseedtemplatespec templaternr&subr(datamsginstsendermsgtextrVC/usr/lib/python3/dist-packages/hgext/hooklib/changeset_obsoleted.py_report_commit>s              rXcs"tfddt|jgDS)Nc3s|] }|kr|VqdSNrV).0rr)rVrW sz has_successor..)anyr allsuccessorsobsstore)rHr)rVr\rW has_successors racKsb|dkrttdt|tj||ddD]}||}t|| s.t |||qdS)NstxnclosesUnsupported hook type %rr)r) rr2rr bytestrr getobsoleted unfilteredranoderX)rGrHhooktyperekwargsr)rIrVrVrWhooks  rhrY)__doc__ __future__r email.errorserrorsr0 email.utilsutilsrEmercurial.i18nr mercurialrrrrrr r r mercurial.utilsr r configtable configitemrXrarhrVrVrVrWs8    (   D