Your IP : 216.73.216.213


Current Path : /opt/alt/python37/lib/python3.7/site-packages/webob/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib/python3.7/site-packages/webob/__pycache__/multidict.cpython-37.pyc

B

V
wP7�@s�dZddlmZddlZddlZddlmZmZmZm	Z	ddddgZ
Gd	d�de�Ze�Z
Gd
d�de�ZGdd�de�ZGdd�de�Zd
d�ZdS)zI
Gives a multi-value dictionary object (MultiDict) plus several wrappers
�)�MutableMappingN)�PY3�
iteritems_�itervalues_�
url_encode�	MultiDict�NestedMultiDict�NoVars�GetDictc@seZdZdZdd�Zedd��Zedd��Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZeZdd�Zdd�Zd9dd �Zd!d"�Zd#d$�Zd%d&�Zd:d'd(�Zd)d*�Zd+d,�Zd-d.�Zer�eZnd/d0�ZeZd1d2�Zer�eZ nd3d4�Z d5d6�Z!e�re!Z"nd7d8�Z"dS);rz�
        An ordered dictionary that can have multiple values for each key.
        Adds the methods getall, getone, mixed and extend and add to the normal
        dictionary interface.
    cOs�t|�dkrtd��|rlt|dd�r8t|d���}n,t|dd�rXt|d���}nt|d�}||_ng|_|r�|j�|���dS)N�z9MultiDict can only be called with one positional argumentr�	iteritems�items)�len�	TypeError�hasattr�listrr
�_items�extend)�self�args�kwr
�r�@/opt/alt/python37/lib/python3.7/site-packages/webob/multidict.py�__init__szMultiDict.__init__cCs,t|t�std|j|f��|�}||_|S)z@
        Create a dict that is a view on the given list
        z8%s.view_list(obj) takes only actual list objects, not %r)�
isinstancerr�__name__r)�cls�lst�objrrr�	view_list-s
zMultiDict.view_listcs�|�}x�|jpdD]�}|j�dd��|j�dd�}tjtjd�}trd�dkrVdd�}qp�fd	d�}n�fd
d�}|jr�||j�|_|�	|j
|�q|j}||kr�tr�|�d�}|||�}tr�|�
d�}|�	|j
||��qW|S)z@
        Create a dict from a cgi.FieldStorage instance
        r�charset�utf8zContent-Transfer-EncodingN)�base64zquoted-printablecSs|S)Nr)�brrr�<lambda>J�z-MultiDict.from_fieldstorage.<locals>.<lambda>cs|�d����S)Nr!)�encode�decode)r#)r rrr$Lr%cs
|���S)N)r')r#)r rrr$Nr%)rZtype_options�get�headers�binascii�
a2b_base64�a2b_qpr�filename�add�name�valuer&r')rZfsr�fieldZtransfer_encodingZsupported_tranfer_encodingr'r0r)r r�from_fieldstorage:s.



zMultiDict.from_fieldstoragecCs0x"t|j�D]\}}||kr|SqWt|��dS)N)�reversedr�KeyError)r�key�k�vrrr�__getitem___szMultiDict.__getitem__cCs4y
||=Wntk
rYnX|j�||f�dS)N)r4r�append)rr5r0rrr�__setitem__es

zMultiDict.__setitem__cCs|j�||f�dS)zL
        Add the key and value, not overwriting any previous value.
        N)rr9)rr5r0rrrr.lsz
MultiDict.addcCs.g}x$|jD]\}}||kr|�|�qW|S)zU
        Return a list of all values matching the key (may be an empty list)
        )rr9)rr5�resultr6r7rrr�getallrs
zMultiDict.getallcCs>|�|�}|std|��t|�dkr6td||f��|dS)zk
        Get one value matching the key, raising a KeyError if multiple
        values were found.
        zKey not found: %rrzMultiple values match %r: %rr)r<r4r)rr5r7rrr�getone|s
zMultiDict.getonecCsdi}i}xV|��D]J\}}||krT||kr:||�|�q\|||g||<d||<q|||<qW|S)a$
        Returns a dictionary where the values are either single
        values, or a list of values when a key/value appears more than
        once in this dictionary.  This is similar to the kind of
        dictionary often used to represent the variables in a web
        request.
        N)r
r9)rr;Zmultir5r0rrr�mixed�s
zMultiDict.mixedcCs0i}x&|��D]\}}|�|g��|�qW|S)zZ
        Returns a dictionary where each key is associated with a list of values.
        )r
