_dZddlmZddlZddlZddlZddlmZddlmZej e Z ej e Z dZ dZd Zd Zd ZGd d eZdS)aJProvides managed registration services on behalf of :func:`.listen` arguments. By "managed registration", we mean that event listening functions and other objects can be added to various collections in such a way that their membership in all those collections can be revoked at once, based on an equivalent :class:`._EventKey`. )absolute_importN)exc)utilctr |tvrdSt|}|D]I}|tvr>t|}|||st|JdSN)_collection_to_keypopvalues_key_to_collection)reflistener_to_keykey dispatch_regs /srv/buildsys-work-dir/castor/build_node/builder-2/WGSG1/unpkd_srcs/cloudlinux-venv-1.0.6/venv/lib/python3.11/site-packages/sqlalchemy/event/registry.py_collection_gcedr5s ,>!>!>(,,S11O%%'',, $ $ $-c2L   S ! ! ! ,"&&s+++ ,,c|j}t|}|j}tj|j}||vrdS|||<t |}|||<dS)NFT)_keyr r weakref _listen_fnr ) event_keyownerrr owner_ref listen_refrs r_stored_in_collectionrCs_ .C%c*L IY122JL  u(L(3O"%OJ 4rc|j}t|}tj|j}|j}||d|st|=|t vr$t |}||dSdSr)rr rr rr r )rrrrrrrs r_removed_from_collectionrVs .C%c*LY122J IY%%% $ s #&&&,Y7J''''''&rc|sdS|j}|j}t|}t|}|D]H}tj|}||}t|}||vr|||ksJn|||<|||<IdSr)r r rr ) newowneroldownerelementsold_listener_to_keynew_listener_to_key listen_fnrrrs r_stored_in_collection_multir&gs |H|H,X6,X6 . . [++ !*-)#. | # #)Z77777%/L "*-J'' . .rc|sdS|j}t|}|D]K}tj|}||}t|}||d|st|=LdSr)r r rr r )rr"rr%rrrs r_clearr(}s  IE(/O(( [++ j))#. %%% ("3'((rceZdZdZdZddZedZdZdZ dZ d Z d Z dd Z ed ZdZdZdZdS) _EventKeyz$Represent :func:`.listen` arguments.)target identifierfnfn_keyfn_wrapdispatch_targetNc||_||_||_t|tjr.t |jt |jf|_ nt ||_ ||_ ||_ dSr) r+r,r- isinstancetypes MethodTypeid__func____self__r.r/r0)selfr+r,r-r0_fn_wraps r__init__z_EventKey.__init__sl $ b%* + + !R[//2bk??:DKKR&&DK .rcDt|j|j|jfSr)r5r+r,r.r8s rrz_EventKey._keys4;$+>>rch||jur|St|j|j|j|j|SN)r9)rr*r+r,r-r0)r8r/s r with_wrapperz_EventKey.with_wrappersC do % %K $  rch||jur|St|j|j|j||jSr>)r0r*r+r,r-r/)r8r0s rwith_dispatch_targetz_EventKey.with_dispatch_targetsC d2 2 2K   rcx|dd}|dd}|dd}|j|j|j}}}t |j|} | ||} || }t |jjj|j} t| dr| |s|r;|tj |j|j |i|dS|jjj|g|Ri|dS)NonceF_once_unless_exceptionnamed_sa_warn)retry_on_exception)r r0r,rgetattrdispatch_adjust_fn_specr?_eventshasattrrFr only_oncelisten_listen) r8argskwrConce_unless_exceptionrEr+r,r-dispatch_collection adjusted_fn stub_functions rrNz_EventKey.listensyvvfe$$ "'? G Gw&&  O O  &fozBB)99"eDD   --  ) 14?   =* - - %  " " $ $ $  E( E D  O8M  d  "!  " " " " " 2D ) 1$ D D D D D D D D Drc h|j}|tvr-tjd|jd|jd|jdt|}|D]E\}}|}|}|*|(| | |FdS)NzNo listeners found for event z /  ) rr rInvalidRequestErrorr+r,r-r itemsremover?)r8rrcollection_ref listener_ref collection listener_fns rrZz_EventKey.removesi ( ( ());;;: *--c22 ,8,>,>,@,@ B B (NL'))J&,..K%+*A!!$"3"3K"@"@AAA  B Brc|jtvS)z6Return True if this event key is registered to listen.)rr r<s rcontainsz_EventKey.containssy...rFc |j|j}}t|j|}|r0||j||dS||j||dSr)r0r,rHrI for_modifyinsertappend)r8 propagatercrEretvalr+r,rSs r base_listenz_EventKey.base_listens"14? %fozBB    * *6? ; ; B Bi      * *6? ; ; B Bi     rc|jp|jSr)r/r-r<s rrz_EventKey._listen_fns|&tw&rc^t||r||jdSdSNTF)rrdrr8rlist_s rappend_to_listz_EventKey.append_to_list s2 u - -  LL ) ) )45rcZt||||jdSr)rrZrrks rremove_from_listz_EventKey.remove_from_lists, u--- T_%%%%%rc^t||r||jdSdSrj)r appendleftrrks rprepend_to_listz_EventKey.prepend_to_lists4 u - -    T_ - - -45rr)FFFN)__name__ __module__ __qualname____doc__ __slots__r:propertyrr?rArNrZr`rgrrmrorrrrr*r*s..I / / / /??X?      EEE@BBB /// BF"''X'&&&rr*)rv __future__r collectionsr3rrr defaultdictdictr r rrrr&r(objectr*ryrrrs"'&&&&& -[,T22 -[,T22  , , ,&((("..., ( ( ( LLLLLLLLLLr