
    )f                      d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d d	lm
Z
 d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z# dd lm$Z$ dd!lm%Z% dd"lm&Z& dd#lmZ dd$l&m'Z' dd%l&m(Z( dd&l&m)Z) dd#l&mZ* dd'l&m+Z+ dd(l,m-Z- dd)l,m.Z. dd*l,m/Z/ dd+l,m0Z0 dd,l1m2Z2 dd-l1m3Z3 dd.l1m4Z4 dd/l1m5Z5 dd0l1m6Z6 dd1l1m7Z7 dd2l8m9Z9 dd3l:m;Z; dd4l:m<Z< dd5l=m>Z> dd6l=m?Z? dd7l=m@Z@ dd8l=mAZA dd9l=mBZB dd:l=mCZC dd;l=mDZD dd<l=mEZE dd=lFmGZG errdd>lHmIZI dd?lHmJZJ dd@lmKZK ddAlLmMZM ddBlNmOZO ddClPmQZQ ddDlPmRZR ddElSmTZT ddFlUmVZV ddGl,mWZW ddHlXmYZY ddIl8mZZZ ddJl:m[Z[ ddKl=m\Z\ ddLl=m]Z] ddMl=m^Z^ ddNl=m_Z_ ddOl=m`Z` ddPlambZb  edQeR      Zcej                  Ze ej                         ZgeCj                  Zh G dS dT      Zi ej                  dUdVi      Zj G dW dXe4      Zk G dY dZek      Zl G d[ d\ek      Zm G d] d^      Zne&j(                  jh                  j                  d_d`       G da dbem             Zp G dc dde;e6eEe-         Zqe&j(                  jh                  j                  d_de       G df dgele>             Zre&j(                  jh                  j                  d_dh       G di djemeD             Zs	 	 d}	 	 	 	 	 	 	 d~dkZt	 	 	 	 ddlZu	 	 	 	 ddmZv	 d	 	 	 	 	 ddnZw G do dp      Zx G dq drex      Zy G ds dtex      Zz G du dvex      Z{ G dw dxe{      Z| G dy dze{      Z} G d{ d|e}      Z~y)    )annotationsN)Any)cast)Dict)Iterable)List)Optional)Set)Tuple)Type)TYPE_CHECKING)TypeVar)Union   )
attributes)
interfaces)loading)_is_aliased_class)ORMColumnDescription)ORMColumnsClauseRole)PathRegistry)_entity_corresponds_to)_ORMJoin)_TraceAdaptRole)AliasedClass)Bundle)
ORMAdapter)ORMStatementAdapter   )exc)future)inspect)sql)util)	coercions)
expression)roles)visitors)_TP)is_dml)is_insert_update)is_select_base)_select_iterables)CacheableOptions)CompileState)
Executable)
Generative)Options)
UpdateBase)GroupedElement)
TextClause)CompoundSelectState)LABEL_STYLE_DISAMBIGUATE_ONLY)LABEL_STYLE_NONE)LABEL_STYLE_TABLENAME_PLUS_COL)Select)SelectLabelStyle)SelectState)TypedReturnsRows)InternalTraversal)_InternalEntityType)OrmExecuteOptionsParameter)PostLoad)Mapper)Query)_BindArguments)Session)Result)_CoreSingleExecuteParams)_ColumnsClauseArgument)SQLCompiler)_DMLTableElement)ColumnElement)_JoinTargetElement)_LabelConventionCallable)_SetupJoinsElement)ExecutableReturnsRows)
SelectBase)
TypeEngine_T)boundc                  v    e Zd ZU dZded<   ded<   ded<    G d d	e      Z	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddZy
)QueryContext)top_level_contextcompile_statequeryparamsload_optionsbind_argumentsexecution_optionssession	autoflushpopulate_existinginvoke_all_eagersversion_checkrefresh_statecreate_eager_joinspropagated_loader_optionsr   runidpartialspost_load_pathsidentity_token	yield_perloaders_require_bufferingloaders_require_uniquingintre   zDict[PathRegistry, PostLoad]rg   ORMCompileStaterW   c                  <    e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZy)!QueryContext.default_load_optionsFTN)__name__
__module____qualname___only_return_tuples_populate_existing_version_check_invoke_all_eagers
_autoflush_identity_token
_yield_per_refresh_state_lazy_loaded_from_legacy_uniquing_sa_top_level_orm_context_is_user_refresh     S/var/www/html/flask-app/venv/lib/python3.12/site-packages/sqlalchemy/orm/context.pydefault_load_optionsro      sE    #"!

  $(! r   r   Nc                r    | _         |xs t         _        |xs t         _        | _        | _        | _        d _        d _        | _	        |j                   _        |j                  j                  }|j                  }	t         fdt        ||	      D               _        t#        |j$                         _        |j&                   _        |j*                   _        |j.                   _        |j2                   _        |j6                   _        |j:                   _        |j>                   _         y )NFc              3  `   K   | ]%  \  }}|j                   r|j                  |       ' y wN)propagate_to_loaders'_adapt_cached_option_to_uncached_option).0optuncached_optselfs      r   	<genexpr>z(QueryContext.__init__.<locals>.<genexpr>   s3      /
!\'' 77lK/
s   +.)!rZ   _EMPTY_DICTr\   r[   rW   rX   r]   rj   rk   rY   r}   rV   select_statement_with_optionstupleziprd   dictr   rw   r^   rt   r_   rv   r`   ru   ra   rz   rb   ry   ri   rx   rh   )
r   rW   	statementrY   r]   rZ   r\   r[   cached_optionsuncached_optionss
   `         r   __init__zQueryContext.__init__   s    )!2!Ak,;*
).&(-%!-!G!G&77EE$22 */ /
%(9I%J/
 *
& }778%00!-!@!@!-!@!@)88)88%00*::r   c                "    | j                   xs | S r   )rV   r   s    r   _get_top_level_contextz#QueryContext._get_top_level_context   s    %%--r   )NN)rW   r/   r   &Union[Select[Any], FromStatement[Any]]rY   rG   r]   rE   rZ   zQUnion[Type[QueryContext.default_load_options], QueryContext.default_load_options]r\   z$Optional[OrmExecuteOptionsParameter]r[   zOptional[_BindArguments])returnrU   )	rp   rq   rr   	__slots____annotations__r2   r   r   r   r   r   r   rU   rU   f   s    I4 J11""!w !0 CG374;#4; :4; )	4;
 4;
4; @4; 14;l.r   rU    _result_disable_adapt_to_contextTc                  z     e Zd ZdZd Ze	 	 	 	 	 	 	 	 d fd       Zed        Ze	 	 dd       Zed        Z	 xZ
S )	AbstractORMCompileStateFc                  i | _         |i x| _        }|sJ y |j                  x| _        }|r7d|d<   |r/|j                  D ]   }|j                  s|j                  |        " y |j                  dd      ry |j                  d   }	 |d   }|j                  D ]-  }|j                  s|j                  s|j                  |        / 	 d|d<   y # t        $ r Y w xY w)NTtoplevel_ormFr   
selectable)
r   global_attributes_global_attributesr   _is_criteria_optionprocess_compile_stategetstack_is_compile_stateKeyError)	r   r   compilertoplevelprocess_criteria_for_toplevelgar   stack_0toplevel_stmts	            r   _init_global_attributesz/AbstractORMCompileState._init_global_attributes   s      +-,D"RO*2*E*EED"R!%B~,$22 8C..11$78 VVNE*..#	4#L1M %22 4((S-D-D--d34 ">  		s   C 	CCc                &    t        |   ||fi |S )a  Create a context for a statement given a :class:`.Compiler`.

        This method is always invoked in the context of SQLCompiler.process().

        For a Select object, this would be invoked from
        SQLCompiler.visit_select(). For the special FromStatement object used
        by Query to indicate "Query.from_statement()", this is called by
        FromStatement._compiler_dispatch() that would be called by
        SQLCompiler.process().
        )supercreate_for_statement)clsr   r   kw	__class__s       r   r   z,AbstractORMCompileState.create_for_statement   s    " w+IxF2FFr   c                    t               r   NotImplementedError)r   r]   r   rY   r\   r[   is_pre_events          r   orm_pre_session_execz,AbstractORMCompileState.orm_pre_session_exec       "##r   c                ^    |j                  ||xs i |      }| j                  ||||||      S )N)r\   )executeorm_setup_cursor_result)r   r]   r   rY   r\   r[   connresults           r   orm_execute_statementz-AbstractORMCompileState.orm_execute_statement  sJ     v|7H  
 **
 	
r   c                    t               r   r   r   r]   r   rY   r\   r[   r   s          r   r   z/AbstractORMCompileState.orm_setup_cursor_result1  r   r   )r   Union[Select, FromStatement]r   Optional[SQLCompiler]r   r   r   r   )r   rF   )rp   rq   rr   is_dml_returningr   classmethodr   r   r   r   __classcell__r   s   @r   r   r      s    %"N G/G (G 	G
 
!G G$ 	$ 	$ 
 

 
* 	$ 	$r   r   c                  0    e Zd ZdZed        Zed        Zy)AutoflushOnlyORMCompileStatez>ORM compile state that is a passthrough, except for autoflush.c                    t         j                  j                  ddh||j                        \  }}|s|j                  r|j	                          ||fS )N_sa_orm_load_optionsr^   )rU   r   from_execution_options_execution_optionsrw   )r   r]   r   rY   r\   r[   r   rZ   s           r   r   z1AutoflushOnlyORMCompileState.orm_pre_session_execA  sa     --DD" ((
	
  7 7 +++r   c                    |S r   r   r   s          r   r   z4AutoflushOnlyORMCompileState.orm_setup_cursor_result^  s	     r   N)rp   rq   rr   __doc__r   r   r   r   r   r   r   r   >  s+    H, ,8 	 	r   r   c                  n   e Zd ZU  G d de      Zded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   eZded<   dZd Z	e
