Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
contego / home / tvault / .virtenv / lib / python2.7 / site-packages / paste / util / multidict.pyc
Size: Mime:
ó
ª‹EYc@sÊddlZddlZddlZddlZyddlmZWn!ek
rgddlmZnXdefd„ƒYZ	defd„ƒYZ
idd	6Zed
krÆddl
Z
e
jƒndS(iÿÿÿÿN(tMutableMapping(t	DictMixint	MultiDictcBsøeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z	d„Z
d	„Zd
„ZeZ
d„Zd„Zdd
„Zd„Zd„Zdd„Zd„Zd„Zd„Zd„ZeZd„Zd„Zd„Zd„ZRS(s§
    An ordered dictionary that can have multiple values for each key.
    Adds the methods getall, getone, mixed, and add to the normal
    dictionary interface.
    cOsµt|ƒdkr!tdƒ‚n|rt|ddƒrM|djƒ}n0t|ddƒrs|djƒ}n
|d}t|ƒ|_n	g|_|jjtj|ƒƒdS(Nis9MultiDict can only be called with one positional argumentit	iteritemstitems(	tlent	TypeErrorthasattrRRtlistt_itemstextendtsix(tselftargstkwR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyt__init__s
	cCs@x'|jD]\}}||kr
|Sq
Wtt|ƒƒ‚dS(N(R	tKeyErrortrepr(Rtkeytktv((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyt__getitem__'scCs9y||=Wntk
rnX|jj||fƒdS(N(RR	tappend(RRtvalue((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyt__setitem__-s

cCs|jj||fƒdS(sL
        Add the key and value, not overwriting any previous value.
        N(R	R(RRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pytadd4scCsXg}xK|jD]@\}}t|ƒt|ƒkr||kr|j|ƒqqW|S(sU
        Return a list of all values matching the key (may be an empty list)
        (R	ttypeR(RRtresultRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pytgetall:s
$cCs[|j|ƒ}|s(td|ƒ‚nt|ƒdkrStd||fƒ‚n|dS(sk
        Get one value matching the key, raising a KeyError if multiple
        values were found.
        sKey not found: %risMultiple values match %r: %ri(RRR(RRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pytgetoneDscCsi}i}xn|jD]c\}}||kro||krN||j|ƒqy|||g||<d||<q|||<qW|S(s$
        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	RtNone(RRtmultiRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pytmixedPs
cCsQi}xD|jD]9\}}||kr<||j|ƒq|g||<qW|S(sb
        Returns a dictionary where each key is associated with a
        list of values.
        (R	R(RRRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyt
dict_of_listsgscCs™|j}t}xhtt|ƒdddƒD]J}t||dƒt|ƒkr,||d|kr,||=t}q,q,W|s•tt|ƒƒ‚ndS(Niiÿÿÿÿi(R	tFalsetrangeRRtTrueRR(RRRtfoundti((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyt__delitem__ts	#4
cCsFx?|jD]4\}}t|ƒt|ƒkr
||kr
tSq
WtS(N(R	RR$R"(RRRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyt__contains__~s$cCs
g|_dS(N(R	(R((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pytclear†scCs
t|ƒS(N(R(R((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pytcopy‰scCsDx'|jD]\}}||kr
|Sq
W|jj||fƒ|S(N(R	R(RRtdefaultRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyt
setdefaultŒs
cGsÒt|ƒdkr5tdtdt|ƒƒƒ‚nxvtt|jƒƒD]_}t|j|dƒt|ƒkrK|j|d|krK|j|d}|j|=|SqKW|r¼|dStt|ƒƒ‚dS(Nis&pop expected at most 2 arguments, got i(RRRR#R	RR(RRR
R&R((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pytpop“s:
cCs
|jjƒS(N(R	R-(R((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pytpopitem¡scKsÁ|dkrn˜t|dƒr7|jj|jƒƒnpt|dƒrzx^|jƒD] }|jj|||fƒqSWn-x*|D]"\}}|jj||fƒqW|r½|j|ƒndS(NRtkeys(RRR	R
RR/Rtupdate(RtothertkwargsRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR0¤s!cCs=djg|jD]}d|^qƒ}d|jj|fS(Ns, s(%r, %r)s%s([%s])(tjoinR	t	__class__t__name__(RRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyt__repr__²s)cCs
t|jƒS(N(RR	(R((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyt__len__¶scCs g|jD]\}}|^q
S(N(R	(RRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR/½sccs#x|jD]\}}|Vq
WdS(N(R	(RRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pytiterkeysÀscCs|jS(N(R	(R((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyRÆscCs
t|jƒS(N(titerR	(R((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyRÉscCs g|jD]\}}|^q
S(N(R	(RRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pytvaluesÌsccs#x|jD]\}}|Vq
WdS(N(R	(RRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyt
itervaluesÏsN(R5t
__module__t__doc__RRRRRRR R!R'R(thas_keyR)R*RR,R-R.R0R6R7R/R8t__iter__RRR:R;(((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyRs6					
			
	
												tUnicodeMultiDictcBseZdZddded„Zd„Zd„Zd„Zd„Z	d„Z
d„Zd	„Zd
„Z
d„Zd„Zd
„Zd„ZeZd„Zd„Zdd„Zd„Zd„Zd„Zd„Zd„Zd„ZeZd„Zd„Zd„Zd„Z RS(s
    A MultiDict wrapper that decodes returned values to unicode on the
    fly. Decoding is not applied to assigned values.

    The key/value contents are assumed to be ``str``/``strs`` or
    ``str``/``FieldStorages`` (as is returned by the ``paste.request.parse_``
    functions).

    Can optionally also decode keys when the ``decode_keys`` argument is
    True.

    ``FieldStorage`` instances are cloned, and the clone's ``filename``
    variable is decoded. Its ``name`` variable is decoded when ``decode_keys``
    is enabled.

    tstrictc
Cs£||_|dkr$tjƒ}n||_||_||_|jrŸ|jj}xHt|ƒD]7\}}|\}}	|j	|ƒ}||	f||<qaWndS(N(
RRtsystgetdefaultencodingtencodingterrorstdecode_keysR	t	enumeratet_encode_key(
RRRDRERFRtindextitemRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyRäs					cCs@|jr<y|j|j|jƒ}Wq<tk
r8q<Xn|S(N(RFtencodeRDREtAttributeError(RR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyRHós	
cCs@|jr<y|j|j|jƒ}Wq<tk
r8q<Xn|S(N(RFtdecodeRDRERL(RR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyt_decode_keyûs	
cCsÁt|tjƒrtj|ƒ}|jr`t|jtjƒr`|jj|j	|j
ƒ|_ntjr½|jj|j	|j
ƒ|_q½n0y|j|j	|j
ƒ}Wnt
k
r¼nX|S(s¯
        Decode the specified value to unicode. Assumes value is a ``str`` or
        `FieldStorage`` object.

        ``FieldStorage`` objects are specially handled.
        (t
isinstancetcgitFieldStorageR*RFtnameRtbinary_typeRMRDREtPY2tfilenameRL(RR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyt
_decode_values!	$
cCs(|j|ƒ}|j|jj|ƒƒS(N(RHRVRR(RR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyRscCs&|j|ƒ}|jj||ƒdS(N(RHRR(RRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyRscCs&|j|ƒ}|jj||ƒdS(sL
        Add the key and value, not overwriting any previous value.
        N(RHRR(RRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR scCs;|j|ƒ}g|jj|ƒD]}|j|ƒ^q"S(sU
        Return a list of all values matching the key (may be an empty list)
        (RHRRRV(RRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR'scCs(|j|ƒ}|j|jj|ƒƒS(sk
        Get one value matching the key, raising a KeyError if multiple
        values were found.
        (RHRVRR(RR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR.scCs‰i}x|tj|jjƒƒD]b\}}t|tƒr_g|D]}|j|ƒ^qA}n|j|ƒ}|||j|ƒ<qW|S(s$
        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.
        (RRRR RORRVRN(Rt
unicode_mixedRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR 6s%%cCshi}x[tj|jjƒƒD]A\}}g|D]}|j|ƒ^q2}|||j|ƒ<qW|S(sb
        Returns a dictionary where each key is associated with a
        list of values.
        (RRRR!RVRN(Rtunicode_dictRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR!Gs
%"cCs#|j|ƒ}|jj|ƒdS(N(RHRR'(RR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR'RscCs|j|ƒ}|jj|ƒS(N(RHRR((RR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR(VscCs|jjƒdS(N(RR)(R((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR)\scCs(t|jjƒ|j|jd|jƒS(NRF(R@RR*RDRERF(R((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR*_scCs+|j|ƒ}|j|jj||ƒƒS(N(RHRVRR,(RRR+((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR,cscGs+|j|ƒ}|j|jj||ŒƒS(N(RHRVRR-(RRR
((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR-gscCs1|jjƒ\}}|j|ƒ|j|ƒfS(N(RR.RNRV(RRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR.kscCs@djg|jƒD]}d|^qƒ}d|jj|fS(Ns, s(%r, %r)s%s([%s])(R3RR4R5(RRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR6os,cCs
|jjƒS(N(RR7(R((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR7sscCs)g|jjƒD]}|j|ƒ^qS(N(RR8RN(RR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR/zsccs,x%|jjƒD]}|j|ƒVqWdS(N(RR8RN(RR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR8}scCsAgtj|jƒD]*\}}|j|ƒ|j|ƒf^qS(N(RRRRNRV(RRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyRƒsccsDx=tj|jƒD])\}}|j|ƒ|j|ƒfVqWdS(N(RRRRNRV(RRR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR‡scCs)g|jjƒD]}|j|ƒ^qS(N(RR;RV(RR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR:‹sccs,x%|jjƒD]}|j|ƒVqWdS(N(RR;RV(RR((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR;ŽsN(!R5R<R=RR"RRHRNRVRRRRRR R!R'R(R>R)R*R,R-R.R6R7R/R8R?RRR:R;(((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyR@Ós<																								s¥
    >>> d = MultiDict(a=1, b=2)
    >>> d['a']
    1
    >>> d.getall('c')
    []
    >>> d.add('a', 2)
    >>> d['a']
    1
    >>> d.getall('a')
    [1, 2]
    >>> d['b'] = 4
    >>> d.getall('b')
    [4]
    >>> d.keys()
    ['a', 'a', 'b']
    >>> d.items()
    [('a', 1), ('a', 2), ('b', 4)]
    >>> d.mixed()
    {'a': [1, 2], 'b': 4}
    >>> MultiDict([('a', 'b')], c=2)
    MultiDict([('a', 'b'), ('c', 2)])
    tgeneralt__main__(RPR*RRBtcollectionsRRtImportErrortUserDictRR@t__test__R5tdoctestttestmod(((sI/home/tvault/.virtenv/lib/python2.7/site-packages/paste/util/multidict.pyt<module>s
Ä¿