HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: sport3497 (1034)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib/python3.10/site-packages/bs4/builder/__pycache__/_html5lib.cpython-310.pyc
o

�h�J�
@sdZdgZddlZddlZddlmZmZmZmZm	Z	ddl
mZmZddl
Z
ddlmZmZddl
mZmZmZmZz
ddlmZd	ZWney_Zzdd
lmZdZWYdZ[ndZ[wwGdd�de	�ZGd
d�dej�ZGdd�de�Z Gdd�dej!�Z"Gdd�de"�Z#dS)�MIT�HTML5TreeBuilder�N)�DetectsXMLParsedAsHTML�
PERMISSIVE�HTML�HTML_5�HTMLTreeBuilder)�NamespacedAttribute�nonwhitespace_re)�
namespaces�prefixes)�Comment�Doctype�NavigableString�Tag)�_baseF)�baseTc@sHeZdZdZdZeeeegZdZ		d
dd�Z
dd�Zd	d
�Zdd�Z
dS)raUse html5lib to build a tree.

    Note that this TreeBuilder does not support some features common
    to HTML TreeBuilders. Some of these features could theoretically
    be implemented, but at the very least it's quite difficult,
    because html5lib moves the parse tree around as it's being built.

    * This TreeBuilder doesn't use different subclasses of NavigableString
      based on the name of the tag in which the string was found.

    * You can't use a SoupStrainer to parse only part of a document.
    �html5libTNccs:�||_|r
tjddd�tj|dd�|dddfVdS)NzjYou provided a value for exclude_encoding, but the html5lib tree builder doesn't support exclude_encoding.���
stacklevelF)�user_specified_encoding�warnings�warnr�warn_if_markup_looks_like_xml)�self�markupr�document_declared_encoding�exclude_encodings�r�H/usr/local/CyberCP/lib/python3.10/site-packages/bs4/builder/_html5lib.py�prepare_markup@s���zHTML5TreeBuilder.prepare_markupcCs�|jjdur
tjddd�tj|jd�}||j_t	�}t
|t�s-tr(|j
|d<n|j
|d<|j|fi|��}t
|t�r?d|_n|jjjd}t
|t�sN|j}||_d|j_dS)Nz�You provided a value for parse_only, but the html5lib tree builder doesn't support parse_only. The entire document will be parsed.�r)�tree�override_encoding�encodingr)�soup�
parse_onlyrrr�
HTMLParser�create_treebuilder�underlying_builder�parser�dict�
isinstance�str�new_html5libr�parse�original_encoding�	tokenizer�stream�charEncoding�name)rrr+�extra_kwargs�docr1rrr �feedWs(�



zHTML5TreeBuilder.feedcCst||j|jd�|_|jS)N)�store_line_numbers)�TreeBuilderForHtml5libr&r9r*)r�namespaceHTMLElementsrrr r)vs
�z#HTML5TreeBuilder.create_treebuildercCsd|S)zSee `TreeBuilder`.z)<html><head></head><body>%s</body></html>r)r�fragmentrrr �test_fragment_to_document}sz*HTML5TreeBuilder.test_fragment_to_document)NN)�__name__�
__module__�__qualname__�__doc__�NAMErrr�features�TRACKS_LINE_NUMBERSr!r8r)r=rrrr r*s