re	 	 	 	 	 	 	 	 d+d        Zd! Ze	 	 	 	 	 	 d,d"       Zed#        Zed$        Zed%        Zed&        Zd' Zd( Zed)        Zy*)-rm   c                  Z   e Zd Zdej                  fdej                  fdej                  fdej
                  fdej                  fdej                  fdej                  fdej                  fd	ej                  fd
ej                  fdej                  fgZdZdZ	dZ
eZdZdZdZdZdZdZdZy)'ORMCompileState.default_compile_options_use_legacy_query_style_for_statement_bake_ok_current_path_enable_single_crit_enable_eagerloads_only_load_props_set_base_alias_for_refresh_state_render_for_subquery_is_starFTN)rp   rq   rr   r>   
dp_booleandp_has_cache_keydp_plain_obj_cache_key_traversalr   r   r   _path_registryr   r   r   r   r   r   r   r   r   r   r   default_compile_optionsr   l  s    &(9(D(DE0;;<*556/@@A"$5$@$@A!#4#?#?@!2!?!?@ 1 < <=!#4#?#?@#%6%A%AB*556 
& #(
 &"!"$r   r   zDict[Any, Any]r   r   r   r   r   List[_QueryEntity]	_entitiesz%Dict[_InternalEntityType, ORMAdapter]_polymorphic_adaptersz=Union[Type[default_compile_options], default_compile_options]compile_optionszOptional[_QueryEntity]_primary_entitybooluse_legacy_query_stylerM   _label_conventionzList[ColumnElement[Any]]primary_columnssecondary_columnszSet[ColumnElement[Any]]dedupe_columnszList[Tuple[Any, ...]]rc   r   current_pathFc                    t               r   r   )r   argr   s      r   r   zORMCompileState.__init__      !##r   c                     y r   r   )r   r   r   r   s       r   r   z$ORMCompileState.create_for_statement  s     "r   c                j    | j                   }||vr#|j                  |       |j                  |       y y r   )r   addappend)r   objcol_collectiondedupes       r   _append_dedupe_col_collectionz-ORMCompileState._append_dedupe_col_collection  s3    $$fJJsO!!#& r   c                <    |rdd}|S t        j                  |      S )Nc                "    |r|S t        | d      S )Nkey)getattr)colcol_names     r   namez7ORMCompileState._column_naming_convention.<locals>.name  s    #O"3..r   r   )r<   _column_naming_convention)r   label_stylelegacyr  s       r   r  z)ORMCompileState._column_naming_convention  s$     / K88EEr   c                    t        |      S r   )_column_descriptionsr   r   s     r   get_column_descriptionsz'ORMCompileState.get_column_descriptions  s    #I..r   c                   t         j                  j                  dh d||j                        \  }}d|v r5|d   }|j                  j                  j                  |j                  |      }|st        }n|j                  t              }|j                  r|j                  d|j                  i      }t        |j                  dd       rHt        |j                  j                        dkD  r&|j                  dd      |j                  d d	d
      }||d<   	 |j                  d   }	|	r|	j                   |d<   	 |s|j$                  r|j%                          ||fS # t"        $ r J d       w xY w)Nr   >   r^   ri   rh   r_   sa_top_level_orm_contextr  ri   r   
   compiled_cacheTz#excess depth for ORM loader options)r  _cache_disable_reasonclauseplugin_subjectmapperz0statement had 'orm' plugin but no plugin_subject)rU   r   r   r   rX   
merge_withr\   _orm_load_exec_optionsunionry   r  _compile_optionslenr   r   _propagate_attrsr  r   rw   )
r   r]   r   rY   r\   r[   r   rZ   ctxr  s
             r   r   z$ORMCompileState.orm_pre_session_exec  s    --DD" ((
	
( &)::#$>?C #		 < < G G%%'8! ! 6 1 7 78N O "" 1 7 7l556!
 I..FI..<<=B!%%&6=I "''*.2-  $-x 	A&778HIN +9+@+@x( 7 7 +++  	MLLL	Ms   E E+c           	        |j                   }|j                  j                  }|j                  dt        j
                        }	|j                  j                  r|S t	        |||||	||      }
t        j                  ||
      S )Nr   )
contextcompiledrW   r   rU   r   r   r   r   	instances)r   r]   r   rY   r\   r[   r   execution_contextrW   rZ   querycontexts              r   r   z'ORMCompileState.orm_setup_cursor_result)  s     #NN)22@@ ),,"L$E$E
 ((11M#
   66r   c                b    | j                   D cg c]  }t        |t              s| c}S c c}w )zreturn all _MapperEntity objects in the lead entities collection.

        Does **not** include entities that have been replaced by
        with_entities(), with_only_columns()

        )r   
isinstance_MapperEntity)r   ents     r   _lead_mapper_entitiesz%ORMCompileState._lead_mapper_entitiesM  s.      >>
Z]-KC
 	
 
s   ,,c           
        |j                   sz|j                  j                  | j                  vrW|j                  j	                         D ]9  }| j                  |t        t        j                  ||j                  |             ; yyy)a5  given MapperEntity or ORMColumnEntity, setup polymorphic loading
        if called for by the Mapper.

        As of #8168 in 2.0.0rc1, polymorphic adapters, which greatly increase
        the complexity of the query creation process, are not used at all
        except in the quasi-legacy cases of with_polymorphic referring to an
        alias and/or subquery. This would apply to concrete polymorphic
        loading, and joined inheritance where a subquery is
        passed to with_polymorphic (which is completely unnecessary in modern
        use).

        )equivalentsr   N)
is_aliased_classr  persist_selectabler   iterate_to_root"_mapper_loads_polymorphically_withr   r   WITH_POLYMORPHIC_ADAPTER_equivalent_columns)r   ext_infor   mps       r    _create_with_polymorphic_adapterz0ORMCompileState._create_with_polymorphic_adapterY  s     ))22--. oo557 	77'@@$&$:$:#-		. *r   c                    |j                   xs |gD ]?  }|| j                  |<   |j                         D ]  }|| j                  |j                  <    A y r   )_with_polymorphic_mappersr   r,  local_table)r   r  adapterm2ms        r   r-  z2ORMCompileState._mapper_loads_polymorphically_withv  s^    22>vh 	DB-4D&&r*'') D<C**1==9D	Dr   c                    t        d      )Nz0this method only works for ORMSelectCompileStater   )r   rX   r	  s      r   _create_entities_collectionz+ORMCompileState._create_entities_collection}  s    !>
 	
r   N)r   r   r   r   r   r   r   rm   )r  r;   r	  r   r   rM   )rp   rq   rr   r.   r   r   r   r   _has_mapper_entitiesr   r   r   r   r   r  r  r   r   propertyr'  r2  r-  r:  r   r   r   rm   rm   k  sm   #"2 #J %%55<<!!@@  ,+  //--//++  "0L,/ $ 		"3	" ,	" 		"
 	" 
	"' F*F48F	!F F / / W, W,r !7 !7F 	
 	
:D 
 
r   rm   c                  &    e Zd ZdZdZd Zd Zd Zy)DMLReturningColFilterzan adapter used for the DML RETURNING case.

    Has a subset of the interface used by
    :class:`.ORMAdapter` and is used for :class:`._QueryEntity`
    instances to set up their columns as used in RETURNING for a
    DML statement.

    )r  columns__weakref__c                    | |j                   |j                   ur|| _        n|| _        t        j                  | j                        x| _        | _        y r   )r5  r  r$   WeakPopulateDictadapt_check_presentr?  )r   target_mapperimmediate_dml_mappers      r   r   zDMLReturningColFilter.__init__  sU     ,))'334 /DK (DK&*&;&;$$'
 	
t|r   c                f    t        j                  |      D ]  }| j                  |      }||c S  y r   )sql_util_find_columnsrC  )r   r  	as_filterccc2s        r   __call__zDMLReturningColFilter.__call__  s;    ((- 	B))"-B~
	
 r   c                    | j                   }|j                  j                  |d       }|y |j                  j                  j                  |      S r   )r  _columntopropertyr   r5  ccorresponding_column)r   r  r  props       r   rC  z)DMLReturningColFilter.adapt_check_present  sH    ''++C6<!!##88==r   N)rp   rq   rr   r   r   r   rL  rC  r   r   r   r>  r>    s     5I
>r   r>  ormorm_from_statementc                      e Zd ZU dZdZded<   ded<   dZded<   dZdZdZ	dZ
eZeZe	 	 	 	 	 	 	 	 dd	       Zd
 Zd Zd Zy)ORMFromStatementCompileStateNFFromStatementstatement_containerz)Union[SelectBase, TextClause, UpdateBase]requested_statementzOptional[_DMLTableElement]	dml_tablec                   t        |t              sJ |!|j                  rt        j                  d      | j                  |       }d |_        |j                  j                  |_	        |x|_
        |_        |j                  x|_        }|j                  r|j                  |_        d|_        g |_        i |_        |j                  |_        |j                  r_t        |t*        j,                        rE|j.                  s9|j                  s-|j0                  t2        u r|j5                  t6              |_        n||_        |j;                  |j.                  s|j                  s|j0                  nt2        |j                        |_        t>        jA                  ||jB                  |j$                  d       |j                  jD                  |_#        |jI                  ||dd       |jJ                  r/|jJ                  D ]   }|jL                  s|jO                  |       " |jP                  r|jP                  D ]  \  }} ||        g |_)        g |_*        tW               |_,        g |_-        g |_.        d |_/        t        |j8                  t*        j`                        roi |_1        |j$                  D ]  }	|	je                  |        dx|_3        |_4        d|_5        |jR                  D ]   }
