Ë þãõòP‡Ð°ã ób —UdZddlZddlZddlmZddlZddlZddlmZ ddl m Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZddlmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*ejVddk\Z,dejZvZ.dZ/e0«sddlZej^Z/e&e!e&e1e1fe!e1fZ2e(d«Z3e(d«Z4e(d «Z5e(d d ¬ «Z6d „Z7ejpZ8de3de3fd„Z9d„Z:d„Z;ejxdk(rejz«ej|Z>ej~Z?ej€jƒd«ZBe1eCd<ejˆjƒd«ZEe1eCd<ejxjƒd«ZFe1eCd<ejŽjƒd«ZHe1eCd<ej’jƒd«ZJe1eCd<ej–jƒd«ZLe1eCd<ejšrejšjƒd«ndZNe$e1eCd<ejžjƒd«ZPe1eCd<ej¢jƒd«ZRe1eCd<ej¦rej|ej¦«ndZTe1eCd<e/r|«‘Œ c}Z_ejÂd-«jÄZcd.jÈZeGd/„d e1«Zfd0eeVde e1fd1„Zge/re*d0e1deffd2„«Zhe*d0e3de3fd3„«Zhd4„Zhd0ede1fd5„Zid0edejfd6„Zkd7edejfd8„Zld7ede1fd9„Zmd:ende#fd;„Zod„Zrerejæ«Zserej¼«Z^erejè«Zterejê«ZuejìZwejZx ddd?ed@eVdAe$ejdefdB„Zyerejè«ZzdCe%e1dDe1dEe%e1de2fdF„Z{dGe"e1e3fdeeje3ffdH„Z|dGe"eje3fdee1e3ffdI„Z} ded0e1dJe~dKe~de!e1fdL„ZdM„Z€dN„Z�e�jZƒeR�j dO«Z…e~eCdP<eR�j dQ«Z†e~eCdR<eR�j dS«Z‡e~eCdT<eFdUk(Zˆe~eCdV<eFdWk(Z‰e~eCdX<dCe%e1dDe1dEe%e1de2fdY„ZŠdCe%e1dDe1dEe%e1de2fdZ„Z‹ dfd[e1d\e1d]e$e1de1fd^„ZŒ dfd[e1d\e1d]e$e1de&eVe1ffd_„Z�dgd?e$e1defd`„ZŽ dhd?e1daeVd[e1d\e1d]e$e1dbe~f dc„Z�ycc}wcc}w)izwMercurial portability shim for python 3. This contains aliases to hide python version-specific details from the core. éN)ÚAnyÚAnyStrÚBinaryIOÚCallableÚDictÚIterableÚIteratorÚListÚMappingÚNoReturnÚOptionalÚSequenceÚTupleÚTypeÚTypeVarÚcastÚoverloadéÚ__pypy__FÚ_T0Ú_T1Ú_SÚ _TbytestrÚbytestr)Úboundcó,—|j|d«y)Nr)Ú set_exception)ÚfÚexc_infos ú6usr/lib/python3.12/site-packages/mercurial/pycompat.pyÚfuture_set_exception_infor!Cs€Ø‡O�O�H˜Q‘KÕ óÚaÚreturncó—|S©N©©r#s r Úidentityr)Js€Ø €Hr"cóö‡—|€|St|tttf«rt |«ˆfd„|D««St|t «r(t |«ˆfd„|j «D««S‰|«S)Nc3ó6•K—|]}t‰|«–—Œy­wr&©Ú_rapply)Ú.0Úxrs €r Ú z_rapply..Ssøèø€Ð2©r¨!œ  1Ÿ ©rùsƒc3óT•K—|]\}}t‰|«t‰|«f–—Œ!y­wr&r,)r.ÚkÚvrs €r r0z_rapply..Us'øèø€ÐNÁ:¹4¸1¸aœ  A›¬°°1« Ô6Á:ùsƒ%()Ú isinstanceÚlistÚsetÚtupleÚtypeÚdictÚitems©rÚxss` r r-r-Nseø€Ø €zàˆ Ü�"”tœS¤%Ð(Ô)ØŒt�B‹xÓ2©rÓ2Ó2Ð2Ü�"”dÔØŒt�B‹xÓNÀ2Ç8Á8Ä:ÓNÓNÐNÙ ˆR‹5€Lr"có.—|tur|St||«S)a Apply function recursively to every item preserving the data structure >>> def f(x): ... return 'f(%s)' % x >>> rapply(f, None) is None True >>> rapply(f, 'a') 'f(a)' >>> rapply(f, {'a'}) == {'f(a)'} True >>> rapply(f, ['a', 'b', None, {'c': 'd'}, []]) ['f(a)', 'f(b)', None, {'f(c)': 'f(d)'}, []] >>> xs = [object()] >>> rapply(identity, xs) is xs True )r)r-r;s r Úrapplyr>Ys€ð$ ŒH�}àˆ Ü �1�b‹>Ðr"ÚntÚasciiÚoscurdirÚ oslinesepÚosnameÚ ospathsepÚospardirÚossepÚosaltsepÚ osdevnullÚ sysplatformr"Ú sysexecutablerÚargcó—yr&r')rrKs r ÚmaplistrM‰ó€à r"Úarg1Úarg2có—yr&r')rrOrPs r rMrM�s€ð r"có,—tt|g|¢­Ž«Sr&)r5Úmap)rÚargss r rMrM”s€Ü ”�A� ˜’ Ó Ðr"có$—tt|Ž«Sr&)r5Úrange©rTs r Ú rangelistrX˜s€Ü ”�t� Ó Ðr"có$—tt|Ž«Sr&)r5ÚziprWs r Úziplistr[œs€Ü ”�T� Ó Ðr"ÚargvÚsysargvÚmbcsÚignorez>Bs%rcól—eZdZdZer d deddfd„Zd deededefd„Z de fd„Z de e fd „Z defd „Zy) raWA bytes which mostly acts as a Python 2 str >>> bytestr(), bytestr(bytearray(b'foo')), bytestr(u'ascii'), bytestr(1) ('', 'foo', 'ascii', '1') >>> s = bytestr(b'foo') >>> assert s is bytestr(s) __bytes__() should be called if provided: >>> class bytesable: ... def __bytes__(self): ... return b'bytes' >>> bytestr(bytesable()) 'bytes' There's no implicit conversion from non-ascii str as its encoding is unknown: >>> bytestr(chr(0x80)) # doctest: +ELLIPSIS Traceback (most recent call last): ... UnicodeEncodeError: ... Comparison between bytestr and bytes should work: >>> assert bytestr(b'foo') == b'foo' >>> assert b'foo' == bytestr(b'foo') >>> assert b'f' in bytestr(b'foo') >>> assert bytestr(b'f') in b'foo' Sliced elements should be bytes, not integer: >>> s[1], s[:2] (b'o', b'fo') >>> list(s), list(reversed(s)) ([b'f', b'o', b'o'], [b'o', b'o', b'f']) As bytestr type isn't propagated across operations, you need to cast bytes to bytestr explicitly: >>> s = bytestr(b'foo').upper() >>> t = bytestr(s) >>> s[0], t[0] (70, b'F') Be careful to not pass a bytestr object to a function which expects bytearray-like behavior. >>> t = bytes(t) # cast to bytes >>> assert type(t) is bytes Úsr$Ncó—yr&r')Úselfras r Ú__init__zbytestr.__init__ùs€Ø r"ÚclscóÞ—t|t«r|St|ttf«s0t j |d«st |«jd«}tj||«S)NÚ __bytes__r@) r4rÚbytesÚ bytearrayÚbuiltinsÚhasattrÚstrÚencodeÚ__new__)reras r rnzbytestr.__new__üs[€Ü �aœÔ !؈HÜØ ””yÐ!ô ä×"Ñ"Ø ˆ|ô ô�A“— ‘ ˜gÓ&ˆAÜ�}‰}˜S !Ó$Ð$r"cóh—tj||«}t|t«s t|«}|Sr&)rhÚ __getitem__r4Úbytechr)rcÚkeyras r rpzbytestr.__getitem__ s,€Ü × Ñ ˜d CÓ (ˆÜ˜!œUÔ#ܘ“ ˆA؈r"có>—ttj|««Sr&)Ú iterbytestrrhÚ__iter__©rcs r ruzbytestr.__iter__s€Üœ5Ÿ>™>¨$Ó/Ó0Ð0r"có2—tj|«ddS)Né)rhÚ__repr__rvs r ryzbytestr.__repr__s€Ü�~‰~˜dÓ# A BÐ'Ð'r")r")Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú TYPE_CHECKINGÚobjectrdrrrnrhrpr rurlryr'r"r rr¾sf„ñ2ñpñ ˜fð ¨tó ñ %�T˜)‘_ð %¨ð %¸)ó %ð %óð1˜( 5™/ó1ð(˜#ô(r"racó"—tt|«S)z4Iterate bytes as if it were a str object of Python 2)rSrq©ras r rtrts€ä Œw˜‹?Ðr"có—yr&r'r�s r Ú maybebytestrrƒrNr"có—yr&r'r�s r rƒrƒ#rNr"có<—t|t«r t|«S|S)zPromote bytes to bytestr)r4rhrr�s r rƒrƒ(s€ä�!”UÔÜ�q‹zÐØ €Hr"cóH—t|t«r|S|jd«S)zµConvert an internal str (e.g. keyword, __doc__) back to bytes This never raises UnicodeEncodeError, but only ASCII characters can be round-trip by sysstr(sysbytes(s)). zutf-8)r4rhrmr�s r Úsysbytesr‡/s"€ô �!”UÔØˆØ �8‰8�GÓ Ðr"có\—t|tj«r|S|jd«S)a$Return a keyword str to be passed to Python functions such as getattr() and str.encode() This never raises UnicodeDecodeError. Non-ascii characters are considered invalid and mapped to arbitrary but unique code points such that 'sysstr(a) != sysstr(b)' for all 'a != b'. úlatin-1)r4rjrlÚdecoder�s r Úsysstrr‹:s&€ô�!”X—\‘\Ô"ØˆØ �8‰8�IÓ Ðr"ÚurlcóH—t|t«r|jd«S|S)z Converts a bytes url back to strr@)r4rhrŠ©rŒs r Ústrurlr�Gs €ä�#”uÔØ�z‰z˜'Ó"Ð"Ø €Jr"cóH—t|t«r|jd«S|S)z0Converts a str url to bytes by encoding in asciir@)r4rlrmrŽs r Úbytesurlr‘Ns €ä�#”sÔØ�z‰z˜'Ó"Ð"Ø €Jr"Úexccó$—|j|«‚)z(Raise exception with the given traceback)Úwith_traceback)r’Útbs r Ú raisewithtbr–Us€à × Ñ ˜RÓ Ð r"ÚobjcóN—tj|dd«}|€|St|«S)zPGet docstring as bytes; may be None so gettext() won't confuse it with _('')r}N)rjÚgetattrr‡)r—Údocs r Úgetdocr›Zs,€ô × Ñ ˜3  ¨4Ó 0€CØ €{؈ Ü �C‹=Ðr"cóB‡—tj‰«ˆfd„«}|S)Ncó*•—‰|t|«g|¢­ŽSr&)r‹)rÚnamerTrs €r Úwz_wrapattrfunc..wdsø€á�œ ›Ð-¨Ò-Ð-r")Ú functoolsÚwraps)rrŸs` r Ú _wrapattrfuncr¢cs%ø€Ü‡_�_�QÓó.óð.ð €Hr"ÚmodeÚ bufferingÚencodingcóD—tj|t|«||«Sr&)rjÚopenr‹)ržr£r¤r¥s r r§r§ts€ô �=‰=˜œv d›|¨Y¸Ó AÐAr"rTÚ shortlistÚnamelistcóŒ—|D�cgc]}|jd«‘Œ}}|jd«}|D�cgc]}|jd«‘Œ}}||||«\}}|D�cgc]*}|djd«|djd«f‘Œ,}}|D�cgc]}|jd«‘Œ}}||fScc}wcc}wcc}wcc}w)zò Takes bytes arguments, converts them to unicode, pass them to getopt.getopt(), convert the returned values back to bytes and then return them for Python 3 compatibility as getopt.getopt() don't accepts bytes on Python 3. r‰rrx)rŠrm)ÚorigrTr¨r©r#Úoptss r Ú_getoptbwrapperr­�sÈ€ñ*.Ó .© AˆA�H‰H�YÕ ¨€DÐ .Ø× Ñ  Ó+€IÙ-5Ó6©X¨�—‘˜Õ#¨X€HÐ6Ù�d˜I xÓ0�J€Dˆ$ÙFJÓ KÁdÀˆQˆq‰T�[‰[˜Ó # Q q¡T§[¡[°Ó%;Ò <Àd€DÐ KÙ)-Ó .© AˆA�H‰H�YÕ ¨€DÐ .Ø �ˆ:Ðùò /ùâ6ùâ KùÚ .s…B2´B7Á/B<ÂCÚdiccóv—|j«D��cic]\}}|jd«|“Œ}}}|Scc}}w)zÝ Converts the keys of a python dictonary to str i.e. unicodes so that they can be passed as keyword arguments as dictionaries with bytes keys can't be passed as keyword arguments to functions on Python 3. r‰)r:rŠ©r®r2r3s r Ú strkwargsr±“s:€ð /2¯i©i¬kÔ :©k¡d a¨ˆ1�8‰8�IÓ  Ñ !¨k€CÑ :Ø €Jùó ;ó”5cóv—|j«D��cic]\}}|jd«|“Œ}}}|Scc}}w)z“ Converts keys of python dictionaries to bytes as they were converted to str to pass that dictonary as a keyword argument on Python 3. r‰)r:rmr°s r Ú byteskwargsr´�s:€ð /2¯i©i¬kÔ :©k¡d a¨ˆ1�8‰8�IÓ  Ñ !¨k€CÑ :Ø €Jùó ;r²ÚcommentsÚposixcó–—tj|jd«||«}|D�cgc]}|jd«‘Œc}Scc}w)zæ Takes bytes argument, convert it to str i.e. unicodes, pass that into shlex.split(), convert the returned value to bytes and return that for Python 3 compatibility as shelx.split() don't accept bytes on Python 3. r‰)ÚshlexÚsplitrŠrm)rarµr¶Úretr#s r Ú shlexsplitr»§s@€ô �+‰+�a—h‘h˜yÓ)¨8°UÓ ;€CÙ),Ó -© AˆA�H‰H�YÕ ¨Ñ -Ð-ùÒ -s«Acó"—|j«Sr&)r:©r/s r Úr¾³s €�a—g‘g”ir"có"—|j«Sr&)Úvaluesr½s r r¾r¾´s €�q—x‘x”zr"sjavaÚisjythonsdarwinÚisdarwinslinuxÚislinuxsposixÚisposixsntÚ iswindowscó:—ttj|||«Sr&)r­Úgetopt©rTr¨r©s r ÚgetoptbrÉÀs€ô œ6Ÿ=™=¨$° ¸8Ó DÐDr"có:—ttj|||«Sr&)r­rÇÚ gnu_getoptrÈs r Ú gnugetoptbrÌÆs€ô œ6×,Ñ,¨d°I¸xÓ HÐHr"ÚsuffixÚprefixÚdircó0—tj|||«Sr&)ÚtempfileÚmkdtemp©rÍrÎrÏs r rÒrÒÌó€ô × Ñ ˜F F¨CÓ 0Ð0r"có0—tj|||«Sr&)rÑÚmkstemprÓs r rÖrÖÓrÔr"có|—|€d}n t|«}d|vsJ‚tttj|g|¢­i|¤Ž«S)Nzw+bÚb)r‹rrrÑÚ TemporaryFile)r£rTÚkwargss r ÚunnamedtempfilerÛÛsC€Ø €|؉ä�d‹|ˆØ �$‰;Ј;Ü ”œ(×0Ñ0°ÐG¸ÒGÀÑGÓ HÐHr"ÚbufsizeÚdeletecóZ—t|«}d|vsJ‚tj||||||¬«S)NrØ)rÍrÎrÏrÝ)r‹rÑÚNamedTemporaryFile)r£rÜrÍrÎrÏrÝs r Ú namedtempfileràæs9€ô �$‹<€DØ �$‰;Ј;Ü × &Ñ &Ø ˆg˜f¨V¸ÀVô ðr")óréÿÿÿÿN)FT)r"ótmpNr&)sw+brâr"rãNT)�r}rjÚcodecsÚconcurrent.futuresÚfuturesr rÇÚ http.clientÚclientÚhttplibÚhttp.cookiejarÚ cookiejarÚ cookielibÚinspectÚioÚjsonÚosÚqueuer¸Ú socketserverÚstructÚsysrÑÚ xmlrpc.clientÚ xmlrpclibÚtypingrrrrrrr r r r r rrrrrrÚ version_infoÚispy3Úbuiltin_module_namesÚispypyr~ÚglobalsrhÚ _GetOptResultrrrrr!ÚFileNotFoundErrorr)r-r>ržÚ_enablelegacywindowsfsencodingÚfsencodeÚfsdecodeÚcurdirrmrAÚ__annotations__ÚlineseprBrCÚpathseprDÚpardirrEÚseprFÚaltseprGÚdevnullrHÚplatformrIÚ executablerJrMÚintrXr[ÚinputÚrawinputÚgetfullargspecÚ getargspecÚlongr™r]r\ÚStructÚpackrqÚ__mod__Úbytereprrrtrƒr‡rlr‹r�r‘Ú BaseExceptionr–rr›r¢ÚdelattrrkÚsetattrrVÚxrangeÚunicoder§Ú safehasattrr­r±r´Úboolr»Ú iteritemsÚ itervaluesÚloadsÚ json_loadsÚ startswithrÁrÂrÃrÄrÅrÉrÌrÒrÖrÛràr(s0r Úr"s‡ðò ó Û Ý$ÛÛ ÝÝ"ÛÛ Û Û Û Û ÛÛ Û ÛÝ!÷÷÷÷õð( ×јјqÑ €Ø �s×/Ñ/Ð /€Ø€ á„yÛà×(Ñ(€Mà�d˜5 ¨ Ñ.Ñ/°°e±Ð<Ñ=€ Ù ˆeƒn€Ù ˆeƒn€Ù ˆTƒ]€Ù �K yÔ 1€ ò!ð×.Ñ.Ðð �ð ˜ó òòð0‡7�7ˆeÒð '€C×&Ñ&Ô(à �;‰;€Ø �;‰;€Ø—)‘)×"Ñ" 7Ó+€ˆ%Ó+Ø—:‘:×$Ñ$ WÓ-€ ˆ5Ó-Ø—‘—‘˜wÓ'€ˆÓ'Ø—:‘:×$Ñ$ WÓ-€ ˆ5Ó-Ø—)‘)×"Ñ" 7Ó+€ˆ%Ó+Ø�v‰v�}‰}˜WÓ%€€uÓ%Ø9;¿º˜BŸI™I×,Ñ,¨WÔ5È€ˆ(�5‰/ÓLØ—:‘:×$Ñ$ WÓ-€ ˆ5Ó-à—\‘\×(Ñ(¨Ó1€ ˆUÓ1Ø69·n²n�{�r—{‘{ 3§>¡>Ô2È#€ ˆuÓMñà ð �8˜S˜E 2˜IÑ&ð ¨X°c©]ð ¸tÀB¹xò óð ðð Ø �S˜#�J �NÑ #ð Ø+3°C©=ð Ø@HÈÁ ð à ˆb‰ò óð ò ð˜˜S™ óòð €Ø × #Ñ #€ à €à€8×Ñ�C˜ Ó&Ð2ð€GˆT�%‰[ÓØ ‡w�w�%ÒØ7:·x²xÓ@±x°!�1—8‘8˜F HÕ-°xÑ@‰à(+¯ªÓ1© 1‘8˜A•;¨Ñ1ˆà ˆ&�-‰-˜Ó × "Ñ "€Ø �=‰=€ôW(ˆeôW(ðt�8˜C‘=ð X¨e¡_óñ à ð ˜ð  'ò óð ðð ˜ð  ò óð ò ð�ð˜5óð ˆfð ˜ó ð�ð˜3óð�&ð˜Uóð!�]ð!¨8ó!ð �ð˜8 E™?óò ñ ˜×(Ñ(Ó )€Ù ˜×(Ñ(Ó )€Ù ˜×(Ñ(Ó )€Ù ˜×(Ñ(Ó )€Ø �‰€Ø €ð ØØ"ñ Bà ðBððBð�s‰mð Bð  ó Bñ˜H×,Ñ,Ó-€ ðØ˜‘ðØ,1ðØ=EÀe¹_ðàóð$�7˜5 #˜:Ñ&ð¨4°°S°©>óð�W˜S #˜XÑ&ð¨4°°s° Ñ+;óð59ñ .Ø ð .Øð .Ø-1ð .à ˆ%�[ó .ñ € Ù !€ à �ZŠZ€ à×'Ò'¨Ó0€ˆ$Ó0à×'Ò'¨ Ó2€ˆ$Ó2Ø×&Ò& xÓ0€ˆÓ0ؘ(Ñ"€ˆÓ"ؘE‘/€ ˆ4Ó!ðEØ �5‰/ðEØ&+ðEØ7?À±ðEàóEð IØ �5‰/ðIØ&+ðIØ7?À±ðIàóIðIMñ1Ø ð1Ø!&ð1Ø6>¸u±oð1à ó1ðIMñ1Ø ð1Ø!&ð1Ø6>¸u±oð1à ˆ3�ˆ:Ñó1ñI˜( 5™/ðIÀhóIðØØØØØñ Ø ð à ð ð ð ð ð ð �%‰ð ð ô ùòa Aùâ1s Ì4V'ÍV,