mς ‹γΈEc@s˜dZdkZdkZdkZdklZlZdk l Z e ei i dƒƒZd„Zdfd„ƒYZd„Zd e fd „ƒYZdS( sPersistent functions.N(s FunctionTypesCodeType(s Persistentt STORE_GLOBALcCst|iijS(N(t _STORE_GLOBALtfunct func_codetco_code(R((t0/data/zmath/zope/lib/python/zodbcode/function.pythas_side_effectst CodeWrappercBs&tZdZdZd„Zd„ZRS(s0Package a code object so that it can be pickled.icCs|i}g}ttt|ƒƒ|ƒD]-\}}t |t ƒo|||fq)q)~}|oLd|_ t |ƒ}x$|D]\}}t|ƒ||s  (t__name__t __module__t__doc__RR%R'(((RRs  cCsdS(sAReturn args from code object suitable for passing to constructor.N((R((Rt get_code_argsGstPersistentFunctioncBsPtZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z RS( NcCsK||_t|ƒ|_||_h|_|ii ot dƒ‚ndS(Ns/persistent function can not have free variables( RRt_pf_funcRt_v_side_effecttmodulet _pf_modulet_pf_codeRR"t TypeError(RRR0((RR%Ls     cCsd|ii|iifS(Ns(RR1R)R.t func_name(R((Rt__repr___scCs-|djot|ƒ‚nt|i|ƒS(NR.(tattrtAttributeErrortgetattrRR.(RR6((Rt __getattr__gs cCs|i||ƒpx|idƒo4||i|<|djot|iƒ|_qjnt |i||ƒ|idƒp d|_ q‹ndS(Nt_pf_R.t_v_i( Rt _p_setattrR6tvaluet startswitht__dict__RR.R/tsetattrt _p_changed(RR6R=((Rt __setattr__ns  cCsc|i|ƒpO|idƒo|i|=nt|i|ƒ|idƒp d|_q_ndS(NR:R;i(Rt _p_delattrR6R>R?tdelattrR.RA(RR6((Rt __delattr__{s cOsC|iiƒz|i||ŽSWd|iot|i_nXdS(N( RR1t _p_activateR.R$tkwargsR/tTrueRA(RR$RG((Rt__call__†s   cCst|i}|i|ipdf}|i}t i t f}||i jot|ƒ|i |