|jm                  |
d|jn                         " |S tq        tr        jt                  |j8                  |jv                        |_<        |S )NzThe ORM FromStatement construct only supports being invoked as the topmost statement, as it is only intended to define how result rows should be returned.Tis_current_entitiesF)r   r   )within_columns_clauseadd_to_result_map)adapt_on_names)=r$  rV  r   sa_excCompileError__new__r   r  r   r   rW  r   elementrX  r*   tablerY  r   r   r   r   r&   rP   _is_textual_label_styler8   set_label_styler9   r   r  r   _QueryEntityto_compile_state_raw_columnsr   r   r   r   r   r   _with_context_optionsr   r   setr   rc   _fallback_from_clausesorder_byr5   extra_criteria_entitiessetup_compile_state_ordered_columns_textual_ordered_columns_loose_column_name_matchingprocess_add_to_result_mapr   r   ADAPT_FROM_STATEMENT_adapt_on_names_from_obj_alias)r   rW  r   r   r   r   r   fnr  entityrO  s              r   r   z1ORMFromStatementCompileState.create_for_statement  s    -}==HNN%%=  {{3#  00HH 	# <ON 4#8/B/J/JJ 9&__DN$(D!%'"2CC ''9j&;&;<))$$&&*::&66.DN 'DN!%!?!? !,,Y5E5E &&%''"
 	%%,,NN $	 	& 	
 0@@NN$$*/	 	% 	
 ,,*88 4((--d34 44.DD C4  "!#!e"$&(#dnnj&;&;< ,.D(.. 1**401 H%(I 48H0))   *.&.&A&A ! ,  $7442BB$D  r   c                    |S r   r   )r   colscurrent_adapters      r   _adapt_col_listz,ORMFromStatementCompileState._adapt_col_listB      r   c                     y r   r   r   s    r   _get_current_adapterz1ORMFromStatementCompileState._get_current_adapterE  s    r   c                4   | j                   j                  j                  dd      }t        ||      }| j                  j
                  r-t        | j                        dk7  rt        j                  d      | j                  D ]  }|j                  | |        y)zused by BulkORMInsert (and Update / Delete?) to set up a handler
        for RETURNING to return ORM objects and expressions

        r  Nr   sCan't generate ORM query that includes multiple expressions at the same time as '*'; query for '*' alone if present)r   r  r   r>  r   r   r  r   r`  ra  !setup_dml_returning_compile_state)r   
dml_mapperrD  r6  rz  s        r   r  z>ORMFromStatementCompileState.setup_dml_returning_compile_stateH  s    
 77;;d
 (zB((c$...AQ.F%%J 
 nn 	DF44T7C	Dr   )rW  r   r   r   r   r   r   rU  )rp   rq   rr   rx  r;  r   rY  _has_orm_entitiesmulti_row_eager_loaderseager_adding_joinscompound_eager_adapterr   ro  eager_joinsr   r   r~  r  r  r   r   r   rU  rU    s    O &&BB,0I)0#!)K9 ( 	
 
& BDr   rU  c                  X    e Zd ZU dZdZej                  Zej                  Z	dZ
ded<   ded<   dej                  fdej                  fgej                   z   Zed	ej$                  fgz   Z	 d	 	 	 	 	 dd
Zd Zed        Zd Z fdZed        Zed        Zed        Zed        Z xZS )rV  a*  Core construct that represents a load of ORM objects from various
    :class:`.ReturnsRows` and other classes including:

    :class:`.Select`, :class:`.TextClause`, :class:`.TextualSelect`,
    :class:`.CompoundSelect`, :class`.Insert`, :class:`.Update`,
    and in theory, :class:`.Delete`.

    rS  N(Union[ExecutableReturnsRows, TextClause]rc  r   rw  rj  r  c           	     "   t        j                  |      D cg c])  }t        j                  t        j
                  || d      + c}| _        || _        |j                  | _        t        |      r|j                  nd | _
        || _        y c c}w )NT)apply_propagate_attrspost_inspect)r$   to_listr%   expectr'   ColumnsClauseRolerj  rc  r*   r,   rf  rw  )r   entitiesrc  rw  r&  s        r   r   zFromStatement.__init__{  s     ||H-
  ''&*!	
 nn$27$;G   	  /
s   .Bc                     | j                   | |fi |}|j                   }|r||_         |j                  |j                  fi |S )zprovide a fixed _compiler_dispatch method.

        This is roughly similar to using the sqlalchemy.ext.compiler
        ``@compiles`` extension.

        )_compile_state_factoryr   rW   rt  r   )r   r   r   rW   r   s        r   _compiler_dispatchz FromStatement._compiler_dispatch  sR     433D(IbI~~%%2H"x 7 7>2>>r   c                l    t        t        t        j                  |             j                  } ||       S )a@  Return a :term:`plugin-enabled` 'column descriptions' structure
        referring to the columns which are SELECTed by this statement.

        See the section :ref:`queryguide_inspection` for an overview
        of this feature.

        .. seealso::

            :ref:`queryguide_inspection` - ORM background

        )r   ORMSelectCompileStater<   get_plugin_classr  )r   meths     r   column_descriptionsz!FromStatement.column_descriptions  s3     !;#?#?#E

!
! 	 Dzr   c                    | S r   r   r   s    r   _ensure_disambiguated_namesz)FromStatement._ensure_disambiguated_names  r  r   c              +     K   t         j                  j                  d | j                  D              E d {    t	        |   di |E d {    y 7 7 w)Nc              3  4   K   | ]  }|j                     y wr   )_from_objectsr   rc  s     r   r   z-FromStatement.get_children.<locals>.<genexpr>  s      1
&-G!!1
   r   )	itertoolschainfrom_iterablerj  r   get_children)r   r   r   s     r   r  zFromStatement.get_children  sY     ??00 1
151B1B1
 
 	
 	
 7'-"---	
 	.s!   4AAAAAAc                .    | j                   j                  S r   )rc  _all_selected_columnsr   s    r   r  z#FromStatement._all_selected_columns  s    ||111r   c                \    t        | j                        r| j                  j                  S d S r   )r*   rc  _return_defaultsr   s    r   r  zFromStatement._return_defaults  s"    06t||0Dt||,,N$Nr   c                \    t        | j                        r| j                  j                  S d S r   )r*   rc  
_returningr   s    r   r  zFromStatement._returning  s"    *0*>t||&&HDHr   c                \    t        | j                        r| j                  j                  S d S r   )r+   rc  _inliner   s    r   r  zFromStatement._inline  s"    '7'Et||##O4Or   )T)r  z%Iterable[_ColumnsClauseArgument[Any]]rc  r  rw  r   )rp   rq   rr   r   __visit_name__rU  r   r  r   r  _for_update_argr   r>   dp_clauseelement_listdp_clauseelementr0   _executable_traverse_internals_traverse_internalsr   r   r   r  r<  r  r  r  r  r  r  r  r   r   s   @r   rV  rV  \  s0    *N3KK9NNO55 
*@@A	%667 	112
 /	.??@2  !%	/7/ :/ 	/,?"  ". 2 2 O O I I P Pr   rV  compound_selectc                      e Zd Zy)CompoundSelectCompileStateN)rp   rq   rr   r   r   r   r  r    s     	r   r  selectc                  T   e Zd ZdZeZdZdZdZdZ	dZ
dZdZdZdZdZe	 	 	 	 	 	 	 	 d"d       Zd Zd Zed        Zed        Zed	        Zed
        Zed        Zd Zd Zd Zd Zd Zd#dZd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*e+d        Z,e+d        Z-d  Z.d! Z/y)$r  r   NFc                   | j                  |       }||j                   }nd}|}| j                  j                  |j                        |_        |j
                  r9|j                         |_        t        j                         |j                  _        n||_        |j                  j                  |_        |j                  j                  |_        g |_        d|_        i |_        |j                  |_        |s|xj"                  dddz  c_        |j                  r@|j                  j$                  t&        u r$|j                  st(        |_        n't,        |_        n|j                  j$                  |_        |j.                  rA|j.                  D ci c]&  }|t0        j3                  ||j4                  g d      ( c}|_        |j9                  |j$                  |j                        |_        t0        j3                  ||j4                  |j                  d       |j                  j<                  |_        d|_         |jC                  |||d       |r|jD                  s|j.                  r|j.                  D ]]  }|jD                  D ]L  }|jF                  s|jI                  ||j6                  |   D 	cg c]  }	tK        |	tL              r|	 c}	       N _ |j                  jD                  D ]   }|jF                  s|jO                  |       " |jP                  r|jP                  D ]  \  }
} |
|        g |_)        g |_*        tW               |_,        i |_-        i |_.        g |_/        g |_0        |jc                  d |jd                  D              |_3        |ji                          tk        jl                  ||jn                  |fi | |S c c}w c c}	w )	z@compiler hook, we arrive here from compiler.visit_select() only.NTF)r   r   r[  r   )r   r   c              3  4   K   | ]  }|j                     y wr   )r   )r   infos     r   r   z=ORMSelectCompileState.create_for_statement.<locals>.<genexpr>  s      2
 $DOO2
