U 5`d>d?id@dAdBifdCdDZ+e*d>d>d?id@eifdEdFZ,e*d>d>d?id@eifdGdHZ-e*d>d>d?id@dIdBifdJdKZ.dLdMZ/e*d>d>d?id@dNdBifdOdPZ0dQdRZ1dSdTZ2dUdVZ3dWdXZ4dYdZZ5d[d\Z6d]d^Z7d_d`Z8dadbZ9dcddZ:dedfZ;dgdhZddddtiidi}dddii}dddii}t|||dS)Nthingdictrrtyper2rrrrrtest_coerce_in_dictschemas  r"cCs>dddtidi}ddddgi}ddd d gi}t|||dS) Nthingslistrrrr 3rr!rrrrrtest_coerce_in_listschema#sr'cCsXdddtidtigdi}dddgi}dddgi}t|||t|}|dd dS) Nr#r$rritemsrr!rr r&)rstrr rappend)rrr validatorrrrtest_coerce_in_listitems*s   r-cCsLdddtiid}dd|di}dddigi}dddigi}t|||dS) Nrrrrr#r$r r!r)Z item_schemarrrrrr'test_coerce_in_dictschema_in_listschema6s r.cCs*ddtii}t|}ddi}||dS)Nrrr)rrZvalidate)rvdocrrrtest_coerce_not_destructive>s   r1cCs:ddtii}tddi|}d|d_t|ddtjtdS)Nrr not_a_numberrr)rr)rrinforrCOERCION_FAILEDr_errorsrrrtest_coerce_catches_ValueErrorFs  r7cCsPdddtidtigdi}dddgi}t||}d|d_t|d d tjtdS) Nr#r$rr(r2r!rr)r#rr#r)r)rr*rr3rrr4rrr6rrr+test_coerce_in_listitems_catches_ValueErrorOs   r:cCs>ddtjii}tddi|}d|d_t|ddtjtjdS)Nnamerirr)r;r)r*lowerrr3rrr4r5rrrtest_coerce_catches_TypeError]s r=cCsTdddtidtjigdi}dddgi}t||}d|d_t|d d tjtjdS) Nr#r$rr(rr!rr)r#rr8)rr*r<rr3rrr4r9rrr*test_coerce_in_listitems_catches_TypeErrorfs   r>cCs:didtidi}dddii}dddii}t|||dS)Nfoorr allow_unknownbar0rrrrrrtest_coerce_unknownvs  rDcs:Gfdddtddddii}dddid }dS) Ncs&eZdZfddZddZZS)z3test_custom_coerce_and_rename..MyNormalizercst|j||||_dSN)super__init__ multiplier)selfrHr r ) MyNormalizer __class__rrrGsz.MyNormalizer.__init__cSs ||jSrE)rH)rIvaluerrr_normalize_coerce_multiplyszNtest_custom_coerce_and_rename..MyNormalizer._normalize_coerce_multiply)__name__ __module__ __qualname__rGrM __classcell__rrJ)rKrrJ~srJr!r?rZmultiplyr&rename_handlerrArr/rrRrtest_custom_coerce_and_rename}srWcCs:dd}dd}ddt||gii}tddiddi|dS)NcSs |ddS)Nr!rxrrrz#test_coerce_chain..cSs|SrE)upperrXrrrrZr[r?rF)hexr )Z drop_prefixr\rrrrtest_coerce_chainsr`cCs*dd}ddt|gii}|ddi|dS)NcSs tddS)Nz0The coercion chain did not abort after an error.)AssertionErrorrLrrr dont_do_mesz,test_coerce_chain_aborts..dont_do_mer?rrC)r_)r,rcrrrrtest_coerce_chain_abortssrdcCs"dddtddi}ddgi}dS)Ndatar$integerrrrq)r)r,rrrrr!test_coerce_non_digit_in_sequences ricCs(dtdddi}ddi}t|||dS)Nr?Trfrnullablerrrrrrrtest_nullables_dont_fail_coercesrmcCs>dd}d|dddi}ddi}t||||ddi|dS)NcSs tddS)Nzexpected to fail) Exceptionrbrrrfailing_coercionszGtest_nullables_fail_coerce_on_non_null_values..failing_coercionr?Trfrjr!r )r,rorrrrr-test_nullables_fail_coerce_on_non_null_valuess  rqcCs,ddtii}ddi}ddi}t|||dS)Nrrr r!rrrrrtest_normalizeds rrcCs,dddii}ddi}ddi}|||ddS)Nr?renamerBrFrr,rrrrrr test_renames   rucCs4tdtid}i}ddi}ddi}t||||dS)NrSrTrCr?r)rrr rtrrrtest_rename_handlers rvcCs4tdd}dddii}ddi}i}t||||dS)NT purge_unknownr?rstringrBrr rtrrrtest_purge_unknowns   r{cCs<dddddiiddi}dddii}dii}t|||dS) Nr?rrryT)rrrxrBrprrrrtest_purge_unknown_in_subschemas  r}cCsfddtii}dtddd}|dd|dd t|d d |}|d|ddS) Nrevisionr5zw+)mode)r~filerZfoobarrTrT)rrwriteseekr normalizedcloserrrrrrtest_issue_147_complexs  rcCs8ddddtiidi}d}dd|ii}t||}dS)Nrrrrrr )rrr)rZref_objrrrrrtest_issue_147_nested_dicts  rcCs<ddtdddi}dddii}dddii}t|||dS) Nrrrfrr)rZ valuesrulesrr r!rrrrrtest_coerce_in_valuesruless   rcCs<ddtdddi}dddii}dddii}t|||dS) Nrrrfr)rZ keysrulesrr?rrrrrtest_coerce_in_keysrules s   rcCsRdddtddi}ddddgi}dd d d gi}t|||||jdD]}qHdS) Na_listr$floatrgrr&rg@g@g@)rr r)r,rrrrYrrrtest_coercion_of_sequence_itemss rdefault bar_valuedefault_settercCsdSNrrr0rrrrZr[rZcCsBddi}||ddi|d}ddi}ddd}t|||dS)Nrryr?rBr? foo_valuerupdater r bar_schemarrrrrrtest_default_missings   rcCs>ddi}||ddi|d}ddd}t|||dS)NrryrrZ non_defaultrr copyrrrrrrrtest_default_existent)s   rcCs@ddd}||ddi|d}ddd}t|||dS)NryTrrkrrrrrrrrtest_default_none_nullable4s    rcCsdSrrrrrrrZ@r[cCsFddd}||ddi|d}ddd}ddd}t|||dS)NryFrrrrrrrrrrtest_default_none_nonnullable?s     rcCs8ddiddddd}ddi}ddd}t|||dS)NrryT)rrkrrr?rrprrrrtest_default_none_default_valueKs   rcCsdSrrrrrrrZVr[cCsTddi}||ddddi|ddi}dddii}ddd di}t|||dS) Nrryrrrrr?rrrrrrr!test_default_missing_in_subschemaUs   rcCsVddiddddddddddddd}d d i}d d d d d}t|||dS)NrrfcSs |ddSNarrdrrrrZir[z0test_depending_default_setters..rrcSs |ddS)Nbr!rrrrrrZjr[cSs|d|dS)NrcrrrrrrZkr[)rrrrrrr!rrprrrrtest_depending_default_settersfs   rcCs,ddddddddd}|i|dS)NrfcSs |ddS)NrrrrrrrrZtr[z9test_circular_depending_default_setters..rcSs |ddSrrrrrrrZur[rrr)r,rrrr'test_circular_depending_default_settersrs    rcCsNdddddddiiddi}dd d ii}t||dd tj|ddfd dS) Nr$rTrrryrrArrZis_amapping)r$rerror)rrZBAD_TYPErlrrrtest_issue_250{s  rcCs<dddddddiidii}dd d d gi}t|||dS) Nr$rTrrrry)rArrknownunknownrrprlrrr#test_issue_250_no_type_pass_on_lists  rcCsNddddddiidii}ddddiii}t||dd tj|ddfd dS) Nr$rTrrryrArr)r$rr)rrZBAD_TYPE_FOR_SCHEMArlrrr#test_issue_250_no_type_fail_on_dicts rcCs2ddddddiidii}ddi}t|||dS) Nr$rTrrryrrrprlrrr)test_issue_250_no_type_fail_pass_on_others rcCsvdddddddiidddddiid gii}ddd ii}t||dd tj|ddfd dd d di}t||dS)NtestoneofrTrrryrrs)rrrZasd)rr)rrZONEOFr rlrrr test_allow_unknown_with_of_ruless$  rcCsFddddidi}ddddd d d d ifi}t||t||}dS) NZmy_fieldr$r)ryZnumberrrr?rB*ZalbertZ kandinskyr))r rrrrrrtest_271_normalising_tupless  rcCs"tddddi}|diidS)NrrTrrArUrVrrrtest_allow_unknown_wo_schemasrcCsDtdd}ddddi}ddidd}dddii}t||||dS)NTrwr?rrrBrrzrtrrr%test_allow_unknown_with_purge_unknowns   rcCsRtdd}dddddiiddi}d d d d d }dd d d i}t||||dS)NTrwr?rrBrry)rrrAZbazF)rBZcorgeZxyzzy)r?Zthudrzrtrrr1test_allow_unknown_with_purge_unknown_subdocuments  rcCsJdddddid}t|dd}dd i}t|}d |d <t|||d dS) Nryi)rZ maxlengthreadonlyT) description last_updated)rZpurge_readonlyrz it is a thingZfuturer)r,)rrr )rr,rrrrrtest_purge_readonlys rcCshddiddid}ddddddidd}t||d }d d d id }d d ddd }t||||dS)Nrrry)metaversionzcfg.yaml)rr)cfg_pathpackagerr@z1.2.3rr?)rZ plugin_foo)rrrz)rrAr,rrrrr%test_defaults_in_allow_unknown_schemas rN)>rrZtempfilerZpytestrZcerberusrrZcerberus.testsrrr r rrr"r'r-r.r1r7r:r=r>rDrWr`rdrirmrqrrrurvr{r}rrrrrZ parametrizerrrrrrrrrrrrrrrrrrrrrrrs