;ς iΝJAc@s dZydklZlZWn&ej odklZlZnXdklZlZl Z l Z dk l Z dklZlZlZydklZWnej oe efZnXdZdZdfd „ƒYZd „Zeƒed jo eƒnd S( s (s IValidatorsIValidationChain(s StringTypes TupleTypesListTypes UnicodeType(s validation(sUnknowValidatorErrorsFalseValidatorErrorsAlreadyRegisteredValidatorError(s StringTypesiisValidationChaincBsΌtZdZeZddfed„Zd„Zd„Zd„Z d„Z d„Z e d„Z d „Zd „Ze d d „Zd d „Zd d„Zed„Zed„Zd„ZRS(s scCsΙ||_|p||_||_g|_g|_t|ƒtt fjo |f}nxP|D]H}t|ƒtt fjo|i |d|dƒqa|i |ƒqaW|oti |ƒndS(Nii(snamesselfstitles descriptions_v_modes_chainstypes validatorss TupleTypesListTypes validatorsappendsappendRequiredsregistersvalidationService(sselfsnamestitles descriptions validatorssregisters validator((s?/mnt/gmirror/ports/www/zope-validation/work/validation/chain.pys__init__s     cCsshtd<td<}g}x=|D]5\}}|i}|id||i |ƒfƒq%Wddi |ƒSdS(sprint obj support s V_REQUIREDs V_SUFFICIENTs ('%s', %s)s(%s)s, N( s V_REQUIREDs V_SUFFICIENTsmapsvalsselfs validatorsmodesnamesappendsgetsjoin(sselfsmapsnamesvals validatorsmode((s?/mnt/gmirror/ports/www/zope-validation/work/validation/chain.pys__repr__-s  $cCs7t|iƒt|iƒfpt‚t|iƒSdS(slen(obj) suppor N(slensselfs_chains_v_modesAssertionError(sself((s?/mnt/gmirror/ports/www/zope-validation/work/validation/chain.pys__len__7s&cCsCt|iƒt|iƒfpt‚tt|i|iƒƒSdS(s&Python 2.3 for i in x support N(slensselfs_chains_v_modesAssertionErrorsiterszip(sself((s?/mnt/gmirror/ports/www/zope-validation/work/validation/chain.pys__iter__=s&cCs=t|tƒot|ƒ}n|}tt|ƒ|ƒSdS(N(s isinstanceskeysValidationChainsreprsstrscmpsself(sselfskeysstr((s?/mnt/gmirror/ports/www/zope-validation/work/validation/chain.pys__cmp__CscCsBt|iƒt|iƒfpt‚|i||i|fSdS(s<self[idx] support and Python 2.1 for i in x support N(slensselfs_chains_v_modesAssertionErrorsidx(sselfsidx((s?/mnt/gmirror/ports/www/zope-validation/work/validation/chain.pys __getitem__Js&cCs#|i|ƒ}|i||ƒdS(sAppends a validator N(sselfs setValidators id_or_objs validatorssetModesmode(sselfs id_or_objsmodes validator((s?/mnt/gmirror/ports/www/zope-validation/work/validation/chain.pysappendPscCs|i|dtƒdS(s(Appends a validator as required smodeN(sselfsappends id_or_objs V_REQUIRED(sselfs id_or_obj((s?/mnt/gmirror/ports/www/zope-validation/work/validation/chain.pysappendRequiredVscCs|i|dtƒdS(s*Appends a validator as sufficient smodeN(sselfsappends id_or_objs V_SUFFICIENT(sselfs id_or_obj((s?/mnt/gmirror/ports/www/zope-validation/work/validation/chain.pysappendSufficient[sicCs/|i|d|ƒ}|i||d|ƒdS(s4Inserts a validator at position (default 0) spositionN(sselfs setValidators id_or_objspositions validatorssetModesmode(sselfs id_or_objsmodespositions validator((s?/mnt/gmirror/ports/www/zope-validation/work/validation/chain.pysinsert`scCs|i|dtddƒdS(s@Inserts a validator as required at position (default 0) smodespositioniN(sselfsinserts id_or_objs V_REQUIRED(sselfs id_or_objsposition((s?/mnt/gmirror/ports/www/zope-validation/work/validation/chain.pysinsertRequiredfscCs|i|dtddƒdS(s@Inserts a validator as required at position (default 0) smodespositioniN(sselfsinserts id_or_objs V_SUFFICIENT(sselfs id_or_objsposition((s?/mnt/gmirror/ports/www/zope-validation/work/validation/chain.pysinsertSufficientkscCsx|ttfjpt‚|tjo|ii|ƒn|ii ||ƒt |i ƒt |iƒfpt‚dS(sSet mode N( smodes V_REQUIREDs V_SUFFICIENTsAssertionErrorspositionsNonesselfs_v_modesappendsinsertslens_chain(sselfs validatorsmodesposition((s?/mnt/gmirror/ports/www/zope-validation/work/validation/chain.pyssetModeps  cCsKti|ƒ}|tjo|ii|ƒn|ii ||ƒ|SdS(sSet validator N( svalidationServices validatorFors id_or_objs validatorspositionsNonesselfs_chainsappendsinsert(sselfs id_or_objspositions validator((s?/mnt/gmirror/ports/www/zope-validation/work/validation/chain.pys setValidator{s  c OsQh}t}xρ|D]ι\} } | i}| |||Ž} | t jo:| t jot Sqό| t joqqόtd| ‚q| t jo(t| ƒtjo| ||