�
setdefaultr9)r�rr5�valrrr�
dict_of_lists�szMultiDict.dict_of_listscCsR|j}d}x6tt|�ddd�D]}||d|kr ||=d}q W|sNt|��dS)NFr���rT)r�rangerr4)rr5r
�found�irrr�__delitem__�szMultiDict.__delitem__cCs$x|jD]\}}||krdSqWdS)NTF)r)rr5r6r7rrr�__contains__�szMultiDict.__contains__cCs|jdd�=dS)N)r)rrrr�clear�szMultiDict.clearcCs
|�|�S)N)�	__class__)rrrr�copy�szMultiDict.copyNcCs4x|jD]\}}||kr|SqW|j�||f�|S)N)rr9)rr5�defaultr6r7rrrr?�s
zMultiDict.setdefaultcGs�t|�dkr$tdtdt|����xBtt|j��D]0}|j|d|kr4|j|d}|j|=|Sq4W|rt|dSt|��dS)Nrz(pop expected at most 2 arguments, got %sr)rr�reprrDrr4)rr5rrFr7rrr�pop�sz
MultiDict.popcCs
|j��S)N)rrN)rrrr�popitem�szMultiDict.popitemcOsJ|r4|d}t|�tt|��kr4d}tj|tdd�tj|f|�|�dS)NrzbBehavior of MultiDict.update() has changed and overwrites duplicate keys. Consider using .extend()�)�
stacklevel)r�dict�warnings�warn�UserWarningr�update)rrrr�msgrrrrV�szMultiDict.updatecKs�|dkr
npt|d�r&|j�|���nTt|d�rXxH|��D]}|j�|||f�q:Wn"x |D]\}}|j�||f�q^W|r�|�|�dS)Nr
�keys)rrrr
rXr9rV)r�other�kwargsr6r7rrrr�s

