Zw n5dZddlZddlZddlmZdZdZdZejre Z dZ ne Z e Z dZ Gd d eZd Zd Zd ZdZdZedZedZejejZdZedkrdSdS)z This is Victor Stinner's pure-Python implementation of PEP 383: the "surrogateescape" error handler of Python 3. Source: misc/python/surrogateescape.py in https://bitbucket.org/haypo/misc N)utilssurrogateescapecHtjr|S|dS)Nunicode_escape)rPY3decode)texts /srv/buildsys-work-dir/castor/build_node/builder-2/WGSG1/unpkd_srcs/cloudlinux-venv-1.0.6/venv/lib/python3.11/site-packages/future/utils/surrogateescape.pyur s$ y- {{+,,,cHtjr|dS|S)Nlatin1)rrencode)datas r brs# y{{8$$$ r c"t|fSN)bytes)codes r r#sUD7^^r c|j|j|j} t|trt |}n't|t rt|}n|n#t$r|wxYw||jfS)z Pure Python implementation of the PEP 383: the "surrogateescape" error handler of Python 3. Undecodable bytes will be replaced by a Unicode character U+DCxx on decoding, and these are translated into the original bytes on encoding. ) objectstartend isinstanceUnicodeDecodeErrorreplace_surrogate_decodeUnicodeEncodeErrorreplace_surrogate_encodeNotASurrogateError)excmystringdecodeds r surrogateescape_handlerr$(sz#)CG+,H c- . . .x88GG / 0 0  /x88GGI   SW s A A(( A5ceZdZdS)r N)__name__ __module__ __qualname__r r r r CsDr r clg}|D]}t|}d|cxkrdks ntd|cxkrdkr)nn&|t|dz ]|dkr&|t|dz tt |S)z Returns a (unicode) string, not the more logical bytes, because the codecs register_error functionality expects this. i)ordr append_unichrstrjoin)r"r#chrs r rrGs G%%2ww''''''''$ $ T # # # #V # # # # # NN74&=11 2 2 2 2 V^^ NN74&=11 2 2 2 2$ $ 55::g  r cjg}|D]}t|tr|}nt|}d|cxkrdkr)nn&|t d|z_|dkr#|t |t t |S)z$ Returns a (unicode) string r-)rintr.r/r0r r1r2)mybytesr#r3rs r rrdsG%% b#   DDr77D 4    4      NN76D=11 2 2 2 2 T\\ NN74== ) ) ) ) % $ 55::g  r cvtdkrg}t|D]}\}}t|}|dkrt|}n>d|cxkrdkrnnt|dz }nt t|||dzd||~t |Stdkrg}t|D]\}}t|}d |cxkrd krVnnSd|cxkrdkr+nn(t|dz }||\t t|||dzd |d}||t |S|ttS) Nasciir5ir,r-zordinal not in range(128)zutf-8r+izsurrogates not allowed) FS_ENCODING enumerater. bytes_chrrr/rr2r FS_ERRORS)fnencodedindexr3rch_utf8s r encodefilenamerE}sg"2  IE2r77Dczzt__4))))6)))))tf}--(uQw/111 NN2    ww||G$$$   "2 ( (IE2r77D'''''''''T++++V+++++"4&=11BNN2&&&&,#E57,DFFF))G,,w''''ww||G$$$yyi000r cB|ttSr)rr=r@)rAs r decodefilenamerGs 99[) , ,,r r;u[abcÿ]u[abc]ctjrdS tjtdS#t $r#tjttYdSwxYw)zH Registers the surrogateescape error handler on Python 2 (only) N)rrcodecs lookup_errorr@ LookupErrorregister_errorr$r)r r register_surrogateescaperMsl yBI&&&&& BBBi)@AAAAAABs+)AA__main__)__doc__rIsysfuturerr@r rrchrr0r?unichrr$ Exceptionr rrrErGr=rArBlookupnamerMr&r)r r rWsX   ---   9G++IIGI6        :2%1%1%1N--- AAkNNraa 6F6FGfmK((-  B B B zDr