U
    qer                     @   s`   d dl Z d dlZddlmZ dZe dZdd Zdd	 Z	dd
dZ
G dd deZdd ZdS )    N   )_BaseHTMLProcessor),fileftpgopherZh323hdlhttphttpsimapZmagnetmailtommsnewsnntpprosperorsyncrtsprtspusftpshttpsipsipssnewssvnzsvn+sshtelnetwaisZaimZcalltoZcvsZfacetimefeedgitZgtalkircZircsZirc6Zitmsr   ZmsnimZskypesshsmbr   Zymsgz&^([A-Za-z][A-Za-z0-9+-.]*://)(/*)(.*?)c                 C   s<   t d|}ztj| |}W n tk
r6   d}Y nX |S )Nz\1\3 )	_urifixersuburllibparseurljoin
ValueError)baseuri r)   m/mounts/lovelace/software/anaconda3/envs/qiime2-shotgun-2024.2/lib/python3.8/site-packages/feedparser/urls.py_urljoin4   s    
r+   c              	   C   s   t tj| }z|d d W n tk
r   |d dd}g }d}t|dkr^| }|d 	dD ]}|
|dd	 qld||d< |r|d  d| 7  < tj| Y S X | S d
S )zConvert a URL to IDN notationr   ascii:r       r   .idnazutf-8N)listr#   r$   urlsplitencodeUnicodeEncodeErrorrsplitlenpopsplitappenddecodejoin
urlunsplit)urlpartshostZnewhostporthr)   r)   r*   convert_to_idn=   s     rB   c                 C   s   t st| |pdS | s|pdS |sbztj| d }W n tk
rL   Y dS X |rZ|t kr^| S dS t| |}| ddd t krdS |S )Nr    r   r-   r   )ACCEPTABLE_URI_SCHEMESr+   r#   r$   urlparser&   stripr8   )r'   relschemer(   r)   r)   r*   make_safe_absolute_uriV   s     
rH   c                       sj   e Zd Zddddddddd	d
dddddddddddddddddddhZdd Zd d! Z fd"d#Z  ZS )$RelativeURIResolver)ahref)Zappletcodebase)arearK   )audiosrc)
blockquotecite)body
background)delrQ   )formaction)framelongdesc)rW   rO   )iframerX   )rY   rO   )headprofile)imgrX   )r\   rO   )r\   usemap)inputrO   )r^   r]   )insrQ   )linkrK   )objectZclassid)ra   rL   )ra   data)ra   r]   )qrQ   )scriptrO   )sourcerO   )videoposter)rf   rO   c                 C   s   t | || || _d S N)r   __init__baseuri)selfrj   encoding_typer)   r)   r*   ri      s    zRelativeURIResolver.__init__c                 C   s   t | j| S rh   )rH   rj   rE   )rk   r(   r)   r)   r*   resolve_uri   s    zRelativeURIResolver.resolve_uric                    s4     |} fdd|D }tt | d S )Nc                    s0   g | ](\}}||f j kr& |p(|fqS r)   )relative_urisrn   ).0keyvaluerk   tagr)   r*   
<listcomp>   s     z8RelativeURIResolver.unknown_starttag.<locals>.<listcomp>)normalize_attrssuperrI   unknown_starttag)rk   rt   attrs	__class__rs   r*   rx      s    
z$RelativeURIResolver.unknown_starttag)__name__
__module____qualname__ro   ri   rn   rx   __classcell__r)   r)   rz   r*   rI   j   sB    rI   c                 C   s   t |||}||  | S rh   )rI   r   output)Zhtml_sourcebase_urirl   type_pr)   r)   r*   resolve_relative_uris   s    
r   )N)reurllib.parser#   htmlr   rC   compiler!   r+   rB   rH   rI   r   r)   r)   r)   r*   <module>   s   

	
.