+
    ia                    T   R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RIH
t
 ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIt^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIH t  ^RIH!t! ^RI"H#t# ^RI"H$t$ ]'       d=   ^RIH%t% ^RIH&t& ^R IH't' ^R!IH(t( ^R"IH)t) ^R#I*H+t+ ^R$I,H-t- ^R%I.H/t/ ^R&IH0t0 ^R'IH1t1 ]! R(]R)7      t2]Pf                  ! R*4      t4 ! R+ R,]$4      t5 ! R- R.]$4      t6 ! R/ R0]!]]7R13,          ]	],          ] 4      t8 ! R2 R34      t9 ! R4 R5] 4      t:]:! 4       t;]Px                  ;t<t=]P|                  ;t>t?]P                  ;t@tA]P                  ;tBtCR;R6 R7 lltDR8 tER9 tFR: tGR# )<a  Defines SQLAlchemy's system of class instrumentation.

This module is usually not directly visible to user applications, but
defines a large part of the ORM's interactivity.

instrumentation.py deals with registration of end-user classes
for state tracking.   It interacts closely with state.py
and attributes.py which establish per-instance and per-class-attribute
instrumentation, respectively.

The class instrumentation system can be customized on a per-class
or global basis using the :mod:`sqlalchemy.ext.instrumentation`
module, which provides the means to build and specify
alternate instrumentation forms.

.. versionchanged: 0.8
   The instrumentation extension system was moved out of the
   ORM and into the external :mod:`sqlalchemy.ext.instrumentation`
   package.  When that package is imported, it installs
   itself within sqlalchemy.orm so that its more comprehensive
   resolution mechanics take effect.

)annotations)Any)Callable)cast)
Collection)Dict)Generic)Iterable)List)Optional)Set)Tuple)Type)TYPE_CHECKING)TypeVar)UnionN)base)collections)exc)
interfaces)state)_O)_is_collection_attribute_impl)util)EventTarget)HasMemoized)Literal)Protocol)_RegistryType)AttributeImpl)QueryableAttribute)_AdaptedCollectionProtocol)_CollectionFactoryType)_MapperConfig)InstanceEvents)Mapper)InstanceState)
dispatcher_T)boundDEL_ATTRc                  "    ] tR t^RtR R ltRtR# )_ExpiredAttributeLoaderProtoc               (    V ^8  d   QhRRRRRRRR/# )	   r   state.InstanceState[Any]toloadzSet[str]passivezbase.PassiveFlagreturnNone )formats   "ڇC:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO CLAUDE\MAESTRO\maestro-backend\venv\Lib\site-packages\sqlalchemy\orm\instrumentation.py__annotate__)_ExpiredAttributeLoaderProto.__annotate__S   s2      '  "	
 
    c                	    R # Nr4   )selfr   r0   r1   s   &&&&r6   __call__%_ExpiredAttributeLoaderProto.__call__S   s    
 r9   r4   N__name__
