
    ,h/E                      S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJr  SSKJ	r	  SSKJ
r
  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKrSSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ r   SSKJ!r!  SSKJ"r"  SSKJ#r#  SSK$J%r%  SSK$J&r&  SS K'J(r(  SS!K'J)r)  SS"K*J+r+  SS#K*J,r,  SS$K*J-r-  SS%K*J.r.  SS&K*J/r/  SS'K*J0r0  SS(K1J2r2  SS)K3J4r4  SS*K3J5r5  SS+K6J7r7  SS,K6J8r8  SS-K6J9r9  SS.K6J:r:  S/S0KJ;r;  S/SKJr  S/S1KJ6r6  S/S2K<J=r=  S/S3K>J?r?  S/S4K@JArA  S/S5K@JBrB  S/S6K6JCrC  S/S7KDJErE  S/S8KDJFrF  S/S9KDJGrG  S/S:KDJHrH  S/S;KDJIrI  S/S<KDJJrJ  \(       a0  SS=KJKrK  SS>KJLrL  SS?K$JMrM  SS@KNJOrO  SSAKJPrP  S/SBKQJRrR  S/SCK@JSrS  S/SDKTJUrU  \" SE\SF9rV\\W\4   rX\\\SG4   \
\W\4   4   rY " SH SI\I\    5      rZ " SJ SK\Z\    \I5      r[ " SL SM\J5      r\    ShSN jr]SiSO jr^SjSP jr_ Sk       SlSQ jjr`SmSR jra        SnSS jrb          SoST jrc\6R                  " SU5      SpSV j5       re        SqSW jrf " SX SY5      rg " SZ S[\g5      rh " S\ S]\5      ri " S^ S_\g5      rj\6R                  " SU5            SrS` j5       rk " Sa Sb\j5      rl        SsSc jrmStSd jrnSuSe jroSf\olp        SvSg jrqg)wz(Internal implementation for declarative.    )annotationsN)Any)Callable)cast)Dict)Iterable)List)Mapping)
NamedTuple)NoReturn)Optional)Sequence)Tuple)Type)TYPE_CHECKING)TypeVar)Union   )
attributes)clsregistry)exc)instrumentation)	mapperlib)_O)attr_is_internal_proxy)InstrumentedAttribute)QueryableAttribute)_is_mapped_class)InspectionAttr)CompositeProperty)SynonymProperty)_AttributeOptions)_DCAttributeOptions)_IntrospectsAnnotations)_MappedAttribute)_MapsColumns)MapperProperty)Mapper)ColumnProperty)MappedColumn)_extract_mapped_subtype)_is_mapped_annotation)class_mapper)de_stringify_annotation   )event)util)
expression)_NoArg)Column)Table)topological)_AnnotationScanType)get_args)
is_fwd_ref)
is_literal)Protocol)	TypedDict)
_ClassDict)_RegistryType)Mapped)declared_attr)ClassManager)NamedColumn)MetaData)
FromClause_T)bound.c                  B    \ rS rSr% SrS\S'   S\S'   S\S'   SS	 jrS
rg)MappedClassProtocolZ   zA protocol representing a SQLAlchemy mapped class.

