
    hyC                       S r SSKJr  SSKrSSKJrJrJr  SSKJ	r	  SSK
Jr  \(       a  SSKJrJr   " S	 S
\5      r " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      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)AnyTYPE_CHECKINGcast   )Charset)Variable)IterableMappingc                  8    \ rS rSr% SrS\S'   S	S jrS
S jrSrg)ExpansionFailedError   z&Exception thrown when expansions fail.strvariablec                    Xl         g Nr   )selfr   s     jC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\uri_template/expansions.py__init__ExpansionFailedError.__init__   s         c                     SU R                   -   $ )Convert to string.zBad expansion: r   r   s    r   __str__ExpansionFailedError.__str__   s     4==00r   r   N)r   r   returnNoner   r   )	__name__
__module____qualname____firstlineno____doc____annotations__r   r   __static_attributes__ r   r   r   r      s    0M!1r   r   c                      \ rS rSrSr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rSS	 jrSS
 jr          SS jr          SS jr S         SS jjrSS jrSS jrSrg) 	Expansion   zT
Base class for template expansions.

https://tools.ietf.org/html/rfc6570#section-3
c                    g r   r(   r   s    r   r   Expansion.__init__#   s    r   c                    / $ )z$Get all variables in this expansion.r(   r   s    r   	variablesExpansion.variables&   	     	r   c                    / $ )z1Get the names of all variables in this expansion.r(   r   s    r   variable_namesExpansion.variable_names+   r1   r   c                   SnSnU[        U5      :  a  X   nXb;   a  XF-  nOU(       aY  SU:X  aS  US-   [        U5      :  aA  XS-      [        R                  ;   a(  XS-      [        R                  ;   a  XAXUS-    -  nUS-  nOVUR                  S5      nU H?  nUS[        R                  [	        US-  5         -   [        R                  US-     -   -  nMA     US-  nU[        U5      :  a  M  U$ )	z"Encode a string into legal values. r   %   r      utf8   )lenr   	HEX_DIGITencodeint)	r   valuelegalpct_encodedoutputindex	codepointr:   bytes	            r   _encodeExpansion._encode0   s    s5z!I"#3)#3	SZ/QY'7+<+<<QY'7+<+<<ai00
 ''/ DcG$5$5c$)n$EEHYHYZ^acZcHdddF !QJE s5z! r   c                D    U R                  U[        R                  S5      $ )!Encode a value into uri encoding.F)rG   r   
