
    KisG                        % S r SSKrSSKrSSKrSSKrSSKr\R                  \
\\\S4   r\R                  \R                  \   \R                   \   \R"                  \\4   \R$                  \\4   \4   r\R(                  \\4   r\R,                   \R.                   S3r\R2                  \   \S'   Sr\R2                  \   \S'   Sr\R2                  \   \S'   \ \ 3r\R2                  \   \S	'    " S
 S\R<                  5      r\R@                  \RB                  \RD                  \RF                  \RH                  \RJ                  \RL                  \RN                  \RP                  \RR                  \RT                  \RV                  S.r,\R2                  \R(                  \\4      \S'    " S S5      r-S\R\                  S\R$                  \/\R`                  \R                  \R$                  \\4         4   4S jr1S\R\                  S\/4S jr2S\R\                  S\/4S jr3SS\Rh                  S\S\54S jjr6S\R\                  S\S\4S jr7g)z

uritemplate.variable
====================

This module contains the URIVariable class which powers the URITemplate class.

What treasures await you:

- URIVariable class

You see a hammer in front of you.
What do you do?
>

    Nz~-_._UNRESERVED_CHARACTERSz:/?#[]@_GEN_DELIMSz!$&'()*+,;=_SUB_DELIMS_RESERVED_CHARACTERSc                       \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrS\4S jrS\4S jrS\4S jrS\S\4S jrS\S\4S jrS\R0                  S\4S jr\S\SS 4S j5       rSrg)Operator+    +#./;?&=,!@|returnc                 r    U [         R                  :X  a	  [        S-   $ U [         R                  :X  a  [        $ g)N%r
   )r   reservedr   fragmentselfs    gC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\uritemplate/variable.pyreserved_charactersOperator.reserved_charactersG   s4     8$$$'#--8$$$''    c                     U [         R                  :X  a  gU [         R                  :X  a  gU [         R                  :X  a  gU [         R                  :X  d  U [         R
                  :X  a  gg)a  Identify the separator used during expansion.

Per `Section 3.2.1. Variable Expansion`_:

======  ===========    =========
Type    Separator
======  ===========    =========
        ``","``        (default)
``+``   ``","``
``#``   ``","``
``.``   ``"."``
``/``   ``"/"``
``;``   ``";"``
``?``   ``"&"``
``&``   ``"&"``
======  ===========    =========

.. _`Section 3.2.1. Variable Expansion`:
    https://www.rfc-editor.org/rfc/rfc6570#section-3.2.1