r  )8rb  r   r   
safe_merger  r   _cloner   r$   immutabledictr   for_statementr   r   r   r   r   r   rf  LABEL_STYLE_LEGACY_ORMr9   r  r7   _memoized_select_entitiesrh  ri  rj  _memoized_entitiesr  r   r   r   eager_order_byr   r   r   'process_compile_state_replaced_entitiesr$  r%  r   rk  r   r   rl  r   r  ro  rc   rm  _normalize_froms	_from_objfrom_clauses_setup_for_generater<   r   r   )r   r   r   r   r   r   r   memoized_entitiesr   r&  ry  r  s               r   r   z*ORMSelectCompileState.create_for_statement  s    {{3#>>)HH$ &)%@%@%K%K&&&
	" .. %5$;$;$=D!7;7I7I7KD!!4$4D! .>>MM --EE 	# #%'"/@@   &+(,%   ''%%226LL%%#A #@ #44AAD55 %>>
' & "<#@#@%22(-	 $A $ 
'D#  "&!?!?""D$?$?"
 	%%))NN $	 	& 	
 -==KK $$*/	 	% 	
 **99 ";;!,:: C,,CC  ,0+B+B$5,"$' $.c=#A	 !$	  ,,:: 4((--d34 11+AA C4  "!#!e')$"$&(# !11 2
(8(B(B2
 
 	  "T4>>8BrB}
'bs   +O7Oc                   t        d       t        d| j                          | j                  D ]  }t        |t              rm|d   dk(  ret        dt        j                  |d                 t        d| j                  |           t        d| j                  |   j                          t        |t              s|d   dk(  st        d	t        j                  |d                 t        d| j                  |            y )
Nz5
---------------------------------------------------
zcurrent path: r   loaderz
Loader:           r   z    path_with_polymorphicz
With Polymorphic: )printr   r   r$  r   r   coerce__dict__)r   r  s     r   _dump_option_structz)ORMSelectCompileState._dump_option_struct  s    GHt00123?? 	5C#u%#a&H*<,\-@-@Q-H,IJKT__S1234T__S1::;<=C'CF6M,M,\-@-@Q-H,IJKT__S1234	5r   c                l	   | j                   }d | _        d| _        | j                  j                  r| j                          |j                  D ]8  }|j                  s| j                  |j                  | j                  |          : |j                  r&| j                  |j                  | j                         | j                         |j                  r6|j                  | _        r#t        fd| j                  D              | _        r*|j                  dvr| j                  |j                        n|j                  | _        |j"                  r#t        fd|j"                  D              | _        r=|j$                  dvr/| j                  t'        j(                  |j$                              n|j$                  xs d | _        | j,                  r9| j.                  d   j0                  }|j3                  | j,                        | _        |j4                  r"| j                  |j4                        | _        nd| _        |j8                  | _        |j<                  r5t        t'        j(                  d |j<                  D                    | _        nT|j@                  5t        t'        j(                  d |j@                  D                    | _!        n|jD                  sd| _        |jF                  | _#        | j                  jH                  r-tK        | j                        d	k7  rtM        jN                  d
      | j                  D ]  }|jQ                  |         | jR                  D ]  }|d   } || g|d	d     | j                  jT                  r| jW                          | jX                  s2| j                  jZ                  rJ d       tM        j\                  d      | j.                  st_        | j`                        | _        | j                   du rd | _        | jb                  r.| jd                  r"| jf                  r| ji                         | _        n| jk                         | _        | jl                  r6| jo                         }|#| j                  jq                  d|i      | _        y y y )Nr   c              3  0   K   | ]  } |d         ywTNr   r   critr}  s     r   r   z<ORMSelectCompileState._setup_for_generate.<locals>.<genexpr>  s       - $D$/-s   NFc              3  8   K   | ]  }r	 |d       n|  ywr  r   r  s     r   r   z<ORMSelectCompileState._setup_for_generate.<locals>.<genexpr>  s'      * 0?d+DH*s   r   c              3  N   K   | ]  }|t        j                  |      nd   y wr   rG  surface_selectablesr   ss     r   r   z<ORMSelectCompileState._setup_for_generate.<locals>.<genexpr>  ,      & 89}H003$N&   #%c              3  N   K   | ]  }|t        j                  |      nd   y wr   r  r  s     r   r   z<ORMSelectCompileState._setup_for_generate.<locals>.<genexpr>  r  r  r   r   r  Fz,no columns were included in _only_load_propsz4Query contains no columns with which to SELECT from.
deepentity)9r   r   _join_entitiesr   r   _set_select_from_aliasr  _setup_joins_joinr  r   r  _where_criteriar   _order_by_clausesr~  rn  _having_criteria_group_by_clausesr$   flatten_iteratorgroup_byr  r  _target_adaptercopy_and_process_distinct_ondistinct_on	_distinctdistinct
_correlate	correlate_correlate_exceptcorrelate_except_auto_correlater  r   r  r`  ra  rp  rc   r   _adjust_for_extra_criteriar   r   InvalidRequestErrorlistrm  r  r  _should_nest_selectable_compound_eager_statement_simple_statementr  _mapper_zero	_annotate)	r   rX   r  r6  rz  recstrategyezeror}  s	           @r   r  z)ORMSelectCompileState._setup_for_generate  s=   %% //'')!&!@!@ 	 --

%22++,=>	 JJu))4>>:335  #(#8#8D ', - $ 4 4- ($ 5#:#:-#O   !8!8/J(( 	 !!$) *!22* %D! 5#:#:-#O   %%e&=&=> ((0D 	 ''*::G")":":4;N;N"OD#33""O D  "D #%% &"--& DN $$0$)%% &"44& %D! &&$DN  %44((c$...AQ.F%%J  nn 	-F&&t,	- ** 	%C1vHT$CG$	% 33++-####44LLL,,F     $T%@%@ AD==E! DM (('',,!;;=DN!335DN%%'E  "&!9!9!5)" ! r   c                    | j                  |       }g |_        d|_        i |_        |j	                  |j
                  |      |_        t        j                  ||j                  |j                  d       |S )a  Creates a partial ORMSelectCompileState that includes
        the full collection of _MapperEntity and other _QueryEntity objects.

        Supports a few remaining use cases that are pre-compilation
        but still need to gather some of the column  / adaption information.

        NTr[  )
rb  r   r   r   r  rf  r   rh  ri  rj  )r   rX   r	  r   s       r   r:  z1ORMSelectCompileState._create_entities_collection(  sv     {{3#%'"!%!?!?"
 	%%%$$dnn$ 	& 	
 r   c                2    |j                   }t        |d       S r   )r  _determine_last_joined_entity)r   r   setup_joinss      r   determine_last_joined_entityz2ORMSelectCompileState.determine_last_joined_entityB  s    ,,,[$??r   c              #  J  K   |j                   D ]  }|j                  rhd|j                  v rZ|j                  d   }|j                  s!|j                  st        |g      E d {    Yt        |j                        E d {    wt        |g      E d {     y 7 :7 7 w)Nentity_namespace)rj  is_selectable_annotations	is_mapperr*  r-   _all_column_expressions)r   r   rc  enss       r   all_selected_columnsz*ORMSelectCompileState.all_selected_columnsH  s      -- 	8G%%&'*>*>>**+=>}}S-A-A0';;;01L1LMMM,gY777	8 <M7s6   A B#"B#B# BB#B!B#B#!B#c                    | j                  t        j                  j                  d |j                  D                    S )Nc              3     K   | ]<  }d |j                   vr|j                  n|j                   d    j                         g > yw)parententityN)r
  r  __clause_element__r  s     r   r   zAORMSelectCompileState.get_columns_clause_froms.<locals>.<genexpr>Z  sV      *  &W-A-AA ))  ,,*,,.*s   AA)r  r  r  r  rj  r  s     r   get_columns_clause_fromsz.ORMSelectCompileState.get_columns_clause_fromsW  s<    ##OO)) *  )55* 
 	
r   c                   t        j                  t        j                  ||      }t	        |j
                  |      }|j                  j                  |j                  |j                  |j                  |j                         |S )N)r  )r   rk  r   r  )r%   r  r'   ReturnsRowsRolerV  rj  r  updater   rk  r   r  )r   r   from_statementstmts       r   r  z$ORMSelectCompileState.from_statementh  sw    "))!!"+
 Y33^D#11"+"A"A(;;&77	 	 	
 r   c                    | j                   }| j                  j                  sJ t        |j                        dk(  sJ | j                  |j                  d         }|r| xj                  ddiz  c_        || _        yy) used only for legacy Query casesr   r   r   FN)r   r   r   r  r  _get_select_from_alias_from_objrx  )r   rX   r6  s      r   r  z,ORMSelectCompileState._set_select_from_aliasz  su     %%##3335??#q((66uq7IJ  %:E$BB #*D  r   c                   |}d|j                   v r|j                   d   }t        |d      r-|j                  st        j                  d      |j
                  S t        |j                  t        j                  j                        rF| j                         }||j                  u sJ t        t        j                  |j                  |      S y)r  r  r  zPA selectable (FromClause) instance is expected when the base alias is being set.r)  N)r
  hasattrr*  r`  ArgumentError_adapterr$  r   r#   AliasedReturnsRows_all_equivsr   r   LEGACY_SELECT_FROM_ALIAS)r   from_objr  equivss       r   r  z5ORMSelectCompileState._get_select_from_alias_from_obj  s     T...$$^4D4"((**A 
 }}$)J)JK%%'F4??**&88"  r   c                4    | j                   d   j                  S )z8return the Mapper associated with the first QueryEntity.r   )r   r  r   s    r   r  z"ORMSelectCompileState._mapper_zero  s    ~~a '''r   c                    | j                   D ]!  }d|j                  v s|j                  d   c S  | j                  D ]  }|j                  s|j                  c S  y)zReturn the 'entity' (mapper or AliasedClass) associated
        with the first QueryEntity, or alternatively the 'select from'
        entity if specified.r  N)r  r
  r   entity_zero)r   r&  qents      r   _entity_zeroz"ORMSelectCompileState._entity_zero  sg    
 $$ 	8C!1!11''77	8 NN 	(D'''	( r   c                    | j                   | j                  gk7  rt        j                  d|z        | j                  j                  S )Nz4%s() can only be used against a single mapped class.)r   r   r`  r  r(  )r   methnames     r   _only_full_mapper_zeroz,ORMSelectCompileState._only_full_mapper_zero  sK    >>d2233,,)+34  ##///r   c                    t        | j                        dkD  rt        j                  |xs d      | j	                         S )Nr   z8This operation requires a Query against a single mapper.)r  r   r`  r  r*  )r   	rationales     r   _only_entity_zeroz'ORMSelectCompileState._only_entity_zero  sD    t~~",, ++ 
   ""r   c                   i }| j                   j                         D ]L  }|D cg c]  }t        |t              r| c}D ]'  }|j	                  |j
                  j                         ) N | j                  D cg c]  }t        |t              s| c}D ]'  }|j	                  |j
                  j                         ) |S c c}w c c}w r   )r  valuesr$  r%  r  r  r/  r   )r   r%  r  r&  s       r   r"  z!ORMSelectCompileState._all_equivs  s    !%!8!8!?!?!A 	> -c=1  >
 cjj<<=>	>  >>