UNRESERVEDr   r@   s     r   _uri_encode_valueExpansion._uri_encode_valueE   s    ||E7#5#5u==r   c                    U(       a;  U R                  [        U5      [        R                  [        R                  -   S5      $ S$ )z)Encode a variable name into uri encoding.Tr6   )rG   r   r   rK   RESERVED)r   names     r   _uri_encode_nameExpansion._uri_encode_nameI   s2    X\t||CIw'9'9G<L<L'LdSeceer   c                "    U(       a  X-   U-   $ U$ )zJoin a prefix to a value.r(   )r   prefixjoinerr@   s       r   _joinExpansion._joinM   s    ?U**r   c           	         UR                   (       aI  U(       d  [        [        U5      5      eU R                  XEU R	                  USUR                    5      5      $ U R                  XEU R	                  U5      5      $ )z%Encode a string value for a variable.N)
max_lengthr   r   rW   rM   )r   r   rQ   r@   rU   rV   firsts          r   _encode_strExpansion._encode_strS   sc    *3x=99::fd.D.DUK_HL_L_E`.abbzz&$*@*@*GHHr   c	           	     (   UR                   (       a  SOSnUR                  (       a-  U R                  U5      nU(       a  U(       d  US-   U-   S-   OUnO"U R                  USU R                  U5      5      nU R	                  U[        U5      XEXgS5      $ )"Encode a dict item for a variable.=,[].F)explodearrayrR   rW   _encode_varr   	r   r   rQ   keyitemdelimrU   rV   r[   s	            r   _encode_dict_itemExpansion._encode_dict_item[   s     "))NN((-D5;EfslT)C/PTFZZT-B-B3-GHF#c(DQVWWr   c	           	         UR                   (       a2  U(       a  US-   [        U5      -   S-   OSnU R                  USXEXgS5      $ U R                  XXEUSS5      $ )"Encode a list item for a variable.rb   rc   r6   Frd   )rf   r   rg   	r   r   rQ   rD   rj   rk   rU   rV   r[   s	            r   _encode_list_itemExpansion._encode_list_itemf   sX     NN9?Vc\CJ.4bF##Hb$vuUUVS%PPr   c                   [        U[        5      (       a  U R                  XX5Xg5      $ [        U[        R                  R
                  5      (       al  [        U5      (       a[  UR                  5        Vs/ s H  nU R                  XXU   XEXg5      PM     n	nUR                  U	 V
s/ s H	  oc  M  U
PM     sn
5      $ g[        U[        R                  R                  5      (       ah  [        U5      (       aW  [        U5       VV
s/ s H  u  pU R                  XXXEXg5      PM     n	nn
UR                  U	 V
s/ s H	  oc  M  U
PM     sn
5      $ g[        U[        5      (       a+  U R                  X[        U5      R                  5       XVU5      $ U R                  X[        U5      XVU5      $ s  snf s  sn
f s  sn
nf s  sn
f )zEncode a variable.N)
isinstancer   r\   collectionsabcr   r<   keysrl   joinSequence	enumeraterq   boollower)r   r   rQ   r@   rk   rU   rV   r[   ri   encoded_itemsrj   rD   s               r   rg   Expansion._encode_varn   s    uc""##HE6QQ 7 788E

,1JJL!:,8S "&!7!7SVZY^hn!v,8  !:zzM"XMD4M"XYY 8 899E

4=e4D!F4D[U "&!7!7UZdj!r4D  !FzzM"XMD4M"XYY%%##HCJ4D4D4FX]^^##HCJPUVV!:"X!F"Xs$   4!F,&F10F1 F67F<F<c                    g)zExpand values.Nr(   r   valuess     r   expandExpansion.expand   s    r   c                    g)zPerform partial expansion.r6   r(   r   s     r   partialExpansion.partial   s    r   r(   N)r   r   r   zIterable[Variable]r   zIterable[str])r@   r   rA   r   rB   r{   r   r   r@   r   r   r   )rQ   z	str | intr   r   )rU   r   rV   r   r@   r   r   r   )r   r	   rQ   r   r@   r   rU   r   rV   r   r[   r{   r   r   r   r	   rQ   r   ri   z	int | strrj   r   rk   r   rU   r   rV   r   r[   r{   r   
str | Noner   r	   rQ   r   rD   r?   rj   r   rk   r   rU   r   rV   r   r[   r{   r   r   )ra   r6   r`   T)r   r	   rQ   r   r@   r   rk   r   rU   r   rV   r   r[   r{   r   r   r   Mapping[str, Any]r   r   r   r   r   r   )r!   r"   r#   r$   r%   r   propertyr/   r3   rG   rM   rR   rW   r\   rl   rq   rg   r   r   r'   r(   r   r   r*   r*      s        *>fI	X!$	X.1	X;>	XGK	XQ[	XQ!$Q.1Q;>QGKQQ[Q Z^WW.1W@CWRVWcmW,r   r*   c                  P   ^  \ rS rSr% SrS\S'   S	U 4S jjrS
S jrSS jrSr	U =r
$ )Literal   zG
A literal expansion.

https://tools.ietf.org/html/rfc6570#section-3.1
r   r@   c                .   > [         TU ]  5         Xl        g r   )superr   r@   )r   r@   	__class__s     r   r   Literal.__init__   s    
r   c                z    U R                  U R                  [        R                  [        R                  -   S5      $ )zPerform exansion.T)rG   r@   r   rK   rP   r   s     r   r   Literal.expand   s+    ||DJJ););g>N>N)NQUVVr   c                    U R                   $ )r   r@   r   s    r   r   Literal.__str__   s    zzr   r   )r@   r   r   r   r   r    )r!   r"   r#   r$   r%   r&   r   r   r   r'   __classcell__r   s   @r   r   r      s$     JW r   r   c                     ^  \ rS rSr% SrSrSrSrSrSr	S\
S'   SrS\
S'   SU 4S	 jjr\SS
 j5       r\SS j5       rSS jrSS jrSS jrSS jrSrU =r$ )ExpressionExpansion   zX
Base class for expression expansions.

