mò %á¸Ec@s5dZddd!ZdklZdklZdkZdkZdkZdk Z dk Z dk l Z l Z lZlZlZlZdklZdkZdkZdkZd klZee iid d ƒƒZeid ƒZd „ZgZdZ deefd„ƒYZ!d„Z"d„Z#ei$e!ƒdS(sv Simple ZODB-based transient object implementation. $Id: TransientObject.py 40218 2005-11-18 14:39:19Z andreasjung $ s$Revision: 1.9.68.5 $i iþÿÿÿ(s Persistent(sImplicitN(s ItemWithIds TransientsDictionaryLikes TTWDictionarys)ImmutablyValuedMappingOfPickleableObjectssTransientItemContainer(sClassSecurityInfo(s ConflictErrort Z_TOC_DEBUGisZope.TransientObjectcGs|g}|ittiƒƒƒ|ittiƒƒƒx!|D]}|it|ƒƒq?Wdi|ƒ}t i |ƒdS(Nt ( tsargstappendtstrtthreadt get_identttimetargstargtjointmsgtLOGtinfo(RRR R ((tB/data/zmath/zope/lib/python/Products/Transience/TransientObject.pytTLOG%sitTransientObjectcBs9tZdZeeeeefZe ƒZ e i dƒe i ƒe Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd „Zd „Zd „Zd „Zd „Zd„Zed„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#e!Z$e!Z%e#Z&e#Z'd„Z(eZ)d„Z*d„Z+RS(s‡ Dictionary-like object that supports additional methods concerning expiration and containment in a transient object container tallowcCs;||_|iƒ|_h|_tiƒ|_|_dS(N( t containerkeytselfttokent_generateUniqueIdtidt _containerRt_createdt_last_accessed(RR((Rt__init__Ds  cCs|iS(N(RR(R((RtgetIdTscCsžt|dtƒtj odSnd}x5t|dgƒD]!}ti|ƒo |}Pq:q:W|dj o%|i|i ƒo||i =q‘nd|_ dS(Nt_invalidtaq_chain( tgetattrRt _notfoundtNonettrans_ob_containertobtTransientItemContainertisImplementedBythas_keyRR(RR!R"((Rt invalidate[s  cCs%t|dtƒtjodSndS(NRi(RRR(R((RtisValidlscCs|iS(N(RR(R((RtgetLastAccessedqscCs1tiƒ}|it|jo ||_ndS(N(RttRRtWRITEGRANULARITY(RR)((RtsetLastAccessedts cCs|iS(N(Rt_last_modified(R((RtgetLastModified{scCstiƒ|_dS(N(RRR,(R((RtsetLastModified~scCs|iS(N(RR(R((Rt getCreatedscCs|iS(N(RR(R((RtgetContainerKey„scCs |iiƒS(N(RRtkeys(R((RR1‹scCs |iiƒS(N(RRtvalues(R((RR2ŽscCs |iiƒS(N(RRtitems(R((RR3‘scCs.|ii||ƒ}|tjodSn|S(N(RRtgettktdefaulttvRR (RR5R6R7((RR4”s cCs(|ii|tƒtj odSndS(Nii(RRR4R5R(RR5((RR%™scCs$d|_|iiƒ|iƒdS(Ni(Rt _p_changedRtclearR.(R((RR9s  cCs2d|_x"|iƒD]}||||tsett__guarded_setitem__t__guarded_delitem__tdeleteRNtgetNameRRT(((RR2sD                        6 cCsR|iddƒ}|iddƒ}||jodSn||jodSndS(s> sort dictionaries in descending order based on last mod time R,iiÿÿÿÿiN(td1R4tm1td2tm2(RgRiRhRj((RRLs  cCsR|iddƒ}|iddƒ}||jodSn||jodSndS(sA sort dictionaries in descending order based on last access time RiiÿÿÿÿiN(RgR4RhRiRj(RgRiRhRj((RRMs  (%RWt __version__t Persistencet Persistentt AcquisitiontImplicitRRPRRtosRt(Products.Transience.TransienceInterfacesRXRYRZR[R\R#t AccessControlR^tGlobalstloggingtZODB.POSExceptionRJROtenvironR4R?t getLoggerR RRR*RRLRMtInitializeClass(R RPRJRXRRMRR*RYRkRoR[RZR^RmRRR?RLRRtRR#R\RsRRp((Rt?s(   $ +      Õ