Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/site-packages/uritemplate/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/site-packages/uritemplate/__pycache__/variable.cpython-38.pyc
U

N��gF2�@s�dZddlZddlZddlZejee	e
efZejej
eejeefejeefefZejeefZGdd�d�Zejejeejej
ejeeffd�dd�Zejed�dd	�Zejed�d
d�Zdejeed
�dd�Zejeed�dd�ZdS)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?
>

�Nc@seZdZdZdZdZed�dd�Zed�dd	�Zed�d
d�Z	dd�d
d�Z
dd�dd�Zeee
ejeejed�dd�Zeee
ejeejed�dd�Zeee
ejeejed�dd�Zeee
ejeejed�dd�Zdejeejeefd�dd�ZdS)�URIVariableaThis 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.

    )
�+�#�.�/�;�?�&�|�!�@z:/?#[]@!$&'()*+,;=)�varcCs8||_d|_d|_g|_g|_i|_|��|��dS)N�)�original�operator�safe�	variables�variable_names�defaults�parse�
post_parse)�selfr
�r�A/opt/cppython/lib/python3.8/site-packages/uritemplate/variable.py�__init__6s�zURIVariable.__init__)�returncCsd|S)NzURIVariable(%s)r�rrrr�__repr__IszURIVariable.__repr__cCs|jS�N)rrrrr�__str__LszURIVariable.__str__Nc	Cs|j}|jdtjkr0|jd|_|jdd�}|jtjdd�krLtj|_|�d�}|D]�}d}|}d|kr�t|�dd��\}}d}|�d�r�d	}|dd
�}d}d|kr�t|�dd��\}}t	|�}|r�||j
|<|j�|||d�f�qZd
d�|jD�|_
dS)z�Parse the variable.

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

        r�N��,�=F�*T����:)�explode�prefixcSsg|]\}}|�qSrr)�.0�varname�_rrr�
<listcomp>zsz%URIVariable.parse.<locals>.<listcomp>)rr�	operatorsr�reservedr�split�tuple�endswith�intrr�appendr)	rZvar_list_strZvar_listr
Zdefault_val�namer'r(Z
prefix_strrrrrOs4



�zURIVariable.parsecCspd|_|j|_|_|jdkr$d|_|jdkr4d|_|jdkrDd|_|jdkrZd|_d|_|jdkrltj|_d	S)
z�Set ``start``, ``join_str`` and ``safe`` attributes.

        After parsing the variable, we need to set up these attributes and it
        only makes sense to do it in a more easily testable way.
        rr)rrrr"rrr	)rrN)rr�start�join_strrr.rrrrr|s




zURIVariable.post_parse)r4�valuer'r(rcsP|dkrdSt|�\}}|j�t|�r�|s�|s2dSt�tjt|�}|rd|j���fdd�|D��Sd��fdd�|D��}��d|��St	|�s�|�r
|s�dSt�tj
ttf|�}|p�t|�
��}|r�|j��fdd�|D��Sd��fdd�|D��}��d|��S|�rHt�tj|�}|�r0|d|�n|}��dt|����S�dS)	z/Expansion method for the '?' and '&' operators.Nc3s"|]}��dt|����VqdS�r#N��quote�r)�v�r4rrr�	<genexpr>�sz/URIVariable._query_expansion.<locals>.<genexpr>r"c3s|]}t|��VqdSrr9r;�rrrr>�sr#c3s,|]$\}}t|���dt|����VqdSr8r9�r)�kr<r?rrr>�sc3s,|]$\}}t|���dt|����VqdS)r"Nr9r@r?rrr>�s)�is_list_of_tuplesr�	list_test�t�cast�Sequence�ScalarVariableValuer6�join�	dict_test�Mapping�str�sorted�items�Textr:�rr4r7r'r(�tuplesrMrr=r�_query_expansion�s@���zURIVariable._query_expansionc
s"|j}|j�|dks2t|ttttf�s6t|�dkr6dSt|�\}}t	|�r�|s�|sVd}t
�t
jt
|�}�fdd�|D�}|r�|�|�SdSt|�s�|r�t
�t
jtt
f|�}|p�t|���}d�|s�d�d}|���fdd	�|D��}	|	r�|	SdSt
�t
j|�}|�r|d|�n|}t|��S)
zSLabel and path expansion method.

        Expands for operators: '/', '.'

        Nrr"csg|]}|dk	rt|���qSrr9r;r?rrr,�sz5URIVariable._label_path_expansion.<locals>.<listcomp>�%s=%s�%s,%sc3s2|]*\}}|dk	r�t|��t|��fVqdSrr9r@��
