id(ddlZddlmZddlmZddlmZddlmZGddeZGd d eZ Gd d eZ dS) N) attributes)util)excceZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZddZdZdZdZdZdS) IdentityMapcli|_t|_tj||_dSN)_dictset _modifiedweakrefref_wrselfs L/opt/cloudlinux/venv/lib/python3.11/site-packages/sqlalchemy/orm/identity.py__init__zIdentityMap.__init__s) ;t$$c4|jSr )r keysrs rrzIdentityMap.keyssz   rctr NotImplementedErrorrstates rreplacezIdentityMap.replace!###rctr rrs raddzIdentityMap.addrrc0||dS)zUoptional inlined form of add() which can assume item isn't present in the mapN)r!rrkeys r_add_unpresentzIdentityMap._add_unpresents rc tdNz%IdentityMap uses add() to insert datar)rdict_s rupdatezIdentityMap.update$!"IJJJrc tdNz(IdentityMap uses remove() to remove datarrs rclearzIdentityMap.clear'!"LMMMrcd|j|_|jr|j|dSdSr )r_instance_dictmodifiedrr!rs r_manage_incoming_statez"IdentityMap._manage_incoming_state*s<#x > & N  u % % % % % & &rcP|`|jr|j|dSdSr )r0r1rdiscardrs r_manage_removed_statez!IdentityMap._manage_removed_state0s8  > * N " "5 ) ) ) ) ) * *rc|jSr )rrs r _dirty_stateszIdentityMap._dirty_states5s ~rc*t|jS)z[return True if any InstanceStates present have been marked as 'modified'. )boolrrs rcheck_modifiedzIdentityMap.check_modified8s DN###rc ||vSr rr$s rhas_keyzIdentityMap.has_key?s d{rc tdr,rrs rpopitemzIdentityMap.popitemBr.rc tdr,r)rr$argss rpopzIdentityMap.popEr.rNc tdr'rrr$defaults r setdefaultzIdentityMap.setdefaultHr*rc*t|jSr )lenr rs r__len__zIdentityMap.__len__Ks4:rctr rrs rcopyzIdentityMap.copyNrrc tdr'r)rr$values r __setitem__zIdentityMap.__setitem__Qr*rc tdr,rr=s r __delitem__zIdentityMap.__delitem__Tr.rr )__name__ __module__ __qualname__rrrr!r%r)r-r2r5r7r:r>r@rCrGrJrLrOrQr<rrr r sN%%% !!!$$$$$$ KKKNNN&&& *** $$$NNNNNNKKKK$$$KKKNNNNNrr ceZdZdZdZdZdZdZdZddZ d Z d Z d Z e jrd Zd ZdZdZdZdZdZdS)WeakInstanceDictcj|j|}|}|t||Sr r objKeyErrorrr$ros r __getitem__zWeakInstanceDict.__getitem__Ys0 3 IIKK 93-- rc ||jvr"|j|}|}ndS |duS#t$rYdSwxYwNFrXr[s r __contains__zWeakInstanceDict.__contains__`sh !dj   3IIKKu D=    55 s+4 AAcn|j|jvr& |j|j|uS#t$rYdSwxYwdSr_)r$r rZrs rcontains_statezWeakInstanceDict.contains_statelsS 9 " " z%),55   uu 5s $ 22c|j|jvr? |j|j}||ur||ndS#t$rYnwxYwd}||j|j<|||Sr )r$r r5rZr2rrexistings rrzWeakInstanceDict.replaceus 9 " " :ei0 5((..x88884    H % 59 ##E***s> A  A c>|j}||jvrm |j|}||urI|}|2tjdt j|d|jdndS#t$rYnwxYw||j|<||dSNzCan't attach instance z; another instance with key z$ is already present in this session.FT) r$r rYsa_excInvalidRequestErrororm_util state_strrZr2)rrr$existing_stater\s rr!zWeakInstanceDict.addsi $*   !!%C "..&**,,A}$88 (1%8888%)))E%!5      3 ##E***ts A.. A;:A;c2||j|<|j|_dSr )r rr0r#s rr%zWeakInstanceDict._add_unpresents 3#xrNc||jvr|S |j|}|}||S|S#t$r|cYSwxYwr rX)rr$rFrr\s rgetzWeakInstanceDict.getsh dj N JsOE  AyH   NNN s 4 AAc|}g}|D]4}|}|||j|f5|Sr ) all_statesrYappendr$rvaluesresultrrNs ritemszWeakInstanceDict.itemssW"" 2 2EIIKKE  uy%0111 rc|}g}|D]-}|}|||.|Sr )rqrYrrrss rrtzWeakInstanceDict.valuessP"" % %EIIKKE  e$$$ rcDt|Sr )iterrrs r__iter__zWeakInstanceDict.__iter__sDIIKK   rcDt|Sr )ryrvrs r iteritemszWeakInstanceDict.iteritemss %% %rcDt|Sr )ryrtrs r itervalueszWeakInstanceDict.itervaluess && &rctjr|jSt |jSr )rpy2kr rtlistrs rrqzWeakInstanceDict.all_statess< 9 -:$$&& & ))++,, ,rc |j|j}||ur"|j|jddSdS#t$rYdSwxYwr )r r$rCrZrrsts r _fast_discardzWeakInstanceDict._fast_discardsi 0EI&B U{{ uy$/////{     DD s< A  A c0||dSr  safe_discardrs rr4zWeakInstanceDict.discard %     rc|j|jvra |j|j}||ur7|j|jd||dSdS#t$rYdSwxYwdSr )r$r rCr5rZrs rrzWeakInstanceDict.safe_discards 9 " " 6Z * ;;JNN59d333..u55555;      # "sA A-,A-cdS)Nrr<rs rprunezWeakInstanceDict.prunesqrr )rRrSrTr]r`rbrr!r%rorvrtrzrrr|r~rqrr4rrr<rrrVrVXs$ ! ! !&2(((    !!! y' & & & ' ' '--- 0 0 0!!! 6 6 6rrVceZdZdZejrdZdZdZdZ dZ ddZ d Z d Z d Zd Zd ZdZdZdZdZdZdZdS)StrongInstanceDicta&A 'strong-referencing' version of the identity map. .. deprecated 1.1:: The strong reference identity map is legacy. See the recipe at :ref:`session_referencing_behavior` for an event-based approach to maintaining strong identity references. c4|jSr )r r~rs rr~zStrongInstanceDict.itervaluess:((** *rc4|jSr )r r|rs rr|zStrongInstanceDict.iteritems s:'')) )rc*t|jSr )ryr(rs rrzzStrongInstanceDict.__iter__ sDJrc|j|Sr r r=s rr]zStrongInstanceDict.__getitem__sz#rc||jvSr rr=s rr`zStrongInstanceDict.__contains__sdj  rNc8|j||Sr )r rorEs rrozStrongInstanceDict.getsz~~c7+++rc4|jSr )r rtrs rrtzStrongInstanceDict.valuessz  """rc4|jSr )r rvrs rrvzStrongInstanceDict.itemssz!!!rc>d|DS)Nc6g|]}tj|Sr<)rinstance_state).0r\s r z1StrongInstanceDict.all_states..s#DDD )!,,DDDr)rtrs rrqzStrongInstanceDict.all_statessDDdkkmmDDDDrcV|j|vo tj||j|uSr )r$rrrs rrbz!StrongInstanceDict.contains_state!s0 I  D)$uy/::eC rc|j|jvrB|j|j}tj|}||ur||ndSd}||j|j<|||Sr )r$r rrr5rYr2rds rrzStrongInstanceDict.replace's 9 " "z%),H!0::Hu$$**84444H %  59 ##E***rc8|j|vrZtj|j|j|ur2t jdt j|d|jddS||j|j<| |dSrg) r$rrr rhrirjrkrYr2rs rr!zStrongInstanceDict.add6s 9  (EI)>??uLL00 )%0000%)))= 5$)IIKKDJuy !  ' ' . . .4rcV||j|<|j|_dSr )rYr rr0r#s rr%z!StrongInstanceDict._add_unpresentEs%))++ 3#xrc |j|j}tj||ur"|j|jddSdS#t $rYdSwxYwr )r r$rrrCrZ)rrrYs rrz StrongInstanceDict._fast_discardJsw 0*UY'C (--66 uy$/////76     DD sA AAc0||dSr rrs rr4zStrongInstanceDict.discardVrrc|j|jvra|j|j}tj|}||ur9|j|jd||dSdSdSr )r$r rrrCr5)rrrYrs rrzStrongInstanceDict.safe_discardYsy 9 " "*UY'C*3//BU{{ uy$///**511111 # "{rc^t|}d|D}tj}|||j|j|t||_|t|z S)z%prune unreferenced, non-dirty states.cDg|]}|j |Sr<)r1rY)rss rrz,StrongInstanceDict.prune..es'BBBQqzBBBBr) rIrqrWeakValueDictionaryr)r r-r9r1)r ref_countdirtykeeperss rrzStrongInstanceDict.pruneasII BB$//"3"3BBB-//t  '"""U  3t99$$rr )rRrSrT__doc__rrr~r|rzr]r`rortrvrqrbrr!r%rr4rrr<rrrrs1   y* + + + * * *   !!!,,,,###"""EEE        ((( 0 0 0!!!222 % % % % %rr) rrrrjrrhobjectr rVrr<rrrsENENENENEN&ENENENP\\\\\{\\\~w%w%w%w%w%w%w%w%w%w%r