The protocol is generic on the type of class, use
``MappedClassProtocol[Any]`` to allow any mapped class.
str__name__
Mapper[_O]
__mapper__rD   	__table__c                    g N )selfkws     P/var/www/auris/envauris/lib/python3.13/site-packages/sqlalchemy/orm/decl_base.py__call__MappedClassProtocol.__call__e           rQ   N)rS   r   returnr   )rK   
__module____qualname____firstlineno____doc____annotations__rU   __static_attributes__rQ   rX   rT   rH   rH   Z   s     M,rX   rH   c                  `    \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   S\S'   SS jrSS jrSrg)_DeclMappedClassProtocolh   z:Internal more detailed version of ``MappedClassProtocol``.rC   metadatarJ   __tablename___MapperKwArgs__mapper_args__Optional[_TableArgsType]__table_args__Optional[_DataclassArguments]_sa_apply_dc_transformsc                    g rP   rQ   rR   s    rT   __declare_first__*_DeclMappedClassProtocol.__declare_first__q   rW   rX   c                    g rP   rQ   rl   s    rT   __declare_last__)_DeclMappedClassProtocol.__declare_last__s   s    rX   rQ   NrY   None)	rK   rZ   r[   r\   r]   r^   rm   rp   r_   rQ   rX   rT   ra   ra   h   s)    @"",,::,+rX   ra   c                  f    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S	'   S
\S'   Srg)_DataclassArgumentsv   zUnion[_NoArg, bool]initrepreqorderunsafe_hash
match_argskw_onlyz'Union[_NoArg, Callable[..., Type[Any]]]dataclass_callablerQ   NrK   rZ   r[   r\   r^   r_   rQ   rX   rT   ru   ru   v   s2    

$$##  ??rX   ru   c                    [         R                  U 5      (       a  [         R                  U 5      $ [        U 5      (       a
  [	        U SS9$ g )NF)	configure)_DeferredMapperConfighas_clsconfig_for_clsr   r-   clss    rT   _declared_mapping_infor      sA     $$S))$33C88	#		C511rX   c                z    [         R                  U 5      (       a  [        U SSS9(       + $ [        U 5      (       a  gg)am  return True if this class will be used as a superclass to set in
'inherits'.

This includes deferred mapper configs that aren't mapped yet, however does
not include classes with _sa_decl_prepare_nocascade (e.g.
``AbstractConcreteBase``); these concrete-only classes are not set up as
"inherits" until after mappers are configured using
mapper._set_concrete_base()

_sa_decl_prepare_nocascadeTstrictF)r   r   _get_immediate_cls_attrr   r   s    rT   _is_supercls_for_inheritsr      sB     $$S))*-d
 
 	
 
#		rX   c                    U [         L a  g U R                  R                  SS5      (       a&  U R                   H  n[	        U5      nUc  M  Us  $    g [        U 5      nU(       a  UR                  $ U $ )N__abstract__F)object__dict__get	__bases__"_resolve_for_abstract_or_classical_dive_for_cls_managerclass_)r   base_sup
clsmanagers       rT   r   r      sj    
f} ||..]]E4U;C
 #
 *3/
$$$JrX   c                @   US:w  d   e[        U [        5      (       d  gXR                  ;   a  [        X5      $ U R                  SS  HS  n[        U5      SLnXR                  ;   d  M!  X0L d#  U(       a  X0R                  ;   d  M=  O U(       a  MH  [        X15      s  $    g)a  return an attribute of the class that is either present directly
on the class, e.g. not on a superclass, or is from a superclass but
this superclass is a non-mapped mixin, that is, not a descendant of
the declarative base and is also not classically mapped.

This is used to detect attributes that indicate something about
a mapped class independently from any mapped classes that it may
inherit from.

r   Nr   )
issubclassr   r   getattr__mro__r   r   )r   attrnamer   base_is_classical_inheritss        rT   r   r      s      ~%%%c6""<<s%%AB!6t!<D!H}}$K*0&d.. 4**   rX   c                l    U R                    H$  n[        R                  " U5      nU(       d  M"  Us  $    g rP   )r   r   opt_manager_of_class)r   r   managers      rT   r   r      s6    
 .8.M.M/
 7N  rX   c                2    [         R                  XUS 0 5      $ rP   )_MapperConfigsetup_mapping)registryr   dict_s      rT   _as_declarativer      s    
 &&xeT2FFrX   c                F    [        XX#5        [        SU5      R                  $ )NzMappedClassProtocol[_O])_ImperativeMapperConfigr   rM   )r   r   table	mapper_kws       rT   _mapperr      s"     H5<)3/:::rX   zsqlalchemy.orm.decl_apic                    [         R                  R                  R                  n[	        X[         R
                  45      $ rP   )r1   	preloadedorm_decl_api_declared_attr_common
isinstanceclassproperty)objr   s     rT   _is_declarative_propsr     s.     NN77MMc43E3EFGGrX   c                    [        U 5      (       a2  [        U SS5      (       a  [        R                  " SU< SU< S35        gg)N
_cascadingFz1@declared_attr.cascading is not supported on the z attribute on class z5.  This attribute invokes for subclasses in any case.T)r   r   r1   warn)r   namer   s      rT   _check_declared_props_nocascader     s>     S!!3e,,II .238
 rX   c                      \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   \            SS j5       r      SS jrSS jr	SSS jjr
SS jrSrg)r   i  )r   	classname
propertiesdeclared_attr_reg__weakref__	Type[Any]r   rJ   r   z_util.OrderedDict[str, Union[Sequence[NamedColumn[Any]], NamedColumn[Any], MapperProperty[Any]]]r   zDict[declared_attr[Any], Any]r   c                R   [         R                  " U 5      nU(       a*  UR                  UL a  [        R                  " SU < S35      eUR
                  R                  SS5      (       a  g [        USSS9=(       d    [        US5      nU(       a  [        XX4U5      $ [        XX4U5      $ )	NClass z, already has been instrumented declarativelyr   Fr   Tr   _sa_decl_prepare)r   r   r   r   InvalidRequestErrorr   r   r   hasattrr   _ClassScanMapperConfig)r   r   cls_r   r   r   r   	defer_maps           rT   r   _MapperConfig.setup_mapping*  s     11#6w~~-))KL  ==^U33+.t
 /T-. 	 (i  *i rX   c                   [         R                  " U[        S5      U l        UR                  U l        [         R                  " 5       U l        0 U l        UR                  SS5      (       d-  [        R                  " U R                  SUU UR                  S9  g [        R                  " U R                  5      nU(       a  UR                  (       d#  [         R"                  " SU R                  -  5      eg )Nr   non_primaryF)finalizer   declarative_scaninit_methodztClass %s has no primary mapper configured.  Configure a primary mapper first before setting up a non primary Mapper.)r1   assert_arg_typetyper   rK   r   OrderedDictr   r   r   r   register_classconstructorr   r   	is_mappedr   r   )rR   r   r   r   r   s        rT   __init___MapperConfig.__init__I  s     ''dF;**,!#}}]E22**!!%$00 !55dhh?G'"3"3-- $)  #4rX   c                h    [         R                  " U R                  5      nUR                  X5        U$ rP   )r   manager_of_classr   install_member)rR   r   valuer   s       rT   set_cls_attribute_MapperConfig.set_cls_attributee  s)    !22488<x/rX   c                    [        5       erP   )NotImplementedErrorrR   r   s     rT   map_MapperConfig.mapj  s    !##rX   c                &    U R                  U5        g rP   )r   r   s     rT   _early_mapping_MapperConfig._early_mappingm  s    rX   )r   r   r   r   N)r   r>   r   Type[_O]r   r=   r   Optional[FromClause]r   re   rY   Optional[_MapperConfig])r   r>   r   r   r   re   )r   rJ   r   rE   rY   rE   ).r   re   rY   zMapper[Any]r   re   rY   rs   )rK   rZ   r[   r\   	__slots__r^   classmethodr   r   r   r   r   r_   rQ   rX   rT   r   r     s    I 
NN  54  	
 $ ! 
! <  !	8
$rX   r   c                  n   ^  \ rS rSrSr        SU 4S jjr\R                  4SS jjrS	S jr	Sr
U =r$ )
r   iq  )local_tableinheritsc                  > [         TU ]  XU5        U R                  SU5      U l        [        R
                     UR                  SS5      (       d6  [        R                  " U R                  U R                  UR                  5        U R                  U5        U R                  U5        S S S 5        g ! , (       d  f       g = f)NrN   r   F)superr   r   r   r   _CONFIGURE_MUTEXr   r   	add_classr   r   _class_registry_setup_inheritancer   )rR   r   r   r   r   	__class__s        rT   r    _ImperativeMapperConfig.__init__t  s     	311+uE''==66%%NNDHHh.F.F ##I.	* (''s   A0B22
C c                j    [         nU R                  SU" U R                  U R                  40 UD65      $ )NrM   )r(   r   r   r   rR   r   
mapper_clss      rT   r   _ImperativeMapperConfig.map  s6    
%%txx!1!1?Y?
 	
rX   c                   U R                   nUR                  SS 5      nUc  / nUR                   H=  n[        U5      nUc  M  [	        U5      (       d  M%  Xd;  d  M,  UR                  U5        M?     U(       a2  [        U5      S:  a  [        R                  " SU< SU< 35      eUS   nO![        U[        5      (       a  UR                  nX0l        g )Nr   r   r    has multiple mapped bases: r   )r   r   r   r   r   appendlenr   r   r   r(   r   r   )rR   r   r   r   inherits_searchr   cs          rT   r   *_ImperativeMapperConfig._setup_inheritance  s    hh==T2 !O6u=9,Q//A4L#**1- ' '!+111  +1-&))H rX   )r   r   )r   r>   r   r   r   r   r   re   r   r   )rK   rZ   r[   r\   r   r   r1   
EMPTY_DICTr   r   r_   __classcell__r   s   @rT   r   r   q  sK    +I++ + $	+
 !+* .2__ 
! !rX   r   c                  \    \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
\S'   S\S'   S\S'   Srg)_CollectedAnnotationi  r7   raw_annotationzOptional[Type[Mapped[Any]]]mapped_containerzUnion[_AnnotationScanType, str]extracted_mapped_annotationboolis_dataclassr   
attr_valuerJ   originating_moduler   originating_classrQ   Nr   rQ   rX   rT   r  r    s+    ''11!@@O  rX   r  c                    ^  \ rS rSr% SrSrS\S'   S\S'   S\S	'   S
\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S '   S\S!'   S\S"'   S#\S$'    S\S%'              S=U 4S& jjrS>S' jr    S?S( jr	1 S)kr
\R                  " S*5      r    S@S+ jrS>S, jrS>S- jr\    SAS. j5       r\        SBS/ j5       r\SCS0 j5       r            SDS1 jr        SES2 jr          SFS3 jrS>S4 jrS>S5 jrSGSHS6 jjrSIS7 jrSJS8 jrSJS9 jrSJS: jr\R@                  4SKS; jjr!S<r"U =r#$ )Lr   i  )r   clsdict_viewcollected_attributescollected_annotationsr   persist_selectabledeclared_columnscolumn_orderingcolumn_copies
table_args	tablenamemapper_argsmapper_args_fntable_fnr   singleallow_dataclass_fieldsdataclass_setup_argumentsis_dataclass_prior_to_mappingallow_unmapped_annotationsFr>   r   r=   r  zDict[str, _CollectedAnnotation]r  Dict[str, Any]r  r   r   r  zutil.OrderedSet[Column[Any]]r  zDict[Column[Any], int]r  zRDict[Union[MappedColumn[Any], Column[Any]], Union[MappedColumn[Any], Column[Any]]]r  zOptional[str]r  Mapping[str, Any]r  rg   r  z&Optional[Callable[[], Dict[str, Any]]]r  Optional[Type[Any]]r   r  r  r   r!  ri   r  r  c                  > U(       a  [         R                  " U5      O[         R                  U l        [        T	U ]  XU5        Xl        S U l        0 U l        0 U l	        [         R                  " 5       U l        0 U l        0 U l        SU l        [        U R                   SS 5      =U l        n[        U R                   SS5      =(       d    [%        U R"                  5      U l        [(        R*                  " U5      =U l        n[/        US5      nU(       a  U(       a  U(       a  [0        R2                  " S5      e[%        U=(       a    U5      U l        U R7                  5         U R9                  5         U R;                  5         [<        R>                     [@        RB                  " U RD                  U R                   URF                  5        U RI                  U5        U RK                  5         U RM                  5         U RO                  U5        U RQ                  U5        U RS                  U5        S S S 5        g ! , (       d  f       g = f)NFrj   __allow_unmapped____sa_dataclass_metadata_key__zSQLAlchemy mapped dataclasses can't consume mapping information from dataclass.Field() objects if the immediate class is not already a dataclass.)*r1   immutabledictr  r  r   r   r   r  r  r  
OrderedSetr  r  r  r  r   r   r  r  r!  dataclassesr  r   r   r   r   r  _setup_declared_events_scan_attributes_setup_dataclasses_transformsr   r   r   r   r   r   _setup_inheriting_mapper_extract_mappable_attributes_extract_declared_columns_setup_table_setup_inheriting_columnsr   )
rR   r   r   r   r   r   dcacldsdkr   s
            rT   r   _ClassScanMapperConfig.__init__  s    */Du%DOO 	 	3 "&$&!%'" $ 1!/6HH/0
 	
& +2HH*E+
 +2$001 	' 4?3K3K4
 	
*S &d,KL s))4  '+3;3&7###%**,''!!(*B*B )))4--/**,e$**95	* (''s   BH55
Ic                  ^  [        T R                  S5      (       a&  [        R                  " [        S5      SU 4S jj5       n[        T R                  S5      (       a'  [        R                  " [        S5      SU 4S jj5       ng g )Nrp   after_configuredc                 N   > [        ST R                  5      R                  5         g N_DeclMappedClassProtocol[Any])r   r   rp   rl   s   rT   r8  G_ClassScanMapperConfig._setup_declared_events.<locals>.after_configuredI  s    3TXX""$rX   rm   before_configuredc                 N   > [        ST R                  5      R                  5         g r:  )r   r   rm   rl   s   rT   r=  H_ClassScanMapperConfig._setup_declared_events.<locals>.before_configuredQ  s    3TXX##%rX   rr   )r   r   r0   listens_forr(   )rR   r8  r=  s   `  rT   r+  -_ClassScanMapperConfig._setup_declared_eventsF  so    "488-?@@v'9:% ;%
 #488-@AAv':;& <& BrX   c                  ^^^^ U R                   (       a  [        TS5      nOSnU(       d
  SU4S jjnU$ [        R                  " T5       Vs0 s H.  nX$R                  ;   d  M  UR
                  UR                  U   _M0     snm[        R                  " T5       Vs0 s H.  nX$R                  ;   d  M  UR
                  UR                  U   _M0     snm[        5       mSUUUU4S jjnU$ s  snf s  snf )zProduce a function that checks if a class has overridden an
attribute, taking SQLAlchemy-enabled dataclass fields into account.

r'  Nc                    > [        TX5      UL$ rP   )r   )keyr   r   s     rT   attribute_is_overriddenR_ClassScanMapperConfig._cls_attr_override_checker.<locals>.attribute_is_overriddenh  s    sC-S88rX   c                B  > [        U5      (       a  UR                  nTR                  U T5      n[        U5      (       a  UR                  nX!L a  gUTLa  gTR                  U T5      n[        TX5      nX!L a  gUTLa  [	        U[
        5      (       a  gX1L a  gUTLa  gg)NFT)r   fgetr   r   r   r   )rD  r   ret	all_fieldabsentall_datacls_fieldsr   local_datacls_fieldss       rT   rE  rF  y  s    (--((C +..sF;(--((C: &.223?	c3,: 
 f$.* *  # f, rX   )rD  rJ   r   r   rY   r  )r  r   r1   dataclass_fieldsrc   r   local_dataclass_fieldsr   )rR   r   sa_dataclass_metadata_keyrE  frK  rL  rM  s    `   @@@rT   _cls_attr_override_checker1_ClassScanMapperConfig._cls_attr_override_checkerW  s     &&(?4)% )-%(9r '&g ..s3"3A,

: >

#<==3" 44S9$9A,

: >

#<==9$  XF& &P '&k"
$s   C-%C-C25C2>   rN   rd   rh   rf   z^(?:_sa_|__)c                4  ^^^	^
^^ [         R                  " U5      m[        U5      mU R                  nU R                  n[         R
                  " [        T5      [        T5      5       Vs/ s H"  nUR                  U5      (       a  XB;   d  M   UPM$     snmU R                  (       a  [        US5      mOSmT(       d    SUUU4S jjnU$ [         R                  " U5       Vs0 s H  ofR                  U_M     snm	Tm
  SUUU	U
UU4S jjnU$ s  snf s  snf )zproduce a function to iterate the "attributes" of a class
which we want to consider for mapping, adjusting for SQLAlchemy fields
embedded in dataclass fields.

r'  Nc                    > U U4S jT 5       $ )Nc              3  l   >#    U  H)  nUTR                  U5      TR                  U5      S 4v   M+     g7f)FNr   ).0r   cls_annotationscls_varss     rT   	<genexpr>`_ClassScanMapperConfig._cls_attr_resolver.<locals>.local_attributes_for_class.<locals>.<genexpr>  s>       !&  T*'++D1	 !&s   14rQ   )rY  rZ  namess   rT   local_attributes_for_classM_ClassScanMapperConfig._cls_attr_resolver.<locals>.local_attributes_for_class  s     !& rX   c               3  @  >#    T H  n TR                  U S 5      nU(       aQ  TUR                  ;   aA  UR                  [        UR                  T5      TR                  UR                  5      S4v   Mm  U TR                  U 5      TR                  U 5      S4v   M     g 7f)NTF)r   rc   r   _as_dc_declaredattr)r   fieldrY  rZ  rN  fixed_sa_dataclass_metadata_keyr]  rP  s     rT   r^  r_    s      "D,00t<E!:enn!L#jj*=!NN,K+*..uzz:DA A #HLL$68K8K 9 ! ! "s   BB)rY   z$Iterable[Tuple[str, Any, Any, bool]])r1   get_annotationsvars_include_dunders_match_exclude_dundersmerge_lists_w_orderinglistmatchr  r   rO  r   )rR   r   rf  rg  nr^  rb  rY  rZ  rN  rc  r]  rP  s          @@@@@@rT   _cls_attr_resolver)_ClassScanMapperConfig._cls_attr_resolver  s)    ..s3900!%!<!< 00X_ 5
 *//22a6K	 
 &&7N48% )-%(4 D *)' 04/J/J3/O /Oe

E!/O  /H+!4! ! *)g
> s   +DD$Dc                X  ^ U R                   n[        SU5      mU R                  nU R                  nU R                  nU R
                  nS nS =pxS n	S n
SU;   nU R                  U R                   5      n/ nUR                   H`  nXL=(       a    [        U5      nU R                  U5      nU(       d  XLa  U R                  UUUU5      nO0 nUR                  UUUU45        Mb     U GH  u  nnnnUR                  U5        U" 5        GHq  u  nnnnUU;   Ga&  US:X  a2  [        UUU5      nU(       d  U(       a  U(       a  SU4S jjnUnMD  MF  MH  US:X  a4  [        UUU5      nU
(       d  U(       a  U(       a  TR                  n
M~  M  M  US:X  a+  [        UUU5      nU(       a  U	(       d  SU4S jjnUn	M  M  M  US:X  a{  [        UUU5      nU(       dd  U(       a  U(       aS  TR                  n[!        U["        [$        ['        S 5      45      (       d  [(        R*                  " S5      eXLa  S	nGM+  GM.  GM1  GM4   eU(       aU  [-        U5      (       aB  UR.                  (       d1  [0        R2                  " SUR4                  < SU< SU< SU< S3	5        GM  XLGa  [!        U[6        [8        45      (       a  GM  [!        U[:        5      (       a  [(        R<                  " S5      e[-        U5      (       Gad  Uc   eUR>                  (       aO  UU;   a  [0        R2                  " SU< SU< S35        URA                  UU5      =UU'   =UU'   n[C        UUU5        OU(       a3  [E        UUS 5      n[!        U[F        5      (       d  URI                  5       nO[E        UU5      n[!        U[F        5      (       a;  [K        U5      (       a+  [!        URL                  [:        5      (       d  URN                  nU=UU'   UU'   [!        U[6        [:        45      (       a  URP                  c  URR                  Ul(        U RU                  UURW                  5       US	U5        GMU  [Y        UX5      (       a   U(       d  UU;   d  U" US 5      (       d   eGM  U R[                  UUU5        GM  U(       a[  UU;  d  UU   ULaM  U" UU5      (       a   e[-        U5      (       a  URI                  5       nUUU'   U RU                  UUUS
U5        GM  U RU                  UUUS U5      nUS L=(       a    UR\                  S LnUb  UR^                  OUnUc#  U(       d  U(       a  Ub  UO	[9        5       UU'   GMc  UU;   d  GMl  UUU'   GMt     GM     U(       a	  U
(       d  S nXpl0        Xl1        X`l2        Xl3        g )Nr;  rN   rf   c                 .   > [        T R                  5      $ rP   )dictrf   cls_as_Decls   rT   _mapper_args_fn@_ClassScanMapperConfig._scan_attributes.<locals>._mapper_args_fnA  s    '+K,G,G'H HrX   rd   c                    > T R                   $ rP   )rN   rq  s   rT   	_table_fn:_ClassScanMapperConfig._scan_attributes.<locals>._table_fnW  s    '2'<'< <rX   rh   z3__table_args__ value must be a tuple, dict, or NoneTFz*Regular (i.e. not __special__) attribute '.z(' uses @declared_attr, but owning class z& is mapped - not applying to subclass zMapper properties (i.e. deferred,column_property(), relationship(), etc.) must be declared as @declared_attr callables on declarative mixin classes.  For dataclass field() objects, use a lambda:Attribute '' on class z> cannot be processed due to @declared_attr.cascading; skipping)rY   r"  )rY   rD   )4r   r   r  r  r  rf  rR  r   r   rl  _produce_column_copiesr   updater   rd   rh   r   tuplerp  r   r   ArgumentErrorr   _quietr1   r   rK   r4   r*   r'   r   r   __get__setattrr   r   rH  r   original_property
descriptordocr]   _collect_annotation_collect_return_annotationr,   _warn_for_decl_attributesr	  r  r  r  r  r  )rR   r   r  r  r  rf  r  r  inherited_table_argsr  r  fixed_tablerE  basesr   class_mappedr^  locally_collected_columnsr   r   
annotationis_dataclass_field
check_declrs  rv  rI  collected_annotationr   generated_objrr  s                                @rT   r,  '_ClassScanMapperConfig._scan_attributes  s   hh:C@((#88**00,00
	!\1"&"A"A$(("KKKD  ?N/H/NL)-)@)@)F&DO,0,G,G.+	-) -/)LL .-	+  F 
