Ñò †°Ic@sdZddkTdddgZd„Zd„Zdefd „ƒYZdefd „ƒYZdefd „ƒYZdefd „ƒYZ d S(s2 Validators for applying validations in sequence. iÿÿÿÿ(t*tAnytAlltPipecCs|i||ƒS(N(t to_python(t validatortvaluetstate((s7/usr/lib/python2.6/site-packages/formencode/compound.pyRscCs|i||ƒS(N(t from_python(RRR((s7/usr/lib/python2.6/site-packages/formencode/compound.pyRstCompoundValidatorcBsqeZeZgZd Zd Zd„Zd„Zd„Z e e ƒZ d„Z d d„Z d d„Zd „ZRS( Rt validatorArgst validatorscCs´g}xl|iƒD]^\}}|djoqnt|ƒo1|tj o$|i||fƒt||ƒqqW|iƒ|iig}|D]\}}||q“~ƒdS(Ntview(R (titemst is_validatortIdentitytappendtdelattrtsortR textend(tclst new_attrsttoAddtnameRt_[1]tntv((s7/usr/lib/python2.6/site-packages/formencode/compound.pyt __classinit__s   cOs7ti|||Ž|i|_|ii|iƒdS(N(t Validatort__init__R RR (tselftargstkw((s7/usr/lib/python2.6/site-packages/formencode/compound.pyR*s cCs9g}ti|ƒD]}|djo ||qq~S(NR (Rt _reprVars(tnamesRR((s7/usr/lib/python2.6/site-packages/formencode/compound.pyR!/scCs td‚dS(Ns)Subclasses must implement attempt_convert(tNotImplementedError(RRRt convertFunc((s7/usr/lib/python2.6/site-packages/formencode/compound.pytattempt_convert4scCs|i||tƒS(N(R%R(RRR((s7/usr/lib/python2.6/site-packages/formencode/compound.pyt _to_python7s cCs|i||tƒS(N(R%R(RRR((s7/usr/lib/python2.6/site-packages/formencode/compound.pyt _from_python;s cCs|iS(N(R (R((s7/usr/lib/python2.6/site-packages/formencode/compound.pyt subvalidators?s(Rs validatorArgs(s validatorsN(t__name__t __module__t NoDefaultt if_invalidR t__unpackargs__t__mutableattributes__RRR!t staticmethodR%tNoneR&R'R((((s7/usr/lib/python2.6/site-packages/formencode/compound.pyR s      cBs,eZdZd„Zd„ZeeƒZRS(sÇ This class is like an 'or' operator for validators. The first validator/converter that validates the value will be used. (You can pass in lists of validators, which will be ANDed) cCsžd}|tjo|iddd…}n |i}x@|D]8}y||||ƒSWq=tj o}|}q=Xq=W|itjo |‚n|iSdS(Niÿÿÿÿ(R0RR tInvalidR,R+(RRRtvalidatet lastExceptionR Rte((s7/usr/lib/python2.6/site-packages/formencode/compound.pyR%Js   cCs7t}x*|iD]}|ot|dtƒ}qW|S(Nt not_empty(tTrueR tgetattrtFalse(RR5R((s7/usr/lib/python2.6/site-packages/formencode/compound.pytnot_empty__getZs  (R)R*t__doc__R%R9tpropertyR5(((s7/usr/lib/python2.6/site-packages/formencode/compound.pyRBs  cBsqeZdZd„Zd„Zd„Zd„ZeeƒZd„Ze eƒZ d„Z e e ƒZ d„Z RS(s« This class is like an 'and' operator for validators. All validators must work, and the results are passed in turn through all validators for conversion. cCs d|iS(Ns(R (R((s7/usr/lib/python2.6/site-packages/formencode/compound.pyt__repr__iscCs“|tjot|iƒ}|iƒn |i}y+x |D]}||||ƒ}q=W|SWn.tj o"|itjo‚n|iSXdS(N(RtlistR treverseR1R,R+(RRRR2R R((s7/usr/lib/python2.6/site-packages/formencode/compound.pyR%ls  cCsb|i}t|tƒpt|tƒo|i|ƒn|i|ƒ|i|h|id6ŽS(sa Adds the validator (or list of validators) to a copy of this validator. R,(R t isinstanceR=ttupleRRt __class__R,(RRtnew((s7/usr/lib/python2.6/site-packages/formencode/compound.pytwith_validator}s    cGsrtd„|ƒ}|ptSt|ƒdjo |dSt|dtƒo|di|dƒS||ŒSdS(s¹ Joins several validators together as a single validator, filtering out None and trying to keep `All` validators from being nested (which isn't needed). cSs|o |tj S((R(R((s7/usr/lib/python2.6/site-packages/formencode/compound.pytsiiN(tfilterRtlenR?RRC(RR ((s7/usr/lib/python2.6/site-packages/formencode/compound.pytjoin‰s cCs3x,|iD]!}|i}|tj o|Sq WtS(N(R t if_missingR+(RRR((s7/usr/lib/python2.6/site-packages/formencode/compound.pytif_missing__getšs     cCs7t}x*|iD]}|pt|dtƒ}qW|S(NR5(R8R R7(RR5R((s7/usr/lib/python2.6/site-packages/formencode/compound.pyR9¢s  cCstS(N(R8(RR((s7/usr/lib/python2.6/site-packages/formencode/compound.pytis_empty©s(R)R*R:R<R%RCRGt classmethodRIR;RHR9R5RJ(((s7/usr/lib/python2.6/site-packages/formencode/compound.pyRas        cBs eZdZd„Zd„ZRS(s- This class works like 'All', all validators muss pass, but the result of one validation pass is handled over to the next validator. A behaviour known to Unix and GNU users as 'pipe'. :: >>> from validators import DictConverter >>> pv = Pipe(validators=[DictConverter({1: 2}), DictConverter({2: 3}), DictConverter({3: 4})]) >>> pv.to_python(1) 4 >>> pv.to_python(1) 4 >>> pv.from_python(4) 1 >>> pv.from_python(4) 1 >>> pv.to_python(1) 4 cCs d|iS(Ns (R (R((s7/usr/lib/python2.6/site-packages/formencode/compound.pyR<ÄscCs“|tjot|iƒ}|iƒn |i}y+x |D]}||||ƒ}q=W|SWn.tj o"|itjo‚n|iSXdS(N(RR=R R>R1R,R+(RRRR2R R((s7/usr/lib/python2.6/site-packages/formencode/compound.pyR%Çs  (R)R*R:R<R%(((s7/usr/lib/python2.6/site-packages/formencode/compound.pyR­s N( R:tapit__all__RRtFancyValidatorR RRR(((s7/usr/lib/python2.6/site-packages/formencode/compound.pyts   .L