"Jd=ddlmZmZmZddlmZddlZddlmZm Z ddl m Z m Z m Z ddl mZmZmZddlmZmZdd lmZd e d zZejd ezd zZejd ezdzZiZeddkZeejD]v\Z Z!eree!dksesee!dkr(e!dkrHee!dkrej"e!Z!n e#e!Z!e!evse $re ee!<wdZ%ede%ddZ&Gdde'Z(Gdde)Z*dS))absolute_importdivisionunicode_literals) text_typeN)register_errorxmlcharrefreplace_errors) voidElementsbooleanAttributesspaceCharacters)rcdataElementsentities xmlEntities) treewalkers_utils)escapez"'=<>`[]u_  /`  ᠎᠏           

   ]u􏿿&c `t|ttfrg}g}d}t|j|j|jD]\}}|rd} ||jz}tj|j|t|j|dzgr'tj |j||dz}d}nt|}| ||D]}t|} | rU| d| | | ds| ds| dt!|ddzd||jfSt%|S)NFrTr;z&#x%s;r) isinstanceUnicodeEncodeErrorUnicodeTranslateError enumerateobjectstartendrisSurrogatePairminsurrogatePairToCodepointordappend_encode_entity_mapgetendswithhexjoinr) excres codepointsskipicindex codepointcpes R/opt/alt/python311/lib/python3.11/site-packages/pip/_vendor/html5lib/serializer.pyhtmlentityreplace_errorsr6*s#*,ABCC- cj37):;<< ) )DAq  ME%cjsCGUQY;O7P7P1P&QRR #";CJuUUVY>> from html5lib.html5parser import parse >>> from html5lib.serializer import serialize >>> token_stream = parse('

Hi!

') >>> serialize(token_stream, omit_optional_tags=False) '

Hi!

' )r getTreeWalkerHTMLSerializerrender)inputtreeencodingserializer_optswalkerss r5 serializerEKsC0 &t , ,F))))A 88FF5MM8 , ,,r7cteZdZdZdZdZdZdZdZdZ dZ dZ dZ dZ dZdZdZdZdZdZdZdd Zdd Zdd Zd S)r=legacy"TF)quote_attr_values quote_charuse_best_quote_charomit_optional_tagsminimize_boolean_attributesuse_trailing_solidusspace_before_trailing_solidusescape_lt_in_attrs escape_rcdataresolve_entitiesalphabetical_attributesinject_meta_charsetstrip_whitespacesanitizec xt|t|jz }t|dkr,tdt t |zd|vrd|_|jD]5}t||||t||6g|_ d|_ dS)aB Initialize HTMLSerializer :arg inject_meta_charset: Whether or not to inject the meta charset. Defaults to ``True``. :arg quote_attr_values: Whether to quote attribute values that don't require quoting per legacy browser behavior (``"legacy"``), when required by the standard (``"spec"``), or always (``"always"``). Defaults to ``"legacy"``. :arg quote_char: Use given quote character for attribute quoting. Defaults to ``"`` which will use double quotes unless attribute value contains a double quote, in which case single quotes are used. :arg escape_lt_in_attrs: Whether or not to escape ``<`` in attribute values. Defaults to ``False``. :arg escape_rcdata: Whether to escape characters that need to be escaped within normal elements within rcdata elements such as style. Defaults to ``False``. :arg resolve_entities: Whether to resolve named character entities that appear in the source tree. The XML predefined entities < > & " ' are unaffected by this setting. Defaults to ``True``. :arg strip_whitespace: Whether to remove semantically meaningless whitespace. (This compresses all whitespace to a single space except within ``pre``.) Defaults to ``False``. :arg minimize_boolean_attributes: Shortens boolean attributes to give just the attribute value, for example:: becomes:: Defaults to ``True``. :arg use_trailing_solidus: Includes a close-tag slash at the end of the start tag of void elements (empty elements whose end tag is forbidden). E.g. ``
``. Defaults to ``False``. :arg space_before_trailing_solidus: Places a space immediately before the closing slash in a tag using a trailing solidus. E.g. ``
``. Requires ``use_trailing_solidus=True``. Defaults to ``True``. :arg sanitize: Strip all unsafe or unknown constructs from output. See :py:class:`html5lib.filters.sanitizer.Filter`. Defaults to ``False``. :arg omit_optional_tags: Omit start/end tags that are optional. Defaults to ``True``. :arg alphabetical_attributes: Reorder attributes to be in alphabetical order. Defaults to ``False``. rz2__init__() got an unexpected keyword argument '%s'rJFN) frozensetoptionslen TypeErrornextiterrKsetattrr'getattrerrorsstrict)selfkwargsunexpected_argsattrs r5__init__zHTMLSerializer.__init__s^$F++i .E.EE   ! # #PSWX\]lXmXmSnSnnoo o 6 ! !',D $L G GD D$ 4t1D1D E E F F F F  r7cxt|tsJ|jr||jdS|S)Nr8rrrAencoderbstrings r5rizHTMLSerializer.encodes>&),,--- = ==0CDD DMr7cxt|tsJ|jr||jdS|S)Nrarhrjs r5 encodeStrictzHTMLSerializer.encodeStricts=&),,--- = ==99 9Mr7Nc# K||_d}g|_|r|jrddlm}|||}|jrddlm}||}|jrddlm}||}|j rddl m}||}|j rddl m}||}|D]h}|d}|dkrd|dz}|dr|d |dzz }n |d r|d z }|d rj|d  d d kr7|d  dd kr|dd}nd }|d||d |z }|dz }||V|dvr|dks|rU|r4|d dd kr|d||dV0|t#|dV\|dvr|d} |d| zV| t$vr |jsd}n|r|d|dD] \\} } } | } | }|dV|| V|jrH| t-j| t1vr| t-jdt1vr|dV|jdkst5|d krd}n_|jdkrt6|du}n7|jdkrt:|du}nt=d |d!d"}|j r|d#d$}|r|j!}|j"rd|vrd |vrd }n d |vrd|vrd}|dkr|dd%}n|d d&}||V||V||V||V | tFvr=|j$r6|j%r|d'Vn|d(V|dV2|d)krG|d} | t$vrd}n|r|d|d*| zV|d+krX|d}| d,d kr|d-|d.|dzV|d/krj|d} | d0z}|tLvr|d1| z|j'r|tPvrtL|}nd2| z}||VM||djdS)3NFr )FiltertypeDoctypez ) CharactersSpaceCharactersrydatazCommentz--zComment contains --z EntityrzEntity %s not recognizedz&%s;))rAr`rTfilters.inject_meta_charsetrorSfilters.alphabeticalattributesrUfilters.whitespacerVfilters.sanitizerrLfilters.optionaltagsfindserializeErrorrmrirr rQitemsrMr r'tuplerIrZ_quoteAttributeSpecsearch_quoteAttributeLegacy ValueErrorreplacerPrJrKr rNrOrrRr)rb treewalkerrAin_cdatarotokenrpdoctyperJrr_ attr_name attr_valuekv quote_attrrzkeys r5rEzHTMLSerializer.serializesu    60 6 ; ; ; ; ; ; H55J  ' , > > > > > > ++J   , 2 2 2 2 2 2 ++J = , 1 1 1 1 1 1 ++J  " , 4 4 4 4 4 4 ++Jl 3l 3E=Dy  (5=8$)~j0AAAGG:&)y(G$WZ(--c22a77 ,11#66!;; //0tuuu%( %( GJJj8I8I::VVG3''000000:::,,,,FE&M$6$6t$<$<$A$A++,DEEE++eFm444444++fU6]&;&;<<<<<<111V}'' 55555>))$2D)#HHW''(UVVV27-2E2E2G2G&1&1.NQ J!A"A++C00000++A.....;1"3"7egg"F"FFF"3"7EGG"D"DDD"//444441X==Q1)-JJ!3v==)<)C)CA)F)Fd)RJJ!3x??)>)E)Ea)H)HPT)TJJ",.M#N#NNIIc73327 ! #v 6 6A%1)-J#75#&!881 14JJ%(AXX#Q,,14J)S00$%IIc7$;$;$%IIc8$<$<"&"3"3J"?"????"&++a..000"&"3"3J"?"?????"&++a..000<''D,E'95"//555555"//44444kk#&&&&&&!!V}>))$HHW''(UVVV''$777777""V}99T??a''''(=>>>'' eFm(CDDDDDD!!V}Sjh&&''(BT(IJJJ()S -C-C#C=DD!D=D''------##E&M2222Yl 3l 3r7c|r6dt|||Sdt||S)anSerializes the stream from the treewalker into a string :arg treewalker: the treewalker to serialize :arg encoding: the string encoding to use :returns: the serialized tree Example: >>> from html5lib import parse, getTreeWalker >>> from html5lib.serializer import HTMLSerializer >>> token_stream = parse('Hi!') >>> walker = getTreeWalker('etree') >>> serializer = HTMLSerializer(omit_optional_tags=False) >>> serializer.render(walker(token_stream)) 'Hi!' r7r)r*listrE)rbrrAs r5r>zHTMLSerializer.renderwsZ(  =88D H!E!EFFGG G774z : :;;<< rr;r7r5r=r=hs!J"& $(!M$H/GWWWrG3G3G3G3R====2!!!!!!r7r=ceZdZdZdS)rzError in serialized treeN)rrr__doc__r;r7r5rrs""Dr7r)r9N)+ __future__rrrpip._vendor.sixrrecodecsrr constantsr r r r rrrrrxml.sax.saxutilsrr*_quoteAttributeSpecCharscompilerrr&rZ_is_ucs4rrrrr#r$islowerr6rErr= Exceptionrr;r7r5rsBBBBBBBBBB%%%%%% ;;;;;;;;GGGGGGGGGG<<<<<<<<<<!!!!!!!!######77?33i? bj'?!?#!EFF" 3)A#A$-$-.. 3|   ! D!! " " & &DAq cc!ffqjj!!c!ffqjjCxx 3q66Q;;//22AAAA & & &!))++ &$% q !---<"$<===----:l!l!l!l!l!Vl!l!l!^      Y     r7