__module____qualname____firstlineno__r=   __static_attributes__r4   r9   r6   r,   r,   R   s     r9   r,   c                  "    ] tR t^[tR R ltRtR# )_ManagerFactoryc                    V ^8  d   QhRRRR/# r.   class_Type[_O]r2   ClassManager[_O]r4   )r5   s   "r6   r7   _ManagerFactory.__annotate__\   s    AAxA,<Ar9   c                	    R # r;   r4   r<   rI   s   &&r6   r=   _ManagerFactory.__call__\   s    cr9   r4   Nr?   r4   r9   r6   rF   rF   [   s    AAr9   rF   c                     ] tR t^_t$ RtR]R&   ]P                  t]P                  t
]! ]P                  ! ]
4      4      tR]R&    R]R&   RtR]R	&   R
]R&   RtR]R&   R]R&   ]'       g   RtR]R&   R]R&   ]]P(                  ! RRR7      R 4       4       t]P,                  ]P(                  ! RRR7      R 4       4       tR tRcR R lltR R ltR R ltR  R! lt]R" R# l4       t]P<                  R$ 4       t]P<                  R% 4       t ]P<                  R& 4       t!]P<                  R' 4       t"]PF                  R( R) l4       t$RdR* lt%RdR+ lt&R, R- lt'R. R/ lt(R0 t)]PF                  R1 R2 l4       t*R3 t+]PX                  R4 4       t-]PX                  R5 4       t.]PX                  R6 4       t/ReR7 R8 llt0R9 t1R: t2ReR; lt3R< R= lt4R> R? lt5R@ RA lt6RB RC lt7RD RE lt8RF RG lt9RH RI lt:ReRJ RK llt;RL RM lt<]RN RO l4       t=RdRP RQ llt>RdRR RS llt?RT RU lt@RV RW ltARX RY ltBRZ R[ ltCReR\ R] lltDR^ R_ ltER` Ra ltFRbtGR# )fClassManagerz,Tracks state information at the class level.zdispatcher[ClassManager[_O]]dispatchr,   expired_attribute_loaderOptional[Callable[..., None]]init_methodNoriginal_initzOptional[_ManagerFactory]factoryz$Optional[weakref.ref[_MapperConfig]]declarative_scanr   registryrJ   rI   zList[ClassManager[Any]]_basesz1.4zWThe ClassManager.deferred_scalar_loader attribute is now named expired_attribute_loader)messagec                	    V P                   # r;   rS   r<   s   &r6   deferred_scalar_loader#ClassManager.deferred_scalar_loader   s     ,,,r9   c                	    Wn         R # r;   r]   )r<   objs   &&r6   r_   r`      s
     ),%r9   c           
     	   Wn         / V n        R V n        / V n        / V n        RV n        R V n        R V n        \        RV P                   P                   Uu. uF&  p\        V\        4      '       g   K  \        V4      NK(  	  up4       Uu. uF  pVf   K	  VNK  	  upV n        V P                   F  pV P                  V4       K  	  \        RV P                  P                   4      P#                  W4       VP$                   F9  p\        V4      pVf   K  V P                  P'                  VP                  4       K;  	  V P)                  4        RVP*                  9   d    \,        P.                  ! RV,          4       R # R # u upi u upi )NFz!List[Optional[ClassManager[Any]]]r$   __del__z__del__() method on class %s will cause unreachable cycles and memory leaks, as SQLAlchemy instrumentation often creates reference cycles.  Please remove this method.)rI   infonew_initlocal_attrs	originals
_finalizedrW   rU   r   	__bases__
isinstancetypeopt_manager_of_classrZ   updaterR   _events_new_classmanager_instance__mro___updatemanage__dict__r   warn)r<   rI   r   mgrbase_baseclss   &&    r6   __init__ClassManager.__init__   s_   	 3 !% 5 5 5!$- /(. 5
  C
 [[EKK ! 	dmm33	

$
$V
2~~G&w/C%%cll3 &
 	'II@ CII (/	
s   F
3F
FFc               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )r.   finalizeboolmapperOptional[Mapper[_O]]rY   Optional[_RegistryType]rX   Optional[_MapperConfig]rS   &Optional[_ExpiredAttributeLoaderProto]rU   rT   r2   r3   r4   )r5   s   "r6   r7   ClassManager.__annotate__   sP     $ $$ %$ *	$
 2$#
$ 3$ 
$r9   c                	L   V'       d   W n         V'       d   VP                  V 4       V'       d   \        P                  ! V4      V n        V'       d   WPn        V'       d'   V P                  '       d   Q R V,          4       hW`n        V P                  '       g^   V P                  e5   V P                  P                  \        P                  J d   V P                  MV P                  P                  V n        V'       d'   V P                  '       g   V P                  4        R# R# R# )z>class is already instrumented, init_method %s can't be appliedN)r~   _add_managerweakrefrefrX   rS   ri   rU   rI   ry   objectrV   	_finalize)r<   r|   r~   rY   rX   rS   rU   s   &&&&&&&r6   _update_stateClassManager._update_state   s      K!!$'$+KK0@$AD!#,D) 24?@&  + ##/KK((FOO;    [[))	  DOOONN ,8r9   c                   V ^8  d   QhRR/# r.   r2   r3   r4   )r5   s   "r6   r7   r      s     H H4 Hr9   c                	    V P                   '       d   R # RV n         V P                  4        \        P                  P	                  V P
                  4       R # NT)ri   _instrument_init_instrumentation_factoryrR   class_instrumentrI   r^   s   &r6   r   ClassManager._finalize   s9    ??? ))::4;;Gr9   c                   V ^8  d   QhRR/# )r.   r2   intr4   )r5   s   "r6   r7   r      s      # r9   c                	    \        V 4      # r;   )idr^   s   &r6   __hash__ClassManager.__hash__   s    $xr9   c                    V ^8  d   QhRRRR/# )r.   otherr   r2   r}   r4   )r5   s   "r6   r7   r      s      C D r9   c                	    WJ # r;   r4   )r<   r   s   &&r6   __eq__ClassManager.__eq__   s
    }r9   c                   V ^8  d   QhRR/# r.   r2   r}   r4   )r5   s   "r6   r7   r      s     ) )4 )r9   c                	     R V P                   9   # )r~   )rt   r^   s   &r6   	is_mappedClassManager.is_mapped   s    4==((r9   c                	    \        V 4      # r;   )	frozensetr^   s   &r6   _all_key_setClassManager._all_key_set   s    r9   c                	    \        V P                  4        Uu. uF,  qP                  P                  '       g   K   VP                  NK.  	  up4      # u upi r;   )r   valuesimpl