�csjeZdZ		d�fdd�	Zdd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Z�Z
S)r:NTcsN|r||_nddlm}|	dd|i|��|_tt|��|�d|_||_dS)Nr��
BeautifulSoup��html.parserr9)rGrH)r&�bs4rF�superr:�__init__r+r9)rr;r&r9�kwargsrF��	__class__rr rK�s���
zTreeBuilderForHtml5lib.__init__cCs|j��t|j|jd�S�N)r&�reset�Element�rrrr �
documentClass�s
z$TreeBuilderForHtml5lib.documentClasscCs6|d}|d}|d}t�|||�}|j�|�dS)Nr5�publicId�systemId)r�for_name_and_idsr&�object_was_parsed)r�tokenr5rTrU�doctyperrr �
insertDoctype�s
z$TreeBuilderForHtml5lib.insertDoctypecCsZi}|jr|jr|jjj��\}}||d<|d|d<|jj||fi|��}t||j|�S)N�
sourceline��	sourcepos)r+r9r2r3�positionr&�new_tagrQ)rr5�	namespacerLr[r]�tagrrr �elementClass�sz#TreeBuilderForHtml5lib.elementClasscCstt|�|j�SrO)�TextNoder
r&)r�datarrr �commentClass�sz#TreeBuilderForHtml5lib.commentClasscCs0ddlm}|dd�|_d|j_t|j|jd�S)NrrErGrHz[document_fragment])rIrFr&r5rQ)rrFrrr �
fragmentClass�sz$TreeBuilderForHtml5lib.fragmentClasscCs|j�|j�dSrO)r&�append�element�r�noderrr �appendChild�sz"TreeBuilderForHtml5lib.appendChildcCs|jSrO)r&rRrrr �getDocument�sz"TreeBuilderForHtml5lib.getDocumentcCstj�|�jSrO)�treebuilder_base�TreeBuilder�getFragmentrhrRrrr ro��z"TreeBuilderForHtml5lib.getFragmentcsBddlm�g�t�d��d����fdd�	��|d�d���S)NrrEz8^(.*?)(?: PUBLIC "(.*?)"(?: "(.*?)")?| SYSTEM "(.*?)")?$c	s�t|��r	t|t�rW��|�}|rK|�d�}|jdkr>|�d�p"d}|�d�p.|�d�p.d}��dd||||f�dS��dd||f�dS��d	d|f�dSt|t�ri��d
d||f�dSt|t�r{��dd||f�dS|jr�dt	|j|j
f}n|j
}��d
d||f�|jr�g}t|j�
��D]$\}}t|t�r�dt	|j|j
f}t|t�r�d�|�}|�||f�q�t|�D]\}}��dd|d||f�q�|d7}|jD]}�||�q�dS)Nr\�rGrr"z|%s<!DOCTYPE %s "%s" "%s">� z|%s<!DOCTYPE %s>z|%s<!DOCTYPE >z|%s<!-- %s -->z|%s"%s"z%s %sz|%s<%s>z
|%s%s="%s")r-r�match�group�	lastindexrgr
rr`rr5�attrs�list�itemsr	�join�sorted�children)	rh�indent�mr5rTrU�
attributes�value�child�rF�
doctype_re�rv�serializeElementrr r��sL





�


�



�z?TreeBuilderForHtml5lib.testSerializer.<locals>.serializeElement�
)r)rIrF�re�compilery�rrhrr�r �testSerializer�s

)
z%TreeBuilderForHtml5lib.testSerializer)NT)r>r?r@rKrSrZrbrerfrkrlror��
__classcell__rrrMr r:�s�
r:c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�AttrListcCs||_t|jj�|_dSrO)rhr,rvr�rrr rK�szAttrList.__init__cCst|j�����SrO)rwrvrx�__iter__rRrrr r���zAttrList.__iter__cCs^|jjpi}||�dg�vs|jj|vr(||�|jjg�vr(t|t�s(t�|�}||j|<dS)N�*)rh�cdata_list_attributes�getr5r-rwr
�findall)rr5r�	list_attrrrr �__setitem__s

zAttrList.__setitem__cC�t|j���SrO)rwrvrxrRrrr rxrpzAttrList.itemscCr�rO�rwrv�keysrRrrr r�rpz
AttrList.keyscCs
t|j�SrO)�lenrvrRrrr �__len__�
zAttrList.__len__cCs
|j|SrO)rv�rr5rrr �__getitem__r�zAttrList.__getitem__cCs|t|j���vSrOr�r�rrr �__contains__r�zAttrList.__contains__N)r>r?r@rKr�r�rxr�r�r�r�rrrr r��sr�c@sxeZdZdd�Zdd�Zdd�Zdd�Zeee�Zdd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zee�Zd	S)rQcCs&tj�||j�||_||_||_dSrO)rm�NoderKr5rhr&r`)rrhr&r`rrr rKs
zElement.__init__cCs*d}}t|t�r|}}nt|t�r|}n|jjtkr%|j}}||_n|j}||_t|t�s:|jdur:|j��|durd|jjrd|jjdjtkrd|jjd}|j	�
||�}|�|�||j	_dSt|t�ro|j	�
|�}|jjrz|j�
d�}n|jjdur�|j	�
�}n|j}|j	j||j|d�dS)N���F)�parent�most_recent_element)r-r.rrhrNrr��extract�contentsr&�
new_string�replace_with�_most_recent_element�_last_descendant�next_elementrW)rrj�string_childr��old_element�new_elementr�rrr rks:







�zElement.appendChildcCst|jt�riSt|j�SrO)r-rhr
r�rRrrr �
getAttributesUs
zElement.getAttributescCs�|durJt|�dkrLg}t|���D]\}}t|t�r&t|�}||=|||<q|jj�|j	|�t|���D]	\}}||j
|<q6|jj�|j
�dSdSdS)Nr)r�rwrxr-�tupler	r&�builder�$_replace_cdata_list_attribute_valuesr5rh�set_up_substitutions)rr~�converted_attributesr5r�new_namerrr �
setAttributesZs
���zElement.setAttributesNcCs6t|j�|�|j�}|r|�||�dS|�|�dSrO)rcr&r��insertBeforerk)rrdr��textrrr �
insertTextpszElement.insertTextcCs�|j�|j�}|jjtkr4|jjr4|jj|djtkr4|jj|d}|j�||j�}|�|�dS|j�||j�||_	dS)Nr\)
rh�indexrNrr�r&r�r��insertr�)rrj�refNoder��old_node�new_strrrr r�ws
zElement.insertBeforecCs|j��dSrO)rhr�rirrr �removeChild�rpzElement.removeChildcCs�|j}|j}|j}|�dd�}t|j�dkr|jd}|j}nd}|j}|j}t|�dkrf|d}	|dur9||	_n||	_||	_|durG|	|_n|	|_|durQ|	|_|d�dd�}
||
_|durc|
|_d|
_|D]}||_|j�	|�qhg|_||_dS)z1Move all of this tag's children into another tag.Frr�NT)
rh�next_siblingr�r�r�r��previous_element�previous_siblingr�rg)r�
new_parentrh�new_parent_element�final_next_element�new_parents_last_descendant�new_parents_last_child�(new_parents_last_descendant_next_element�	to_append�first_child�last_childs_last_descendantr�rrr �reparentChildren�s>

zElement.reparentChildrencCsB|j�|jj|j�}t||j|j�}|jD]	\}}||j|<q|SrO)r&r_rhr5r`rQr~)rrarj�keyrrrr �	cloneNode�s
zElement.cloneNodecCs|jjSrO)rhr�rRrrr �
hasContent�szElement.hasContentcCs$|jdkrtd|jfS|j|jfS)N�html)r`rr5rRrrr �getNameTuple�s
zElement.getNameTuplerO)r>r?r@rKrkr�r��propertyr~r�r�r�r�r�r�r��	nameTuplerrrr rQs6

BrQc@seZdZdd�Zdd�ZdS)rccCstj�|d�||_||_dSrO)rmr�rKrhr&)rrhr&rrr rK�s
zTextNode.__init__cCst�rO)�NotImplementedErrorrRrrr r��szTextNode.cloneNodeN)r>r?r@rKr�rrrr rc�src)$�__license__�__all__rr��bs4.builderrrrrr�bs4.elementr	r
r�html5lib.constantsrrr
rrr�html5lib.treebuildersrrmr/�ImportError�errrnr:�objectr�r�rQrcrrrr �<module>s0���XxC