zMultiDict.extendcCs*tdjt|����}d|jjd�|�fS)Nz(%r, %r)z%s([%s])z, )�map�__mod__�_hide_passwdr
rJr�join)rr
rrr�__repr__�szMultiDict.__repr__cCs
t|j�S)N)rr)rrrr�__len__�szMultiDict.__len__ccsx|jD]\}}|VqWdS)N)r)rr6r7rrr�iterkeys�szMultiDict.iterkeyscCsdd�|jD�S)NcSsg|]\}}|�qSrr)�.0r6r7rrr�
<listcomp>sz"MultiDict.keys.<locals>.<listcomp>)r)rrrrrXszMultiDict.keyscCs
t|j�S)N)�iterr)rrrrrszMultiDict.iteritemscCs|jdd�S)N)r)rrrrr
szMultiDict.itemsccsx|jD]\}}|VqWdS)N)r)rr6r7rrr�
itervaluesszMultiDict.itervaluescCsdd�|jD�S)NcSsg|]\}}|�qSrr)rbr6r7rrrrcsz$MultiDict.values.<locals>.<listcomp>)r)rrrr�valuesszMultiDict.values)N)N)#r�
__module__�__qualname__�__doc__r�classmethodrr2r8r:r.r<r=r>rBrGrH�has_keyrIrKr?rNrOrVrr_r`rarrX�__iter__rr
rerfrrrrrsH
%
	


c@sneZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zddd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zd
S)r
cCs||_t�||�dS)N)�envrr)r�datarmrrrr!szGetDict.__init__csBdd���fdd�|��D�}t|�}||jd<||f|jd<dS)NcSs
|�d�S)Nr!)r&)�trrrr$%r%z#GetDict.on_change.<locals>.<lambda>cs g|]\}}�|��|�f�qSrr)rbr6r7)�errrc&sz%GetDict.on_change.<locals>.<listcomp>ZQUERY_STRINGzwebob._parsed_query_vars)r
rrm)rrn�qsr)rpr�	on_change$s

zGetDict.on_changecCst�|||�|��dS)N)rr:rr)rr5r0rrrr:*szGetDict.__setitem__cCst�|||�|��dS)N)rr.rr)rr5r0rrrr.-szGetDict.addcCst�||�|��dS)N)rrGrr)rr5rrrrG0szGetDict.__delitem__cCst�|�|��dS)N)rrIrr)rrrrrI3s
z
GetDict.clearNcCst�|||�}|��|S)N)rr?rr)rr5rLr;rrrr?6szGetDict.setdefaultcGstj||f|��}|��|S)N)rrNrr)rr5rr;rrrrN:szGetDict.popcCst�|�}|��|S)N)rrOrr)rr;rrrrO>s
zGetDict.popitemcOstj|f|�|�|��dS)N)rrVrr)rrrZrrrrVBszGetDict.updatecCs"tdjt|����}dd�|�S)Nz(%r, %r)z	GET([%s])z, )r[r\r]r
r^)rr
rrrr_EszGetDict.__repr__cCst|�S)N)r)rrrrrKIszGetDict.copy)N)rrgrhrrrr:r.rGrIr?rNrOrVr_rKrrrrr
s
c@s�eZdZdZdd�Zdd�Zdd�ZeZeZeZ	eZ
eZeZeZ
eZdd	�Zd
d�Zdd
�ZeZdd�Zdd�Zdd�Zer�eZndd�Zdd�Zer�eZndd�Zdd�ZeZer�eZndd�ZdS)rzM
    Wraps several MultiDict objects, treating it as one large MultiDict
    cGs
||_dS)N)�dicts)rrsrrrrRszNestedMultiDict.__init__cCs4x&|jD]}|�|t�}|tk	r|SqWt|��dS)N)rsr(�_dummyr4)rr5�dr0rrrr8Us
zNestedMultiDict.__getitem__cOstd��dS)Nz%NestedMultiDict objects are read-only)r4)rrrrrr�	_readonly\szNestedMultiDict._readonlycCs(g}x|jD]}|�|�|��qW|S)N)rsrr<)rr5r;rurrrr<gszNestedMultiDict.getallcCst|�S)N)r)rrrrrKrszNestedMultiDict.copycCs x|jD]}||krdSqWdS)NTF)rs)rr5rurrrrHuszNestedMultiDict.__contains__cCs$d}x|jD]}|t|�7}qW|S)Nr)rsr)rr7rurrrr`}szNestedMultiDict.__len__cCsx|jD]}|rdSqWdS)NTF)rs)rrurrr�__nonzero__�szNestedMultiDict.__nonzero__ccs,x&|jD]}xt|�D]
}|VqWqWdS)N)rsr)rru�itemrrrr�szNestedMultiDict.iteritemscCst|���S)N)rr)rrrrr
�szNestedMultiDict.itemsccs,x&|jD]}xt|�D]
}|VqWqWdS)N)rsr)rrur0rrrre�szNestedMultiDict.itervaluescCst|���S)N)rre)rrrrrf�szNestedMultiDict.valuesccs(x"|jD]}x|D]
}|VqWqWdS)N)rs)rrur5rrrrl�s
zNestedMultiDict.__iter__cCst|���S)N)rra)rrrrrX�szNestedMultiDict.keysN)rrgrhrirr8rvr:r.rGrIr?rNrOrVr<rKrHrkr`rwrrr
rerfrlrarXrrrrrMs>c@s�eZdZdZd!dd�Zdd�Zdd�ZeZeZeZ	d	d
�Z
e
Ze
Ze
Z
d"dd�Zd
d�Zdd�Zdd�ZeZdd�ZeZdd�Zdd�Zdd�Zdd�Zdd�Zer�eZeZeZndd �ZeZeZeZeZeZ dS)#r	zd
    Represents no variables; used when no variables
    are applicable.

    This is read-only
    NcCs|pd|_dS)NzN/A)�reason)rryrrrr�szNoVars.__init__cCstd||jf��dS)Nz
No key %r: %s)r4ry)rr5rrrr8�szNoVars.__getitem__cOstd|j��dS)NzCannot add variables: %s)r4ry)rrrrrrr:�szNoVars.__setitem__cOstd|j��dS)NzNo keys to delete: %s)r4ry)rrrrrrrG�szNoVars.__delitem__cCs|S)Nr)rr5rLrrrr(�sz
NoVars.getcCsgS)Nr)rr5rrrr<�sz
NoVars.getallcCs||S)Nr)rr5rrrr=�sz
NoVars.getonecCsiS)Nr)rrrrr>�szNoVars.mixedcCsdS)NFr)rr5rrrrH�szNoVars.__contains__cCs|S)Nr)rrrrrK�szNoVars.copycCsd|jj|jfS)Nz<%s: %s>)rJrry)rrrrr_�szNoVars.__repr__cCsdS)Nrr)rrrrr`�szNoVars.__len__cCs
ti|�S)N)Zcmp)rrYrrr�__cmp__�szNoVars.__cmp__cCstg�S)N)rd)rrrrra�szNoVars.iterkeyscCsgS)Nr)rrrrrX�szNoVars.keys)N)N)!rrgrhrirr8r:r.r?rVrGrIrNrOr(r<r=r>rBrHrkrKr_r`rzrarrXr
rfrerrlrrrrr	�sB

ccsDx>|D]6\}}d|ks&d|ks&d|kr2|dfVq||fVqWdS)N�password�passwd�pwdz******r)r
r6r7rrrr]�sr])ri�collectionsrr*rSZwebob.compatrrrr�__all__r�objectrtr
rr	r]rrrr�<module>s0]J