collectionkeyr<   attrs   & r6   _collection_impl_keys"ClassManager._collection_impl_keys   s:    "&++-H-$993G3GXTXX-H
 	
Hs
   AAc                	    \        V P                  4        Uu. uF-  pVP                  P                  '       g   K!  VP                  NK/  	  up4      # u upi r;   )r   r   r   accepts_scalar_loaderr   s   & r6   _scalar_loader_impls!ClassManager._scalar_loader_impls  sJ     !KKM)D9922 		)
 	
s
   AAc                	p    \        V P                  4        Uu. uF  qP                  NK  	  up4      # u upi r;   )r   r   r   r   s   & r6   _loader_implsClassManager._loader_impls  s'    >))>??>s   3c                   V ^8  d   QhRR/# )r.   r2   z
Mapper[_O]r4   )r5   s   "r6   r7   r     s     2 2
 2r9   c                	B    \         P                  ! V P                  4      hr;   )r   UnmappedClassErrorrI   r^   s   &r6   r~   ClassManager.mapper  s     $$T[[11r9   c              #    "   / pV P                   P                  ^ R  F  pVP                  ^,          pVP                   Fz  pVP                  WS4       WTP                  9   d   K&  W%,          P                  V,          p\	        V\
        P                  4      '       g   Ka  VP                  '       g   Ku  WV3x  K|  	  K  	  R# 5i)zreturn an iterator of all classbound attributes that are
implement :class:`.InspectionAttr`.

This includes :class:`.QueryableAttribute` as well as extension
types such as :class:`.hybrid_property` and
:class:`.AssociationProxy`.

N)rI   rq   rt   
setdefaultrk   r   InspectionAttris_attribute)r<   excludefoundsuperclsinheritsr   vals   &&     r6   _all_sqla_attributes!ClassManager._all_sqla_attributes  s      !# ++Ab1H''*H((  /+++j))#.sJ$=$=>>((((N ) 2s   BC!C5Cc                    V P                   P                   F(  pWP                  9   g   K  VP                  V,          u # 	  V# )z5return an attribute on the class without tripping it.)rI   rq   rt   )r<   r   defaultr   s   &&& r6   _get_class_attr_mro ClassManager._get_class_attr_mro8  s<     ++H'''((-- , Nr9   c                    V ^8  d   QhRRRR/# )r.   r   strr2   r}   r4   )r5   s   "r6   r7   r   A  s     : :# :$ :r9   c                B    W9   ;'       d    W,          P                   RJ# )zLReturn True if the given attribute is fully initialized.