https://tools.ietf.org/html/rfc6570#section-3.2
r6   ra   list[Variable]varsr   trailing_joinerc                   > [         TU ]  5         U(       a  US   S;   a  US   U l        US S nUR                  S5       Vs/ s H  n[	        U5      PM     snU l        g s  snf )N)ra   rd   /;&ra   )r   r   r   splitr	   r   )r   r/   varr   s      r   r   ExpressionExpansion.__init__   s\    9R=,EE#,R=D !#2I.7ooc.BC.BsXc].BC	Cs   A c                ,    [        U R                  5      $ )zGet all variables.)listr   r   s    r   r/   ExpressionExpansion.variables   s     DIIr   c                X    U R                    Vs/ s H  oR                  PM     sn$ s  snf )zGet names of all variables.)r   rQ   r   r   s     r   r3   "ExpressionExpansion.variable_names   s"     %)II.ISI...s   'c                X    U R                  XR                  UR                  5      U5      $ )Expand a single variable.)rg   rR   rQ   r   r   r@   s      r   _expand_varExpressionExpansion._expand_var   s%    *?*?*NPUVVr   c                p   / nU R                    HU  nUR                  UR                  UR                  5      nUc  M.  U R	                  X45      nUc  MD  UR                  U5        MW     U(       aH  U R                  (       d  U R                  OSU R                  R                  U5      -   U R                  -   $ g)z*Expand all variables, skip missing values.Nr6   )
r   getri   defaultr   appendr   output_prefix
var_joinerrx   )r   r   expanded_varsr   r@   expanded_vars         r   r   ExpressionExpansion.expand   s    #%99CJJsww4E!#//; ,!((6  040D0DT''2QUQ`Q`QeQefsQtt**+ ,r   c                8   / n/ n/ nU R                    H  nUR                  UR                  UR                  5      nUbE  U R	                  XV5      nUb/  U(       a  UR                  SU45        / nUR                  U5        Mo  Mq  U(       a  UR                  US45        / nUR                  U5        M     U(       a  UR                  US45        U(       a  UR                  SU45        SnSn	[        U5       GH  u  n
u  pU
[        U5      S-
  :H  nU(       aR  X(       a  U R                  (       d  U R                  OSU R                  R                  U5      -   U R                  -   -  nOX(       a  U(       d  U R                  OU(       d  U R                  OSS-   U	(       a  U R                  OU R                  -   SR                  [        SU5       Vs/ s H  n[        U5      PM     sn5      -   U(       d  U R                   OS-   S-   -  nS	n	GM     U$ s  snf )
z=Expand all variables, replace missing values with expansions.Nr6   Tr   {ra   r   }F)r   r   rQ   r   r   r   rz   r<   r   r   r   rx   operatorpartial_operatorr   r   partial_joiner)r   r   r   missing_varsresultr   r@   r   rC   r[   rD   expandedmissinglasts                 r   r   ExpressionExpansion.partial   s   #%')KM99CJJsxx5E!#//; ,$t\&:;')!((6	 - "MM=$"78$&M##C(  MM=$/0MM4./*3F*;&E&Hc&kAo.D5$BVBVD..^`!__11(;<>B>R>RS T 5D..eiT__pr !6;DMM$BWBWY XX4@PRY;Z&[;ZCs3x;Z&[\] ;?d11RI LOO P E +<  '\s   Hc           	         SU R                   -   SR                  U R                   Vs/ s H  n[        U5      PM     sn5      -   U R                  -   S-   $ s  snf )r   r   ra   r   )r   rx   r   r   r   r   s     r   r   ExpressionExpansion.__str__   sK    dmm#chhDII/NISCI/N&OORVRfRffillm/Ns   A
)r   r   r/   r   r   r   r   r   r   r	   r@   r   r   r   r   r   r    )r!   r"   r#   r$   r%   r   r   r   r   r   r&   r   r   r   r/   r3   r   r   r   r   r'   r   r   s   @r   r   r      s     HMJN
OSD   / /W%Nn nr   r   c                  0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )SimpleExpansioni  zT
Simple String expansion {var}.

https://tools.ietf.org/html/rfc6570#section-3.2.2

c                $   > [         TU ]  U5        g r   r   r   r   r/   r   s     r   r   SimpleExpansion.__init__
      #r   r(   r   )r!   r"   r#   r$   r%   r   r'   r   r   s   @r   r   r     s    $ $r   r   c                  B   ^  \ rS rSrSrSrSrSU 4S jjrS	S jrSr	U =r
$ )
ReservedExpansioni  zO
Reserved Expansion {+var}.

https://tools.ietf.org/html/rfc6570#section-3.2.3
+,+c                *   > [         TU ]  USS  5        g Nr   r   r   s     r   r   ReservedExpansion.__init__      12'r   c                f    U R                  U[        R                  [        R                  -   S5      $ )rJ   T)rG   r   rK   rP   rL   s     r   rM   #ReservedExpansion._uri_encode_value  s&    ||EG$6$69I9I$IDQQr   r(   r   r   )r!   r"   r#   r$   r%   r   r   r   rM   r'   r   r   s   @r   r   r     s&     H(R Rr   r   c                  8   ^  \ rS rSrSrSrSrSU 4S jjrSrU =r	$ )FragmentExpansioni   zO
Fragment Expansion {#var}.

https://tools.ietf.org/html/rfc6570#section-3.2.4
#c                $   > [         TU ]  U5        g r   r   r   s     r   r   FragmentExpansion.__init__*  r   r   r(   r   
r!   r"   r#   r$   r%   r   r   r   r'   r   r   s   @r   r   r           HM$ $r   r   c                  N   ^  \ rS rSrSrSrSrSrSrSr	SU 4S jjr
SS jrSrU =r$ )	LabelExpansioni.  z\
Label Expansion with Dot-Prefix {.var}.

https://tools.ietf.org/html/rfc6570#section-3.2.5
rd   c                *   > [         TU ]  USS  5        g r   r   r   s     r   r   LabelExpansion.__init__;  r   r   c                    U R                  XR                  UR                  5      UUR                  (       a  SS9$ SS9$ r   rd   ra   rk   rg   rR   rQ   re   r   s      r   r   LabelExpansion._expand_var>  O    *?*?*NPU.6.>.>s   J 	JDG   J 	Jr   r(   r   r   r!   r"   r#   r$   r%   r   r   r   r   r   r   r   r'   r   r   s   @r   r   r   .  5     HMJN(J Jr   r   c                  N   ^  \ rS rSrSrSrSrSrSrSr	SU 4S jjr
SS jrSrU =r$ )	PathExpansioniD  zS
Path Segment Expansion {/var}.

https://tools.ietf.org/html/rfc6570#section-3.2.6
r   c                *   > [         TU ]  USS  5        g r   r   r   s     r   r   PathExpansion.__init__Q  r   r   c                    U R                  XR                  UR                  5      UUR                  (       a  SS9$ SS9$ )r   r   ra   r   r   r   s      r   r   PathExpansion._expand_varT  r   r   r(   r   r   r   r   s   @r   r   r   D  r   r   r   c                     ^  \ rS rSrSrSrSrSrSrSr	S
U 4S jjr
SU 4S jjr          SS jr          SS jrSS jrS	rU =r$ )PathStyleExpansioniZ  z[
Path-Style Parameter Expansion {;var}.

https://tools.ietf.org/html/rfc6570#section-3.2.7
r   c                *   > [         TU ]  USS  5        g r   r   r   s     r   r   PathStyleExpansion.__init__g  r   r   c                   > UR                   (       a  U(       a  U(       a  US-   U-   S-   OUnO$UR                  (       a  U R                  USU5      n[        TU ]  XX4XV5      $ )zEncode a string for a variable.rb   rc   rd   )rf   re   rW   r   r\   )r   r   rQ   r@   rU   rV   r[   r   s          r   r\   PathStyleExpansion._encode_strj  sT    NN7=#,s2DZZT2Fw"85&PPr   c	           	        UR                   (       aV  U(       a  U(       a  US-   U-   S-   OUnU(       a"  U(       d  US-   U R                  U5      -   S-   nOdU R                  U5      nORUR                  (       a  U(       d  U R                  USU5      OSnO$U R                  USU R                  U5      5      nSnU R	                  XR                   (       d  U R                  U5      OSUXVUS5      $ )r_   rb   rc   rd   r6   ra   F)rf   rR   re   rW   rg   rh   s	            r   rl   $PathStyleExpansion._encode_dict_items  s     NN7=#,s2Du 3,)>)>s)CCcI..s3;@TZZT2rFZZT-B-B3-GHFF^^$*?*?*Dbdfj %vu> 	>r   c	           	         UR                   (       a9  U(       a  U(       a  US-   U-   S-   OUnU R                  U[        U5      XEXgS5      $ U R                  XXEXaR                  (       a  SS5      $ SS5      $ )ro   rb   rc   Fr`   rd   )rf   rg   r   re   rp   s	            r   rq   $PathStyleExpansion._encode_list_item  so     NN7=#,s2D##Hc%j$vW\]]VM]M]Sinoodginoor   c                4   UR                   (       a*  U R                  XR                  UR                  5      USS9$ U R                  XR                  UR                  5      USS9nU(       a!  U R                  UR                  5      S-   U-   $ UR                  $ )r   r   r   ra   r`   re   rg   rR   rQ   r   s      r   r   PathStyleExpansion._expand_var  s    ##H.C.CHMM.RTYad#ee  +@+@+OQV^a bHM%%hmm4s:UBaT\TaTaar   r(   r   )r   r	   rQ   r   r@   r   rU   r   rV   r   r[   r{   r   r   r   r   r   )r!   r"   r#   r$   r%   r   r   r   r   r   r   r\   rl   rq   r   r'   r   r   s   @r   r   r   Z  s     HMJN(Q>!$>.1>;>>GK>Q[>$p!$p.1p;>pGKpQ[pb br   r   c                  N   ^  \ rS rSrSrSrSrSrSrSr	SU 4S jjr
S	S jrSrU =r$ )
FormStyleQueryExpansioni  zW
Form-Style Query Expansion {?var}.

https://tools.ietf.org/html/rfc6570#section-3.2.8
?r   c                $   > [         TU ]  U5        g r   r   r   s     r   r    FormStyleQueryExpansion.__init__  r   r   c                   UR                   (       a*  U R                  XR                  UR                  5      USS9$ U R                  XR                  UR                  5      USS9nUb!  U R                  UR                  5      S-   U-   $ S$ )r   r   r   ra   Nr`   r  r   s      r   r   #FormStyleQueryExpansion._expand_var  s    ##H.C.CHMM.RTYad#ee  +@+@+OQV^a bHMHY%%hmm4s:UBd`ddr   r(   r   r   r   r   s   @r   r	  r	    s5     HMJN$e er   r	  c                  8   ^  \ rS rSrSrSrSrSU 4S jjrSrU =r	$ )FormStyleQueryContinuationi  zZ
Form-Style Query Continuation {&var}.

https://tools.ietf.org/html/rfc6570#section-3.2.9
r   c                $   > [         TU ]  U5        g r   r   r   s     r   r   #FormStyleQueryContinuation.__init__  r   r   r(   r   r   r   s   @r   r  r    r   r   r  c                  B   ^  \ rS rSrSrSrSrSU 4S jjrSS jrSr	U =r
$ )	CommaExpansioni  zb
Label Expansion with Comma-Prefix {,var}.

Non-standard extension to support partial expansions.
ra   c                *   > [         TU ]  USS  5        g r   r   r   s     r   r   CommaExpansion.__init__  r   r   c                    U R                  XR                  UR                  5      UUR                  (       a  SS9$ SS9$ r   r   r   s      r   r   CommaExpansion._expand_var  r   r   r(   r   r   r!   r"   r#   r$   r%   r   r   r   r   r'   r   r   s   @r   r  r    s%     HM(J Jr   r  c                  B   ^  \ rS rSrSrSrSrSU 4S jjrS	S jrSr	U =r
$ )
ReservedCommaExpansioni  zf
Reserved Expansion with comma prefix {,+var}.

Non-standard extension to support partial expansions.
r   ra   c                *   > [         TU ]  USS  5        g r   r   r   s     r   r   ReservedCommaExpansion.__init__  r   r   c                    U R                  XR                  UR                  5      UUR                  (       a  SS9$ SS9$ r   r   r   s      r   r   "ReservedCommaExpansion._expand_var  r   r   r(   r   r   r  r   s   @r   r  r    s%     HM(J Jr   r  )r%   
__future__r   ru   typingr   r   r   charsetr   r   r	   collections.abcr
   r   	Exceptionr   r*   r   r   r   r   r   r   r   r   r	  r  r  r  r(   r   r   <module>r%     s    C "  + +  1
19 
1n nbi ,\n) \n~	$) 	$R+ R$$) $J( J,J' J,9b, 9bxe0 e0$!8 $ J( J&J. Jr   