format_strrrrr>�s�z4URIVariable._label_path_expansion.<locals>.<genexpr>)r6r�
isinstancerKr2�float�complex�lenrBrCrDrErFrGrHrIrJrLrMrNr:)
rr4r7r'r(r6rPrM�	fragments�expandedrrTr�_label_path_expansion�s:�
��z!URIVariable._label_path_expansionc	sX|j}|j�|dkrdS|jdkr&d}t|�\}}t|�r�|s�t�tjt|�}|rz|�	��fdd�|D��}|rv|SdSd�	�fdd�|D��}��d|��St
|�s�|�rt�tjttf|�}|p�t
|���}|r�|�	�fd	d�|D��Sd�	�fd
d�|D��}��d|��St�tj|�}|�r6|d|�n|}|�rT��dt|����S�S)z"Expansion method for ';' operator.Nrr	c3s*|]"}|dk	r��dt|����VqdS�Nr#r9r;r=rrr>sz3URIVariable._semi_path_expansion.<locals>.<genexpr>r"c3s|]}t|��VqdSrr9r;r?rrr>
sr#c3s4|],\}}|dk	rt|���dt|����VqdSr]r9r@r?rrr>s�c3s4|],\}}|dk	rt|���dt|����VqdS)Nr"r9r@r?rrr>s�)r6rrrBrCrDrErFrGrHrIrJrKrLrMrNr:)	rr4r7r'r(r6rPrMr[rr=r�_semi_path_expansion�s@
���z URIVariable._semi_path_expansioncs�|dkrdSt|�\}}t|�rN|sNt�tjt|�}d��fdd�|D��St|�sZ|r�t�tjt	tf|�}|p~t
|���}|r�dnd�d���fdd�|D��St�tj|�}|r�|d|�n|}t
|�j�S)Nr"c3s|]}t|�j�VqdSr�r:rr;rrrr>7sz0URIVariable._string_expansion.<locals>.<genexpr>rRrSc3s.|]&\}}�t|�j�t|�j�fVqdSrr_r@�rUrrrr>>s�)rBrCrDrErFrGrHrIrJrKrLrMrNr:rrOrr`r�_string_expansion)s �zURIVariable._string_expansion)�var_dictrcCs�g}|dkr|j|jiS|jD]�\}}|�|d�}|sR|dkrR||jkrR|j|}|dkr\qd}|jdkrr|j}n*|jdkr�|j}n|jdkr�|j}n|j}||||d|d�}|dk	r|�	|�qd}|r�|j
|j�|�}|j|iS)a1Expand 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)rr)rr	rr'r()
rr�getrrr\rQr^rar3r5r6rH)rrbZ
return_valuesr4�optsr7r[Z	expansionrrr�expandGs0



zURIVariable.expand)N)�__name__�
__module__�__qualname__�__doc__r-r.rKrrrrr�
VariableValue�boolrD�Optionalr2rQr\r^ra�VariableValueDictrJrerrrrrsJ-�1�4�9���r)r7rcCs0|r$t|ttf�r$tdd�|D��s(dSd|fS)Ncss$|]}t|t�ot|�dkVqdS)r!N)rVr0rY)r)rDrrrr>�sz$is_list_of_tuples.<locals>.<genexpr>)FNT)rV�listr0�all�r7rrrrB�s���rBcCst|ttf�Sr)rVrnr0rprrrrC�srCcCst|ttjjf�Sr)rV�dict�collections�abc�MutableMappingrprrrrI�srI�utf-8)r7�encodingrcCst|t�r|�|�S|Sr)rVrK�encode)r7rvrrr�_encode�s

rx)r7rrcCs(t|ttf�st|�}tj�t|�|�Sr)rVrK�bytes�urllibrr:rx)r7rrrrr:�sr:)ru)ri�collections.abcrr�typingrD�urllib.parserz�Unionr2rWrXrKrGrFrJ�Tuplerj�Dictrmr�AnyrkrlrBrCrI�AnyStrryrxr:rrrr�<module>s,��i"�


F1le Man4ger