Z]-KC
 	:C MM#**889	: 
s   C:CCc           	     f   | j                   rj| j                   D cg c]4  }t        |t        j                  j                        r|j
                  n|6 }}t        j                  | j                  |      }ng }d } | j                  | j                  |D cg c]  }|| j                  vs| c}z   | j                  | j                  | j                  | j                  | j                   f| j                  | j                   j"                  | j                   j$                  | j&                  | j(                  d| j*                  }|j-                         }| j/                         }t1        t2        j4                  ||      | _        t9        j:                  |g| j<                  z    }| j                  |_        | j                  '| j                  j@                  | j                  |_        |}| jB                  jE                         D ]#  }	t        jF                  ||	|	jH                        }% |jJ                  jM                  ||       |r6 |j                   jL                  |g| j6                  jO                  |         |j                   jL                  |g| jP                    |S c c}w c c}w )N
for_updatehintsstatement_hintsr  r  r  ))rn  r$  r#   elements_label_referencerc  rG   expand_column_list_from_order_byr   _select_statementr   r  r  r  r  r  r   _hints_statement_hintsr  r  _select_argsaliasr"  r   r   COMPOUND_EAGER_STATEMENTr  r!   r  r   rf  ofr  r2  splice_joinsstop_onselect_fromnon_generativer  r  )
r   elemunwrapped_order_byorder_by_col_exprrO  innerr%  r   from_clause
eager_joins
             r   r  z/ORMSelectCompileState._compound_eager_statement  s   
 == !MM"  "$(E(EF LL" " !) I I$$&8! !#!% '&&  +LQq8K8K/KqLM  !!MM
 ++''.. 11BBnn!22
 
  !!#&944e'
# MMg...
	 "&!1!1	   ,$$''/(,(<(<I%**113 	J #//Z););K		 	,,YD-I--,,==& 	*	)))Jd6I6IJ["( Ms   9J)J.
*J.
c           	     4    | j                   | j                  | j                  z   t        | j                        t        | j
                  j                               z   | j                  | j                  | j                  | j                  f| j                  | j                  j                  | j                  j                  | j                  | j                   d| j"                  }| j$                  r' |j                  j&                  |g| j$                    |S )Nr4  )r;  r   r   r   r  r  r2  r  r  r  rn  r  r   r<  r=  r  r  r>  r  rE  )r   r   s     r   r  z'ORMSelectCompileState._simple_statement2  s    *D**  4#9#99$##$uT-=-=-D-D-F'GG  !!MM
 ++''.. 11BBnn!22
 
	 -I--iN$:M:MNr   c                z   t        j                  |||      }|r||_        |r||_        |r|xj                  t        |      z  c_        |r |j                  j                  |g|  n|r|j                  j                  |       |r|xj                  t        |      z  c_        ||_	        ||_
        ||_        ||_        ||_        ||_        |r||_        |r||_        ||_        |r||_        |	r|	|_        |
r |j(                  j                  |g|
  | |j*                  j                  |g|  |S )N)rj  r  rf  )r:   _create_raw_selectr  r  r  r   r  rE  r  _limit_clause_offset_clause_fetch_clause_fetch_clause_options_independent_ctes_independent_ctes_opts	_prefixes	_suffixesr  r<  r=  r  r  )r   raw_columnsr$  where_criteriahaving_criteriar  rn  r5  r6  r7  r  r  limit_clauseoffset_clausefetch_clausefetch_clause_optionsr  r  prefixessuffixesr  independent_ctesindependent_ctes_optsr   s                           r   r;  z'ORMSelectCompileState._select_statementF  sK   2 --$$
	 (6I%)8I&''5?:'-I--iF+F--i8''5?:'".	#0	 ".	*>	'&6	#+@	("*I"*I$.	!$I)8I&.I..yE9E'5I&&55, r   c                h   d|j                   v r>|j                   d   }| j                  j                  |d       }|r|j                  |      S t	        |t
        j                        r|}nt        |d      r|j                  }ny | j                  j                  |d       }|r|j                  |      S y )Nr  rd  )	r
  r   r   adapt_clauser$  r&   
FromClauser  rd  )r   rc  searchr?  s       r   _adapt_polymorphic_elementz0ORMSelectCompileState._adapt_polymorphic_element  s    W111)).9F..2264@E))'22gz445FWg&]]F**..vt<%%g.. r   c                B    |r|D cg c]  } ||d       c}S |S c c}w )NTr   )r   r|  r}  os       r   r~  z%ORMSelectCompileState._adapt_col_list  s'    6:;OAt,;;K <s   c                    g | j                   r'j                  d| j                   j                  f       | j                  rj                  d| j                  f       sy fd}|S )NTFc                <    fd}t        j                  | i |      S )Nc                |    d| j                   v xs d| j                   v }D ]  \  }}|s|s ||       }||c S  y )N
_orm_adaptr  )r
  )rF  is_orm_adaptalways_adaptr6  eadapterss        r   replacezRORMSelectCompileState._get_current_adapter.<locals>._adapt_clause.<locals>.replace  sW     D$5$55 ;%):)::  .6 %)L'#|#DM=#$H	%r   )r(   replacement_traverse)r  rI  rq  rp  s      r   _adapt_clausezAORMSelectCompileState._get_current_adapter.<locals>._adapt_clause  s    	% 00WEEr   )rx  r   rq  r   rf  )r   rs  rp  s     @r   r  z*ORMSelectCompileState._get_current_adapter  sl     OO((00 %%OOUD$C$CDE	F" r   c           
        |D ]  \  }}}}|d   }|d   }t        |      }|t        |      }t        |t        j                        r|t	        j
                  d      |}d }nd|j                  v r|j                  d   }|-|j                  s!t        |d      st	        j                  d      d }	t        |t        j                        rt        |dd       }	||	r|	}n|j                  }	 |j                  }|j                  }|j                  }t        |t        j                         s|}|||j"                  f| j$                  v rG|b||ur^|j                  j'                  dd       |ur@t	        j
                  d	|j                  j'                  d|      d
|      |d }|}nd x}}| j)                  |||||||        y # t        $ r}
t	        j                  d|z        |
d }
~
ww xY w)NisouterfullzUNo 'on clause' argument may be passed when joining to a relationship path as a targetr  r  z9Expected mapped entity or selectable/table as join target_of_typez0Join target %s does not refer to a mapped entityzexplicit from clause z4 does not match left side of relationship attribute )r"   r$  r   PropComparatorr`  r  r
  r	  r  r  r  r<  rz  AttributeError_parententityr   QueryableAttributer  _already_joined_edgesr   _join_left_to_right)r   argsentities_collectionrightonclausefrom_flagsru  rv  of_typeerrleftrQ  s                r   r  zORMSelectCompileState._join  sE   -1 \	)E8UEI&G=DENE#"8,%!:!:;' 44= 
 !5#5#55**>:**75(3K ..: 
 G(J$=$=> "(J== ' ( 1 1'$)LLE  --((!(J,I,IJ#H %*d.H.HH$T)!..22>4H#$ %88 !& 2 2 6 6~u M (	  " #"t $$#i\	V  . '"("6"6!027!8# $'''s   -G			G0G++G0c           	     N   ||J | j                  ||||      \  }}}	n| j                  ||      \  }}	||u rt        j                  d|d|d      | j	                  ||||      \  }
}}|
j
                  s| j                  |
      }nd}|J| j                  |   }| j                  d| t        ||||||      gz   | j                  |dz   d z   | _        y|	%t        ||	   t              sJ ||	   j                  }n|}| j                  t        ||
||||      gz   | _        y)zgiven raw "left", "right", "onclause" parameters consumed from
        a particular key within _join(), add a real ORMJoin object to
        our _from_obj list (or augment an existing one)

        NzCan't construct a join from z to z, they are the same entityr   )ru  rv  _extra_criteriar   )"_join_determine_implicit_left_side_join_place_explicit_left_sider`  r   _join_check_and_adapt_right_sider	  _get_extra_criteriar  r   r$  r%  r   )r   r  r  r  r  rQ  	outerjoinrv  replace_from_obj_indexuse_entity_indexr_infoextra_criterialeft_clauses                r   r}  z)ORMSelectCompileState._join_left_to_right:  s     < <
 77#T5(	&  334GN&  5=,,)-u6  #'"G"G%4#
