U a@sPddlZddlmZddlmZddlmZGdddeZGdd d eZdS) N)util)excc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZd(ddZd d!Zd"d#Zd$d%Zd&d'ZdS)) IdentityMapcCsi|_t|_t||_dSN)_dictset _modifiedweakrefref_wrselfrXC:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-nyjtotrf\sqlalchemy\orm\identity.py__init__szIdentityMap.__init__cCs |jSr)rkeysrrrrrszIdentityMap.keyscCs tdSrNotImplementedErrorrstaterrrreplaceszIdentityMap.replacecCs tdSrrrrrraddszIdentityMap.addcCs||dS)zUoptional inlined form of add() which can assume item isn't present in the mapN)rrrkeyrrr_add_unpresentszIdentityMap._add_unpresentcCs tddSNz%IdentityMap uses add() to insert datar)rZdict_rrrupdate#szIdentityMap.updatecCs tddSNz(IdentityMap uses remove() to remove datarrrrrclear&szIdentityMap.clearcCs|j|_|jr|j|dSr)r _instance_dictmodifiedr rrrrr_manage_incoming_state)sz"IdentityMap._manage_incoming_statecCs|`|jr|j|dSr)r!r"r discardrrrr_manage_removed_state/sz!IdentityMap._manage_removed_statecCs|jSr)r rrrr _dirty_states4szIdentityMap._dirty_statescCs t|jS)z[return True if any InstanceStates present have been marked as 'modified'. )boolr rrrrcheck_modified7szIdentityMap.check_modifiedcCs||kSrrrrrrrhas_key>szIdentityMap.has_keycCs tddSrrrrrrpopitemAszIdentityMap.popitemcGs tddSrr)rrargsrrrpopDszIdentityMap.popNcCs tddSrr)rrdefaultrrr setdefaultGszIdentityMap.setdefaultcCs t|jSr)lenrrrrr__len__JszIdentityMap.__len__cCs tdSrrrrrrcopyMszIdentityMap.copycCs tddSrr)rrvaluerrr __setitem__PszIdentityMap.__setitem__cCs tddSrrr)rrr __delitem__SszIdentityMap.__delitem__)N)__name__ __module__ __qualname__rrrrrrr r#r%r&r(r*r+r-r/r1r2r4r5rrrrrs& rc@seZdZddZddZddZddZd d Zd d Zd"ddZ ddZ ddZ ddZ e jrpddZddZddZddZddZd d!Zd S)#WeakInstanceDictcCs&|j|}|}|dkr"t||SrrobjKeyErrorrrrorrr __getitem__Xs  zWeakInstanceDict.__getitem__cCsLz(||jkr |j|}|}nWdSWntk r>YdSX|dk SdSNFr:r=rrr __contains___s    zWeakInstanceDict.__contains__cCs@|j|jkr8z|j|j|kWStk r4YdSXndSdSr@)rrr<rrrrcontains_stateks   zWeakInstanceDict.contains_statecCsj|j|jkrLz|j|j}Wntk r0YqPX||k rF||qPdSnd}||j|j<|||Sr)rrr<r%r#)rrexistingrrrrts    zWeakInstanceDict.replacecCs|j}||jkrlz|j|}Wntk r2Yn:X||k rh|}|dk rltdt||jfndS||j|<||dS)NzZCan't attach instance %s; another instance with key %s is already present in this session.FT) rrr<r;sa_excZInvalidRequestErrororm_utilZ state_strr#)rrrZexisting_stater>rrrrs$   zWeakInstanceDict.addcCs||j|<|j|_dSr)rr r!rrrrrs zWeakInstanceDict._add_unpresentNcCsR||jkr|Sz|j|}Wntk r4|YSX|}|dkrJ|S|SdSr)rr<r;)rrr.rr>rrrgets  zWeakInstanceDict.getcCs:|}g}|D]$}|}|dk r||j|fq|Sr) all_statesr;appendrrvaluesresultrr3rrritemsszWeakInstanceDict.itemscCs4|}g}|D]}|}|dk r||q|Sr)rGr;rHrIrrrrJs zWeakInstanceDict.valuescCs t|Sr)iterrrrrr__iter__szWeakInstanceDict.__iter__cCs t|Sr)rMrLrrrr iteritemsszWeakInstanceDict.iteritemscCs t|Sr)rMrJrrrr itervaluesszWeakInstanceDict.itervaluescCs"tjr|jSt|jSdSr)rpy2krrJlistrrrrrGs zWeakInstanceDict.all_statescCsBz|j|j}Wntk r$YnX||kr>|j|jddSr)rrr<r-rrstrrr _fast_discards zWeakInstanceDict._fast_discardcCs||dSr) safe_discardrrrrr$szWeakInstanceDict.discardcCsX|j|jkrTz|j|j}Wntk r0Yn$X||krT|j|jd||dSr)rrr<r-r%rSrrrrVs zWeakInstanceDict.safe_discard)N)r6r7r8r?rArBrrrrFrLrJrNrrQrOrPrGrUr$rVrrrrr9Ws"      r9) r rrErrDobjectrr9rrrrs    H