r   r   r   r   r   )r   label_with_dot_prefixpath_segmentpath_style_parameterform_style_queryform_style_query_continuationr   s    r   expansion_separatorOperator.expansion_separatorW   s[    * 81118(((8000H---x=== r!   c                 v    U [         R                  :X  a  g[        R                  " [        U R
                  5      $ Nr
   )r   r   tcaststrvaluer   s    r   variable_prefixOperator.variable_prefix   s(    8$$$vvc4::&&r!   r/   c                     [        US5      $ r+   quoter   r/   s     r   _always_quoteOperator._always_quote   s    UBr!   c                 l    [         R                  R                  U5      U:X  a  [        U[        5      $ U$ N)urllibparseunquoter4   r   r5   s     r   _only_quote_unquoted_characters(Operator._only_quote_unquoted_characters   s,    <<&%/ 455r!   c                 ,   [        U[        [        45      (       d  [        U5      n[        U[        5      (       a  UR                  5       nU [        R
                  :X  d  U [        R                  :X  a  U R                  U5      $ U R                  U5      $ r9   )	
isinstancer.   bytesdecoder   r   r   r=   r6   r5   s     r   r4   Operator.quote   sq    %#u..JEeU##LLNE8$$$0A0A(A77>>!!%((r!   sc                 J    [         R                  U [        R                  5      $ r9   )
_operatorsgetr   default)rD   s    r   from_stringOperator.from_string   s    ~~a!1!122r!    N)__name__
__module____qualname____firstlineno__rH   r   r   r#   r$   r%   r&   r'   reserved_eqreserved_commareserved_bangreserved_atreserved_piper.   r   r(   r0   r6   r=   r,   Anyr4   staticmethodrI   __static_attributes__rK   r!   r   r   r   +   s     GHH  L  $'!KNMKMS  "S "h' ' 3  3  S S 
)155 )S ) 3s 3z 3 3r!   r   )r   r   r   r   r   r   r   r   r   r   r   r   rF   c                      \ rS rSrSrS\4S jrS\4S jrS\4S jrSS	 jr	S
\S\
S\S\R                  \   S\R                  \   4
S jrS
\S\
S\S\R                  \   S\R                  \   4
S jrS
\S\
S\S\R                  \   S\R                  \   4
S jrS
\S\
S\S\R                  \   S\R                  \   4
S jr SS\R                  \   S\R(                  \\4   4S jjrSrg)URIVariable   a  This object validates everything inside the URITemplate object.

It validates template expansions and will truncate length as decided by
the template.

Please note that just like the :class:`URITemplate <URITemplate>`, this
object's ``__str__`` and ``__repr__`` methods do not return the same
information. Calling ``str(var)`` will return the original variable.

This object does the majority of the heavy lifting. The ``URITemplate``
object finds the variables in the URI and then creates ``URIVariable``
objects.  Expansions of the URI are handled by each ``URIVariable``
object. ``URIVariable.expand()`` returns a dictionary of the original
variable and the expanded value. Check that method's documentation for
more information.

varc                     Xl         [        R                  U l        / U l        / U l        0 U l        U R                  5         g r9   )originalr   rH   operator	variablesvariable_namesdefaultsr;   )r   r[   s     r   __init__URIVariable.__init__   s:     "*"2"2  	 ,.DF

r!   r   c                     SU -  $ )NzURIVariable(%s)rK   r   s    r   __repr__URIVariable.__repr__   s     4''r!   c                     U R                   $ r9   )r]   r   s    r   __str__URIVariable.__str__   s    }}r!   Nc                    U R                   nU R                   S   =n[        ;   a)  [        R                  U5      U l        U R                   SS nUR                  S5      nU H  nSnUnSU;   a  [        UR                  SS5      5      u  peUR                  S5      nUR                  S5      nSnSU;   a)  [        UR                  SS5      5      u  pi[        U	S5      nU(       a  XPR                  U'   U R                  R                  XgUS	.45        M     U R                   V
Vs/ s H  u  pU
PM	     snn
U l        gs  snn
f )
zyParse the variable.

This finds the:
    - operator,
    - set of safe characters,
    - variables, and
    - defaults.

r      Nr   r   *:
   )explodeprefix)r]   rF   r   rI   r^   splittupleendswithrstripintra   r_   appendr`   )r   var_list_stroperator_strvar_listr[   default_valnamero   rp   
prefix_strvarname_s               r   r;   URIVariable.parse   s%    }} MM!,,L;$00>DM==,L%%c*CKD cz$)#))C*;$<!mmC(G;;s#D&*Fd{#(C);#< Z,&1d#NN!!f=>' . <@>>J><Gw>JJs   &D>r{   r/   ro   rp   c                   ^^^ Uc  g[        U5      u  pVU R                  R                  5       mU R                  R                  m[	        U5      (       a  U(       d  U(       d  g[
        R                  " [
        R                  [           U5      nU(       a4  U R                  R                  5       R                  UU4S jU 5       5      $ SR                  U4S jU 5       5      nT SU 3$ [        U5      (       d  U(       a  U(       d  g[
        R                  " [
        R                  [        [        4   U5      nU=(       d    [        UR                  5       5      nU(       a4  U R                  R                  5       R                  UU4S jU 5       5      $ SR                  UU4S jU 5       5      nT SU 3$ U(       a@  [
        R                  " [
        R                   U5      nU(       a  USU OUnT ST" U5       3$ TS-   $ )z/Expansion method for the '?' and '&' operators.Nc              3   >   >#    U  H  nT S T" U5       3v   M     g7fr   NrK   ).0v_quoter{   s     r   	<genexpr>/URIVariable._query_expansion.<locals>.<genexpr>#  s$      @38atfAfQi[)5s   r   c              3   4   >#    U  H  nT" U5      v   M     g 7fr9   rK   )r   r   r   s     r   r   r   '  s      :EqEs   r   c              3   V   >#    U  H  u  p[        UT5       S T" U5       3v   M      g7fr   r3   r   kr   r   safes      r   r   r   0  s-      @@EuQ~&aq	{3   &)c              3   V   >#    U  H  u  p[        UT5       S T" U5       3v   M      g7f)r   Nr3   r   s      r   r   r   4  s,      !@EuQ~&aq	{3r   )is_list_of_tuplesr^   r   r4   	list_testr,   r-   SequenceScalarVariableValuer(   join	dict_testMappingr.   sorteditemsText)	r   r{   r/   ro   rp   tuplesr   r   r   s	    `     @@r   _query_expansionURIVariable._query_expansion  s    =)%0}}002$$UFFF1::&9:EBE}}88:?? @38@    :E ::q((UvFF199S*=%=>FE2VEKKM2E}}88:?? @@E@    !@E!  q((FF1665)E&,E'6N%EV1VE]O,,czr!   c                 
  ^ ^^ T R                   R                  5       nT R                   R                  5       mUb4  [        U[        [
        [        [        45      (       d  [        U5      S:X  a  g[        U5      u  pg[        U5      (       a  U(       d~  U(       d  Sn[        R                  " [        R                  [           U5      nU Vs/ s H"  oc  M  T R                   R                  U5      PM$     n	nU	(       a  UR!                  U	5      $ S$ [#        U5      (       d  U(       a  [        R                  " [        R$                  [        [        4   U5      nU=(       d    ['        UR)                  5       5      nSmU(       d  SmSnUR!                  UUU 4S jU 5       5      n
U
(       a  U
$ S$ [        R                  " [        R*                  U5      nU(       a  USU OUnT R                   R                  U5      $ s  snf )zCLabel and path expansion method.

Expands for operators: '/', '.'

Nr   r   %s=%s%s,%sc              3      >#    U  H6  u  pUc  M
  T[        UT5      TR                  R                  U5      4-  v   M8     g 7fr9   r4   r^   )r   r   r   
format_strr   r   s      r   r   4URIVariable._label_path_expansion.<locals>.<genexpr>h  s?      %!DA F
eAtndmm.A.A!.DEE!
   	A1A)r^   r(   r   r@   r.   ru   floatcomplexlenr   r   r,   r-   r   r   r4   r   r   r   r   r   r   )r   r{   r/   ro   rp   join_strr   r   r   	fragmentsexpandedr   r   s   `          @@r   _label_path_expansion!URIVariable._label_path_expansion?  s    ==446}}002=53UG"<==E
a)%0UFFF1::&9:EBE05051&##A&   098==+BdBUvFF199S*=%=>FE2VEKKM2E J$
}} %!% H
  (81T1qvvu%"(gve}}""5))-s   H H c                   ^ ^^	 T R                   R                  5       nT R                   R                  5       m	Uc  g[        U5      u  pg[	        U5      (       a  U(       d|  [
        R                  " [
        R                  [           U5      nU(       a'  UR                  UU	4S jU 5       5      nU(       a  U$ S$ SR                  U	4S jU 5       5      nT SU 3$ [        U5      (       d  U(       a  [
        R                  " [
        R                  [        [        4   U5      nU=(       d    [        UR                  5       5      nU(       a  UR                  U	U 4S jU 5       5      $ SR                  U	U 4S jU 5       5      nT SU 3$ [
        R                  " [
        R                  U5      nU(       a  USU OUnU(       a   T ST R                   R!                  U5       3$ T$ )z"Expansion method for ';' operator.Nc              3   N   >#    U  H  oc  M  T S[        UT5       3v   M     g 7fNr   r3   )r   r   r{   r   s     r   r   3URIVariable._semi_path_expansion.<locals>.<genexpr>  s)      )8=1.tfAeAtn-.s   %%r   c              3   <   >#    U  H  n[        UT5      v   M     g 7fr9   r3   )r   r   r   s     r   r   r     s      ?Aq$s   r   c              3      >#    U  H6  u  pUc  M
  [        UT5       STR                  R                  U5       3v   M8     g 7fr   r   r   r   r   r   r   s      r   r   r     sB      % % AuQ~&a(;(;A(>'?@ %r   c              3      >#    U  H6  u  pUc  M
  [        UT5       STR                  R                  U5       3v   M8     g 7f)Nr   r   r   s      r   r   r     sB      $ % AuQ~&a(;(;A(>'?@ %r   )r^   r(   r   r   r   r,   r-   r   r   r   r   r   r.   r   r   r   r4   )
r   r{   r/   ro   rp   r   r   r   r   r   s
   ``       @r   _semi_path_expansion URIVariable._semi_path_expansions  s    ==446}}002=)%0UFFF1::&9:EBE#== )8=)  $,x55 ? ??q((UvFF199S*=%=>FE2VEKKM2E}} % %%   88 $ %$ 
 q
++qvvu%"(gveV1T]]007899r!   c                   ^ ^ Uc  g [        U5      u  pV[        U5      (       aN  U(       dG  [        R                  " [        R                  [
           U5      nSR                  U 4S jU 5       5      $ [        U5      (       d  U(       a{  [        R                  " [        R                  [        [
        4   U5      nU=(       d    [        UR                  5       5      nU(       a  SOSmSR                  UU 4S jU 5       5      $ [        R                  " [        R                  U5      nU(       a  US U OUnT R                  R                  U5      $ )Nr   c              3   Z   >#    U  H   nTR                   R                  U5      v   M"     g 7fr9   r^   r4   )r   r   r   s     r   r   0URIVariable._string_expansion.<locals>.<genexpr>  s#     BEqDMM//22Es   (+r   r   c              3      >#    U  H@  u  pTTR                   R                  U5      TR                   R                  U5      4-  v   MB     g 7fr9   r   )r   r   r   r   r   s      r   r   r     sB      !DA dmm11!4dmm6I6I!6LMM!s   AA)r   r   r,   r-   r   r   r   r   r   r.   r   r   r   r^   r4   )r   r{   r/   ro   rp   r   r   r   s   `      @r   _string_expansionURIVariable._string_expansion  s     =)%0UFFF1::&9:EBE88BEBBBUvFF199S*=%=>FE2VEKKM2E$+J88 !  
 qvvu%"(gve}}""5))r!   var_dictc                    / nUc  U R                   U R                   0$ U R                   GH:  u  p4UR                  US5      nU(       d$  US:w  a  X0R                  ;   a  U R                  U   nUc  MH  SnU R                  [
        R                  :X  d  U R                  [
        R                  :X  a  U R                  nOU R                  [
        R                  :X  d  U R                  [
        R                  :X  a  U R                  nO7U R                  [
        R                  :X  a  U R                  nOU R                  nU" X5US   US   5      nUc  GM)  UR                  U5        GM=     SnU(       aD  U R                  R!                  5       U R                  R#                  5       R%                  U5      -   nU R                   U0$ )a  Expand the variable in question.

Using ``var_dict`` and the previously parsed defaults, expand this
variable and subvariables.

:param dict var_dict: dictionary of key-value pairs to be used during
    expansion
:returns: dict(variable=value)

Examples::

    # (1)
    v = URIVariable('/var')
    expansion = v.expand({'var': 'value'})
    print(expansion)
    # => {'/var': '/value'}

    # (2)
    v = URIVariable('?var,hello,x,y')
    expansion = v.expand({'var': 'value', 'hello': 'Hello World!',
                          'x': '1024', 'y': '768'})
    print(expansion)
    # => {'?var,hello,x,y':
    #     '?var=value&hello=Hello%20World%21&x=1024&y=768'}

Nr
   ro   rp   )r]   r_   rG   ra   r^   r   r$   r#   r   r&   r'   r   r%   r   r   rv   r0   r(   r   )r   r   return_valuesr{   optsr/   r   	expansions           r   expandURIVariable.expand  st   : MM4==11..JDLLt,EUb[T]]-Bd+}H!6!66==H$B$BB 66	!:!::==H$J$JJ 11	("?"?? 55	 22	 !d9otH~NH#$$X.K )N --/--335::=IJ  u%%r!   )ra   r^   r]   r`   r_   )r   Nr9   )rL   rM   rN   rO   __doc__r.   rb   re   rh   r;   VariableValueboolr,   Optionalru   r   r   r   r   VariableValueDictr   r   rW   rK   r!   r   rY   rY      s   $C  (# ( (KT.. . 	.
 

3. 
C.`2*2* 2* 	2*
 

32* 
C2*h22 2 	2
 

32 
C2h** * 	*
 

3* 
C*> 9=N&

#45N&	
38	N& N&r!   rY   r/   r   c                 ~    U (       a2  [        U [        [        45      (       a  [        S U  5       5      (       d  gSU 4$ )Nc              3   l   #    U  H*  n[        U[        5      =(       a    [        U5      S :H  v   M,     g7f)   N)r@   rr   r   )r   r,   s     r   r   $is_list_of_tuples.<locals>.<genexpr>  s'     GA:a'7CFaK7s   24)FNT)r@   listrr   allr/   s    r   r   r     s6     %$//GGGG;r!   c                 .    [        U [        [        45      $ r9   )r@   r   rr   r   s    r   r   r   #  s    edE]++r!   c                 V    [        U [        [        R                  R                  45      $ r9   )r@   dictcollectionsabcMutableMappingr   s    r   r   r   '  s    edKOO$B$BCDDr!   encodingc                 R    [        U [        5      (       a  U R                  U5      $ U $ r9   )r@   r.   encode)r/   r   s     r   _encoder   +  s#    %||H%%Lr!   r   c                     [        U [        [        45      (       d  [        U 5      n [        R                  R                  [        U 5      U5      $ r9   )r@   r.   rA   r:   r;   r4   r   )r/   r   s     r   r4   r4   1  s7    ec5\**E
<<gend33r!   )zutf-8)8r   collections.abcr   enumstringtypingr,   urllib.parser:   Unionru   r   r   r.   r   r   Listr   Tupler   Dictr   ascii_lettersdigitsr   Final__annotations__r   r   r   Enumr   r   r   r#   r$   r%   r&   r'   rR   rT   rS   rP   rQ   rF   rY   rU   r   r   r   r   r   AnyStrrA   r   r4   rK   r!   r   <module>r      sw  "     ggc5'3<= JJ"#FFIIc&&'GGC$$%	 FF3-.  V]]O40   &QWWS\ %)QWWS\ )(3}[M%B aggcl B~3tyy ~3D 
							'	'					&	&		"	"		/	/														 	 .
AGGAFF3=)*  W& W&t

55
WWT1::ajj6I1I)JKLLM
,QUU ,t ,EQUU Et E188 s  4 4c 4c 4r!   