x ##!55f=NN!- ++,BCK !!"9#9:#  )!(6	
 ##$:Q$>$@AB    + "'(89=  22BCNN" $ 1 1%$2	5 	!Dr   c                z   t        |      }dx}}| j                  rt        j                  | j                  |j                  |      }t        |      dk(  r|d   }| j                  |   }nMt        |      dkD  rt        j                  d      t        j                  d|d      |ri }	t        |      D ]W  \  }
}|j                  }|t        |      }||u r%t        |t              r|
|f|	|j                  <   Gd|f|	|j                  <   Y t        |	j                               }t        j                  ||j                  |      }t        |      dk(  r|	||d         \  }}nQt        |      dkD  rt        j                  d      t        j                  d|d      t        j                  d      |||fS )zWhen join conditions don't express the left side explicitly,
        determine if an existing FROM or entity in this query
        can serve as the left hand side.

        Nr   r   a  Can't determine which FROM clause to join from, there are multiple FROMS which can join to this entity. Please use the .select_from() method to establish an explicit left side, as well as providing an explicit ON clause if not present already to help resolve the ambiguity.zDon't know how to join to z. Please use the .select_from() method to establish an explicit left side, as well as providing an explicit ON clause if not present already to help resolve the ambiguity.zgNo entities to join from; please use select_from() to establish the left entity/selectable of this join)r"   r  rG  find_left_clause_to_join_fromr   r  r`  r  	enumerateentity_zero_or_selectabler$  r%  r  keys)r   r  r  r  r  r  r  r  indexes	potentialentity_indexr&  rz  ent_infoall_clausess                  r   r  z8ORMSelectCompileState._join_determine_implicit_left_side  s   & 488!1 <<!!6#4#4hG 7|q )0&(()?@W!005  00
 9>	@  ! I%./B%C D!c66>"6?v%
 c=11=v0FIcnn-6:F^Ih112D  y~~/0K<<V..G 7|q )2;wqz3J)K& $W!005  00
 9>	@  ,,1  +-===r   c                   dx}}t        |      }| j                  rTt        j                  | j                  |j                        }t        |      dkD  rt        j                  d      |r|d   }|J|rHt        |d      r<t        |      D ].  \  }}t        |t              s|j                  |      s)|} ||fS  ||fS )zWhen join conditions express a left side explicitly, determine
        where in our existing list of FROM clauses we should join towards,
        or if we need to make a new join, and if so is it from one of our
        existing entities.

        Nr   zrCan't identify which entity in which to assign the left side of this join.   Please use a more specific ON clause.r   r  )r"   r  rG  #find_left_clause_that_matches_givenr   r  r`  r  r  r  r$  r%  corresponds_to)	r   r  r  r  r  l_infor  idxr&  s	            r   r  z4ORMSelectCompileState._join_place_explicit_left_side  s    2 598!1BB!!6#4#4G 7|a00!  )0& #*#)%&9: S c=1c6H6H6N'*$%'777 &'777r   c           	        t        |      }t        |      }d}t        |dd      }|r|j                  s$t        |j                  t
        j                        re| j                  xs |j                  gD ]G  }	t        j                  |j                  |	      s$t        j                  |	|j                        sEd} n |r:|j                  |j                  u r"t        j                  d|j                  z        t        |dd      |j                  t        |dd      }}
}|r8|r6|j                  |j                        st        j                  d|d|      t        |d      r| xj                   |fz  c_        d}|j"                  r|r|j                  }|
j$                  r| j'                         }| ||d      }n|r|
j)                  |j                        s:t        j                  d	|
j*                  d
|j                  j*                  d      t        |
t
        j,                        r&t/        j0                  t2        j4                  |
      }
d}t7        ||
      }t9        j:                  d|z  dd       |xr | xr |}|s+|r)t7        |d      }d}t9        j<                  d|z  d       |rF|sJ t?        t@        jB                  t        |      |jD                        }| jG                  ||       n[|j"                  sO|sM|jH                  rA| jG                  |t?        t@        jJ                  ||j                  |jD                               t        |t
        jL                        r| j'                         }|r	 ||d      }|r#| xjN                  |||jP                  ffz  c_'        t        |      ||fS )ztransform the "right" side of the join as well as the onclause
        according to polymorphic mapping translations, aliasing on the query
        or on the join, special cases where the right and left side have
        overlapping tables.

        Fr  NTz*Can't join table/selectable '%s' to itselfr*  zJoin target z9 does not correspond to the right side of join condition zSelectable 'z' is not derived from ''zAn alias is being generated automatically against joined entity %s for raw clauseelement, which is deprecated and will be removed in a later release. Use the aliased() construct explicitly, see the linked example.z1.4xaj1)code)flatzAn alias is being generated automatically against joined entity %s due to overlapping tables.  This is a legacy pattern which may be deprecated in a later release.  Use the aliased(<entity>, flat=True) construct explicitly, see the linked example.xaj2r  )r   r)  ))r"   r  with_polymorphicr$  r+  r&   Joinr  r   rG  selectables_overlapr`  r  common_parentr  r  r  is_clause_element_is_lateralr  is_derived_fromdescriptionrP   r%   r  r'   FromClauseRoler   r$   warn_deprecatedwarnr   r    DEPRECATED_JOIN_ADAPT_RIGHT_SIDEr/  r-  #_has_aliased_polymorphic_fromclause#WITH_POLYMORPHIC_ADAPTER_RIGHT_JOINClauseElementr|  r  )r   r  r  r  rQ  r  r  overlapright_mapperr$  right_selectableright_is_aliasedneed_adapterr}  aliased_entityr6  s                   r   r  z6ORMSelectCompileState._join_check_and_adapt_right_sideI  s    vx6 )),99:??K --D&2C2C1D //%%x22f// #G v((F,=,==,,<##$  FHd+F.6 )9&  ..t{{;,,9>J  68$F9, ###{{++ #'";";"=". ,E48E (77 33 !44 -88(;;GG  .
0E0EF'0'7'7,,.>($ $(L %\3CD$$D
 ## 	 &J.>*>J7 !T2ELII@
 COO     @@(<<G 33L'J(($@@ 33#GG +66 , @ @	 h
 8 89"779O*8T: &&D%+B*DD&u~uh..r   c                   | j                   j                  | j                   j                  | j                  | j                  | j                   j
                  | j                   j                  | j                  xs d | j                   j                  | j                   j                  | j                   j                  | j                   j                  dS )N)rZ  r[  r  r  r^  r_  r  r\  r]  r`  ra  )r   rO  rP  r  r  rU  rV  r  rQ  rR  rS  rT  r   s    r   r>  z"ORMSelectCompileState._select_args	  s     !11??!22AA++--77--77- 11??%%;; $ 5 5 G G%%<<
 	
r   c                    | j                   }|j                  d      d uxsO |j                  d      d uxs: |j                  dd      xs& |j                  dd      xs |j                  dd      S )NrZ  r[  r  Fr  r   r  )r>  r   )r   kwargss     r   r  z-ORMSelectCompileState._should_nest_selectable	  sv    ""JJ~&d2 -zz/*$6-zz*e,- zz-,- zz*e,	
r   c                     dj                   f j                  v r.t         fd j                  dj                   f   D              S y)Nadditional_entity_criteriac              3     K   | ]@  }|j                   s|j                  u r$|j                        r|j                         B y wr   )include_aliasesrz  _should_include_resolve_where_criteria)r   aer0  r   s     r   r   z<ORMSelectCompileState._get_extra_criteria.<locals>.<genexpr>*	  sH       &&"))x*?&&t, **84s   AA	r   )r  r   r   )r   r0  s   ``r   r  z)ORMSelectCompileState._get_extra_criteria%	  sZ    (OO
 ##$  0018??C   r   c                   | j                   D ]  }|j                  j                  dd      }|s"|j                  j                  d|j                  f| j
                  v sS|| j                  vsb||j                  r|j                  ndf| j                  |<    t        | j                  j                               }|D ]  \  }}|| j                  v r|j                  j                  }| j                  j                  rg }n| j                  |      }|||fz  }| j                         }|D ]N  }|r|j!                  |      }|r!t#        j$                  |ddi      } ||d      }| xj&                  |fz  c_        P  y)a  Apply extra criteria filtering.

        For all distinct single-table-inheritance mappers represented in
        the columns clause of this query, as well as the "select from entity",
        add criterion to the WHERE
        clause of the given QueryContext such that only the appropriate
        subtypes are selected from the total results.

        Additionally, add WHERE criteria originating from LoaderCriteriaOptions
        associated with the global context.

        r  Nr  rl  TF)r  r
  r   r  _single_table_criterionr   ro  r*  r   rl  r2  r  r   r   r  r  traverserG  _deep_annotater  )	r   
fromclauser0  re  r6  single_critr  r}  r  s	            r   r  z0ORMSelectCompileState._adjust_for_extra_criteria5	  s    ++ 	J!..22>4HH OO;;G4hooF--. D$@$@@ )1)B)BH%%:,,X6	" T1188:;!' 	0Hg4..."//AAK##66-/*-1-E-Eh-O*&*{n<*"779O2 0"++D1D"#224,9MND*47D$$/$0	0r   )r   r   r   r   r   r   r   r  r   )0rp   rq   rr   r|  r   r  rx  r;  r  r  r  r  r  r  r  r  r   r   r  r  r:  r  r  r  r  r  r  r  r*  r-  r0  r"  r  r  r;  rf  r~  r  r  r}  r  r  r  r<  r>  r  r  r  r   r   r   r  r    s   $O #!IOd/d (d 	d
 
d dL
5KZ  2 @ @
 8 8 
 
   "+8(0#"Yv(KZ/$.`]~aFh>T@8D{/z 
 
& 
 
 70r   r  c                j   |t         j                  | |      }|}|j                  D cg c]  }||j                  f c}D cg c][  \  }}|j                  |j
                  t        |dd      |j                  |j                  |j                  st        |dd       nd d] }}}|S c c}w c c}}w )N)r	  r*  Frz  )r  typealiasedexprrz  )	r  r:  r   r(  _label_namer  r  r  r  )query_or_select_stmtrW   r	  r  _entr&  insp_entds           r   r  r  o	  s    
 -II  J 
 C 25
)-T4##$
	 C OOHHx);UCHH ??. 22 (D1 	
	A 	" H	
	s   B*A B/c                    | }|j                   r|j                  }||S |j                  r7d|j                  d   j                  v r|j                  d   j                  d   S t	        |      S )Nr  r   )r  _last_joined_entityr  r
  _entity_from_pre_ent_zero)query_or_augmented_selectr   r  s      r   _legacy_filter_by_entity_zeror  	  sl     %D"66*&&~~.DNN1,=,J,JJ~~a --n==$T**r   c                    | }|j                   sy |j                   d   }d|j                  v r|j                  d   S t        |t              r|j                  S d|j                  v r|j                  d   S |S )Nr   r  bundle)rj  r
  r$  r   rz  )r  r   r&  s      r   r  r  	  s}     %D


