
    IR-e                     \    d Z ddlmZ dgZdddddddZg d	Zd
d
ddZg dZd Zd Z	d Z
dS )zURL unescaper functions.    )saxutilsunescape_all   &   <   >   /)   &amp;   &lt;   &gt;
   &amp;&amp;   &&   %2F)r   r   r	   r
   r   r   &/)
&amp;&amp;&&%2F)r   r   z&amp;z&lt;z&gt;r   c                     t          | t                    rt          }t          }nt          }t
          } ||           fd|D             }d|v rt                    S 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                 B    g | ]}                     |          d k    S )r   )count).0key	clean_urls     ;lib/python3.11/site-packages/astropy/utils/xml/unescaper.py
<listcomp>z unescape_all.<locals>.<listcomp>0   s*    ===S	$$q(===    T)
isinstancebytes_unescape_bytes_bytes_keys_unescape_str	_str_keysr   )urlfunc2usekeys2usenot_doner   s       @r   r   r      sr      #u " I====H===HxI&&&r   c                 6    t          j        | t                    S N)r   unescape_str_entities)r#   s    r   r!   r!   7   s    S-000r   c                 `    | }t           D ]#}|                    |t          |                   }$|S r(   )r    replace_bytes_entities)r#   r   r   s      r   r   r   ;   s:    I A A%%c?3+?@@		r   N)__doc__xml.saxr   __all__r-   r    r*   r"   r   r!   r    r   r   <module>r2      s           
   IHH  ##c::@@@	  <1 1 1    r   