
    h                        S r SSKJr  SSKrSSKJr  SSKJrJrJ	r	J
r
JrJrJrJrJrJrJrJr  \(       a  SSKJr  SSKJr   " S	 S
\5      r " S S\5      r " S S5      rg)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                  8    \ rS rSr% SrS\S'   S	S jrS
S jrSrg)ExpansionReservedError   z9Exception thrown for reserved but unsupported expansions.str	expansionc                    Xl         g Nr   selfr   s     kC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\uri_template/uritemplate.py__init__ExpansionReservedError.__init__       "    c                     SU R                   -   $ )Convert to string.zUnsupported expansion: r   r   s    r   __str__ExpansionReservedError.__str__   s    (4>>99r"   r   Nr   r   returnNoner)   r   	__name__
__module____qualname____firstlineno____doc____annotations__r   r&   __static_attributes__ r"   r   r   r      s    CN#:r"   r   c                  8    \ rS rSr% SrS\S'   S	S jrS
S jrSrg)ExpansionInvalidError    z(Exception thrown for unknown expansions.r   r   c                    Xl         g r   r   r   s     r   r   ExpansionInvalidError.__init__%   r!   r"   c                     SU R                   -   $ )r$   zBad expansion: r   r%   s    r   r&   ExpansionInvalidError.__str__(   s     4>>11r"   r   Nr(   r+   r,   r4   r"   r   r6   r6       s    2N#2r"   r6   c                      \ rS rSr% SrS\S'   SS jr\SS j5       r\SS j5       r	SS jr
SS	 jr\SS
 j5       rSS jrSS jrSrg)URITemplate-   zu
URI Template object.

Constructor may raise ExpansionReservedError, ExpansionInvalidError, or VariableInvalidError.
zlist[Expansion]
expansionsc                J   / U l         [        R                  " SU5      nU GH~  nU(       d  M  SUS   :X  Ga,  SUS   :X  Ga"  USS n[        R                  " SU5      (       a&  U R                   R	                  [        U5      5        Mh  SUS   :X  a&  U R                   R	                  [        U5      5        M  S	US   :X  a&  U R                   R	                  [        U5      5        M  S
US   :X  a&  U R                   R	                  [        U5      5        M  SUS   :X  a'  U R                   R	                  [        U5      5        GM%  SUS   :X  a'  U R                   R	                  [        U5      5        GMU  SUS   :X  a'  U R                   R	                  [        U5      5        GM  SUS   :X  a'  U R                   R	                  [        U5      5        GM  SUS   :X  af  S[        U5      :  a0  SUS   :X  a'  U R                   R	                  [        U5      5        GM  U R                   R	                  [        U5      5        GM$  US   S;   a  [!        U5      e[#        U5      eSU;  a-  SU;  a'  U R                   R	                  [%        U5      5        GMv  [#        U5      e   g )Nz(\{[^\}]*\}){r   }r   z*^([a-zA-Z0-9_]|%[0-9a-fA-F][0-9a-fA-F]).*$+#./;?&,   z=!@|)r?   resplitmatchappendr   r   r
   r   r   r   r	   r   lenr   r   r   r6   r   )r   templatepartspartr   s        r   r   URITemplate.__init__6   s   (3DDG^#b/ $Qr
I!MyYY..y/IJa.../@/KLa.../@/KLa...~i/HIa...}Y/GHa.../A)/LMa.../Fy/QRa.../I)/TUa.T]Q OO223I)3TU OO22>)3LMq'V+4T::3D99Ds$..wt}=3D99C r"   c                    0 nU R                    H$  nUR                   H  nX1UR                  '   M     M&     UR                  5       $ )zGet all variables in template.r?   	variablesnamevaluesr   varsr   vars       r   rX   URITemplate.variables\   s@     %'I **!$SXX + ) {{}r"   c                    0 nU R                    H$  nUR                   H  nX1UR                  '   M     M&     UR                  5        Vs/ s H  o3R                  PM     sn$ s  snf )z'Get names of all variables in template.rW   r[   s       r   variable_namesURITemplate.variable_namese   sT     %'I **!$SXX + ) %)KKM2MSM222s   	A!c                    U R                    Vs/ s H  o"R                  U5      PM     nnSR                  U Vs/ s H	  o"c  M  UPM     sn5      $ s  snf s  snf )zv
Expand the template.

May raise ExpansionFailed if a composite value is passed to a variable with a prefix modifier.
 )r?   expandjoinr   kwargsr   expandeds       r   rd   URITemplate.expandn   sM     ?CooNo$$V,oNww8W8i	8WXX OWs   AAAc                    U R                    Vs/ s H  o"R                  U5      PM     nn[        SR                  U5      5      $ s  snf )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.
rc   )r?   partialr=   re   rf   s       r   rk   URITemplate.partialw   sA     @DO)%%f-O2778,-- Ps   Ac                :    [        U 5      U R                  5       :H  $ )z(Determine if template is fully expanded.)r   rd   r%   s    r   rh   URITemplate.expanded   s     D	T[[]*+r"   c                v    SR                  U R                   Vs/ s H  n[        U5      PM     sn5      $ s  snf )-Convert to string, returns original template.rc   )re   r?   r   r   s     r   r&   URITemplate.__str__   s+    wwH9IHIIHs   6c                    [        U 5      $ )rp   )r   r%   s    r   __repr__URITemplate.__repr__   s    4yr"   )r?   N)rR   r   r)   r*   )r)   zIterable[Variable])r)   zIterable[str]r+   )r)   r=   )r)   bool)r-   r.   r/   r0   r1   r2   r   propertyrX   r`   rd   rk   rh   r&   rs   r3   r4   r"   r   r=   r=   -   sg      $:L   3 3Y. , ,Jr"   r=   )r1   
__future__r   rM   typingr   r?   r   r   r   r	   r
   r   r   r   r   r   r   r   collections.abcr   variabler   	Exceptionr   r6   r=   r4   r"   r   <module>r|      sX    C " 	  U U U U ("
:Y 
:
2I 
2^ ^r"   