i.e. has an impl.
Nr   r<   r   s   &&r6   _attr_has_implClassManager._attr_has_implA  s     {99ty~~T99r9   c                    V ^8  d   QhRRRR/# )r.   clszType[_T]r2   zClassManager[_T]r4   )r5   s   "r6   r7   r   I  s     3 3X 32B 3r9   c                    \        VRR7      # )a  Create a new ClassManager for a subclass of this ClassManager's
class.

This is called automatically when attributes are instrumented so that
the attributes can be propagated to subclasses against their own
class-local manager, without the need for mappers etc. to have already
pre-configured managers for the full class hierarchy.   Mappers
can post-configure the auto-generated ClassManager when needed.

F)r|   )register_class)r<   r   s   &&r6   _subclass_managerClassManager._subclass_managerI  s     cE22r9   c                	    \        V P                  W P                  4      V n        V P	                  R V P                  4       R# )ry   N)_generate_initrI   rV   rf   install_memberr^   s   &r6   r   ClassManager._instrument_initV  s.    &t{{D:L:LMJ6r9   c                   V ^8  d   QhRR/# )r.   r2   zType[state.InstanceState[_O]]r4   )r5   s   "r6   r7   r   [  s     # #$A #r9   c                	l    V P                   P                  W P                  4       \        P                  # r;   )rR   
first_initrI   r   r&   r^   s   &r6   _state_constructorClassManager._state_constructorZ  s$      {{3"""r9   c                H    \        V P                  V P                  V 4       R# )z0Mark this instance as the manager for its class.N)setattrrI   MANAGER_ATTRr^   s   &r6   rs   ClassManager.manage_  s     	T..5r9   c                	    \         # r;   )_default_manager_getterr^   s   &r6   manager_getterClassManager.manager_getterd  s    &&r9   c                    \         # )zReturn a (instance) -> InstanceState callable.

"state getter" callables should raise either KeyError or
AttributeError if no InstanceState could be found for the
instance.
)_default_state_getterr^   s   &r6   state_getterClassManager.state_getterh  s
     %$r9   c                	    \         # r;   )_default_dict_getterr^   s   &r6   dict_getterClassManager.dict_getters  s    ##r9   c               (    V ^8  d   QhRRRRRRRR/# )	r.   r   r   instQueryableAttribute[Any]
propagatedr}   r2   r3   r4   )r5   s   "r6   r7   r   w  s2     : :: &: 	:
 
:r9   c                	*   V'       d   WP                   9   d   R # MW P                   V&   V P                  W4       V P                  4        W V&   V P                  P	                  4        F&  pV P                  V4      pVP                  WR4       K(  	  R # r   )rg   install_descriptor_reset_memoizationsrI   __subclasses__r   instrument_attribute)r<   r   r   r   r   managers   &&&&  r6   r   !ClassManager.instrument_attributew  s     &&& ' %)S!##C.  "S	;;--/C,,S1G((D9 0r9   c              #  	   "   V P                   P                  4        FB  p\        V4      pVf   K  W0Jg   K  Vx  V'       g   K)  VP                  R4       R j  xL
  KD  	  R #  L
5ir   )rI   r   rm   subclass_managers)r<   	recursiver   rv   s   &&  r6   r   ClassManager.subclass_managers  sR     ;;--/C&s+C3?	9"44T::: 0
 ;s!   *A'A'	A'A'A%A'c                	h    \         P                  P                  V P                  WV,          4       R # r;   )r   rR   attribute_instrumentrI   r   s   &&r6   post_configure_attribute%ClassManager.post_configure_attribute  s#     ))>>KK3i	
r9   c                	<   W9  d   R # V'       d   WP                   9   d   R # MV P                   V V P                  V4       V P                  4        W V P                  P	                  4        F*  p\        V4      pV'       g   K  VP                  VR4       K,  	  R # r   )rg   uninstall_descriptorr   rI   r   rm   uninstrument_attribute)r<   r   r   r   r   s   &&&  r6   r  #ClassManager.uninstrument_attribute  s    ?&&& '   %%%c*  "I;;--/C*3/Gw..sD9 0r9   c                   V ^8  d   QhRR/# r   r4   )r5   s   "r6   r7   r     s     4 4D 4r9   c                   \        V P                  4       F  pV P                  V4       K  	  RV n        RV n        RV n        V P                  P                  4        \        V 4       F&  pWP                  9   g   K  V P                  V4       K(  	  V P                  V P                  P                  9   d#   \        V P                  V P                  4       R# R# )z<remove all instrumentation established by this ClassManager.N)listrh   uninstall_memberr~   rR   rf   re   clearrg   r  r   rI   rt   delattrr   s   & r6   
unregisterClassManager.unregister  s     'C!!#& ( 		:C&&&++C0   4 44DKK!2!23 5r9   c               $    V ^8  d   QhRRRRRR/# )r.   r   r   r   r   r2   r3   r4   )r5   s   "r6   r7   r     s$     ( ((5(	(r9   c                	    WP                   V P                  39   d   \        R V,          4      h\        V P                  W4       R# zW%r: requested attribute name conflicts with instrumentation attribute of the same name.N)
STATE_ATTRr   KeyErrorr   rI   )r<   r   r   s   &&&r6   r   ClassManager.install_descriptor  sD     ??D$5$566>@CD  	S'r9   c                    V ^8  d   QhRRRR/# r.   r   r   r2   r3   r4   )r5   s   "r6   r7   r     s     " " " "r9   c                	2    \        V P                  V4       R # r;   )r  rI   r   s   &&r6   r  !ClassManager.uninstall_descriptor  s    S!r9   c               $    V ^8  d   QhRRRRRR/# )r.   r   r   implementationr   r2   r3   r4   )r5   s   "r6   r7   r     s!     2 2# 2s 2t 2r9   c                	   WP                   V P                  39   d   \        R V,          4      hV P                  P	                  WP
                  P                  P                  V\        4      4       \        V P
                  W4       R# r  )
r  r   r  rh   r   rI   rt   getr*   r   )r<   r   r  s   &&&r6   r   ClassManager.install_member  sk    ??D$5$566>@CD  	!!#{{';';'?'?X'NOS1r9   c                    V ^8  d   QhRRRR/# r  r4   )r5   s   "r6   r7   r     s     & &C &D &r9   c                	    V P                   P                  VR 4      pV\        Jd   \        V P                  W4       R # \        V P                  V4       R # r;   )rh   popr*   r   rI   r  )r<   r   originals   && r6   r  ClassManager.uninstall_member  s<    >>%%c408#DKK/DKK%r9   c               $    V ^8  d   QhRRRRRR/# )r.   r   r   collection_classzType[Collection[Any]]r2   r"   r4   )r5   s   "r6   r7   r     s)     E EE*?E	Er9   c                	.    \         P                  ! V4      # r;   )r   prepare_instrumentation)r<   r   r&  s   &&&r6   instrument_collection_class(ClassManager.instrument_collection_class  s     223CDDr9   c               (    V ^8  d   QhRRRRRRRR/# )	r.   r   r   r   InstanceState[_O]rW   r"   r2   z@Tuple[collections.CollectionAdapter, _AdaptedCollectionProtocol]r4   )r5   s   "r6   r7   r     s3     
" 
"
" !
" (	
"
 
J
"r9   c                	    V! 4       pV P                  V4      p\        V4      '       g   Q h\        P                  ! WRV4      pWd3# r;   )get_implr   r   CollectionAdapter)r<   r   r   rW   	user_datar   adapters   &&&&   r6   initialize_collection"ClassManager.initialize_collection  sE     I	}}S!,T2222//YG!!r9   c               $    V ^8  d   QhRRRRRR/# )r.   r   r   searchr}   r2   r4   )r5   s   "r6   r7   r     s!     + +3 + + +r9   c                	6    V'       d   W9   # WP                   9   # r;   )rg   )r<   r   r5  s   &&&r6   is_instrumentedClassManager.is_instrumented  s    ;****r9   c                    V ^8  d   QhRRRR/# )r.   r   r   r2   r   r4   )r5   s   "r6   r7   r     s      C M r9   c                	&    W,          P                   # r;   r   r   s   &&r6   r.  ClassManager.get_impl  s    y~~r9   c                   V ^8  d   QhRR/# )r.   r2   zIterable[Any]r4   )r5   s   "r6   r7   r     s     # #M #r9   c                	4    \        V P                  4       4      # r;   )iterr   r^   s   &r6   
attributesClassManager.attributes  s    DKKM""r9   c                    V ^8  d   QhRRRR/# )r.   r   Optional[InstanceState[_O]]r2   r   r4   )r5   s   "r6   r7   r     s     	 	"= 	 	r9   c                	    V P                   P                  V P                   4      pVf   V P                  W 4      pV P                  W!4       V# r;   )rI   __new__r   _state_setter)r<   r   instances   && r6   new_instanceClassManager.new_instance  sD    
 ;;&&t{{3=++H;E8+r9   c               $    V ^8  d   QhRRRRRR/# )r.   rF  r   r   rB  r2   r3   r4   )r5   s   "r6   r7   r     s$     , ,,#>,	,r9   c                	R    Vf   V P                  W4      pV P                  W4       R # r;   )r   rE  r<   rF  r   s   &&&r6   setup_instanceClassManager.setup_instance  s'     =++H;E8+r9   c                    V ^8  d   QhRRRR/# )r.   rF  r   r2   r3   r4   )r5   s   "r6   r7   r     s     + +" + +r9   c                	0    \        WP                  4       R # r;   )r  r  r<   rF  s   &&r6   teardown_instanceClassManager.teardown_instance  s    //*r9   c               $    V ^8  d   QhRRRRRR/# )r.   r   r,  
state_dictDict[str, Any]r2   _SerializeManagerr4   )r5   s   "r6   r7   r     s$     4 4&44B4	4r9   c                	    \        W4      # r;   )rV  )r<   r   rT  s   &&&r6   
_serializeClassManager._serialize  s     !33r9   c                    V ^8  d   QhRRRR/# )r.   rF  r   r2   z(Union[Literal[False], InstanceState[_O]]r4   )r5   s   "r6   r7   r     s      	1r9   c                0   \        WP                  4      '       d   R# V P                  VP                  Jd=   V P                  '       d+   V P                  VP                  4      P                  V4      # V P                  W4      pV P                  W4       V# )zsInstall a default InstanceState if none is present.

A private convenience method used by the __init__ decorator.

F)	hasattrr  rI   	__class__r   r   _new_state_if_noner   rE  rK  s   && r6   r^  ClassManager._new_state_if_none  s~     8__--[[ 2 22t~~~ ))""  *+ ++H;Ex/Lr9   c                    V ^8  d   QhRRRR/# )r.   rF  r   r2   r}   r4   )r5   s   "r6   r7   r   (  s     2 2" 2 2r9   c                	,    \        WP                  4      # r;   )r\  r  rP  s   &&r6   	has_stateClassManager.has_state(  s    x11r9   c               (    V ^8  d   QhRRRRRRRR/# )r.   r   r,  r   r   
optimisticr}   r2   r4   )r5   s   "r6   r7   r   +  s2     J J&J-0J>BJ	Jr9   c                D    V P                  V4      P                  WR7      # )TODO)re  )r.  	hasparent)r<   r   r   re  s   &&&&r6   
has_parentClassManager.has_parent+  s!     }}S!++E+IIr9   c                   V ^8  d   QhRR/# r   r4   )r5   s   "r6   r7   r   1  s      $ r9   c                    R# )z=All ClassManagers are non-zero regardless of attribute state.Tr4   r^   s   &r6   __bool__ClassManager.__bool__1  s    r9   c                   V ^8  d   QhRR/# )r.   r2   r   r4   )r5   s   "r6   r7   r   5  s     
 
# 
r9   c                	h    R V P                   P                  V P                  \        V 4      3,          # )z<%s of %r at %x>)r]  r@   rI   r   r^   s   &r6   __repr__ClassManager.__repr__5  s/    !NN##KKtH%
 
 	
r9   )rZ   ri   rI   rX   rR   rS   rW   re   rU   rg   r~   rf   rV   rh   )FNNNNNr;   )F)Hr@   rA   rB   rC   __doc____annotations__r   DEFAULT_MANAGER_ATTRr   DEFAULT_STATE_ATTRr  staticmethodr   
attrsetterrE  rV   rX   r   rY   property
deprecatedr_   setterry   r   r   r   r   r   r   memoized_attributer   r   r   r   memoized_propertyr~   r   r   r   r   r   r   rs   hybridmethodr   r   r   r   r   r  r  r  r   r  r   r  r)  r2  r7  r.  r?  rG  rL  rQ  rX  r^  rb  ri  rm  rq  rD   r4   r9   r6   rQ   rQ   _   s    7**,,L((J !<=M::0..37M07&&=A:A##	__)
- - ""	__)
, #,+Z$LH ) ) ## $ ##
 $

 ##
 $
 ##@ $@ 
2 2#B:37 
# #6
 
' ' 
% % 
$ $:&;

: 4$("2&E

"+ # #
	,+4
02J
 
r9   rQ   r   c                  ,    ] tR tRtRtR R ltR tRtR# )rV  i=  zProvide serialization of a :class:`.ClassManager`.

The :class:`.InstanceState` uses ``__init__()`` on serialize
and ``__call__()`` on deserialize.

c                    V ^8  d   QhRRRR/# )r.   r   r/   drU  r4   )r5   s   "r6   r7   _SerializeManager.__annotate__E  s     * *6 *> *r9   c                	v    VP                   V n         VP                  pVP                  P                  W4       R # r;   )rI   r   rR   pickle)r<   r   r  r   s   &&& r6   ry   _SerializeManager.__init__E  s*    ll--)r9   c                	   \        V P                  4      ;Vn        pVf)   \        P                  ! VRV P                  ,          4      hVP
                  '       d7   VP                  P                  '       g   VP                  P                  4        Ve   VP                  W!4       VP                  P                  W4       R # )NzxCannot deserialize object of type %r - no mapper() has been configured for this class within the current Python process!)rm   rI   r   r   UnmappedInstanceErrorr   r~   
configured_check_configurerL  rR   unpickle)r<   r   r   rT  r   s   &&&& r6   r=   _SerializeManager.__call__J  s    "6t{{"CC?++" %)KK0  w~~'@'@'@NN++-
 ""4/!!%4r9   rI   N)r@   rA   rB   rC   rs  ry   r=   rD   r4   r9   r6   rV  rV  =  s    *
5r9   rV  c                  V    ] tR tRt$ RtR]R&   R R ltR R ltR	 R
 ltR R lt	Rt
R# )InstrumentationFactoryi_  z'Factory for new ClassManager instances.z"dispatcher[InstrumentationFactory]rR   c                    V ^8  d   QhRRRR/# rH   r4   )r5   s   "r6   r7   #InstrumentationFactory.__annotate__d  s      X :J r9   c                	    Vf   Q h\        V4      e   Q hV P                  V4      w  r#Vf   \        p\        V4      pMVf   Q hV P                  W4       W2n        V# r;   )rm   _locate_extended_factoryrQ   _check_conflictsrW   )r<   rI   r   rW   s   &&  r6   create_manager_for_cls-InstrumentationFactory.create_manager_for_clsd  sl    !!!#F+333  88@?"G"6*G&&&f.!r9   c                    V ^8  d   QhRRRR/# )r.   rI   rJ   r2   z<Tuple[Optional[ClassManager[_O]], Optional[_ManagerFactory]]r4   )r5   s   "r6   r7   r  x  s      	Er9   c                    R# )z2Overridden by a subclass to do an extended lookup.)NNr4   rN   s   &&r6   r  /InstrumentationFactory._locate_extended_factoryx  s
     r9   c               $    V ^8  d   QhRRRRRR/# )r.   rI   rJ   rW   z&Callable[[Type[_O]], ClassManager[_O]]r2   r3   r4   )r5   s   "r6   r7   r  ~  s)     J JJ)OJ	Jr9   c                    R# )z;Overridden by a subclass to test for conflicting factories.Nr4   )r<   rI   rW   s   &&&r6   r  'InstrumentationFactory._check_conflicts~  s    r9   c                    V ^8  d   QhRRRR/# )r.   rI   rJ   r2   r3   r4   )r5   s   "r6   r7   r    s     1 1 1d 1r9   c                	r    \        V4      pVP                  4        V P                  P                  V4       R # r;   )manager_of_classr  rR   class_uninstrument)r<   rI   r   s   && r6   r  !InstrumentationFactory.unregister  s*    "6*((0r9   r4   N)r@   rA   rB   rC   rs  rt  r  r  r  r  rD   r4   r9   r6   r  r  _  s%    100(J
1 1r9   r  c               8    V ^8  d   QhRRRRRRRRR	R
RRRRRR/# )r.   rI   rJ   r|   r}   r~   r   rY   r   rX   r   rS   r   rU   rT   r2   rK   r4   )r5   s   "r6   r7   r7     sY       ! &	
 . E / r9   c           	     |    \        V 4      pVf   \        P                  V 4      pVP                  VVVVVVR7       V# )zWRegister class instrumentation.

Returns the existing or newly created class manager.

)r~   rY   rX   rS   rU   r|   )rm   r   r  r   )rI   r|   r~   rY   rX   rS   rU   r   s   &&&&&&& r6   r   r     sO     #6*G*AA&I)!9   Nr9   c                0    \         P                  V 4       R# )z!Unregister class instrumentation.N)r   r  r  s   &r6   unregister_classr    s     ''/r9   c                N    \        V P                  4      P                  VRR7      # )zReturn True if the given attribute on the given instance is
instrumented by the attributes package.

This function may be used regardless of instrumentation
applied directly to the class, i.e. no descriptors are required.

T)r5  )r  r]  r7  )rF  r   s   &&r6   r7  r7    s-     H../??D @  r9   c                n   Vf   V P                   pRp\        P                  ! VRR7      pW4,          p\        VRR4      p\        VRR4      p\	        4       P                  4       p\        VR&   \        WX4       VR,          p	VP                  V	n        W)n	        V'       d   Win
        V'       d   Wyn        V	# )	z>Build an __init__ decorator that triggers ClassManager events.Nzdef __init__(%(apply_pos)s):
    new_state = class_manager._new_state_if_none(%(self_arg)s)
    if new_state:
        return new_state._initialize_instance(%(apply_kw)s)
    else:
        return original_init(%(apply_kw)s)
F)grouped__defaults____kwdefaults__r@   ry   )ry   r   format_argspec_initgetattrlocalscopyr@   execrs  _sa_original_initr  r  )
rI   class_managerrV   	func_body	func_vars	func_textfunc_defaultsfunc_kw_defaultsenvry   s
   &&&       r6   r   r     s     I ((FI%IM>4@M}.>E
(--/CC
O:H$,,H!. -"2Or9   )TNNNNN)Hrs  
__future__r   typingr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r    r   r   r   r   r   _typingr   r?  r   r   eventr   r   util.typingr   r   r   r   r    r!   r"   	decl_baser#   eventsr$   r~   r%   r&   r'   r(   symbolr*   r,   rF   r   rQ   rV  r  r   instance_stater   instance_dictr   r  r   rm   _default_opt_manager_getterr   r  r7  r   r4   r9   r6   <module>r     s_  2 #                        5    ! "&).73(&$"T;;z"8 Bh B[
'	'(BK	[
|5 5D'1[ '1X 23 
 *.)<)< <&'+'9'9 9$-1-B-B B *595N5N N 2<0
)r9   