Ë ל؅×ÙOÂãó—ddlZddlZddlmZddlmZddlmZmZmZm Z ddl m Z m Z Gd„dej«ZGd „d ej«ZGd „d «ZGd „d«ZGd„de«ZGd„de«ZGd„dee«ZGd„de«ZGd„dee«ZGd„de«ZGd„de«ZGd„de«ZGd„d e«ZGd!„d"ee«ZGd#„d$e«ZGd%„d&e«ZdNd'„ZdOd(„Z dPd)„Z dQd*„Z!d+„Z"d,„Z# dRd-„Z$d.„Z%d/„Z&d0„Z'd1„Z(d2„Z)d3„Z*d4„Z+d5„Z,d6„Z-d7„Z.d8„Z/dSd9„Z0dSd:„Z1dSd;„Z2dSd<„Z3d=„Z4d>„Z5de.e6e&ee1e7e3iZ8d?„Z9d@„Z:dA„Z;dB„ZdE„Z?dF„Z@dG„ZAdH„ZBdI„ZCdJ„ZDdK„ZEdL„ZFdM„ZGy)UéNé)Ú_)Úgetattr)ÚerrorÚpycompatÚsmartsetÚutil)ÚdateutilÚ stringutilcó —eZdZy)ÚResourceUnavailableN©Ú__name__Ú __module__Ú __qualname__©óú:usr/lib/python3.12/site-packages/mercurial/templateutil.pyr r ó„Ørr có —eZdZy)ÚTemplateNotFoundNrrrrrrrrrcó�—eZdZdZej Zejd„«Zejd„«Z ejd„«Z ejd„«Z ejd„«Z ejd„«Z ejd„«Zejd „«Zejd „«Zejd „«Zy ) ÚwrappedzšObject requiring extra conversion prior to displaying or processing as value Use unwrapvalue() or unwrapastype() to obtain the inner object. có—y)zbTest if the specified item is in self The item argument may be a wrapped object. Nr©ÚselfÚcontextÚmappingÚitems rÚcontainszwrapped.contains+ó�rcó—y)zÓReturn a member item for the specified key The key argument may be a wrapped object. A returned object may be either a wrapped object or a pure value depending on the self type. Nr©rrrÚkeys rÚ getmemberzwrapped.getmember2r!rcó—y)zjReturn the smallest item, which may be either a wrapped or a pure value depending on the self typeNr©rrrs rÚgetminzwrapped.getmin;r!rcó—y)ziReturn the largest item, which may be either a wrapped or a pure value depending on the self typeNrr's rÚgetmaxzwrapped.getmax@r!rcó—y)z®Return new container of the same type which includes only the selected elements select() takes each item as a wrapped object and returns True/False. Nr©rrrÚselects rÚfilterzwrapped.filterEr!rcó—y)zYield each template mappingNr©rrs rÚitermapszwrapped.itermapsMr!rcó—y)zÖJoin items with the separator; Returns a bytes or (possibly nested) generator of bytes A pre-configured template may be rendered per item if this container holds unprintable items. Nr©rrrÚseps rÚjoinz wrapped.joinQr!rcó—y)zÐReturn a bytes or (possibly nested) generator of bytes representing the underlying object A pre-configured template may be rendered if the underlying object is not printable. Nrr's rÚshowz wrapped.showZr!rcó—y)z2Return a boolean representation of the inner valueNrr's rÚtoboolzwrapped.toboolcr!rcó—y)z”Move the inner value object out or create a value representation A returned value must be serializable by templaterfilters.json(). Nrr's rÚtovaluezwrapped.tovaluegr!rN)rrrÚ__doc__ÚabcÚABCMetaÚ __metaclass__Úabstractmethodr r%r(r*r.r1r5r7r9r;rrrrr"s„ñð —K‘K€Mà×Ññ óð ð  ×Ññ óð ð ×Ññ,óð,ð ×Ññ,óð,ð ×Ññ óð ð ×Ññ*óð*ð ×Ññ óð ð ×Ññ óð ð ×ÑñAóðAð ×Ññ óñ rrcóR—eZdZdZej Zd„Zejd„«Z y)Úmappablez:Object which can be converted to a single template mappingc#ó2K—|j|«–—y­w©N)Útomapr0s rr1zmappable.itermapstsèø€Ø�j‰j˜Ó!Ó!ùs‚có—y)z2Create a single template mapping representing thisNrr0s rrEzmappable.tomapwr!rN) rrrr<r=r>r?r1r@rErrrrBrBos/„ÙDà—K‘K€Mò"ð ×ÑñAóñArrBcóX—eZdZdZd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zy)Ú wrappedbyteszWrapper for byte stringcó—||_yrD©Ú_value©rÚvalues rÚ__init__zwrappedbytes.__init__ó €Øˆ� rcó8—t|||«}||jvSrD)Ú stringifyrKrs rr zwrappedbytes.contains‚s€Ü˜ '¨4Ó0ˆØ�t—{‘{Ð"Ð"rcó~—tjtd«tj|j «z«‚©Ns%r is not a dictionary©rÚ ParseErrorrrÚbytestrrKr#s rr%zwrappedbytes.getmember†s2€Ü×ÑÜ Ð'Ó (¬8×+;Ñ+;¸D¿K¹KÓ+HÑ Hó ð rcó0—|j||t«SrD©Ú_getbyÚminr's rr(zwrappedbytes.getmin‹ó€Ø�{‰{˜7 G¬SÓ1Ð1rcó0—|j||t«SrD©rYÚmaxr's rr*zwrappedbytes.getmaxŽr[rcó —|jstjtd««‚|t j |j««S)Ns empty string)rKrrUrrÚ iterbytestr)rrrÚfuncs rrYzwrappedbytes._getby‘s9€Ø�{Š{Ü×"Ñ"¤1 _Ó#5Ó6Ð 6Ù”H×(Ñ(¨¯©Ó5Ó6Ð6rcó~—tjtd«tj|j «z«‚)Ns%r is not filterablerTr,s rr.zwrappedbytes.filter–s2€Ü×ÑÜ Ð%Ó &¬×)9Ñ)9¸$¿+¹+Ó)FÑ Fó ð rcó~—tjtd«tj|j «z«‚©Ns%r is not iterable of mappingsrTr0s rr1zwrappedbytes.itermaps›s2€Ü×ÑÜ Ð/Ó 0´8×3CÑ3CÀDÇKÁKÓ3PÑ Pó ð rcóT—ttj|j«|«SrD)Ú joinitemsrr`rKr3s rr5zwrappedbytes.join s€Üœ×-Ñ-¨d¯k©kÓ:¸CÓ@Ð@rcó—|jSrDrJr's rr7zwrappedbytes.show£ó €Ø�{‰{Ðrcó,—t|j«SrD)ÚboolrKr's rr9zwrappedbytes.tobool¦s€Ü�D—K‘KÓ Ð rcó—|jSrDrJr's rr;zwrappedbytes.tovalue©rhrN)rrrr<rNr r%r(r*rYr.r1r5r7r9r;rrrrHrH|sB„Ù!òò#ò ò 2ò2ò7ò  ò  ò Aòò!órrHcóR—eZdZdZd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zy )Ú wrappedvaluez2Generic wrapper for pure non-list/dict/bytes valuecó—||_yrDrJrLs rrNzwrappedvalue.__init__°rOrcóX—tjtd«|jz«‚©Ns%r is not iterable©rrUrrKrs rr zwrappedvalue.contains³ó"€Ü×ÑœqÐ!6Ó7¸$¿+¹+ÑEÓFÐFrcóX—tjtd«|jz«‚rSrqr#s rr%zwrappedvalue.getmember¶s"€Ü×ÑœqÐ!:Ó;¸d¿k¹kÑIÓJÐJrcóX—tjtd«|jz«‚rprqr's rr(zwrappedvalue.getmin¹rrrcóX—tjtd«|jz«‚rprqr's rr*zwrappedvalue.getmax¼rrrcóX—tjtd«|jz«‚rprqr,s rr.zwrappedvalue.filter¿rrrcóX—tjtd«|jz«‚rdrqr0s rr1zwrappedvalue.itermapsÂs'€Ü×ÑÜ Ð/Ó 0°4·;±;Ñ >ó ð rcóX—tjtd«|jz«‚rprqr3s rr5zwrappedvalue.joinÇrrrcóZ—|j€ytj|j«S©Nr)rKrrVr's rr7zwrappedvalue.showÊs$€Ø �;‰;Ð ØÜ×Ñ § ¡ Ó,Ð,rcó¸—|j€yt|jt«r |jSttj|j««S)NF)rKÚ isinstancerjrrVr's rr9zwrappedvalue.toboolÏsA€Ø �;‰;Ð ØÜ �d—k‘k¤4Ô (Ø—;‘;Ð ä”H×$Ñ$ T§[¡[Ó1Ó2Ð2rcó—|jSrDrJr's rr;zwrappedvalue.tovalue×rhrN)rrrr<rNr r%r(r*r.r1r5r7r9r;rrrrmrm­sB„Ù<òòGòKòGòGòGò ò Gò-ò 3órrmcóT—eZdZdZdd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zy )ÚdatezWrapper for date tuplecóL—tt|«\|_|_||_yrD)ÚmapÚintÚ _unixtimeÚ _tzoffsetÚ_showfmt)rrMÚshowfmts rrNz date.__init__Þs€ô*-¬S°%«Ñ&ˆŒ˜œØˆ� rcó>—tjtd««‚©Nsdate is not iterable©rrUrrs rr z date.containsäó€Ü×ÑœqÐ!8Ó9Ó:Ð:rcó>—tjtd««‚)Nsdate is not a dictionaryr‰r#s rr%zdate.getmemberçs€Ü×ÑœqÐ!<Ó=Ó>Ð>rcó>—tjtd««‚rˆr‰r's rr(z date.getminêrŠrcó>—tjtd««‚rˆr‰r's rr*z date.getmaxírŠrcó>—tjtd««‚rˆr‰r,s rr.z date.filterðrŠrcó>—tjtd««‚rˆr‰r3s rr5z date.joinórŠrcóL—|j|j|jfzSrD)r…rƒr„r's rr7z date.showös€Ø�}‰} §¡°·±Ð?Ñ?Ð?rcó4—|j|jdœS)N)sunixtimestzoffset©rƒr„r0s rrEz date.tomapùs€Ø!Ÿ^™^¸$¿.¹.ÑIÐIrcó—y©NTrr's rr9z date.toboolüs€Ørcó2—|j|jfSrDr’r's rr;z date.tovalueÿs€Ø—‘ §¡Ð/Ð/rN)s%d %d)rrrr<rNr r%r(r*r.r5r7rEr9r;rrrrrÛs>„Ù ó ò ;ò?ò;ò;ò;ò;ò@òJòó0rrcó`—eZdZdZdd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zd„Zd„Zy)ÚhybridaƒWrapper for list or dict to support legacy template This class allows us to handle both: - "{files}" (legacy command-line-specific list hack) and - "{files % '{file} '}" (hgweb-style with inlining and function support) and to access raw values: - "{ifcontains(file, files, ...)}", "{ifcontains(key, extras, ...)}" - "{get(extras, key)}" - "{files|json}" NcóJ—||_||_||_||_||_yrD)Ú_genÚ_valuesÚ_makemapÚ_joinfmtÚ_keytype)rÚgenÚvaluesÚmakemapÚjoinfmtÚkeytypes rrNzhybrid.__init__s%€ØˆŒ ؈Œ ؈Œ ؈Œ ؈� rcóN—t||||j«}||jvSrD)Ú unwrapastyper�ršrs rr zhybrid.containss%€Ü˜G W¨d°D·M±MÓBˆØ�t—|‘|Ð#Ð#rcó—tj|jd«stjt d««‚t ||||j«}|j||jj|««S)NÚgetónot a dictionary) r Ú safehasattrršrrUrr¤r�Ú _wrapvaluer¦r#s rr%zhybrid.getmembersa€ä×Ñ § ¡ ¨eÔ4Ü×"Ñ"¤1Ð%8Ó#9Ó:Ð :ܘ7 G¨S°$·-±-Ó@ˆØ�‰˜s D§L¡L×$4Ñ$4°SÓ$9Ó:Ð:rcó0—|j||t«SrDrXr's rr(z hybrid.getmin!r[rcó0—|j||t«SrDr]r's rr*z hybrid.getmax$r[rcóž—|jstjtd««‚||j«}|j ||«S©Nsempty sequence)ršrrUrr©)rrrraÚvals rrYz hybrid._getby's?€Ø�|Š|Ü×"Ñ"¤1Ð%6Ó#7Ó8Ð 8Ù�4—<‘<Ó ˆØ�‰˜s CÓ(Ð(rcóh—|€ytj|d«r|Std|||j«S)Nr›)r r¨Ú hybriditemr›)rr$r®s rr©zhybrid._wrapvalue-s4€Ø ˆ;Ø Ü × Ñ ˜C Ô ,àˆJܘ$  S¨$¯-©-Ó8Ð8rc ó¢—tj|jd«rF|jj«D��cic] \}}||j ||««r||“Œ"}}}n2|jD�cgc]}||j ||««sŒ|‘Œ}}t d||j |j|j«Scc}}wcc}w©Nr¦) r r¨ršÚitemsr©r—r›rœr�)rrrr-ÚkÚvrŸs rr.z hybrid.filter5s¶€Ü × Ñ ˜DŸL™L¨%Ô 0ð!ŸL™L×.Ñ.Ô0ôá0‘D�A�qÙ˜$Ÿ/™/¨!¨QÓ/Ô0ð�1‘Ø0ð òð "&§¢ÓO¡˜A±¸¿¹ÈÈ1Ó8MÕ1N’a ˆFÐOÜ�d˜F D§M¡M°4·=±=À$Ç-Á-ÓPÐPùóùò Ps¾%CÁ5C ÂC c#óZK—|j}|jD] }||«–—Œy­wrD)r›rš)rrr Úxs rr1zhybrid.itermaps@s'èø€Ø—-‘-ˆØ—”ˆAÙ˜!“*Ó ñùs‚)+cóB‡—tˆfd„‰jD«|«S)Nc3ó@•K—|]}‰j|«–—Œy­wrD)rœ)Ú.0r·rs €rÚ zhybrid.join..Gsøèø€ÐA±L¨q˜$Ÿ-™-¨×*±Lùsƒ)rfršr3s` rr5z hybrid.joinEsø€äÓA°D·L²LÓAÀ3ÓGÐGrcól—|j}|€|j||d«St|«r|«S|S©Nó )r™r5Úcallable©rrrržs rr7z hybrid.showIs6€à�i‰iˆØ ˆ;Ø—9‘9˜W g¨tÓ4Ð 4Ü �CŒ=Ù“5ˆL؈ rcó,—t|j«SrD)rjršr's rr9z hybrid.toboolRs€Ü�D—L‘LÓ!Ð!rc óð—|j}tj|d«r/|j«D��cic]\}}|t |||«“Œc}}S|D�cgc]}t |||«‘Œc}Scc}}wcc}wr²)ršr r¨r³Ú unwrapvalue)rrrÚxsr´rµr·s rr;zhybrid.tovalueUso€à �\‰\ˆÜ × Ñ ˜B Ô &ØDFÇHÁHÄJÔOÁJ¹D¸A¸q�A”{ 7¨G°QÓ7Ñ7ÀJÒOÐ OÙ:<Ó=¹"°Q” ˜G W¨aÕ0¸"Ñ=Ð=ùóPùÚ=s ¶A-ÁA3rD)rrrr<rNr r%r(r*rYr©r.r1r5r7r9r;rrrr—r—sJ„ñ ó ò$ò;ò2ò2ò)ò 9ò Qòò Hòò"ó>rr—cóR—eZdZdZd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zy )r°z¶Wrapper for non-list/dict object to support map operation This class allows us to handle both: - "{manifest}" - "{manifest % '{rev}:{node}'}" - "{manifest.rev}" có<—||_||_||_||_yrD)r™Ú_keyrKr›)rržr$rMr s rrNzhybriditem.__init__fs€ØˆŒ ؈Œ ؈Œ ؈� rcó8—|j|j«SrD)r›rÇr0s rrEzhybriditem.tomapls€Ø�}‰}˜TŸY™YÓ'Ð'rcóV—t|||j«}|j|||«SrD)Ú makewrappedrKr )rrrrÚws rr zhybriditem.containsos'€Ü ˜ ¨$¯+©+Ó 6ˆØ�z‰z˜' 7¨DÓ1Ð1rcóV—t|||j«}|j|||«SrD)rÊrKr%)rrrr$rËs rr%zhybriditem.getmemberss'€Ü ˜ ¨$¯+©+Ó 6ˆØ�{‰{˜7 G¨SÓ1Ð1rcóT—t|||j«}|j||«SrD)rÊrKr(©rrrrËs rr(zhybriditem.getminwó%€Ü ˜ ¨$¯+©+Ó 6ˆØ�x‰x˜ Ó)Ð)rcóT—t|||j«}|j||«SrD)rÊrKr*rÎs rr*zhybriditem.getmax{rÏrcóV—t|||j«}|j|||«SrD)rÊrKr.)rrrr-rËs rr.zhybriditem.filters'€Ü ˜ ¨$¯+©+Ó 6ˆØ�x‰x˜ ¨&Ó1Ð1rcóV—t|||j«}|j|||«SrD)rÊrKr5)rrrr4rËs rr5zhybriditem.joinƒs'€Ü ˜ ¨$¯+©+Ó 6ˆØ�v‰v�g˜w¨Ó,Ð,rcó„—|j}|€tj|j«St |«r|«S|SrD)r™rrVrKr¿rÀs rr7zhybriditem.show‡s8€à�i‰iˆØ ˆ;Ü×#Ñ# D§K¡KÓ0Ð 0Ü �CŒ=Ù“5ˆL؈ rcóT—t|||j«}|j||«SrD)rÊrKr9rÎs rr9zhybriditem.tobool�rÏrcó0—t|||j«SrD)Ú_unthunkrKr's rr;zhybriditem.tovalue”s€Ü˜ ¨$¯+©+Ó6Ð6rN)rrrr<rNrEr r%r(r*r.r5r7r9r;rrrr°r°]s>„ñò ò (ò2ò2ò*ò*ò2ò-òò*ó7rr°có`—eZdZdZdd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zd„Zd„Zy)ÚrevslistaZWrapper for a smartset (a list/set of revision numbers) If name specified, the revs will be rendered with the old-style list template of the given name by default. The cachekey provides a hint to cache further computation on this smartset. If the underlying smartset is dynamically created, the cachekey should be None. Ncót—t|tj«sJ‚||_||_||_||_yrD)r|rÚabstractsmartsetÚ_repoÚ_revsÚ_nameÚcachekey)rÚrepoÚrevsÚnamerÞs rrNzrevslist.__init__£s4€Ü˜$¤× 9Ñ 9Ô:Ð:Ð:؈Œ ؈Œ ؈Œ Ø ˆ� rcó8—t|||«}||jvSrD)Ú unwrapintegerrÜ)rrrrÚrevs rr zrevslist.containsªs€Ü˜G W¨dÓ3ˆØ�d—j‘jÐ Ð rcó>—tjtd««‚©Nr§r‰r#s rr%zrevslist.getmember®ó€Ü×ÑœqÐ!4Ó5Ó6Ð6rcób—|j«}||jj««SrD)Ú_makehybriditemfuncrÜrZ©rrrÚmakehybriditems rr(zrevslist.getmin±ó&€Ø×1Ñ1Ó3ˆÙ˜dŸj™jŸn™nÓ.Ó/Ð/rcób—|j«}||jj««SrD)rérÜr^rês rr*zrevslist.getmaxµrìrc󔇇—|j«Š|jjˆˆfd„«}t|j|d¬«S)Ncó •—‰‰|««SrDr)Úrrër-s €€rÚz!revslist.filter..»sø€©F±>À!Ó3DÔ,Er)rá)rérÜr.rØrÛ)rrrr-Úfrevsrës ` @rr.zrevslist.filter¹s9ù€Ø×1Ñ1Ó3ˆØ— ‘ ×!Ñ!Ô"EÓFˆä˜Ÿ ™  E°Ô5Ð5rc#óbK—|j«}|jD] }||«–—Œy­wrD)Ú _makemapfuncrÜ)rrr rðs rr1zrevslist.itermaps¿s,èø€Ø×#Ñ#Ó%ˆØ—”ˆAÙ˜!“*Ó ñùs‚-/có.‡—|j«Šˆfd„S)Ncó •—td||‰«SrD)r°)rðr s €rrñz.revslist._makehybriditemfunc..Æsø€œ D¨!¨Q°Ô8r)rô)rr s @rrézrevslist._makehybriditemfuncÄsø€Ø×#Ñ#Ó%ˆÛ8Ð8rcóP‡‡—|jŠ|jЉrˆˆfd„Sˆfd„S)Ncó•—‰|d‰|iS©Nsctxr)rðrárßs €€rrñz'revslist._makemapfunc..Ìsø€˜d A v¨t°A©wÑ7rcó•—d‰|iSrùr)rðrßs €rrñz'revslist._makemapfunc..Îsø€˜f d¨1¡gÑ.r)rÛrÝ)rrárßs @@rrôzrevslist._makemapfuncÈs$ù€Ø�z‰zˆØ�z‰zˆÙ Ü7Ð 7ã.Ð .rcó.—t|j|«SrD)rfrÜr3s rr5z revslist.joinÐs€Ü˜Ÿ™ SÓ)Ð)rcó²—|jr4|jD�cgc]}d|z‘Œ }}t|||j|«S|j||d«Scc}w)Ns%dr¾)rÝrÜÚ_showcompatlistr5)rrrrðÚsrevss rr7z revslist.showÓsR€Ø �:Š:Ø(,¯ ª Ó3©  1�U˜Q“Y¨ ˆEÐ3Ü" 7¨G°T·Z±ZÀÓGÐ Gà—9‘9˜W g¨tÓ4Ð 4ùò4s› Acó,—t|j«SrD)rjrÜr's rr9zrevslist.toboolÚs€Ü�D—J‘JÓÐrcó—|jSrD)rÜr's rr;zrevslist.tovalueÝs €Ø�z‰zÐr©NN)rrrr<rNr r%r(r*r.r1rérôr5r7r9r;rrrrØrؘsH„ñó!ò!ò7ò0ò0ò6ò ò 9ò/ò*ò5ò órrØcóH—eZdZdZd d„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z y) Ú_mappingsequencezåWrapper for sequence of template mappings This represents an inner template structure (i.e. a list of dicts), which can also be rendered by the specified named/literal template. Template mappings may be nested. Ncó`—|�|�tjd«‚||_||_||_y)Ns$name and tmpl are mutually exclusive)rÚProgrammingErrorrÝÚ_tmplÚ _defaultsep)rráÚtmplr4s rrNz_mappingsequence.__init__ês;€Ø Ð  Ð 0Ü×(Ñ(Ø7óð ðˆŒ ØˆŒ ؈Õrcó>—tjtd««‚©Nsnot comparabler‰rs rr z_mappingsequence.containsóó€Ü×ÑœqÐ!2Ó3Ó4Ð4rcó>—tjtd««‚rær‰r#s rr%z_mappingsequence.getmemberörçrcó>—tjtd««‚r r‰r's rr(z_mappingsequence.getminùr rcó>—tjtd««‚r r‰r's rr*z_mappingsequence.getmaxür rcó>—tjtd««‚)Nsnot filterable without templater‰r,s rr.z_mappingsequence.filterÿs€ä×ÑœqÐ!CÓDÓEÐErcóö‡‡—t‰|‰j‰««}‰jr ˆˆfd„|D«}n7‰jr ˆˆfd„|D«}nt j t d««‚t||«S)Nc3óV•K—|] }‰j‰j|«–—Œ"y­wrD)ÚprocessrÝ©rºÚmrrs €€rr»z(_mappingsequence.join..s!øèø€ÐIÁ¸1˜Ÿ™¨¯ © °A×6Áùóƒ&)c3óV•K—|] }‰j‰j|«–—Œ"y­wrD)Úexpandrrs €€rr»z(_mappingsequence.join..s!øèø€ÐH¹x¸!˜Ÿ™ t§z¡z°1×5¹xùrs not displayable without template)Ú_iteroverlaymapsr1rÝrrrUrrf)rrrr4ÚmapsiterÚitemiters`` rr5z_mappingsequence.joins`ù€Ü# G¨W°d·m±mÀGÓ6LÓMˆØ �:Š:ÜIÁÓI‰HØ �ZŠZÜH¹xÓH‰Hä×"Ñ"¤1Ð%HÓ#IÓJÐ Jܘ 3Ó'Ð'rcó<—|j|||j«SrD)r5rr's rr7z_mappingsequence.show s€Ø�y‰y˜ '¨4×+;Ñ+;Ó<Е—tt|� |||«||_yrD)r'r6rNÚ _mappings)rÚmappingsrárr4r,s €rrNzmappinglist.__init__6sø€Ü Œk˜4Ñ)¨$°°cÔ:Ø!ˆ�rcó,—t|j«SrD)Úiterr8r0s rr1zmappinglist.itermaps:ó€Ü�D—N‘NÓ#Ð#rcó,—t|j«SrD)rjr8r's rr9zmappinglist.tobool=r<rr#r2r4s@rr6r63sø„Ù/õ"ò$ö$rr6có:‡—eZdZdZdˆfd„ Zd„Zd„Zˆfd„ZˆxZS)Ú mappingdictz»Wrapper for a single template mapping This isn't a sequence in a way that the underlying dict won't be iterated as a dict, but shares most of the _mappingsequence functions. có<•—tt|� ||«||_yrD)r'r?rNÚ_mapping)rrrárr,s €rrNzmappingdict.__init__Hsø€Ü Œk˜4Ñ)¨$°Ô5؈� rcó—|jSrD)rAr0s rrEzmappingdict.tomapLs €Ø�}‰}Ðrcó—yr”rr's rr9zmappingdict.toboolOs€ðrcó2•—tt|� ||«dS)Nr)r'r?r;)rrrr,s €rr;zmappingdict.tovalueUsø€Ü”[ $Ñ/°¸ÓAÀ!ÑDÐDrr) rrrr<rNrEr9r;r3r4s@rr?r?As#ø„ñõ  òò÷ EðErr?có(‡—eZdZdZˆfd„Zd„ZˆxZS)Ú mappingnonez¶Wrapper for None, but supports map operation This represents None of Optional[mappable]. It's similar to mapplinglist([]), but the underlying value is not [], but None. có,•—tt|� d«yrD)r'rFrN)rr,s €rrNzmappingnone.__init__`sø€Ü Œk˜4Ñ)¨$Õ/rcó—tg«SrD)r;r0s rr1zmappingnone.itermapscs €Ü�B‹xˆr)rrrr<rNr1r3r4s@rrFrFYsø„ñô 0örrFcóp—eZdZdZdd„Zd„Zd„Zd„Zd„Zd„Z d„Z e d „«Z d „Z d „Zd „Zd „Zd„Zd„Zy)ÚmappedgeneratoraWrapper for generator of strings which acts as a list The function ``make(context, *args)`` should return a generator of byte strings, or a generator of (possibly nested) generators of byte strings (i.e. a generator for a list of byte strings.) có —||_||_yrDr.)rr*r+s rrNzmappedgenerator.__init__os€ØˆŒ ؈� rcóD—t|||«}||j||«vSrD)rQr;rs rr zmappedgenerator.containsss&€Ü˜ '¨4Ó0ˆØ�t—|‘| G¨WÓ5Ð5Ð5rcó<—|j|g|j¢­ŽSrDr.r0s rr™zmappedgenerator._genwr/rcó>—tjtd««‚rær‰r#s rr%zmappedgenerator.getmemberzrçrcó0—|j||t«SrDrXr's rr(zmappedgenerator.getmin}r[rcó0—|j||t«SrDr]r's rr*zmappedgenerator.getmax€r[rcóv—|j||«}|stjtd««‚||«Sr­)r;rrUr)rrrrarÄs rrYzmappedgenerator._getbyƒs5€Ø �\‰\˜' 7Ó +ˆÙÜ×"Ñ"¤1Ð%6Ó#7Ó8Ð 8Ù�B‹xˆrc#ónK—||g|¢­ŽD]%}t|||«}|t|««sŒ"|–—Œ'y­wrD)rQrH)rrr*r+r-r·Úss rÚ _filteredgenzmappedgenerator._filteredgen‰s9èø€á�gÐ% Õ%ˆAܘ' 7¨AÓ.ˆAÙ”l 1“oÕ&Ø“ñ&ùs‚+5®5cób—||j|j|f}t|j|«SrD)r(r)rJrT)rrrr-r+s rr.zmappedgenerator.filter�s+€Ø˜Ÿ™ T§Z¡Z°Ð8ˆÜ˜t×0Ñ0°$Ó7Ð7rcó>—tjtd««‚)Nslist of strings is not mappabler‰r0s rr1zmappedgenerator.itermaps”s€Ü×ÑœqÐ!CÓDÓEÐErcó8—t|j|«|«SrD)rfr™r3s rr5zmappedgenerator.join—s€Ü˜Ÿ™ 7Ó+¨SÓ1Ð1rcó(—|j||d«Srz)r5r's rr7zmappedgenerator.showšs€Ø�y‰y˜ '¨3Ó/Ð/rcó6—t|j|««SrD)r1r™r's rr9zmappedgenerator.tobool�s€Ü˜Ÿ™ 7Ó+Ó,Ð,rcó`—|j|«D�cgc]}t|||«‘Œc}Scc}wrD)r™rQ)rrrr·s rr;zmappedgenerator.tovalue s.€Ø8<¿ ¹ À'Ô8JÓKÑ8J°1” ˜' 7¨AÕ.Ð8JÑKÐKùÒKs”+N)r)rrrr<rNr r™r%r(r*rYÚ staticmethodrTr.r1r5r7r9r;rrrrJrJgs^„ñóò6ò0ò7ò2ò2òð ñóðò 8òFò2ò0ò-óLrrJc󄇇‡‡‡—tjЉ€dŠtjŠt|‰ˆˆˆfd„ˆˆˆfd„«S)z>Wrap data to support both dict-like and string-like operationss%s=%scó•—‰|‰‰|iSrDr)r´Údatar$rMs €€€rrñzhybriddict..­sø€�3˜˜5 $ q¡'Ñ*rcó0•—‰‰|«‰‰|«fzSrDr)r´r^ÚfmtÚprefmts €€€rrñzhybriddict..®sø€�#™ ›¡F¨4°©7£OÐ4Ò4r©rÚidentityrVr—)r^r$rMr`ržras```` @rÚ hybriddictrd¤s<ü€ä × Ñ €FØ €{؈Ü×!Ñ!ˆÜ Ø Ø Ý*Ý4ó  ðrcóz‡‡‡—tjЉ€dŠtjŠt||ˆfd„ˆˆfd„«S)z>Wrap data to support both list-like and string-like operationss%scó •—‰|iSrDr)r·rás €rrñzhybridlist..¸s ø€¨¨a¡yrcó•—‰‰|«zSrDr)r·r`ras €€rrñzhybridlist..¸s ø€¸CÁ&ÈÃ)ºOrrb)r^rár`ržras `` @rÚ hybridlistrh²s6ú€ä × Ñ €FØ €{؈Ü×!Ñ!ˆÜ �#�tÓ0Ô2KÓ LÐLrc óš—|j«D� � cgc] \} } || || i‘Œ } } } t|||| ||«} t||||| ¬«Scc} } w)zÄWrap data like hybriddict(), but also supports old-style list template This exists for backward compatibility with the old-style template. Use hybriddict() for new template keywords. )r$rMr`rž)r³rýrd) rrrár^r$rMr`ÚpluralÚ separatorr´rµÚcÚfs rÚ compatdictrn»sW€ð )-¯ © ¬ Ô5© ¡  1ˆ#ˆq�%˜Ò ¨ €AÑ5ܘ ¨$°°6¸9ÓE€AÜ �d ¨5°c¸qÔ AÐAùó 6s”AcóH—t||||||«}t||xs|||¬«S)zÄWrap data like hybridlist(), but also supports old-style list template This exists for backward compatibility with the old-style template. Use hybridlist() for new template keywords. )rár`rž)rýrh) rrrár^Úelementr`rjrkrms rÚ compatlistrqÐs-€ô ˜ ¨$°°f¸iÓH€AÜ �d ¢¨D°c¸qÔ AÐArcó°‡—‰D��cgc] \}}||dœ‘Œ }}}t||||d¬«}tj‰«Št|‰ˆfd„ˆfd„«Scc}}w)z½Wrap list of (dest, source) file names to support old-style list template and field names This exists for backward compatibility. Use hybriddict for new template keywords. )ónameósources file_copies)rjcó•—||‰|dœS)N)rsópathrtr©r´Úcopiess €rrñz&compatfilecopiesdict..ñsø€˜A¨°f¸Q±iÒ@rcó•—d|‰|fzS)Ns%s (%s)rrws €rrñz&compatfilecopiesdict..òsø€�*  6¨!¡9˜~Ò-r)rýr Úsortdictr—)rrrárxr´rµrlrms ` rÚcompatfilecopiesdictr{ãs`ø€ñ17Ô7±©¨¨1�1 Ó #°€AÑ7ܘ ¨$°¸.ÔI€AÜ �]‰]˜6Ó "€FÜ Ø ØÛ@Û-ó  ðùó 8s‡AcóX—t||||«}t||d„tj«S)z®Wrap list of file names to support old-style list template and field names This exists for backward compatibility. Use hybridlist for new template keywords. có —||dœS)N)sfilervr)r·s rrñz!compatfileslist..ÿs € a°!Ò4r)rýr—rrc)rrráÚfilesrms rÚcompatfilesliströs1€ô ˜ ¨$°Ó6€AÜ Ø ˆ5Ñ4´h×6GÑ6Gó ðrc#󆇇‡K—|s‰dz}|s+d|z}‰j|«r‰j|‰«–—y‰j‰«sOt|dt«r|j |«–—y|D]"}t |«}|j ‰«|–—Œ$yd|z} ‰j| «r‰j| ‰«–—‰fˆˆˆfd„ } d‰z} ‰j| «r|j«} nd} |D] }| |«–—Œ| � | | | ¬«–—d |z} ‰j| «r‰j| ‰«–—yy­w) aNReturn a generator that renders old-style list template name is name of key in template map. values is list of strings or dicts. plural is plural of name, if not simply name + 's'. separator is used to join values as a string expansion works like this, given name 'foo'. if values is empty, expand 'no_foos'. if 'foo' not in template map, return values as a string, joined by 'separator'. expand 'start_foos'. for each value, expand 'foo'. if 'last_foo' in template map, expand it instead of 'foo' for last key. expand 'end_foos'. óssno_Nrsstart_cóþ•—i} |j|«‰j ‰|«}‰j ||«S#tttf$r. |D] \}}|||<Œ n#ttf$r||‰<YnwxYwYŒewxYwrD)ÚupdateÚAttributeErrorÚ TypeErrorÚ ValueErrorrr)rµÚtagÚvmappingÚaÚbrrrás €€€rÚonez_showcompatlist..one/s‘ø€Øˆð #Ø �O‰O˜AÔ ð×%Ñ% g¨xÓ8ˆØ�‰˜s HÓ-Ð-øô¤ ¬:Ð6ò #ð #ó‘D�A�qØ"#�H˜Q’KñøäœzÐ*ò #Ø!"�˜“ð #üð  #ús3…:ºA<ÁAÁA<ÁA6Á3A<Á5A6Á6A<Á;A<slast_)r‡send_)Úpreloadrr|Úbytesr5ÚdictrƒÚpop)rrrárŸrjrkÚnonamerµrðÚ startnamer‹ÚlastnameÚlastÚendnames``` rrýrýsBúèø€ñ0 ؘ‘ˆÙ ؘ&‘ˆØ �?‰?˜6Ô "Ø—/‘/ &¨'Ó2Ò 2ØØ �?‰?˜4Ô Ü �f˜Q‘i¤Ô 'Ø—.‘. Ó(Ò (ð ó �ܘ“G�Ø—‘˜Ô!Ø“ðð Ø˜FÑ"€I؇��yÔ!Ø�o‰o˜i¨Ó1Ò1à÷.ð"˜$‰€H؇��xÔ Ø�z‰z‹|‰àˆÛ ˆÙ�!‹f‹ ðà ÐÙ�$˜HÔ%Ò%ؘрG؇��wÔØ�o‰o˜g wÓ/Ó/ð ùs…D—t|t«r|j||«St|||«} t j |«S#t $r#tj|xs td««‚tj$r|s‚tj|«‚wxYw)Nsnot a date tuple nor a string) r|rr;rÃr Ú parsedater„rrUr©rrr™r¼s rrºrºÊs’€Ü�%œÔØ�}‰}˜W gÓ.Ð.ä ˜ ¨%Ó 0€Eð$Ü×!Ñ! %Ó(Ð(øÜ òKÜ×јsÒI¤aÐ(HÓ&IÓJÐJÜ × Ñ ò$ÙØ Ü×јsÓ#Ð#ð$ús ±AÁABcó8—t|||«}t||||«SrD)r«rãr»s rÚ evalintegerrÂÙs!€Ü �w ¨Ó -€EÜ ˜ '¨5°#Ó 6Ð6rcóž—t|||«} t|«S#ttf$r#t j |xs t d««‚wxYw)Nsnot an integer)rÃr‚r…r†rrUrrÀs rrãrãÞsO€Ü ˜ ¨%Ó 0€Eð<Ü�5‹zÐøÜ ”zÐ "ò<Ü×јsÒ:¤aÐ(9Ó&:Ó;Ð;ð<ús � š2A c ó2—t||t|||««SrD)rQr«r°s rÚ evalstringrÅæs€Ü �W˜g¤z°'¸7ÀCÓ'HÓ IÐIrcód—|\}}|tur |||||¬«}n ||||«}t|||«S)zXEvaluate given argument as string template, but returns symbol name if it is unknownr´)rŸrQr·s rÚevalstringliteralrÇêsB€ð�J€Dˆ$Ø ŒyÑÙ�W˜g t°TÔ:‰á�W˜g tÓ,ˆÜ �W˜g uÓ -Ð-rcót— t|}||||«S#t$rtjd|z«‚wxYw)zBMove the inner value object out of the wrapper and coerce its typesinvalid type specified: %r)Ú_unwrapfuncbytypeÚKeyErrorrr)rrr™Útyprms rr¤r¤ýsM€ðJÜ ˜cÑ "ˆñ ˆW�g˜uÓ %Ð%øô òJÜ×$Ñ$Ð%BÀSÑ%HÓIÐIðJús‚ •"7có—t|«SrD)r‚©rrr^s rÚ runintegerrÎs €Ü ˆt‹9Ðrcó—|SrDrrÍs rÚ runstringrÐ s€Ø €Krcó‡—ˆfd„}|S)NcóF•—tjtd«‰z«‚)Ns$recursive reference '%s' in template)rÚAbortr)rrr$s €rÚ showrecursionz._recursivesymbolblocker..showrecursionsø€Ü�k‰kœ!ÐCÓDÀsÑJÓKÐKrr)r$rÔs` rÚ_recursivesymbolblockerrÕsø€ôLð Ðrcóú—|j||«}|€1|j«}t|«||< |j||«}t |«r |||«S|S#t$r|}YŒ$wxYw#t $rYywxYwrD)ÚsymbolÚcopyrÕrrr¿r )rrr$rµrµÚ safemappings rrŸrŸs“€Ø�‰�w Ó$€AØ€yð—l‘l“nˆ Ü2°3Ó7ˆ �CÑð Ø—‘  [Ó1ˆAô�„{ð Ù�W˜gÓ&Ð &ð €Høô ò ØŠAð ûô #ò áð ús#´AÁA.Á A+Á*A+Á. A:Á9A:c#ó8K—|D]}t|||«–—Œy­wrD)r«)rrÚtemplater¡s rÚ runtemplaterÜ*sèø€ÛˆÜ˜ '¨3Ó/Ó/ñùs‚cóø—|\}}t|||«}t|dd«} t||||«}||«S#tj$r/}tjt |«t ||«¬«‚d}~wwxYw)NÚ_intype©Úhint)r«rr¤rrUr�Ú_formatfiltererror)rrr^r¡Úfiltr™ÚintypeÚes rr r /s~€Ø�I€CˆÜ �w ¨Ó -€EÜ �T˜9 dÓ +€FðMܘW g¨u°fÓ=ˆÙ�E‹{ÐøÜ × Ñ òMÜ×Ñœu Q›xÔ.@ÀÀdÓ.KÔLÐLûðMús¡7·A9Á *A4Á4A9có–—tj|j«}t|«}|st d«|zSt d«||fzS)Ns(incompatible use of template filter '%s's8template filter '%s' is not compatible with keyword '%s')rÚsysbytesrr¢r)r¡râÚfnÚsyms rrárá:sS€Ü × Ñ ˜4Ÿ=™=Ó )€BÜ ˜3Ó €CÙ ÜÐ<Ó=ÀÑBÐBÜ Ð HÓ IØ Ø ðMñ ðrc#óhK—t|«D] \}}|j||«}||d<|–—Œ"y­w)zuGenerate combined mappings from the original mapping and an iterable of partial mappings to override the originalsindexN)Ú enumerater)rÚ origmappingÚ newmappingsršr!r"s rrrEs;èø€ô˜;Ö'‰ˆˆ2Ø × Ñ   ¨RÓ 0ˆØˆˆ8‰ Ø‹ñ(ùs‚02c#ó K— |j|«}t |||«D]} t|| |«–—Œy#tj$rA}t|«}|s‚t d«|z}tjt |«|¬«‚d}~wwxYw­w)Ns+keyword '%s' does not support map operationrß)r1rrUr¢rr�rr«) rrÚdÚdargÚtargÚditerr¼rèràr"s rÚ _applymapròNs‹èø€ð6Ø— ‘ ˜7Ó#ˆô˜w¨°Ö7ˆÜ˜ " dÓ+Ó+ñ8øô × Ñ ò6ܘtÓ$ˆÙØ ÜÐ?Ó@À3ÑFˆÜ×Ñœu S›z°Ô5Ð5ûð 6üs%‚B„7•"B·B Á Ó?Ó@Ð@ðAús ¶?¿(A'c#ó<K—d}|D]}|rd}n|r|–—|–—Œy­w)z9Join items with the separator; Returns generator of bytesTFNr)rr4Úfirstr·s rrfrf†s*èø€à €EÛ ˆÙ ؉EÙ ØŠIØ‹ñ ùs‚)ókeyóvalueNNr)rrNNr¾)NNNr¾r½rD)r)Hr=r¨Úi18nrrrÚrrr Úutilsr r rÓr rrrBrHrmrr—r°rØrr%r6r?rFrJrdrhrnrqr{rrýr˜rQr¢r1rÖr«r­rÊr±rÃr¸r½rºrÂrãrÅrÇr�r‚rÉr¤rÎrÐrÕrŸrÜr rárròrôr÷rùrþrfrrrÚrsðó Û åÝ÷ó÷ ô  ˜%Ÿ+™+ô ô �u—{‘{ô ÷J ñJ ÷Z Añ Aô.�7ô.ôb+�7ô+ô\%0ˆ8�Wô%0ôPW>ˆWôW>ôt87�˜7ô87ôvFˆwôFôR<�wô<ô~1Ð'ô1ô& $Ð"ô $ôE�(Ð,ôEô0 �,ô ô:L�gô:Lóz óMð Ø Ø Ø ØóBð4 Ø Ø ØóBò&ò& ð<@óH0òVò@6ò òò.ò(ò0ò òLò -ò Ió4ó $ó7ó <òJò.ð ˆ+Ø ˆ9؈*؈ð Ðò&òòòó ò*0ò Mòòò ,òEò 6ò ò Aór