A
C)))//	C-	.zz	S%%	%))
r   c                l    | sy | d   \  }}}}t        |t        j                        r|j                  S |S )N)r$  r   r{  rz  )r  r(  targetr  r  r  s         r   r  r  	  sA     '22$VXue%% }}r   c                      e Zd ZU dZdZded<   dZdZdZded<   ded	<   d
ed<   ded<   ddZ		 	 	 	 	 	 ddZ
d Zed        Zy)rh  z:represent an entity column returned within a Query result.r   r   supports_single_entityFzOptional[str]r  z!Union[Type[Any], TypeEngine[Any]]r  z.Union[_InternalEntityType, ColumnElement[Any]]r  zOptional[_InternalEntityType]r(  c                    t               r   r   r   rW   s     r   rp  z _QueryEntity.setup_compile_state	  r   r   c                    t               r   r   r   rW   r6  s      r   r  z._QueryEntity.setup_dml_returning_compile_state	  s    
 "##r   c                    t               r   r   )r   r  r   s      r   row_processorz_QueryEntity.row_processor	  r   r   c                   t        |      D ]4  \  }}|j                  r7|j                  r| j                  ||j                  ||       >|j                  }|j
                  r|j                  rAd|j                  v rt        ||||       t        j                  ||j                  |||       |j                  j                  dd      rt        ||||       |j                  r$t        j                  ||j                  |||       t        j                  ||g|||       |j                  s(t        |||       7 |S )Nr  r  F)r  _is_lambda_element_is_sequenceri  	_resolvedr  r	  r
  r%  _ColumnEntity_for_columns_select_iterabler   _BundleEntity_is_clause_list	is_bundle)r   rW   r  r  r\  r  rz  s          r   ri  z_QueryEntity.to_compile_state	  sX    %X. 9	JKC((&&((%((++	 #--F''''%)<)<<%)"//	 &22)"33// **..x?%)"//	  // &22)"33// &22)#H// !!mV5HIs9	Jv #"r   N)rW   rm   r   NonerW   rm   r6  r>  r   r  )rp   rq   rr   r   r   r   _non_hashable_value_null_column_typeuse_id_for_hashrp  r  r  r   ri  r   r   r   rh  rh  	  sx    DI  O
++
88..$$&$ '$ 
	$$ ># >#r   rh  c                      e Zd ZU dZdZded<   ded<   ded<   ded	<   d
ed<   ded<   d ZdZdZdZ	e
d        Ze
d        Zd Zd Zd Z	 	 	 	 	 	 ddZd Zy)r%  z mapper/class/AliasedClass entity)
r  r  r(  r*  path_extra_entitiesr  r4  r   _polymorphic_discriminatorr?   r  zMapper[Any]r  r(  r   r*  r   r  strr  c                   |j                  |        |r!|j                  | |_        d|_        d|_        |j                  d   }|j
                   |x}| _        |j                  }|| _        |j                  x| _	        }| j                  f| _
        |j                  r|j                  | _        n|j                  j                  | _        |j                  | _        |j                   | _        |j$                  | _        |j&                  | _        |j*                  | _        |j.                  r|j1                  || j$                         y y )NTr  )r   r   r;  r  r
  _post_inspectr(  rz  r  r  r  r*  r  r  class_rp   r   r  r   with_polymorphic_mappersr4  polymorphic_onr   _should_select_with_poly_adapterr2  )r   rW   rz  r  r\  r0  r  s          r   r   z_MapperEntity.__init__7
  s    	""4(,,404-15M..2M+$$^4&,,4#	'.f $		|$$'}}D%}}55D ( 9 9++	"--)1)J)J&*2*A*A'22::$// 3r   Tc                .    | j                   j                  S r   )r  r  r   s    r   r  z_MapperEntity.typea
  s    {{!!!r   c                    | j                   S r   )r(  r   s    r   r  z'_MapperEntity.entity_zero_or_selectablee
  s    r   c                .    t        | j                  |      S r   )r   r(  r   rz  s     r   r  z_MapperEntity.corresponds_toi
  s    %d&6&6??r   c                *   d }| j                   s3|j                  r=|j                  j                  | j                  d       }n| j                  j
                  }|r-|j                  r|j                  |j                        }|S |}|S |j                  }|S r   )r*  r   r   r  r(  r   rx  wrap)r   rW   r6  rets       r   _get_entity_clausesz!_MapperEntity._get_entity_clausesl
  s    $$22'==AAKK &&//G,,ll=#@#@A 
	  
  //C
r   c                   |j                   }| j                  |      }|j                  r|r|j                  |j                        }n|s|j                  }|j                  | u r#|j
                  j                  }|j                  }nd x}}t        j                  | | j                  ||| j                  |||| j                  	      }|| j                  | j                  fS )N)only_load_propsrb   polymorphic_discriminator)rW   r	  r  r  r   r   r   rb   r   _instance_processorr  r  r  r  r  )r   r  r   rW   r6  r  rb   	_instances           r   r  z_MapperEntity.row_processor
  s    --**=9//Gll=#G#GHG#::G((D0+;;LLO#11M.22Om//KKII+'&*&E&E

	 $**D,@,@@@r   c                    t        j                  || j                  | | j                  ||j                  | j
                  |j                  j                  | j                  	       y )Nr  r  r  )	r   _setup_entity_queryr  r  r   r4  r   r   r  r  s      r   r  z/_MapperEntity.setup_dml_returning_compile_state
  sS    
 	##KKII))!;;)99JJ&*&E&E
	
r   c                   | j                  |      }| j                  j                  }|d| j                  f|j                  v r5| j                  }||j
                  r|j                  nd f|j                  |<   t        j                  || j                  | | j                  ||j                  | j                  |j                  j                  | j                  	       |j                   j#                  | j$                         y )Nr  r  )r	  r  r  r   r(  r*  r   ro  r   r  r  r   r4  r   r   r  rm  r   r   )r   rW   r6  single_table_critr0  s        r   rp  z!_MapperEntity.setup_compile_state
  s    **=9 KK??),dkk:../ ''H%-%>%>!!D?M11(;
 	##KKII))!;;)99JJ&*&E&E
	
 	,,33DOODr   Nr  )rp   rq   rr   r   r   r   r   r  r  r  r<  r  r  r  r	  r  r  rp  r   r   r   r%  r%   
  s    *I $$
#J "O" "    @*A:
&
 '
 
	
"Er   r%  c                      e Zd ZU dZdZded<   ded<   ded<   d	ed
<   ded<   ded<   	 	 ddZed        Zed        Z	d Z
ed        Zd Z	 	 	 	 	 	 ddZd Zy)r  r   )r  r  r  r  r   r  r   r   r   r  z	Type[Any]r  r  r  r   r  r  Nc           	        d|_         |j                  d   }|r|j                  j                  |        n|j                  |        t	        |t
        j                  t        j                  f      r|j                         }n|}|x| _
        | _        t        |      | _        |j                  | _        g | _        |rm|j                  D ]^  }d|j                  v rt!        |||||        "t	        |t"              rt!        |||||        Ct$        j'                  ||g|d ||        ` | j                  j(                  | _        y )NTr  parent_bundle)r  r
  r   r   r$  r   r{  r   rx  r  r  r  r  r  r  exprsr  r   _ORMColumnEntityr  single_entityr  )r   rW   r  r  r\  setup_entitiesr  r  s           r   r   z_BundleEntity.__init__
  s;    +/'  *##**40&&t,:00*2K2KL
 ,,.FF"((diL	!;; t000!%++&*  f-!%++&* %11%++&* 2 %6 '+kk&?&?#r   c                8    | j                   }||j                  S y r   )r(  r  )r   r  s     r   r  z_BundleEntity.mapper  s       <<r   c                J    | j                   D ]  }|j                  }||c S  y r   )r   r(  r   r&  r  s      r   r(  z_BundleEntity.entity_zero"  s.    >> 	COOE 	
 r   c                     yr  r   r  s     r   r  z_BundleEntity.corresponds_to+  s     r   c                J    | j                   D ]  }|j                  }||c S  y r   )r   r  r  s      r   r  z'_BundleEntity.entity_zero_or_selectable0  s0    >> 	C11E 	
 r   c                H    | j                   D ]  }|j                  |        y r   )r   rp  )r   rW   r&  s      r   rp  z!_BundleEntity.setup_compile_state9  s#    >> 	3C##M2	3r   c                $    | j                  |      S r   rp  r  s      r   r  z/_BundleEntity.setup_dml_returning_compile_state=      
 ''66r   c           	         t        | j                  D cg c]  }|j                  ||       c} \  }}}| j                  j	                  |j
                  ||      }|| j                  | j                  fS c c}w r   )r   r   r  r  create_row_processorrX   r  r  )r   r  r   r&  procslabelsextraprocs           r   r  z_BundleEntity.row_processorD  so    "<@NNKSc0K 
