
    Mh                        d Z ddlmZ ddlZddlmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ erddlmZ ddlmZ  G d	 d
e          Z G d de          Z G d d          ZdS )z=Process URI templates per http://tools.ietf.org/html/rfc6570.    )annotationsN)TYPE_CHECKING   )CommaExpansion	ExpansionFormStyleQueryContinuationFormStyleQueryExpansionFragmentExpansionLabelExpansionLiteralPathExpansionPathStyleExpansionReservedCommaExpansionReservedExpansionSimpleExpansion)Iterable)Variablec                  .    e Zd ZU dZded<   d	dZd
dZdS )ExpansionReservedErrorz9Exception thrown for reserved but unsupported expansions.str	expansionreturnNonec                    || _         d S Nr   selfr   s     X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/uri_template/uritemplate.py__init__zExpansionReservedError.__init__       "    c                    d| j         z   S )Convert to string.zUnsupported expansion: r   r   s    r   __str__zExpansionReservedError.__str__   s    (4>99r"   Nr   r   r   r   r   r   __name__
__module____qualname____doc____annotations__r    r&    r"   r   r   r      sM         CCNNN# # # #: : : : : :r"   r   c                  .    e Zd ZU dZded<   d	dZd
dZdS )ExpansionInvalidErrorz(Exception thrown for unknown expansions.r   r   r   r   c                    || _         d S r   r   r   s     r   r    zExpansionInvalidError.__init__%   r!   r"   c                    d| j         z   S )r$   zBad expansion: r   r%   s    r   r&   zExpansionInvalidError.__str__(   s     4>11r"   Nr'   r(   r)   r/   r"   r   r1   r1       sM         22NNN# # # #2 2 2 2 2 2r"   r1   c                      e Zd ZU dZded<   ddZedd
            Zedd            ZddZ	ddZ
edd            ZddZddZdS )URITemplatez
    URI Template object.

    Constructor may raise ExpansionReservedError, ExpansionInvalidError, or VariableInvalidError.
    zlist[Expansion]
expansionstemplater   r   r   c                   g | _         t          j        d|          }|D ]}|rd|d         k    rjd|d         k    r]|dd         }t          j        d|          r(| j                             t          |                     gd|d         k    r(| j                             t          |                     d	|d         k    r(| j                             t          |                     d
|d         k    r)| j                             t          |                     d|d         k    r)| j                             t          |                     9d|d         k    r)| j                             t          |                     nd|d         k    r)| j                             t          |                     d|d         k    r)| j                             t          |                     d|d         k    rqdt          |          k     r5d|d         k    r)| j                             t          |                     ,| j                             t          |                     U|d         dv rt!          |          t#          |          d|vr-d|vr)| j                             t%          |                     t#          |          d S )Nz(\{[^\}]*\}){r   }r   z*^([a-zA-Z0-9_]|%[0-9a-fA-F][0-9a-fA-F]).*$+#./;?&,   z=!@|)r6   resplitmatchappendr   r   r
   r   r   r   r	   r   lenr   r   r   r1   r   )r   r7   partspartr   s        r   r    zURITemplate.__init__6   s   (33 !	: !	:D  :DG^^#b// $QrT
I!MyYY :..y/I/IJJJJa..../@/K/KLLLLa..../@/K/KLLLLa....~i/H/HIIIIa....}Y/G/GHHHHa..../A)/L/LMMMMa..../Fy/Q/QRRRRa..../I)/T/TUUUUa..T]]Q O223I)3T3TUUUU O22>)3L3LMMMMq'V++4T:::3D999Ds$..wt}}====3D999A :!	: !	:r"   Iterable[Variable]c                j    i }| j         D ]}|j        D ]}|||j        <   |                                S )zGet all variables in template.r6   	variablesnamevaluesr   varsr   vars       r   rO   zURITemplate.variables\   sL     %' 	% 	%I * % %!$SX%{{}}r"   Iterable[str]c                ~    i }| j         D ]}|j        D ]}|||j        <   d |                                D             S )z'Get names of all variables in template.c                    g | ]	}|j         
S r/   )rP   ).0rT   s     r   
<listcomp>z.URITemplate.variable_names.<locals>.<listcomp>l   s    222S222r"   rN   rR   s       r   variable_nameszURITemplate.variable_namese   sZ     %' 	% 	%I * % %!$SX%22DKKMM2222r"   c                h    fd| j         D             }d                    d |D                       S )z
        Expand the template.

        May raise ExpansionFailed if a composite value is passed to a variable with a prefix modifier.
        c                :    g | ]}|                               S r/   )expandrX   r   kwargss     r   rY   z&URITemplate.expand.<locals>.<listcomp>t   s'    NNNI$$V,,NNNr"    c                    g | ]}||S r   r/   rX   r   s     r   rY   z&URITemplate.expand.<locals>.<listcomp>u   s    WWWi	@U	@U@U@Ur"   )r6   joinr   r_   expandeds    ` r   r]   zURITemplate.expandn   sB     ONNNdoNNNwwWW8WWWXXXr"   c                n    fd| j         D             }t          d                    |                    S )z
        Expand the template, preserving expansions for missing variables.

        May raise ExpansionFailed if a composite value is passed to a variable with a prefix modifier.
        c                :    g | ]}|                               S r/   )partialr^   s     r   rY   z'URITemplate.partial.<locals>.<listcomp>}   s'    OOO)I%%f--OOOr"   r`   )r6   r5   rc   rd   s    ` r   rh   zURITemplate.partialw   s;     POOOtOOO2778,,---r"   boolc                L    t          |           |                                 k    S )z(Determine if template is fully expanded.)r   r]   r%   s    r   re   zURITemplate.expanded   s     D		T[[]]*+r"   c                J    d                     d | j        D                       S )-Convert to string, returns original template.r`   c                ,    g | ]}t          |          S r/   r   rb   s     r   rY   z'URITemplate.__str__.<locals>.<listcomp>   s    HHH9IHHHr"   )rc   r6   r%   s    r   r&   zURITemplate.__str__   s%    wwHHHHHIIIr"   c                     t          |           S )rl   rn   r%   s    r   __repr__zURITemplate.__repr__   s    4yyr"   N)r7   r   r   r   )r   rL   )r   rU   r(   )r   r5   )r   ri   )r*   r+   r,   r-   r.   r    propertyrO   rZ   r]   rh   re   r&   rp   r/   r"   r   r5   r5   -   s            $: $: $: $:L    X 3 3 3 X3Y Y Y Y. . . . , , , X,J J J J     r"   r5   )r-   
__future__r   rE   typingr   r6   r   r   r   r	   r
   r   r   r   r   r   r   r   collections.abcr   variabler   	Exceptionr   r1   r5   r/   r"   r   <module>rw      s   C C " " " " " " 				            U U U U U U U U U U U U U U U U U U U U U U U U U U U U  #((((((""""""
: 
: 
: 
: 
:Y 
: 
: 
:
2 
2 
2 
2 
2I 
2 
2 
2^ ^ ^ ^ ^ ^ ^ ^ ^ ^r"   