&% !''(AB ,-"++00%Ds&
  . ,
I .=N 1;  . 0%Ds&
  ),*(3(A(AI CMy,%Ds&
 &h= (1H /7: !11%Ds&
  *<:)4)C)CJ#- *UD$t*,E$ $ '*&7&7%4'" !"  $7; 4  / DNz %u!,S11#**		
  $}}dD#	? _ "#'=>> #C88!55=  /s33  #.>>#|3 !%		 37%=!" !$C 5606 6s9K ##Cs31
 '.c4&>
 (2#~'F'F*-((*C '.c4&8 !+3 ? ?$:3$?$?(2$'$9$9>)" )" '*nn !$06s9K
 'sV^,DEE #&)kkCG00 ::<   /z3EE  + $(< <#:4#F#F!G ! 66tT3G',T0B#0M  7tSAAAA,S11!hhj14(.,,j$s ,0+C+Cj$c,( -D8 N0AAM  0; -77  "
 {;9  -8 *!- -T2
 -58,T2} . `  	J$", rX   c                  ^ ^^ T R                   nU(       d  g ST R                  R                  ;   a$  [        R                  " ST R                   S35      eST R                  R                  ;   a$  [        R                  " ST R                   S35      e[
        R                  " [        5      m      SU U4S jjm[        R                  " T R                  5      nUc   eUU 4S jT R                  R                  5        5        VVVs/ s HG  u  p4n[        R                  " UUUT R                  R                  U[         R"                  5      5      PMI     nnnnT(       aZ  TR                  5        HF  u  nn[$        R&                  " ST R                   S	S
R)                  S U 5       5       SU S3SSS9  MH     0 n	0 n
U H6  n[+        U5      S:X  a  Uu  pO[+        U5      S:X  a
  Uu  pnXU'   O eXU'   M8     U
R                  5        H  u  nn[-        T R                  UU5        M     T R/                  UT R                  U	5        g s  snnnf )N__dataclass_fields__r   z is already a dataclass; ensure that base classes / decorator styles of establishing dataclasses are not being mixed. This can happen if a class that inherits from 'MappedAsDataclass', even indirectly, is been mapped with '@registry.mapped_as_dataclass'rN   zk already defines a '__table__'. ORM Annotated Dataclasses do not support a pre-existing '__table__' elementc                l   > UTR                   La$  SUR                  ;  a  TU   R                  U 5        g)Nr  T)r   r   r   )rD  r  rR   warn_for_non_dc_attrss     rT   _allow_dataclass_fieldT_ClassScanMapperConfig._setup_dataclasses_transforms.<locals>._allow_dataclass_field:  s7     "1*2C2L2LL%&78??DrX   c              3     >#    U  Ha  u  nu  nnnnnnnT	" X5      (       d  M  UT
R                   ;  d$  [        T
R                   U   [        5      (       a  MQ  UU(       a  UOUU4v   Mc     g 7frP   )r  r   r   )rX  rD  raw_annor	  mapped_annois_dcr  r  r  r  rR   s            rT   r[  G_ClassScanMapperConfig._setup_dataclasses_transforms.<locals>.<genexpr>O  s      0 8C $&%)#A  t888 &11#68J1#.KH$ 8s   A,0A,A,zWhen transforming z to a dataclass, attribute(s) , c              3  8   #    U  H  n[        U5      v   M     g 7frP   rx   )rX  rD  s     rT   r[  r  w  s      Clscl   z originates from superclass a  , which is not a dataclass.  This usage is deprecated and will raise an error in SQLAlchemy 2.1.  When declaring SQLAlchemy Declarative Dataclasses, ensure that all mixin classes and other superclasses which include attributes are also a subclass of MappedAsDataclass.z2.0dcmxcoder/      )rD  rJ   r  r   rY   r  )r  r   r   r   r   collectionsdefaultdictri  r   r   r  itemsr"   !_get_arguments_for_make_dataclassr  r   r3   NO_ARGr1   warn_deprecatedjoinr   r  _apply_dataclasses_to_any_class)rR   r  r   rD  annor	  
field_listr  non_dc_attrsr   defaultsitemr   tpspeckvr  r  s   `                @@rT   r-  4_ClassScanMapperConfig._setup_dataclasses_transforms  sf   $($B$B!( "TXX%6%66))
 #2 2  $((+++))
 #& &  !, 7 7 =				)2				 		 "22488<"""0 //5570%
0++ ?? ))--c6==A	0 	 %
N ! ',,.!$$(
 3$yy Cl CCD E2() *5		6  /  D4yA~bTa!%$!%u "  NN$DAqDHHa# % 	,,%txx	
U%
s   AIc                    [         R                  " U5      n0 nUR                  5        HP  u  pE[        XQU5      (       a6  [	        UUUR
                  U[        S 5      SSSS9nU(       a
  Uu  pxXsU'   MJ  ML  XSU'   MR     U$ )NFrequiredr  expect_mapped)r1   rd  r  r,   r+   rZ   r   )	r   klassrY  new_annor   r  	extractedinner_s	            rT   (_update_annotations_for_non_mapped_class?_ClassScanMapperConfig._update_annotations_for_non_mapped_class  s     ..u5 / 5 5 7D$Z>>3$$J"',"'		 (HE%*TN  ",! !8" rX   c           
     D   U R                  U5        US   nU[        R                  L a  [        R                  nU(       a  [        USS 5      n[        SU5      Ul        OS n U" U40 UR                  5        VVs0 s H$  u  pgU[        R                  Ld  M  US:w  d  M"  Xg_M&     snnD6   U(       a  Uc  U?g XRl        g g s  snnf ! [        [        4 a.  n[        R                  " SUR                  < SU< S3SS9UeS nAff = f! U(       a  Uc  U?f XRl        f f = f)	Nr~   r^   r"  zAPython dataclasses error encountered when creating dataclass for z: zN. Please refer to Python dataclasses documentation for additional information.dcter  )_assert_dc_argumentsr3   r  r*  	dataclassr   r   r^   r  	TypeError
ValueErrorr   r   rK   )	r   r  r  use_annotationsr~   restoredr  r  exs	            rT   r  6_ClassScanMapperConfig._apply_dataclasses_to_any_class  sO    	  !:;67KL.!,!6!6 
 u&7>H$()9?$KE!H	5 !: ? ? A A- 237K2K AD A* #-,4)	 ' :& 	))!!& 2"& <<  	 #-,4)	 sB   #C ;CC C&C C D)DDD	 	Dc                    1 Skn[        U5      R                  U5      nU(       a;  SR                  S [        U5       5       5      n[        R
                  " SU S35      eg )N>   ry   rw   rx   rz   r}   r|   r{   r~   r  c              3  (   #    U  H  o< v   M
     g 7frP   rQ   )rX  args     rT   r[  >_ClassScanMapperConfig._assert_dc_arguments.<locals>.<genexpr>  s     J2I3gJ2Is   zDataclass argument(s) z are not accepted)set
differencer  sortedr   r~  )r   	argumentsalloweddisallowed_argsmsgs        rT   r  +_ClassScanMapperConfig._assert_dc_arguments  s`    	
 i.33G<))J&2IJJC##(->?  rX   c                   XR                   ;   a  U R                   U   $ Uc  g U R                  nU R                  nUcQ  [        U[        R
                  5      nU(       + =(       a)    U(       + =(       a    US L =(       d    [        U[        5      nSn[        UU R                  UR                  U[        U5      SUU=(       a    U(       + S9n	U	c  g U	u  pUcy  [        U
5      (       di  [        U
5       HZ  n[        USSS9(       a   [        U R                  UUR                  SS9n[        U[        5      (       d  MJ  UR!                  5       nM\     [#        UUU
UUUR                  U5      =U R                   U'   nU$ )NFr  T)check_genericcheck_for_plain_string)include_generic)r  r   r!  r   r*  Fieldr%   r+   r   rZ   r   r:   r8   r9   r.   r$   found_in_pep593_annotatedr  )rR   r   r  r  r  r  r  allow_unmappedr  r  r
  r	  elemcas                 rT   r  *_ClassScanMapperConfig._collect_annotation  s    -----d33!9988 !+J8I8I!J&& && $& @!*.>?  #+HH((1'<,<	
	 8A5#j1L&M&M !<=T 3)44(,	D d$;<<!%!?!?!AJ > 1E'((1
 	
""4(2 	rX   c                ~    [        U[        R                  5      (       a  [        R                  " SU SU S35        g g )Nry  rz  z appears to be a non-schema SQLAlchemy expression object; this won't be part of the declarative mapping. To map arbitrary expressions, use ``column_property()`` or a similar function such as ``deferred()``, ``query_expression()`` etc. )r   r2   ColumnElementr1   r   )rR   r   rD  r  s       rT   r  0_ClassScanMapperConfig._warn_for_decl_attributes@  s?     a1122IIcU+cU 3/ / 3rX   c                j   U R                   nU R                  n0 nU R                  nU" 5        GH  u  ppU(       dg  U
cd  [        XU5      (       aS  U" X5      (       a  M1  U R	                  XUSU
5      nUb  UR
                  OU
n
U
c
  [        5       n
XU	'   [        XYU
5        Mu  [        U
[        [        45      (       d  M  U" X5      (       a  M  U R	                  XUSU
5      nUb  UR
                  OU
n
X;  d  M  SU;   a)  [        U
SS 5      =(       d    U	US   R                  ;   a  M  U
R                  (       aO  U
R                   H?  nUR                  c  M  UR                  R                  b  M+  [        R                   " S5      e   U
R#                  5       =X'   nXU	'   [        XYU5        GM     U$ )NTrN   r   zColumns with foreign keys to non-table-bound columns must be declared as @declared_attr callables on declarative mixin classes.  For dataclass field() objects, use a lambda:.)r   r  r  r,   r  r  r*   r  r   r4   r   r  foreign_keys_table_columnr   r   r   _copy)rR   attributes_for_classrE  r  r  r   r   locally_collected_attributesr  r   r   r  r  r  fkcopy_s                   rT   r{  -_ClassScanMapperConfig._produce_column_copiesM  s    hh!!')$** 4H3I/DzK)*;LMM +455 '+'?'?&7s($
 ,7 )33 
 ;&.C58T23'C&,!788*455
 '+'?'?&7s($
 ,7 )33  $5( fd3;t[)++, ''"%"2"2B " 0 0 <$&$4$4$:$:$B&)&=&=%F'" !" #3 25<M&9>6Cu-O 4JR ,+rX   c                4   U R                   nU R                  nU R                  nU R                  n[	        USSS9nU R
                  nU=(       d    U R                  n[        U R                  5      n[        U5       GHe  n	X;   a  M  X)   n
[        U
5      (       a@  U
R                  (       a#  [        R                  " SU R                   -  5        [        X5      n
OU[        U
[         5      (       a@  U
R"                  ULa1  U
R$                  U	:w  a!  ['        U
R$                  5      n
[)        XU
5        [        U
[*        5      (       aI  [-        U
5      S:X  a:  [        U
S   [.        [0        45      (       a  [        R                  " SU	-  5        GM  U(       a"  [        U
[2        R4                  5      (       a  GM;  [        U
[.        [6        45      (       d9  UR9                  U	5        U R;                  XU
5        U(       d  [)        XU
5        GM  U	S;   a  [<        R>                  " S	U	 S
35      e[        U
[.        5      (       a&  [A        XRB                  RE                  X5      5        GOw[        U
[F        5      (       a_  U RH                  RE                  U	S5      u  nnnnnnnUc
  Ub  U(       a%   U
RK                  U U RL                  UUU	UUUU5	        O	U(       d   e[        U
[6        5      (       a  U
RT                  (       a  U(       d  [        U
[V        5      (       a  / SQnO/ SQnU Vs1 s H1  n[        U
RX                  SU 35      [Z        R\                  Ld  M/  UiM3     nn[<        R^                  " SU	 SU SSRa                  [c        S U 5       5      5       S35      e[        U
[V        [d        45      (       d   UR9                  U	5        [)        XU
5        GMa  XU	'   GMh     g ! [N         a   n[P        RR                  " SU S35      UeS nAff = fs  snf )Nr   Tr   zUse of @declared_attr.cascading only applies to Declarative 'mixin' and 'abstract' classes.  Currently, this flag is ignored on mapped class %sr   r   zIgnoring declarative-like tuple value of attribute '%s': possibly a copy-and-paste error with a comma accidentally placed at the end of the line?)rc   zAttribute name 'z-' is reserved when using the Declarative API.)NNNFNNNz7Could not resolve all types within mapped annotation: "zU".  Ensure all types are written correctly and are imported within the module in use.)rw   default_factoryrx   default)rw   r  rx   dataclasses_ry  rz  z# includes dataclasses argument(s): r  c              3  8   #    U  H  n[        U5      v   M     g 7frP   r  )rX  as     rT   r[  F_ClassScanMapperConfig._extract_mappable_attributes.<locals>.<genexpr>R  s     /FAQr  zF but class does not specify SQLAlchemy native dataclass configuration.)3r   r  r   rf  r   r!  r   r  r  ri  r   r   r1   r   r   r   r   r   rD  r!   r  r}  r   r4   r%   r*  r  r#   popr  r   r   _undefer_column_namer  r   r$   r  r   r   	NameErrororm_excMappedAnnotationError_has_dataclass_argumentsr'   _attribute_optionsr3   r  r~  r  r  r&   )rR   r   r  	our_stuffrf  late_mappedr!  expect_annotations_wo_mappedlook_for_dataclass_thingsr  r   r  r	  r
  r  r  r  r  neargnamesr  argss                         rT   r/  3_ClassScanMapperConfig._extract_mappable_attributes  s   hh#88OO	00--d
 &*%D%D"&L$*L*L 	% %))G)G$H!*+A$(+E$U++ ##II  $xx(   5"455LL+IIN (		2& 5%((J!OuQx&2B)CDD		BDEF
 *z{((0 0
 0C'DEE
 %((+..su="CE* m#--&qc *' '  E6**$))--e; e%<== 2266F"(3$"*) )4%-
 6&!22 $ $ # 2 ! 0 * ; ,
.  <;;e%89966 9%e^<<(H (KH &. %-& % 8 8L:L  $*== 1 %-    "//)!Ku =8#yy/F/F)FGH III  &enl-KLL -003  .  aLa ,^  ) &")"?"?#00:| <E!F#
 $&&&: s$   .#O(*.PP(
P2PPc                   U R                   nU R                  nU R                  n[        R                  " [
        5      n[        UR                  5       5       GH  u  pV[        U[        5      (       a  UR                  nU(       a  XqU'   OX	 UR                   Hf  u  p[        U[        5      (       d  XHR                     R                  U5        UR                  U5        XU'   Ub  MQ  XXR                  :w  d  Mb  XU'   Mh     M  [        U[         5      (       d  M  UR                  c   eXFR                     R                  U5        UR                  U5        XVR                  :X  d  GM  X	 GM     UR                  5        H[  u  p[#        U5      S:  d  M  [$        R&                  " SU R(                  < SU
< SSR+                  [-        U5      5      < S35        M]     g )Nr   z	On class z, Column object z7 named directly multiple times, only one will be used: r  z$. Consider using orm.synonym instead)r   r  r  r  r  r  ri  r  r   r&   mapper_property_to_assigncolumns_to_assignr    r   addrD  r4   r   r1   r   r   r  r  )rR   r  r  r  name_to_prop_keyrD  r  mp_to_assigncol
sort_orderr   keyss               rT   r0  0_ClassScanMapperConfig._extract_declared_columnsl  s~   OO	  00..&22379??,-FC!\** ::%1cN "'(':':OC%a):;;(266s;$((- ,6C( $+ww),#! (;" Av&& vv))) (,,S1 $$Q' %%<!O .R +002JD4y1}		
 ~~tdiit.E	H 3rX   c           	       ^ U R                   n[        SU5      nU R                  nU R                  nU R                  nU R
                  nU R                  m[        R                  " U5      nU R                  Gc-  SU;  Ga&  UGc"  [        US5      (       a6  [        [        [           [        R                  " UR                  5      5      n	O[        n	Ub  Sn
0 nU(       aQ  [!        U["        5      (       a  UnO9[!        U[$        5      (       a$  [!        US   ["        5      (       a
  USS US   pOUn
UR'                  S5      nU(       a  XS'   UR'                  S	5      nU(       a  S
US'   [)        UU4S jS9nU R+                  SU	" UU R-                  U5      /UQU
Q70 UD65      nOUc>  U R                  (       a!  U R+                  SU R                  5       5      nOUR.                  nU(       aL  U HF  nUR0                  R3                  U5      (       a  M%  [4        R6                  " SUR8                  -  5      e   Xl        g )NMappedClassProtocol[Any]rN   __table_cls__rQ   r   __autoload_with__autoload_with__autoload__Tautoloadc                (   > TR                  U S5      $ )Nr   rW  )r  r  s    rT   <lambda>5_ClassScanMapperConfig._setup_table.<locals>.<lambda>  s    /"5"5a";rX   )rD  z8Can't add additional column %r when specifying __table__)r   r   r  r  r  r  r  r   r   r  r   r   r5   r1   unbound_method_to_callabler  r   rp  r}  r   r  r   _metadata_for_clsrN   r  contains_columnr   r~  rD  r   )rR   r   r   rr  r  r  r  r  r   	table_clsr  table_kwr  r  sorted_columnsr  r  s                   @rT   r1  #_ClassScanMapperConfig._setup_table  s#   hh5s;NN	__
((00..--c2 MM!</sO,, K33C4E4EF	
 "	$(*+-!*d33#-#J66%jnd;;-7"-=z"~(#-D , 0 01D E 0=_-'++N;+/HZ(!'$;" ..!..w7 ( 	
 #	 }== 22#T]]_E (11E)A 7722155!//356UU;  * !rX   c                f    [        U R                  SS 5      nUb  U$ UR                  R                  $ )Nrc   )r   r   r   rc   )rR   r   metas      rT   r  (_ClassScanMapperConfig._metadata_for_cls  s1    #*488Z#FK##,,,rX   c                   U R                   nUR                  SS 5      nUc  / nUR                   H=  n[        U5      nUc  M  [	        U5      (       d  M%  Xd;  d  M,  UR                  U5        M?     U(       a2  [        U5      S:  a  [        R                  " SU< SU< 35      eUS   nO![        U[        5      (       a  UR                  nX0l        U R                  nSU;  a  U R                  c  SU l        g g g )Nr   r   r   r   r   rN   T)r   r   r   r   r   r   r   r   r   r   r(   r   r   r  r  r  )rR   r   r   r   r   r   r  r  s           rT   r.  /_ClassScanMapperConfig._setup_inheriting_mapper  s    hh==T2 !O6u=9,Q//A4L#**1- ' '!+111  +1-&))H ((l*t~~/EDK 0F*rX   c           
     :   U R                   nU R                  nU R                  nU R                  nUc7  U R                  c*  [        US5      (       d  [        R                  " SU-  5      eU R                  (       Ga  [        U R                  5      nUc   eUR                   nUR                  nUGch  U(       a  [        R                  " S5      eU(       aF  [        U[        5      (       d1  [        R                  " SU R                   SU R                   S35      eU H  n	Uc   eU	R                  UR                  ;   a_  UR                  U	R                     U	L a  M@  [        R                  " SU	 SUR                   S	UR                  U	R                      S
35      eU	R                   (       a  [        R                  " S5      e["        (       a  [        U[        5      (       d   eUR%                  U	5        Uc  M  XLd  M  UR'                  U	5        M     g g g )N__no_table__zwClass %r does not have a __table__ or __tablename__ specified and does not inherit from an existing table-mapped class.z?Can't place __table_args__ on an inherited class with no table.z9Can't declare columns on single-table-inherited subclass z; superclass z is not mapped to a TablezColumn 'rz  z! conflicts with existing column 'zs'.  If using Declarative, consider using the use_existing_column parameter of mapped_column() to resolve conflicts.zDCan't place primary key columns on an inherited class with no table.)r   r   r  r  r   r   r   r   r   r  r~  r   r5   r   r  rK   primary_keyr   append_column_refresh_for_new_column)
rR   r   r   r   r  r  inherited_mapper_or_configinherited_tableinherited_persist_selectabler  s
             rT   r2  0_ClassScanMapperConfig._setup_inheriting_columns  s     hh__
00 M%+C@@))&(+, 
 ]]])?)N&-9998DDO*== ) } ++)  $J,N,N++$$(HH:]4==/ J33  ,C*666xx?#4#44*,,SXX6#=$!//&se;s||n E  / 1 1#(( ;< =44  !//3 
 %})/5AAAA#11#64@8O4LL7 ,#  rX   c                   U R                   nU R                  (       a  U R                  5       nO0 nU(       a  UR                  U5        SU;   a  [        U5      nUR                  US   5        S H+  nXC;   d  M
  X4   nU R                  R                  XU5      X4'   M-     SU;   aF  [        R                  " US   5       Vs/ s H  nU R                  R                  XU5      PM      snUS'   SU;   aP  US   n[        U[        5      (       a  UR                  nX`R                  La  [        R                  " SUS   -  5      eU R                  (       a  U R                  US'   U R                  (       Ga`  UR                  SS5      (       GdH  [        U R                  S5      nUR                  nSU;  a  UR                    V	s1 s H   n	XR"                  ;  d  M  U	R$                  iM"     sn	R'                  UR(                  =(       d    S	5      =US'   n
U
R+                  U R,                   V	s/ s H  oR$                  PM     sn	5        [/        UR1                  5       5       Ho  u  pK[        U[2        R4                  5      (       d  M&  XGR6                  ;   d  M7  UR6                  U   n[        U[8        5      (       d  M]  U/UR:                  -   X$'   Mq     UR=                  5       nX-S'   Xl        g s  snf s  sn	f s  sn	f )
Nr   )version_id_colpolymorphic_onr(  r   z:mapper inherits argument given for non-inheriting class %sconcreteFexclude_propertiesrQ   ) r   r  r|  rp  r  r   r1   to_listr   r(   r   r   r   r   r-   r   r  _columntopropertyrD  unionr3  difference_updater  ri  r  r2   r  _propsr)   columnscopyr  )rR   r   r   r  r  r  inherits_arginherited_mapperr,  r  r3  r  presult_mapper_argss                 rT   _prepare_mapper_arguments0_ClassScanMapperConfig._prepare_mapper_argumentse  s   __
--/KKy);&j)Jk,78 6AN!%!3!3!7!7!= 6
 K' k-&@A*AA ""&&q,A*K&
 $&z2L,//+22==0--"-j"9; 
 ==&*mmK
#===U!C!C  ,DMM5A.::O $;6 -..J. B BB AEE.J %(;;ArB	C014F
 #44$($9$9:$9qUU$9: z//12!#z'?'?@@///(//2A!!^44 *-		(9
 3 )--/+5<(-q*<J ;s    %K.K3K3+K8c                @   U R                  U5        [        U R                  S5      (       a5  [        S[        R
                  " U R                  R                  5      5      nO[        nU R                  SU" U R                  U R                  40 U R                  D65      $ )N__mapper_cls__zType[Mapper[Any]]rM   )r?  r   r   r   r1   r  rB  r(   r   r   r  r   s      rT   r   _ClassScanMapperConfig.map  s    &&y1488-..#//HH++J  J%%txx!1!1FT5E5EF
 	
rX   )r  r!  r  r  r  r  r  r  r  r   r   r   r  r  r  r   r  r  r  r  )
r   r>   r   r   r   r=   r   r   r   re   rr   )r   r   rY   Callable[[str, Any], bool])r   r   rY   2Callable[[], Iterable[Tuple[str, Any, Any, bool]]])r  r   rY   !Mapping[str, _AnnotationScanType])r  ru   r  r   r  rF  rY   rs   )r  ru   rY   rs   )r   rJ   r  r7   r  r   r  zOptional[bool]r  r   rY   zOptional[_CollectedAnnotation])r   r   rD  rJ   r  r   rY   rs   )
r  rE  rE  rD  r  r  r  r   rY   z0Dict[str, Union[Column[Any], MappedColumn[Any]]]rP   )r   r   rY   rs   )r   zClassManager[Any]rY   rC   r   r   )$rK   rZ   r[   r\   r   is_deferredr^   r   r+  rR  rf  recompilerg  rl  r,  r-  r   r  r  r  r  r  r{  r/  r0  r1  r  r.  r2  r?  r1   r  r   r_   r  r  s   @rT   r   r     s   I. K::((%%,,22++  ""((::!!L#'' $$<< ! K+K+ K+ 	K+
 $K+ !K+Z&"J'J'	#J'X  ZZ8B*B*	;B*Hl!\	v
p 	* 2 25#625 25 ;	25
 
25 25h  $FF ,F %	F
 &F F 
(FP#&+.	X,
X,
 "<X, X, %X, 
:X,tC!J9vL!\-BFPO.b .2__ 
 
rX   r   c                    [         R                  R                  nX   n[        U5      (       a+  [	        X2R
                  5      (       d  UR                  U5      $ U$ rP   )r1   r   r   callabler   r@   )field_metadatarP  decl_apir   s       rT   ra  ra    sJ     ~~**H

3C}}Z-C-CDD%%c**
rX   c                  <  ^  \ rS rSr% S\S'   Sr\R                  " 5       rS\S'   SS jr	\
SS j5       r\R                  SS	 j5       r\SS
 j5       r\SS j5       r\SS j5       r\SS j5       r\ S     SS jj5       r\R&                  4SU 4S jjjrSrU =r$ )r   i  weakref.ref[Type[Any]]_clsTz?util.OrderedDict[weakref.ref[Type[Any]], _DeferredMapperConfig]_configsc                    g rP   rQ   r   s     rT   r   $_DeferredMapperConfig._early_mapping  s    rX   c                "    U R                  5       $ rP   rP  rl   s    rT   r   _DeferredMapperConfig.cls  s    yy{rX   c                ~    [         R                  " XR                  5      U l        X R                  U R                  '   g rP   )weakrefref_remove_config_clsrP  rQ  )rR   r   s     rT   r   rV    s(    KK(?(?@	#'dii rX   c                <    U R                   R                  US 5        g rP   )rQ  r  )r   rY  s     rT   rZ  (_DeferredMapperConfig._remove_config_cls  s    d#rX   c                v    [        U[        5      =(       a#    [        R                  " U5      U R                  ;   $ rP   )r   r   rX  rY  rQ  r   r   s     rT   r   _DeferredMapperConfig.has_cls  s(     &$'OGKK,?3<<,OOrX   c                    [        US5      (       a  UR                  5         [        R                  " US[        R                  " U5       S3S9e)N_sa_raise_deferred_configr   zG has a deferred mapping on it.  It is not yet usable as a mapped class.)r  )r   ra  r  UnmappedClassError_safe_cls_namer^  s     rT   raise_unmapped_for_cls,_DeferredMapperConfig.raise_unmapped_for_cls  sQ    6677,,.((//78 9J J
 	
rX   c                H    U R                   [        R                  " U5         $ rP   )rQ  rX  rY  r^  s     rT   r   $_DeferredMapperConfig.config_for_cls  s    ||GKK/00rX   c                  ^^ U R                   R                  5        Vs/ s H  o3UR                  4PM     sn VVs/ s H  u  p4Uc  M
  [        XA5      (       d  M  UPM      nnnU(       d  U$ U Vs0 s H  o3R                  U_M     snm/ nT H)  mUR	                  UU4S jTR
                   5       5        M+     [        [        R                  " Xe5      5      $ s  snf s  snnf s  snf )Nc              3  H   >#    U  H  nUT;   d  M  TU   TT   4v   M     g 7frP   rQ   )rX  base_clsall_m_by_clsm_clss     rT   r[  9_DeferredMapperConfig.classes_for_base.<locals>.<genexpr>  s1       /H|+ >h'e)<= /s   
"")	rQ  valuesr   r   extendr   ri  r6   sort)	r   rj  rp  mr   classes_for_basetuplesrk  rl  s	          @@rT   rr  &_DeferredMapperConfig.classes_for_base  s     140C0C0EF0E1J0EF
F $.t$> F 	 
 ##*:;*:Qq*:;LN!EMM  %  " K$$V>??! G
 <s   C	C	CC1C%c                n   > U R                   R                  U R                  S 5        [        TU ]  U5      $ rP   )rQ  r  rP  r   r   )rR   r   r   s     rT   r   _DeferredMapperConfig.map  s*    $))T*w{9%%rX   rU  r   )rY   r   )r   r   rY   rs   )rY  rO  rY   rs   )r   r   rY   r  )r   r   rY   r   )r   r   rY   r   )T)rj  r   rp  r  rY   zList[_DeferredMapperConfig]r   )rK   rZ   r[   r\   r^   rG  r1   r   rQ  r   propertyr   setterr   rZ  r   rd  r   rr  r  r   r_   r  r  s   @rT   r   r     s    
  K 	      	ZZ( ( $ $ P P 

 

 1 1 /3@ @(,@	$@ @. .2__ & &rX   r   c                   SU R                   ;   Ga  [        SU 5      nSS jn[        U[        5      (       a=  [	        X5        U" U5      R                  USS9  UR                  R                  X5        g[        U[        5      (       a  UR                  nUR                   HJ  u  pg[	        X5        U" U5      R                  USS9  U(       a  M/  UR                  R                  X5        ML     U(       a  UR                  R                  X5        gg[        U[        5      (       a  UR                  R                  X5        g[        U[        5      (       aA  UR                  U:w  a1  [        UR                  5      nUR                  R                  X5        g[        R!                  XU5        UR                  R#                  5         g[        R!                  XU5        g)zadd an attribute to an existing declarative class.

This runs through the logic to determine MapperProperty,
adds it to the Mapper, adds a column to the mapped Table, etc.

rM   r  c                    [        U R                  [        5      (       a  U R                  $ [        R                  " SU R
                  < S35      e)Nz+Cannot add a new attribute to mapped class z) because it's not mapped against a table.)r   rN   r5   r   r   rK   )mcs    rT   _table_or_raise'_add_attribute.<locals>._table_or_raise1  sF    ",,..||#))=bkk_ M; ; rX   T)replace_existingN)r{  r  rY   r5   )r   r   r   r4   r  r)  rM   add_propertyr&   r  r  r'   r   rD  r!   r   __setattr___expire_memoizations)r   rD  r   
mapped_clsr|  mpr  r  s           rT   _add_attributer  $  s    s||#4c:
	 eV$$ ,J'55 6  !!..s:|,,00B11$S.
+99$ :  r))66s@ 2 %%223; ~..!!..s:122uyyC7G $EII.E!!..s:Su-!!6685)rX   c                   SU R                   ;   a  XR                   ;   a  [        SU 5      R                  R                  (       dy  U R                   U   n[	        U[
        [        [        [        45      (       a  [        S5      e[        R                  X5        [        SU 5      R                  R                  5         g [        R                  X5        g )NrM   r  z<Can't un-map individual mapped attributes on a mapped class.)r   r   rM   _dispose_calledr   r4   r&   r'   r   r   r   __delattr__r  )r   rD  r   s      rT   _del_attributer  X  s    $<<&

*__% S!FL.:LM
 
 &N  S&*Cj--/"rX   c                    [        U 5      nU H=  n[        X#5      (       d  [        U< SUR                  < 35      e[	        XX   5        M?     g)a%  A simple constructor that allows initialization from kwargs.

Sets attributes on the constructed instance using the names and
values in ``kwargs``.

Only keys that are present as
attributes of the instance's class are allowed. These could be,
for example, any mapped columns or relationships.
z$ is an invalid keyword argument for N)r   r   r  rK   r  )rR   kwargsr   r  s       rT   _declarative_constructorr  p  sI     :Dt>?O  	# rX   r   c                R    UR                   c  Xl         UR                  c  Xl        g g rP   )rD  r   )rD  columns     rT   r  r    s%    zz
{{ rX   )r   r   rY   z3Optional[Union[_DeferredMapperConfig, Mapper[Any]]])r   r   rY   r  )r   r   rY   r$  )F)r   r   r   rJ   r   r  rY   zOptional[Any])r   r   rY   zOptional[ClassManager[_O]])r   r>   r   r   r   r=   rY   r   )
r   r>   r   r   r   r   r   re   rY   rL   )r   r   rY   r  )r   r   r   rJ   r   r   rY   r  )rL  r#  rP  rJ   rY   r   )r   r   rD  rJ   r   zMapperProperty[Any]rY   rs   )r   r   rD  rJ   rY   rs   )rR   r   r  r   rY   rs   )rD  rJ   r  zColumn[Any]rY   rs   )rr]   
__future__r   r  r*  rH  typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   rX   r   r   r   r  r   r   _typingr   r   r   r   r   r   r   descriptor_propsr    r!   
interfacesr"   r#   r$   r%   r&   r'   mapperr(   r   r)   r*   r1   r+   r,   r-   r.   r0   sqlr2   sql.baser3   
sql.schemar4   r5   r6   util.typingr7   r8   r9   r:   r;   r<   r=   r>   r?   rM  r@   rA   sql.elementsrB   rC   sql.selectablerD   rE   rJ   re   _TableArgsTyperH   ra   ru   r   r   r   r   r   r   r   preload_moduler   r   r   r   r  r   ra  r   r  r  r  rK   r  rQ   rX   rT   <module>r     s   / "   	                         + - * "   / - ) + / ( $ &  & $ ) '  )         - " $ $ " ##&'-*%+TS!uS#XS#X67-(2, -,226 ,@) @
	
8
,. 38$	$!$+/$$NGG"+G4>GG;;	;  ; 	;
 ; ./H 0H	&	W Wt;!m ;!|!: !L
] L
^0 ./%BE 0J&2 J&Z1*	1*1*%81*	1*h#0$& %/  !rX   