vu {{//ufMT%%t';';;; Ls   A5r  r  )rp   rq   rr   r  r   r   r   r<  r  r(  r  r  rp  r  r  r   r   r   r  r  
  s    OI "!N
O  
L 9@v    
  37&7 '7 
	7<r   r  c                  Z    e Zd ZdZe	 dd       Zed        Zed        Zed        Z	d Z
y)	r  )_fetch_column_row_processorraw_column_indextranslate_raw_columnNc           
         |D ]u  }|j                   }d|v r|d   }	nt        j                  |d      }	|	r4d|j                   v rt        ||||	|||       Rt	        ||||	|||       et        ||||||       w y )Nr  rh   r  )r
  rG  extract_first_column_annotation_IdentityTokenEntityr  _RawColumnEntity)
r   rW   r?  r  r.  r\  r  columnr   _entitys
             r   r  z_ColumnEntity._for_columnsV  s      &	F --K,%n5"BBN #v':'::(%+(+&3 %%+(+&3 !!'$'"/?&	r   c                .    | j                   j                  S r   )r4  r  r   s    r   r  z_ColumnEntity.type  s    {{r   c                D    | j                   j                  j                   S r   )r4  r  hashabler   s    r   r  z!_ColumnEntity._non_hashable_value  s    ;;##,,,,r   c                B    | j                   j                  j                  S r   )r4  r  _isnullr   s    r   r  z_ColumnEntity._null_column_type  s    {{'''r   c                   |j                   }| j                  H| j                  \  }}}| j                  r'||j                  j                  | j
                     fz  }|||fS | j                  | j                  }nM| j                  }|j                  r|j                  j                  |   }|j                  r|j                         }|j                  r|j                  j                  |   }|j                  |      }|| j                  | j                  f}|| _        | j                  r@| j                  |j                  j                  | j
                     fz   }|| j                  |fS |S r   )rW   r-  r/  rX   rj  r.  r,  r4  rx  r?  r
  _deannotater  _getterr  r  )	r   r  r   rW   getter
label_nameextra_entitiesr4  r  s	            r   r  z_ColumnEntity.row_processor  sg   -- *151D1D.FJ((MM..t/D/DE#  :~55 )''F [[F ,,&66>>vF""  ++-//"99AA&IF'd&&(<(<<!$$!11**4+@+@A5 N 4++^;;Jr   r   )rp   rq   rr   r   r   r  r<  r  r  r  r  r   r   r   r  r  N  sd    I  / /b     - - ( (0r   r  c                  F    e Zd ZdZdZdZdZ	 ddZd Z	 	 	 	 	 	 d	dZ	d Z
y)
r3  NF)r  r4  r  r  r  c                   || _         || _        |d u| _        |j                  r|xj                  ddiz  c_        |r|j
                  rd | _        n|j                  |      | _        |r|j                  j                  |        n|j                  |        || _
        | j                  j                  r| j                  j                  d   nd | _        | j                   | j                  f| _        d x| _        | _        y )Nr   Tr   )r  r.  r/  r   r   _is_text_clauser  r   r   r   r4  r  r  r  r,  r-  )r   rW   r4  r  r.  r\  r  s          r   r   z_RawColumnEntity.__init__  s     	 0$4D$@!??))j$-??)"f&<&<#D,>>vFD##**40&&t,,0KK,E,EDKK%%a(4 	& !%		4;;7377T0r   c                     yr  r   r  s     r   r  z_RawColumnEntity.corresponds_to  s    r   c                $    | j                  |      S r   r#  r  s      r   r  z2_RawColumnEntity.setup_dml_returning_compile_state  r$  r   c                   |j                         }|r || j                  d      }|y | j                  }|j                  r|j                         }|j                  j                  |       |j                  j                  |       || _        y r  )	r  r4  r
  r<  r   r   r   r   r,  )r   rW   r}  r4  s       r   rp  z$_RawColumnEntity.setup_compile_state  s}    '<<>$T[[%8F~[[F '')F$$((0%%,,V4#r   r   r  )rp   rq   rr   r(  r  r  r   r   r  r  rp  r   r   r   r3  r3    sO    KF"I 8B7&7 '7 
	7$r   r3  c                  B    e Zd ZdZdZdZ	 d	dZd Z	 	 	 	 	 	 d
dZd Z	y)r  zColumn/expression based entity.F)r  r  r4  r  r  r(  r  Nc                   |j                   }|}	 |j                  dd       }
 |j                  d|	      }|
r#t        |j                  |
      | _        d| _        n|| _        |d u| _        || _        |r|j                  ||
      | _        nd | _        |	j                   |	x| _
        x| _        }|	j                  x| _        }|r|j                  j                  |        n|j                  |        d|_        || _        d x| _        | _        | j                  | j                   f| _        |j(                  r|j+                  ||j,                         y y )N	proxy_keyproxy_ownerF)r  T)r
  r   r  rz  r  r/  r.  r   r  r  r(  r  r  r   r   r  r4  r,  r-  r  r  r2  r   )r   rW   r4  r  r  r.  r\  r  r   r5  orm_keyrJ  r  r  s                 r   r   z_ORMColumnEntity.__init__!  sO    )) "+//+t4%koomW= 2 2G<DI(-D% DI(8(DD% 0,>>  ?  D  $DDKKK49E&~~-f##**40&&t,*.'377T0 $		4;;722::u'' 3r   c                    t        |      r|| j                  u S t        | j                         xr |j                  | j                        S r   )r   r(  r  r  s     r   r  z_ORMColumnEntity.corresponds_toa  sO    V$T----(    9&&t'7'789r   c                    | j                   | _         || j                   d      }|7|j                  j                  |       |j                  j                  |       y y r  )r4  r,  r   r   r   r   )r   rW   r6  r4  s       r   r  z2_ORMColumnEntity.setup_dml_returning_compile_statej  sS    
 "[[e,((,,V4))008 r   c                   |j                         }|r5 || j                  d      }|,|j                  sJ | j                  | _        y | j                  }| j                  }| j
                  j                  }|d| j
                  f|j                  v r)||j                  r|j                  nd f|j                  |<   |j                  r|j                  s|j                         }t        | j                  j                        j!                  |j"                  j                        r%|j$                  j'                  |j"                         |j(                  j+                  |       |j,                  j'                  |       || _        y )NFr  )r  r4  r   r,  r(  r  r  r   r*  r   ro  r
  _expression_labelr<  rl  r  intersectionr   rm  r   r   r   r   )r   rW   r}  r4  r  r  s         r   rp  z$_ORMColumnEntity.setup_compile_stateu  sL   '<<>$T[[%8F~$555%)[["[[F   KK??),dkk:../ "'"8"8d<M11%8
 v'?'? '')F t{{(()66**
 00778H8HI$$((0%%,,V4#r   r   r  )
rp   rq   rr   r   r  r   r   r  r  rp  r   r   r   r  r    sH    )"I$ >@9	9&	9 '	9 
		9)$r   r  c                      e Zd ZdZd Zd Zy)r2  Fc                     y r   r   r  s     r   rp  z(_IdentityTokenEntity.setup_compile_state  s    r   c                @    fd}|| j                   | j                  fS )Nc                0    j                   j                  S r   )rZ   rx   )rowr  s    r   r>  z2_IdentityTokenEntity.row_processor.<locals>.getter  s    ''777r   )r  r  )r   r  r   r>  s    `  r   r  z"_IdentityTokenEntity.row_processor  s#    	8 t'')=)===r   N)rp   rq   rr   r/  rp  r  r   r   r   r2  r2    s     >r   r2  r  )r  z#Union[Query, Select, FromStatement]rW   zOptional[ORMSelectCompileState]r	  r   r   zList[ORMColumnDescription])r  zUnion[Query[Any], Select[Any]]r   "Optional[_InternalEntityType[Any]]r   )r  zTuple[_SetupJoinsElement, ...]r(  rV  r   z=Optional[Union[_InternalEntityType[Any], _JoinTargetElement]])
__future__r   r  typingr   r   r   r   r   r	   r
   r   r   r   r   r    r   r   r   baser   r   r   path_registryr   r$   r   r   r   r   r   r   r   r    r`  r!   r"   r#   r%   r&   r'   rG  r(   sql._typingr)   r*   r+   r,   sql.baser-   r.   r/   r0   r1   r2   sql.dmlr3   sql.elementsr4   r5   sql.selectabler6   r7   r8   r9   r:   r;   r<   r=   sql.visitorsr>   _typingr?   r@   rA   r  rB   rX   rC   r]   rD   rE   enginerF   engine.interfacesrG   rH   sql.compilerrI   rJ   rK   rL   rM   rN   rO   rP   sql.type_apirQ   rR   rootr   r  r   r  rU   r  r   r   rm   r>  
plugin_forrU  rV  r  r  r  r  r  r  rh  r%  r  r  r3  r  r2  r   r   r   <module>ri     s9   #                  # , , ' (  !    %         "     * ( ( ' # ! !    ) % 0 : - ; # - ( - ,,3!' <4**,3936+)T"" d  " *@@ d. d.N ,++'. 
i$l i$X*#: *ZV
- V
r(> (>V !!%)=>iD? iD ?iDXoPNJ0@0E oPd !!%):;	 "5	 <	 !!%2V0O[ V0 3V0v, 6:=2   	<+=+'+='* 7;/3 C$\# \#~iEL iEX<L <DvL vrH$} H$VL$} L$^
>+ 
>r   