o
    úG§b¹  ã                   @   s    d dl mZ G dd„ deƒZdS )é   )ÚUndeclaredNamespacec                       s\   e Zd Z‡ fdd„Zedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
e
Zdd„ Z‡  ZS )Ú_StrictFeedParserc                    s:   d| _ d | _i | _|pd| _|| _|| _tt| ƒ ¡  d S )Né    Ú )	ÚbozoÚexcÚdeclsÚbaseuriÚlangÚencodingÚsuperr   Ú__init__)Úselfr	   Zbaselangr   ©Ú	__class__© úD/usr/local/lib/python3.10/dist-packages/feedparser/parsers/strict.pyr   !   s   
z_StrictFeedParser.__init__c                 C   s0   | d   ¡ }|dv r| d   ¡ p| d }||fS )Nr   )ÚrelÚtypeé   )Úlower)ÚkvÚkÚvr   r   r   Ú_normalize_attributes*   s   z'_StrictFeedParser._normalize_attributesc                 C   sB   |sd S |pd }|   ||¡ |r|dkr|| jd| < d S d S d S )Nzhttp://www.w3.org/1999/xlinkzxmlns:)Ztrack_namespacer   )r   ÚprefixÚurir   r   r   ÚstartPrefixMapping0   s   ÿz$_StrictFeedParser.startPrefixMappingc                 C   sÄ  |\}}t |pdƒ ¡ }| d¡dkrd}|}|r(| d¡dkr(| d¡d }nd }| j ||¡}|rJ|d u s?|dkrJ|dkrJ|| jvrJtd| ƒ‚t |ƒ ¡ }| ji }	| _|dkrc|d	krc||	d
< |dkro|dkro||	d
< |rz| ¡ d | }n|r–|s–| j 	¡ D ]\}}
|r•|
|kr•|d | } nqƒ| 	¡ D ]#\\}}}|p£d ¡ }| j |d¡}|rµ|d | }||	t |ƒ ¡ < qš| 
¡ D ]}| |¡|	t |ƒ ¡ < qÂt |ƒ ¡ }|  |t|	 	¡ ƒ¡ d S )Nr   zbackend.userland.com/rsséÿÿÿÿzhttp://backend.userland.com/rssú:r   z''%s' is not associated with a namespaceÚmathz"http://www.w3.org/1998/Math/MathMLÚxmlnsÚsvgzhttp://www.w3.org/2000/svg)Ústrr   ÚfindÚsplitÚ_matchnamespacesÚgetÚnamespaces_in_user   r   ÚitemsÚ	getQNamesÚgetValueByQNameZunknown_starttagÚlist)r   ÚnameÚqnameÚattrsÚ	namespaceÚ	localnameÚlowernamespaceÚgivenprefixr   ZattrsDÚvalueZattrlocalnameÚ	attrvaluer   r   r   ÚstartElementNS9   sF   &	€z _StrictFeedParser.startElementNSc                 C   s   |   |¡ d S ©N)Úhandle_data)r   Útextr   r   r   Ú
charactersi   s   z_StrictFeedParser.charactersc           	      C   s°   |\}}t |pdƒ ¡ }|r| d¡dkr| d¡d }nd}| j ||¡}|r/|d | }n|rK|sK| j ¡ D ]\}}|rJ||krJ|d | } nq8t |ƒ ¡ }|  |¡ d S )Nr   r   r   )	r#   r   r$   r%   r&   r'   r(   r)   Zunknown_endtag)	r   r-   r.   r0   r1   r2   r3   r   r4   r   r   r   ÚendElementNSl   s    €z_StrictFeedParser.endElementNSc                 C   s   d| _ || _d S )Nr   )r   r   ©r   r   r   r   r   Úerror~   s   
z_StrictFeedParser.errorc                 C   s   |   |¡ |‚r7   )r=   r<   r   r   r   Ú
fatalError…   s   
z_StrictFeedParser.fatalError)Ú__name__Ú
__module__Ú__qualname__r   Ústaticmethodr   r   r6   r:   r;   r=   Úwarningr>   Ú__classcell__r   r   r   r   r       s    	
	0r   N)Ú
exceptionsr   Úobjectr   r   r   r   r   Ú<module>   s   