B
    q\                 @   sp   d Z ddlmZ dgZdddddddZd	d
ddddgZddddZddddddgZdd Zdd Z	dd Z
dS )zURL unescaper functions.    )saxutilsunescape_all   &   <   >   /)s   &amp;s   &lt;s   &gt;s
   &amp;&amp;s   &&s   %2Fs
   &amp;&amp;s   &&s   &amp;s   &lt;s   &gt;s   %2F&/)z
&amp;&amp;z&&z%2Fz
&amp;&amp;z&&z&amp;z&lt;z&gt;z%2Fc                sN   t | trt}t}nt}t}||   fdd|D }d|krFt S  S dS )zRecursively unescape a given URL.

    .. note:: '&amp;&amp;' becomes a single '&'.

    Parameters
    ----------
    url : str or bytes
        URL to unescape.

    Returns
    -------
    clean_url : str or bytes
        Unescaped URL.

    c                s   g | ]}  |d kqS )r   )count).0key)	clean_url :lib/python3.7/site-packages/astropy/utils/xml/unescaper.py
<listcomp>+   s    z unescape_all.<locals>.<listcomp>TN)
isinstancebytes_unescape_bytes_bytes_keys_unescape_str	_str_keysr   )urlZfunc2useZkeys2useZnot_doner   )r   r   r      s    
c             C   s   t | tS )N)r   Zunescape_str_entities)r   r   r   r   r   2   s    r   c             C   s&   | }xt D ]}||t| }q
W |S )N)r   replace_bytes_entities)r   r   r   r   r   r   r   6   s    
r   N)__doc__Zxml.saxr   __all__r   r   r   r   r   r   r   r   r   r   r   <module>   s   