
    IR-e                     <    d Z ddlZddlZd Zd ZdZd Zd Zd Z	dS )	z^
A collection of functions for checking various XML-related strings for
standards compliance.
    Nc                 0    t          j        d|           duS )z3
    Returns `True` if *ID* is a valid XML ID.
    ^[A-Za-z_][A-Za-z0-9_\.\-]*$Nrematch)IDs    7lib/python3.11/site-packages/astropy/utils/xml/check.pycheck_idr
      s     83R88DD    c                 .   t          j        d|           r| S t          |           rn| }t          |          rt          j        d|d                   rd|z   }t          j        dd|d                   t          j        dd|dd                   z   }|S d	S )
z
    Given an arbitrary string, create one that can be used as an xml
    id.  This is rather simplistic at the moment, since it just
    replaces non-valid characters with underscores.
    r   z^[^A-Za-z_]$r   _z
[^A-Za-z_]z[^A-Za-z0-9_\.\-]   N )r   r   lensub)r   	correcteds     r	   fix_idr      s     
x/44 	
2ww 	9~~ 	(.)A,!G!G 	(iIF=#y|<<rv #y}@
 @
 
	 2r   z$(?![\r\l\t ])[^\r\l\t]*(?![\r\l\t ])c                 <    | dk    pt          j        d|           duS )z^
    Returns `True` if *token* is a valid XML token, as defined by XML
    Schema Part 2.
    r   z0[^\r\n\t ]?([^\r\n\t ]| [^\r\n\t ])*[^\r\n\t ]?$Nr   )tokens    r	   check_tokenr   )   s-     	 	8GOOr   c                     d                     d t          dd          D                       }d| d}t          j        d| d| d	|           d
uS )z}
    Returns `True` if *content_type* is a valid MIME content type
    (syntactically at least), as defined by RFC 2045.
    r   c              3   4   K   | ]}t          |          V  d S )N)chr).0xs     r	   	<genexpr>z*check_mime_content_type.<locals>.<genexpr>:   s(      33qCFF333333r   r       z[^()<>@,;:\"/[\]?= z]+z	(?P<type>z)/(?P<subtype>z)$N)joinranger   r   )content_typectrlstoken_regexs      r	   check_mime_content_typer#   5   sl    
 GG33E!TNN33333E7%777K
HkHHHHH,WW	r   c                     t          j        d|           	 dS 	 t          j                            |            n# t
          $ r Y dS w xY wdS )zH
    Returns `True` if *uri* is a valid URI as defined in RFC 2396.
    zl(([a-zA-Z][0-9a-zA-Z+\-\.]*:)?/{0,2}[0-9a-zA-Z;/?:@&=+$\.\-_!~*'()%]+)?(#[0-9a-zA-Z;/?:@&=+$\.\-_!~*'()%]+)?NFT)r   r   urllibparseurlparse	Exception)uris    r	   check_anyurir*   B   st    
 	S 	
 	
 	 uc""""   uu4s   : 
AA)
__doc__r   urllib.parser%   r
   r   _token_regexr   r#   r*    r   r	   <module>r/      s     
			    E E E  & 7	 	 	
 
 
    r   