Sh3ll
OdayForums


Server : LiteSpeed
System : Linux premium84.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
User : claqxcrl ( 523)
PHP Version : 8.1.32
Disable Function : NONE
Directory :  /opt/hc_python/lib64/python3.12/site-packages/sqlalchemy/orm/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/hc_python/lib64/python3.12/site-packages/sqlalchemy/orm/__pycache__/context.cpython-312.pyc
�

���g����"�ddlmZddlZddlmZddlmZddlmZddlmZddlmZddlm	Z	dd	lm
Z
dd
lmZddlmZddlm
Z
dd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z#dd lm$Z$dd!lm%Z%dd"lm&Z&dd#lmZdd$l&m'Z'dd%l&m(Z(dd&l&m)Z)dd#l&mZ*dd'l&m+Z+dd(l,m-Z-dd)l,m.Z.dd*l,m/Z/dd+l,m0Z0dd,l1m2Z2dd-l1m3Z3dd.l1m4Z4dd/l1m5Z5dd0l1m6Z6dd1l1m7Z7dd2l8m9Z9dd3l:m;Z;dd4l:m<Z<dd5l=m>Z>dd6l=m?Z?dd7l=m@Z@dd8l=mAZAdd9l=mBZBdd:l=mCZCdd;l=mDZDdd<l=mEZEdd=lFmGZGe
rrdd>lHmIZIdd?lHmJZJdd@lmKZKddAlLmMZMddBlNmOZOddClPmQZQddDlPmRZRddElSmTZTddFlUmVZVddGl,mWZWddHlXmYZYddIl8mZZZddJl:m[Z[ddKl=m\Z\ddLl=m]Z]ddMl=m^Z^ddNl=m_Z_ddOl=m`Z`ddPlambZbedQe�R�Zcej�Zeej��ZgeCj�ZhGdS�dT�Ziej�dUdVi�ZjGdW�dXe4�ZkGdY�dZek�ZlGd[�d\ek�ZmGd]�d^�ZnGd_�d`en�ZoGda�dben�Zpe&j(jhj�dcdd�Gde�dfem��ZrGdg�dhe;e6eEe-�Zse&j(jhj�dcdi�Gdj�dkele>��Zte&j(jhj�dcdl�Gdm�dnemeD��Zu		d�							d�do�Zv				d�dp�Zw				d�dq�Zx	d�					d�dr�ZyGds�dt�ZzGdu�dvez�Z{Gdw�dxez�Z|Gdy�dzez�Z}Gd{�d|e}�Z~Gd}�d~e}�ZGd�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�z�eZdZUdZded<ded<ded<Gd�d	e�Z		d
															dd�Zdd�Zy
)�QueryContext)�top_level_context�
compile_state�query�user_passed_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�intrfzDict[PathRegistry, PostLoad]rh�ORMCompileStaterWc�<�eZdZdZdZdZdZdZdZdZ	dZ
dZdZdZ
dZy)�!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���G/opt/hc_python/lib64/python3.12/site-packages/sqlalchemy/orm/context.py�default_load_optionsrp�sE��#��"����!���
����
��� �� ��$(�!� �r�r�Nc	���|�_|xst�_|xst�_|�_|�_|�_|�_d�_d�_	|�_
|j�_|jj}	|j}
t�fd�t!|	|
�D���_t%|j&��_|j(�_|j,�_|j0�_|j4�_|j8�_|j<�_|j@�_!y)NFc3�`�K�|]%\}}|jr|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>�s4�����/
�%J�!��\��'�'�
�7�7��l�K�%J�s�+.)"r[�_EMPTY_DICTr]r\rWrXrYr^rkrlrZr~rV�select_statement�
_with_options�tuple�zipre�dictrrxr_rur`rwrarvrbr{rcrzrjryri)r�rW�	statementrYrZr^r[r]r\�cached_options�uncached_optionss`          r��__init__zQueryContext.__init__�s!���$)���!2�!A�k���,�;����*�����
�"3������).��&�(-��%����!-�!G�!G���&�7�7�E�E��,�:�:��*/�/
�%(��9I�%J�/
�*
��&��}�7�7�8���%�0�0���!-�!@�!@���!-�!@�!@���)�8�8���)�8�8���%�0�0���*�:�:��r�c�"�|jxs|Sr�)rV�r�s r��_get_top_level_contextz#QueryContext._get_top_level_context�s���%�%�-��-r�)NN)rWr/r��2Union[Select[Any], FromStatement[Any], UpdateBase]rYr�rZrGr^rEr[zQUnion[Type[QueryContext.default_load_options], QueryContext.default_load_options]r]z$Optional[OrmExecuteOptionsParameter]r\zOptional[_BindArguments])�returnrU)	rqrrrs�	__slots__�__annotations__r2r�r�r�r�r�r�rUrUfs����I�6�J�1�1�"�"�!�w�!�:CG�37�!@;�#�@;�F�@;�
�	@;�)�@;��@;�
�@;�@�@;� 1�!@;�D.r�rU� _result_disable_adapt_to_contextTc�z��eZdZdZd�Ze								d�fd��Zed��Ze		dd��Zed��Z	�xZ
S)	�AbstractORMCompileStateFc��i|_|�ix|_}|sJ�y|jx|_}|r7d|d<|r/|jD] }|js�|j|��"y|j
dd�ry|jd}	|d}|jD]-}|js�|js�|j|��/	d|d<y#t$rY�wxYw)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�8��*2�*E�*E�E�D�"�R��!%�B�~��,�$�2�2�C��.�.��1�1�$�7�3�
�
�V�V�N�E�
*���.�.��#��	4�#�L�1�M�%�2�2���(�(�S�-D�-D��-�-�d�3�3�"��>����	��	�s�C�	C�Cc�&��t�|�||fi|��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�+�I�x�F�2�F�Fr�c��t��r���NotImplementedError)r�r^r�rZr]r\�is_pre_events       r��orm_pre_session_execz,AbstractORMCompileState.orm_pre_session_exec�
��"�#�#r�c�^�|j||xsi|��}|j||||||�S)N)r])�execute�orm_setup_cursor_result)r�r^r�rZr]r\�conn�results        r��orm_execute_statementz-AbstractORMCompileState.orm_execute_statement(sJ������v�|��7H��
���*�*�������

�	
r�c��t��r�r��r�r^r�rZr]r\r�s       r�r�z/AbstractORMCompileState.orm_setup_cursor_result>r�r�)r�r0r�rIr�rr�r/)r�rF)rqrrrs�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�eZdZdZed��Zed��Zy)�AutoflushOnlyORMCompileStatez>ORM compile state that is a passthrough, except for autoflush.c��tjjddh||j�\}}|s|jr|j	�||fS)N�_sa_orm_load_optionsr_)rUr��from_execution_options�_execution_optionsrx)r�r^r�rZr]r\r�r[s        r�r�z1AutoflushOnlyORMCompileState.orm_pre_session_execNsa��
�-�-�D�D�"��
�
��(�(�

�	
����� 7� 7���� ��+�+�+r�c��|Sr�r�r�s       r�r�z4AutoflushOnlyORMCompileState.orm_setup_cursor_resultks	���
r�N)rqrrrs�__doc__r�r�r�r�r�r�r�r�Ks+��H��,��,�8�	��	r�r�c��eZdZUGd�de�Zded<ded<ded<ded<d	ed
<ded<d
ed<ded<ded<ded<ded<ded<ded<ded<eZded<dZd�Z	e
								d,d ��Ze
										d-d!��Zd"�Z
e
						d.d#��Ze
d$��Ze
d%��Ze
d&��Zed'��Zd(�Zd)�Ze
d*��Zy+)/rnc�Z�eZdZdejfdejfdejfdej
fdejfdejfdejfdejfd	ejfd
ejfdejfgZdZdZ	d
Z
eZd
Z
d
ZdZdZdZdZdZy)�'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)rqrrrsr>�
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�ys���
&�(9�(D�(D�E�
�0�;�;�<�
�*�5�5�6�
�/�@�@�A�
"�$5�$@�$@�A�
!�#4�#?�#?�@�
�!2�!?�!?�@�
� 1� <� <�=�
!�#4�#?�#?�@�
#�%6�%A�%A�B�
�*�5�5�6� 
��&#(��
����&�
�"��!������"��$���r�r�zDict[Any, Any]rr�r�r�r��List[_QueryEntity]�	_entitiesz%Dict[_InternalEntityType, ORMAdapter]�_polymorphic_adaptersz=Union[Type[default_compile_options], default_compile_options]�compile_optionszOptional[_QueryEntity]�_primary_entity�bool�use_legacy_query_stylerM�_label_conventionzList[ColumnElement[Any]]�primary_columns�secondary_columnszSet[ColumnElement[Any]]�dedupe_columnszList[Tuple[Any, ...]]rdr�current_pathFc��t��r�r�)r��argr�s   r�r�zORMCompileState.__init__����!�#�#r�c�X�|jtd|�f|j|d�|��S)N�Union[Select, FromStatement])r�r�)�_create_orm_contextrr�)r�r�r�r�s    r�r�z$ORMCompileState.create_for_statement�s@��'�s�&�&��/��;�
�!���'��
��	
�	
r�c��t��r�r�)r�r�r�r�r�s     r�r�z#ORMCompileState._create_orm_context�s
��"�#�#r�c�j�|j}||vr#|j|�|j|�yyr�)r��add�append)r��obj�col_collection�dedupes    r��_append_dedupe_col_collectionz-ORMCompileState._append_dedupe_col_collection�s3���$�$���f���J�J�s�O��!�!�#�&�r�c�<�|rdd�}|Stj|�S)Nc�"�|r|St|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�legacyrs    r�r	z)ORMCompileState._column_naming_convention�s$���
/��K��8�8��E�Er�c��t|�Sr�)�_column_descriptions�r�r�s  r��get_column_descriptionsz'ORMCompileState.get_column_descriptions�s
��#�I�.�.r�c���tjjdhd�||j�\}}d|vr5|d}|jjj|j|�}|st}n|jt�}|jr|jd|ji�}t|jdd�rHt|jj�dkDr&|jdd��|jdd	d
��}||d<	|jd}	|	r|	j |d
<	|s|j$r|j%�||fS#t"$rJd��wxYw)Nr�>r_rjrir`�sa_top_level_orm_contextrrjr��
�compiled_cacheTz#excess depth for ORM loader options)r�_cache_disable_reason�clause�plugin_subject�mapperz0statement had 'orm' plugin but no plugin_subject)rUr�r�r�rX�
merge_withr]�_orm_load_exec_options�unionrzr�_compile_options�lenr�r��_propagate_attrsrr�rx)
r�r^r�rZr]r\r�r[�ctxrs
          r�r�z$ORMCompileState.orm_pre_session_exec�s���
�-�-�D�D�"�
�
��(�(�
�	
���(&�):�:�#�$>�?�C� #�	�	� <� <� G� G��%�%�'8�!��!� 6�� 1� 7� 7�8N� O���"�"� 1� 7� 7��l�5�5�6�!��

�I�.�.���F��I�.�.�<�<�=��B�!�%�%�&6��=�I�"�'�'�*.�2-���
�$-��x� �	A�&�7�7�8H�I�N��+9�+@�+@��x�(��� 7� 7���� ��+�+�+���	M�L�L�L�5�	M�s�E�E+c
��|j}|jj}|jdtj
�}	|jjr|St	||||||	||�}
tj||
�S)Nr�)
�context�compiledrWr�rUr�r�r�r�	instances)r�r^r�rZr]r\r��execution_contextrWr[�querycontexts           r�r�z'ORMCompileState.orm_setup_cursor_resultEs���#�N�N��)�2�2�@�@�
�)�,�,�"�L�$E�$E�
���(�(�1�1��M�#���������	
��� � ���6�6r�c�b�|jD�cgc]}t|t�s�|��c}Scc}w)z�return 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_entitiesjs2�� �>�>�
�)�C�Z��]�-K�C�>�
�	
��
s�,�,c
��|jsz|jj|jvrW|jj	�D]9}|j|t
tj||j|����;yyy)a5given 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_withrr�WITH_POLYMORPHIC_ADAPTER�_equivalent_columns)r��ext_infor��mps    r�� _create_with_polymorphic_adapterz0ORMCompileState._create_with_polymorphic_adaptervs|���)�)����2�2��-�-�.��o�o�5�5�7���7�7���'�@�@��$&�$:�$:�#-�	��8�.�*r�c��|jxs|gD]?}||j|<|j�D]}||j|j<��Ayr�)�_with_polymorphic_mappersr�r.�local_table)r�r�adapter�m2�ms     r�r/z2ORMCompileState._mapper_loads_polymorphically_with�sS���2�2�>�v�h�>�B�-4�D�&�&�r�*��'�'�)��<C��*�*�1�=�=�9�*�?r�c��td��)Nz0this method only works for ORMSelectCompileStater�)r�rXrs   r��_create_entities_collectionz+ORMCompileState._create_entities_collection�s��!�>�
�	
r�N)r�r0r�rIr�rr�rn)
r�r�r�r�r��Optional[SQLCompiler]r�rr�rn)r
r;rr�r�rM)rqrrrsr.r�r�r�r��_has_mapper_entitiesr�r�r�r�rr	rr�r��propertyr)r4r/r<r�r�r�rnrnxs���#�"2�#�J��%�%�A�A�H�H�!�!�@�@���,�+� � �/�/�-�-�/�/�+�+���"0�L�,�/� ��$��
��
��
��	
�

�
��
��$�/�$��	$�
(�$��
$�
�$��$�'��
F�*�
F�48�
F�	!�
F��
F��/��/��W,��W,�r�"7��"7�H�	
��	
��:D��
��
r�rnc�&�eZdZdZdZd�Zd�Zd�Zy)�_DMLReturningColFilterz�a base for an adapter used for the DML RETURNING cases

    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|jur||_n||_tj|j�x|_|_yr�)r7rr$�WeakPopulateDict�adapt_check_presentrB)r��
target_mapper�immediate_dml_mappers   r�r�z_DMLReturningColFilter.__init__�sU�� �,��)�)�'�3�3�4�/�D�K�(�D�K�&*�&;�&;��$�$�'
�	
���t�|r�c�f�tj|�D]}|j|�}|��|cSyr�)�sql_util�
_find_columnsrF)r�r�	as_filter�cc�c2s     r��__call__z_DMLReturningColFilter.__call__�s6���(�(��-�B��)�)�"�-�B��~��
�.�
r�c��t��r�r�)r�rs  r�rFz*_DMLReturningColFilter.adapt_check_present�r�r�N)rqrrrsr�r�r�rOrFr�r�r�rArA�s���5�I�

��$r�rAc��eZdZdZd�Zy)� _DMLBulkInsertReturningColFiltera[an adapter used for the DML RETURNING case specifically
    for ORM bulk insert (or any hypothetical DML that is splitting out a class
    hierarchy among multiple DML statements....ORM bulk insert is the only
    example right now)

    its main job is to limit the columns in a RETURNING to only a specific
    mapped table in a hierarchy.

    c��|j}|jj|d�}|�y|jjj|�Sr�)r�_columntopropertyr�r7�c�corresponding_column�r�rr�props    r�rFz4_DMLBulkInsertReturningColFilter.adapt_check_present�sH�������'�'�+�+�C��6���<���!�!�#�#�8�8��=�=r�N�rqrrrsr�rFr�r�r�rRrR�s���>r�rRc��eZdZdZd�Zy)�"_DMLUpdateDeleteReturningColFiltera_an adapter used for the DML RETURNING case specifically
    for ORM enabled UPDATE/DELETE

    its main job is to limit the columns in a RETURNING to include
    only direct persisted columns from the immediate selectable, not
    expressions like column_property(), or to also allow columns from other
    mappers for the UPDATE..FROM use case.

    c��|j}|jj|d�}|�%|jjj|�S|Sr�)rrTr�r-rUrVrWs    r�rFz6_DMLUpdateDeleteReturningColFilter.adapt_check_present�sO�������'�'�+�+�C��6�����,�,�.�.�C�C�C�H�H��
r�NrYr�r�r�r[r[�s���
r�r[�orm�orm_from_statementc��eZdZUdZdZded<ded<dZded<dZdZdZ	dZ
eZeZ
e										d
d	��Zd
�Zd�Zd�Zy)�ORMFromStatementCompileStateNF�
FromStatement�statement_containerz)Union[SelectBase, TextClause, UpdateBase]�requested_statementzOptional[_DMLTableElement]�	dml_tablec��|}t|t�sJ�|�!|jrtjd��|j|�}d|_|jj|_	|x|_
|_|jx|_
}|jr|j|_d|_g|_i|_|j|_|jr_t|t*j,�rE|j.s9|js-|j0t2ur|j5t6�|_n||_|j;|j.s|js|j0nt2|j�|_t>jA||jB|j$d��|jjD|_#|jI||dd��|jJr/|jJD] }|jLs�|jO|��"|jPr|jPD]
\}}	||��g|_)g|_*tW�|_,g|_-g|_.d|_/t|j8t*j`�roi|_1|j$D]}
|
je|��dx|_3|_4d|_5|jRD] }|jm|d|jn���"|Stqtrjt|j8|jv��|_<|S)Nz�The 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&rar��sa_exc�CompileError�__new__r�rr�r�rbr��elementrcr*�tablerdr�r�r�r�r&rP�_is_textual�_label_styler8�set_label_styler9r�r	r��_QueryEntity�to_compile_state�_raw_columnsr�r�r�r�r�r��_with_context_optionsr�r��setr�rd�_fallback_from_clauses�order_byr5�extra_criteria_entities�setup_compile_state�_ordered_columns�_textual_ordered_columns�_loose_column_name_matching�process�_add_to_result_maprr�ADAPT_FROM_STATEMENT�_adapt_on_names�_from_obj_alias)r�r�r�r�r�rbr�r��fnr�entityrUs            r�r�z0ORMFromStatementCompileState._create_orm_contexts��(���-�}�=�=�=���H�N�N��%�%�=��
��{�{�3���#���
 �0�0�H�H�	
�#�<O�N�� �4�#8�/B�/J�/J�J�� �9����&�_�_�D�N�$(�D�!����%'��"�2�C�C���
�'�'��9�j�&;�&;�<��)�)��$�$��&�&�*:�:�&�6�6�.��D�N�'�D�N�!%�!?�!?�!�,�,�Y�5E�5E��&�&�%��'�'�
"
���	�%�%���,�,��N�N� $�		&�	
�0�@�@�N�N����$�$���*/��		%�	
��,�,�*�8�8���(�(��-�-�d�3�9��4�4�.�D�D���C��4��E� "���!#���!�e���"$���&(��#���
��d�n�n�j�&;�&;�<�,.�D�(��.�.���*�*�4�0�)��
�H�%��(I�48�H�0��)�)��� � ��*.�&.�&A�&A�!��*�,��
$7��4�4����2�B�B�$�D� ��r�c��|Sr�r�)r��cols�current_adapters   r��_adapt_col_listz,ORMFromStatementCompileState._adapt_col_list�����r�c��yr�r�r�s r��_get_current_adapterz1ORMFromStatementCompileState._get_current_adapter�s��r�c���|jjjdd�}|jjr
t	||�}n;|jj
s|jjr
t||�}nd}|jjr-t|j�dk7rtjd��|jD]}|j||��y)zused by BulkORMInsert, Update, Delete to set up a handler
        for RETURNING to return ORM objects and expressions

        rNr�sCan't generate ORM query that includes multiple expressions at the same time as '*'; query for '*' alone if present)r�rr��	is_insertrR�	is_update�	is_deleter[r�r�rr�rkrl�!setup_dml_returning_compile_state)r��
dml_mapperrGr8r�s     r�r�z>ORMFromStatementCompileState.setup_dml_returning_compile_state�s���
���7�7�;�;��d�
�
��>�>�#�#�6��z��G��^�^�
%�
%����)A�)A�8��z��G��G����(�(�c�$�.�.�.A�Q�.F��%�%�J��
�
�n�n�F��4�4�T�7�C�%r�)
r�r�r�r�r�r=r�rr�r`)rqrrrsr�r>r�rd�_has_orm_entities�multi_row_eager_loaders�eager_adding_joins�compound_eager_adapterr�rz�eager_joinsr�r�r�r�r�r�r�r�r`r`�s����O� ��&�&�B�B�,0�I�)�0���#����!��)���K��C�/�C��	C�
(�C��
C�
&�C��C�J��Dr�r`c�\��eZdZUdZdZejZejZ	dZ
ded<ded<dejfdejfgej zZed	ej$fgzZd
Z	d					dd�Zd�Zed
��Zd�Z�fd�Zed��Zed��Zed��Zed��Z�xZS)raa*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`.

    r^N�(Union[ExecutableReturnsRows, TextClause]rnr�r�rurTc	��tj|�D�cgc])}tjtj
||d����+c}|_||_|j|_|j|_	|j|_
|j|_|j|_t|�r|jnd|_||_ycc}w)NT)�apply_propagate_attrs�post_inspect)r$�to_listr%�expectr'�ColumnsClauseRolerurnr*�	is_selectr�r�r�r,rqr�)r��entitiesrnr�r(s     r�r�zFromStatement.__init__�s����|�|�H�-�
�.��

����'�'��&*�!�	
�.�
�������n�n��� �*�*��� �*�*��� �*�*��� �*�*���$2�7�$;�G� � ��	
�� /����%
s�.Cc��|j||fi|��}|j}|r||_|j|jfi|��S)z�provide a fixed _compiler_dispatch method.

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

        )�_compile_state_factoryr�rWrr�)r�r�r�rWr�s     r��_compiler_dispatchz FromStatement._compiler_dispatch�sR��4��3�3�D�(�I�b�I�
��~�~�%���%2�H�"��x���
� 7� 7�>�2�>�>r�c�l�tttj|��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�
�
!�
!�	
��D�z�r�c��|Sr�r�r�s r��_ensure_disambiguated_namesz)FromStatement._ensure_disambiguated_namesr�r�c+��K�tjjd�|jD��Ed{���t	�|�di|��Ed{���y7�7��w)Nc3�4K�|]}|j���y�wr�)�
_from_objects�r�rns  r�r�z-FromStatement.get_children.<locals>.<genexpr>s����1
�1B�g�G�!�!�1B���r�)�	itertools�chain�
from_iterablerur��get_children)r�r�r�s  �r�r�zFromStatement.get_childrensY������?�?�0�0�1
�15�1B�1B�1
�
�	
�	
��7�'�-�"�-�-�-�	
��	.�s!�4A�A�A�A�A�Ac�.�|jjSr�)rn�_all_selected_columnsr�s r�r�z#FromStatement._all_selected_columnss���|�|�1�1�1r�c�\�t|j�r|jjSdSr�)r*rn�_return_defaultsr�s r�r�zFromStatement._return_defaultss"��06�t�|�|�0D�t�|�|�,�,�N�$�Nr�c�\�t|j�r|jjSdSr�)r*rn�
_returningr�s r�r�zFromStatement._returnings"��*0����*>�t�|�|�&�&�H�D�Hr�c�\�t|j�r|jjSdSr�)r+rn�_inliner�s r�r�zFromStatement._inline!s"��'7����'E�t�|�|�#�#�O�4�Or�)T)r�z%Iterable[_ColumnsClauseArgument[Any]]rnr�r�r�) rqrrrsr��__visit_name__r`r�rr�r��_for_update_argr�r>�dp_clauseelement_list�dp_clauseelementr0�_executable_traverse_internals�_traverse_internalsr�r��is_from_statementr�r�r?r�r�r�r�r�r�r�r�r�s@r�rara�s8����*�N�3�K�K��9�N�N���O�
5�5���
�*�@�@�A�	�%�6�6�7��	�1�1�2��
/�	�.�?�?�@�2�����!%�	/�7�/�:�/��	/�4?�"����"�.��2��2��O��O��I��I��P��Pr�ra�compound_selectc��eZdZy)�CompoundSelectCompileStateN)rqrrrsr�r�r�r�r�&s��	r�r��selectc�X�eZdZdZeZdZdZdZdZ	dZ
dZdZdZ
dZdZe										d"d��Zd�Zd�Zed��Zed��Zed	��Zed
��Zed��Zd�Zd
�Zd�Zd�Zd�Zd#d�Zd�Zd�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|�}|}|jj|j�|_|jr9|j�|_tj�|j_n||_|jj|_
|jj|_g|_
d|_i|_|j|_|s|xj ddd�z
c_|jr@|jj"t$ur$|jst&|_n't*|_n|jj"|_|j,rA|j,D�cic]&}|t.j1||j2gd����(c}|_|j7|j"|j�|_t.j1||j2|jd��|jj:|_d|_|jA|||d��|r�|jBs|j,r�|j,D]]}|jBD]L}|jDs�|jG||j4|D�	cgc]}	tI|	tJ�r|	��c}	��N�_|jjBD] }|jDs�|jM|��"|jNr|jND]
\}
}|
|��g|_(g|_)tU�|_+i|_,i|_-g|_.g|_/|jad�|jbD��|_2|jg�tijj||jl|fi|��|Scc}wcc}	w)NFT)r�r�rfr�)r�r�c3�4K�|]}|j���y�wr�)r�)r��infos  r�r�z<ORMSelectCompileState._create_orm_context.<locals>.<genexpr>�s����2
�(B��D�O�O�(B�r�)7rmr��
safe_mergerr��_cloner�r$�
immutabledictr��
for_statementr�r�r�r�r�r�rq�LABEL_STYLE_LEGACY_ORMr9r
r7�_memoized_select_entitiesrsrtru�_memoized_entitiesr	r�r�r��eager_order_byr�r�r��'process_compile_state_replaced_entitiesr&r'r�rvr�r�rwr�r�rzrdrx�_normalize_froms�	_from_obj�from_clauses�_setup_for_generater<r�r�)r�r�r�r�r�r�r��memoized_entitiesr�r(r�rs            r�r�z)ORMSelectCompileState._create_orm_context@s����{�{�3���$��&)�%@�%@�%K�%K��&�&�&
�	�"��.�.�%5�$;�$;�$=�D�!�7;�7I�7I�7K�D�!�!�4�$4�D�!�.�>�>�M�M���
�-�-�E�E�	
�#����#���%'��"�/�@�@����
� � �&+�(,�%�
� �
�'�'��%�%�2�2�6L�L��%�%�#A�� �#@�� �#�4�4�A�A�D���5�5�%�>�>�
'�?�&�
"�<�#@�#@��%�2�2��(-�	$A�$��?�
'�D�#� "&�!?�!?��"�"�D�$?�$?�"
���	�%�%���)�)��N�N� $�		&�	
�-�=�=�K�K��� ����$�$����*/�		%�	
���*�*��9�9�"�;�;�"�,�:�:�C��,�,��C�C� �,0�+B�+B�$5�,"��,"�C�$.�c�=�#A�	!$�,"��	�;�<��,�,�:�:���(�(��-�-�d�3�;��1�1�+�A�A���C��4��B� "���!#���!�e������')��$�"$���&(��#�!�1�1�2
�(8�(B�(B�2
�
���	
� � �"����T�4�>�>�8�B�r�B����}
'��bs�+N>�%Oc��td�td|j���|jD]�}t|t�rm|ddk(retdtj|d����td|j|���td|j|j�����t|t�s��|ddk(s��td	tj|d����td|j|�����y)
Nz5
---------------------------------------------------
zcurrent path: r�loaderz
Loader:           rz    �path_with_polymorphicz
With Polymorphic: )�printr�rr&r�r�coerce�__dict__)r�rs  r��_dump_option_structz)ORMSelectCompileState._dump_option_struct�s���
�G�H�
��t�0�0�1�2�3��?�?�C��#�u�%�#�a�&�H�*<��,�\�-@�-@��Q��-H�,I�J�K���T�_�_�S�1�2�3�4���T�_�_�S�1�:�:�;�<�=��C��'�C��F�6M�,M��,�\�-@�-@��Q��-H�,I�J�K���T�_�_�S�1�2�3�4�#r�c�l	��|j}d|_d|_|jjr|j�|jD]8}|js�|j|j|j|��:|jr&|j|j|j�|j��|jr6|j|_�r#t�fd�|jD��|_�r*|jdvr|j|j��n|j|_|j"r#t�fd�|j"D��|_�r=|j$dvr/|jt'j(|j$���n|j$xsd|_|j,r9|j.dj0}|j3|j,�|_|j4r"|j|j4��|_nd|_|j8|_|j<r5tt'j(d�|j<D���|_nT|j@�5tt'j(d�|j@D���|_!n|jDsd|_|jF|_#|jjHr-tK|j�d	k7rtMjNd
��|jD]}|jQ|��|jRD]}|d}||g|d	d����|jjTr|jW�|jXs2|jjZrJd��tMj\d
��|j.st_|j`�|_|j durd|_|jbr.|jdr"|jfr|ji�|_n|jk�|_|jlr6|jo�}|�#|jjqd|i�|_yyy)Nr�c3�0�K�|]
}�|d����y�w�TNr��r��critr�s  �r�r�z<ORMSelectCompileState._setup_for_generate.<locals>.<genexpr>	s �����-� 4��$�D�$�/� 4�s��NFc3�8�K�|]}�r	�|d�n|���y�wr�r�r�s  �r�r�z<ORMSelectCompileState._setup_for_generate.<locals>.<genexpr>s'�����*�2�D�0?���d�+�D�H�2�s�rc3�NK�|]}|�tj|�nd���y�wr��rJ�surface_selectables�r��ss  r�r�z<ORMSelectCompileState._setup_for_generate.<locals>.<genexpr>7s,����&�-��89�}�H�0�0��3�$�N�-���#%c3�NK�|]}|�tj|�nd���y�wr�r�r�s  r�r�z<ORMSelectCompileState._setup_for_generate.<locals>.<genexpr>>s,����&�4��89�}�H�0�0��3�$�N�4�r�r�rr�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�ry�_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�rrkrlr{rdr��_adjust_for_extra_criteriar�r��InvalidRequestError�listrxr�r��_should_nest_selectable�_compound_eager_statement�_simple_statementr��_mapper_zero�	_annotate)	r�rXr�r8r��rec�strategy�ezeror�s	        @r�r�z)ORMSelectCompileState._setup_for_generate�s1����%�%����� ������/�/��'�'�)�!&�!@�!@�� �-�-��
�
�%�2�2��+�+�,=�>��"A�����J�J�u�)�)�4�>�>�:��3�3�5��� � �#(�#8�#8�D� ��',�-� $� 4� 4�-�(��$��5�#:�#:�-�#O�
� � ��!8�!8�/�J��(�(�	
�
��!�!�$)�*�!�2�2�*�%�D�!��5�#:�#:�-�#O�
� � ��%�%�e�&=�&=�>��
��(�(�0�D�	
�
�����'�'��*�:�:�G�")�":�":�4�;N�;N�"O�D�����#�3�3��"�"�O� �D�� "�D������
����#��%�%�&�"�-�-�&���D�N��
$�
$�
0�$)��%�%�&�"�4�4�&��%�D�!��&�&�$�D�N� %�4�4������(�(�c�$�.�.�.A�Q�.F��%�%�J��
��n�n�F��&�&�t�,�%��*�*�C��1�v�H��T�$�C���G�$�+����3�3��+�+�-��#�#��#�#�4�4�L�L�L�u��,�,�F��
�� � � $�T�%@�%@� A�D���=�=�E�!� �D�M�
�(�(��'�'��,�,�!�;�;�=�D�N�!�3�3�5�D�N�����%�%�'�E�� �"&���!9�!9�!�5�)�"���!�r�c���|j|�}g|_d|_i|_|j	|j
|�|_tj||j|jd��|S)aCreates 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.

        NTrf)
rmr�r�r�r	rqr�rsrtru)r�rXrr�s    r�r<z1ORMSelectCompileState._create_entities_collection|sv���{�{�3������#���%'��"�!%�!?�!?�����"
���	�%�%��%�$�$�d�n�n�$�	&�	
��r�c�2�|j}t|d�Sr�)r��_determine_last_joined_entity)r�r��setup_joinss   r��determine_last_joined_entityz2ORMSelectCompileState.determine_last_joined_entity�s���,�,��,�[�$�?�?r�c#�JK�|jD]�}|jrhd|jvrZ|jd}|js!|jst|g�Ed{����Yt|j�Ed{����wt|g�Ed{�����y7�:7�7��w)N�entity_namespace)ru�
is_selectable�_annotations�	is_mapperr,r-�_all_column_expressions)r�r�rn�enss    r��all_selected_columnsz*ORMSelectCompileState.all_selected_columns�s����� �-�-�G��%�%�&�'�*>�*>�>��*�*�+=�>���}�}�S�-A�-A�0�'��;�;�;�0��1L�1L�M�M�M�,�g�Y�7�7�7�.�<��M��7�s6�A B#�"B�#B#�B�B#�B!�B#�B#�!B#c��|jtjjd�|jD���S)Nc3�K�|]<}d|jvr|jn|jdj�g���>y�w)�parententityN)rr��__clause_element__r�s  r�r�zAORMSelectCompileState.get_columns_clause_froms.<locals>.<genexpr>�sX����*� 6�G�&�W�-A�-A�A��)�)� �,�,�*��,�,�.��� 6�s�AA)r�r�r�r�rurs  r��get_columns_clause_fromsz.ORMSelectCompileState.get_columns_clause_froms�s<���#�#��O�O�)�)�*� )�5�5�*�
�

�
	
r�c��tjtj||��}t	|j
|�}|jj|j|j|j|j��|S)N)r�)r�rvr�r)r%r�r'�ReturnsRowsRolerarur��updater�rvr�r)r�r��from_statement�stmts    r�r&z$ORMSelectCompileState.from_statement�sw��"�)�)��!�!��"+�
���Y�3�3�^�D���
�
���#�1�1�"+�"A�"A�(�;�;�&�7�7�		�	
��r�c��|j}|jjsJ�t|j�dk(sJ�|j|jd�}|r|xjddiz
c_||_yy)� used only for legacy Query casesrrr�FN)r�r�r�rr��_get_select_from_alias_from_objr�)r�rXr8s   r�r�z,ORMSelectCompileState._set_select_from_alias�s{���%�%���#�#�3�3�3�3��5�?�?�#�q�(�(�(��6�6�u���q�7I�J���� � �%:�E�$B�B� �#*�D� �r�c��|}d|jvr|jd}t|d�r-|jstjd��|j
St
|jtjj�rF|j�}||jusJ�ttj|j|��Sy)r)r rzPA selectable (FromClause) instance is expected when the base alias is being set.�r+N)r�hasattrr,rk�
ArgumentError�_adapterr&r�r#�AliasedReturnsRows�_all_equivsrr�LEGACY_SELECT_FROM_ALIAS)r��from_objr��equivss    r�r*z5ORMSelectCompileState._get_select_from_alias_from_obj�s������T�.�.�.��$�$�^�4�D��4��"��(�(��*�*�A���
�}�}�$�
�������)J�)J�
K��%�%�'�F��4�?�?�*�*�*�&��8�8����"��
�r�c�4�|jdjS)z8return the Mapper associated with the first QueryEntity.r)r�rr�s r�rz"ORMSelectCompileState._mapper_zero�s���~�~�a� �'�'�'r�c��|jD]!}d|jvs�|jdcS|jD]}|js�|jcSy)z�Return the 'entity' (mapper or AliasedClass) associated
        with the first QueryEntity, or alternatively the 'select from'
        entity if specified.r N)r�rr��entity_zero)r�r(�qents   r��_entity_zeroz"ORMSelectCompileState._entity_zero�s]��
�$�$�C���!1�!1�1��'�'��7�7�%��N�N�D�����'�'�'�#�r�c��|j|jgk7rtjd|z��|jjS)Nz4%s() can only be used against a single mapped class.)r�r�rkrr7)r��methnames  r��_only_full_mapper_zeroz,ORMSelectCompileState._only_full_mapper_zero	sK���>�>�d�2�2�3�3��,�,�)�+3�4��
��#�#�/�/�/r�c��t|j�dkDrtj|xsd��|j	�S)Nrz8This operation requires a Query against a single mapper.)rr�rkrr9)r��	rationales  r��_only_entity_zeroz'ORMSelectCompileState._only_entity_zerosD���t�~�~���"��,�,��+�+��
�
� � �"�"r�c��i}|jj�D]L}|D�cgc]}t|t�r|��c}D]'}|j	|j
j��)�N|jD�cgc]}t|t�s�|��c}D]'}|j	|j
j��)|Scc}wcc}wr�)r��valuesr&r'r%rr1r�)r�r4r�r(s    r�r1z!ORMSelectCompileState._all_equivss�����!%�!8�!8�!?�!?�!A��-��,�C��c�=�1��,���
�
�
�c�j�j�<�<�=��"B� �>�>�
�)�C�Z��]�-K�C�>�
�C�
�M�M�#�*�*�8�8�9�
��
����
s�C�:C�Cc	�f�|jrj|jD�cgc]4}t|tjj�r|j
n|��6}}t
j|j|�}ng}d}|j|j|D�cgc]}||jvs�|��c}z|j|j|j|j|jf|j|j j"|j j$|j&|j(d�|j*��}|j-�}|j/�}t1t2j4||��|_t9j:|g|j<z�}|j|_|j�'|jj@�|j|_|}|jBjE�D]#}	t
jF||	|	jH�}�%|jJjM||�|r6|jjL|g|j6jO|����|jjL|g|jP���|Scc}wcc}w)N��
for_update�hints�statement_hintsrrr,))ryr&r#�elements�_label_referencernrJ� expand_column_list_from_order_byr��_select_statementr�r�r�r�r
r�r��_hints�_statement_hintsrr�_select_args�aliasr1rr�COMPOUND_EAGER_STATEMENTr�r!r�r�rq�ofr�rA�splice_joins�stop_on�select_from�non_generativer�r�)
r��elem�unwrapped_order_by�order_by_col_exprrU�innerr4r��from_clause�
eager_joins
          r�r
z/ORMSelectCompileState._compound_eager_statement+s���
�=�=�!�M�M�
"�*�D�"�$����(E�(E�F��L�L���*�

�"�!)� I� I��$�$�&8�!��!#��!%��'��&�&�� � �+�L�+�Q�q��8K�8K�/K�q�+�L�
M����� � ��!�!�����M�M�
��+�+��'�'�.�.� �1�1�B�B��n�n�!�2�2�
����
�� ���
���!�!�#��&9��4�4�e��'
��#��M�M��g��.�.�.�
�	�"&�!1�!1�	��
� � �,��$�$�'�'�/�(,�(<�(<�I�%����*�*�1�1�3�J�#�/�/��Z��);�);��K�	4�	���,�,�Y��D��-�I���-�-��
��,�,�=�=�&��
�	*�	���)�)�)�J�d�6I�6I�J����["��(Ms�9J)�J.
�*J.
c	�4�|j|j|jzt|j�t|j
j
��z|j|j|j|jf|j|jj|jj|j|j d�|j"��}|j$r'|jj&|g|j$���|S)NrC)rJr�r�r�r�r�rAr�r�r
ryr�r�rKrLrrrMr�rT)r�r�s  r�rz'ORMSelectCompileState._simple_statement�s���*�D�*�*�� � �4�#9�#9�9��$�#�#�$�u�T�-=�-=�-D�-D�-F�'G�G�� � ��!�!�����M�M�


��+�+��'�'�.�.� �1�1�B�B��n�n�!�2�2�

����

�	����-�I���-�-�i�N�$�:M�:M�N��r�c�z�tj|||��}|r||_|r||_|r|xjt|�z
c_|r|jj|g|���n|r|jj|�|r|xjt|�z
c_||_	|
|_
||_||_||_
||_|r||_|r||_||_|r||_|	r|	|_|
r|j(j|g|
���|�|j*j|g|���|S)N)rur�rq)r:�_create_raw_selectr�r�r�r�rrTr��
_limit_clause�_offset_clause�
_fetch_clause�_fetch_clause_options�_independent_ctes�_independent_ctes_opts�	_prefixes�	_suffixesr�rKrLrr)r��raw_columnsr3�where_criteria�having_criteriar
ryrDrErFrr�limit_clause�
offset_clause�fetch_clause�fetch_clause_optionsrr��prefixes�suffixesr��independent_ctes�independent_ctes_optsr�s                        r�rJz'ORMSelectCompileState._select_statement�sK��2�-�-�$��$�
�	��(6�I�%��)8�I�&���'�'�5��?�:�'��-�I���-�-�i�F�+�F�
����-�-�i�8���'�'�5��?�:�'�".�	��#0�	� �".�	��*>�	�'�&6�	�#�+@�	�(��"*�I���"*�I��$.�	�!��$�I���)8�I�&��.�I���.�.�y�E�9�E��'�5�I�&�&�5�5��
�,�
��r�c�h�d|jvr>|jd}|jj|d�}|r|j|�St	|t
j�r|}nt|d�r
|j}ny|jj|d�}|r|j|�Sy)Nr ro)	rr�r��adapt_clauser&r&�
FromClauser-ro)r�rn�searchrNs    r��_adapt_polymorphic_elementz0ORMSelectCompileState._adapt_polymorphic_element�s����W�1�1�1��)�)�.�9�F��.�.�2�2�6�4�@�E���)�)�'�2�2��g�z�4�4�5��F�
�W�g�
&��]�]�F���*�*�.�.�v�t�<����%�%�g�.�.�r�c�B�|r|D�cgc]}||d���
c}S|Scc}w)NTr�)r�r�r��os    r�r�z%ORMSelectCompileState._adapt_col_list�s+���6:�;�d��O�A�t�,�d�;�;��K��<s�c����g�|jr'�jd|jjf�|jr�jd|jf��sy�fd�}|S)NTFc�<���fd�}tj|i|�S)Nc�|��d|jvxsd|jv}�D]\}}|s|s�||�}|��|cSy)N�
_orm_adaptr )r)rU�is_orm_adapt�always_adaptr8�e�adapterss     �r��replacezRORMSelectCompileState._get_current_adapter.<locals>._adapt_clause.<locals>.replace sR��� �D�$5�$5�5�;�%��):�):�:��.6�)�L�'�#�|�#�D�M���=�#$�H�	.6r�)r(�replacement_traverse)rrLr�rs   �r��
_adapt_clausezAORMSelectCompileState._get_current_adapter.<locals>._adapt_clauses���	
%��0�0���W�E�Er�)r�r�r�r�ru)r�r�rs  @r�r�z*ORMSelectCompileState._get_current_adapter�sl��������
�O�O���(�(�0�0��
��%�%��O�O�U�D�$C�$C�D�E���	F�"�r�c
���|D�]�\}}}}|d}|d}t|�}|�t|�}t|tj�r|�t	j
d��|}d}nd|jvr|jd}|�-|js!t|d�st	jd��d}	t|tj�r�t|dd�}	|�|	r|	}n|j}	|j}|j}|j}t|tj �s|}|||j"f|j$vr��G|�b||ur^|jj'dd�|ur@t	j
d	|jj'd|��d
|����|�d}|}ndx}}|j)|||||||����y#t$r}
t	jd|z�|
�d}
~
wwxYw)N�isouter�fullzUNo 'on clause' argument may be passed when joining to a relationship path as a targetr rz9Expected mapped entity or selectable/table as join target�_of_typez0Join target %s does not refer to a mapped entityzexplicit from clause z4 does not match left side of relationship attribute )r"r&r�PropComparatorrkrrrr-r.rr?r��AttributeError�
_parententityr�QueryableAttributer�_already_joined_edgesr��_join_left_to_right)
r��args�entities_collection�right�onclause�from_�flagsr�r��of_type�err�leftrXs
             r�r�zORMSelectCompileState._join/s>��-1�)�E�8�U�E��I�&�G���=�D��E�N�E��#�"�8�,���%��!:�!:�;��'� �4�4�=���
!�����5�#5�#5�5��*�*�>�:�����*�*�7�5�(�3K� �.�.�:���
�G��(�J�$=�$=�>�"�(�J��=���=�� '�� (� 1� 1��'�$)�L�L�E� �-�-���(�(��!�(�J�,I�,I�J�#�H��%����*�d�.H�.H�H���$��T�)�!�.�.�2�2�>�4�H�#�$�%�8�8�!&� 2� 2� 6� 6�~�u� M� (�	����"�����#�"��t�
�$�$�#�������
�i.2��V .�'�"(�"6�"6�!0�27�!8�#�$'�'��'�s�-G	�		G0�G+�+G0c	�N�|�|�J�|j||||�\}}}	n|j||�\}}	||urtjd|�d|�d���|j	||||�\}
}}|
j
s|j
|
�}nd}|�J|j|}|jd|t||||||��gz|j|dzdz|_y|	�%t||	t�sJ�||	j}n|}|jt||
||||��gz|_y)z�given 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)

        NzCan't construct a join from z to z, they are the same entityr�)r�r��_extra_criteriar)�"_join_determine_implicit_left_side�_join_place_explicit_left_siderkr� _join_check_and_adapt_right_sider�_get_extra_criteriar�rr&r'r�)
r�r�r�r�r�rX�	outerjoinr��replace_from_obj_index�use_entity_index�r_info�extra_criteria�left_clauses
             r�r�z)ORMSelectCompileState._join_left_to_right�s��� �<��<��<�
�7�7�#�T�5�(��	
��&� ��3�3�4G��N�
�&� ��5�=��,�,�)-�u�6��
�#'�"G�"G��%��4�#
����x��#�#�!�5�5�f�=�N��N�!�-��+�+�,B�C�K��!�!�"9�#9�:��#�� � )�!�(6�
�	�
��#�#�$:�Q�$>�$@�A�B�
��  �+�"�'�(8�9�=����2�2B�C�N�N��"�� $� 1� 1�����%��$2�
�	5�	!�D�r�c�z�t|�}dx}}|jr�tj|j|j|�}t|�dk(r|d}|j|}�nMt|�dkDrt
jd��t
jd|�d���|r�i}	t|�D]W\}
}|j}|��t|�}
|
|ur�%t|t�r|
|f|	|j<�Gd|f|	|
j<�Yt|	j��}tj||j|�}t|�dk(r|	||d\}}nQt|�dkDrt
jd��t
jd|�d���t
jd��|||fS)z�When 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.

        NrraCan'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.zDon'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�rJ�find_left_clause_to_join_fromr�rrkr�	enumerate�entity_zero_or_selectabler&r'r�keys)r�r�r�r�r�r�r�r��indexes�	potential�entity_indexr(r��ent_info�all_clausess               r�r�z8ORMSelectCompileState._join_determine_implicit_left_side�s���&����48�8��!1�����<�<��!�!�6�#4�#4�h��G��7�|�q� �)0���&��(�(�)?�@���W���!��0�0�5����0�0�
9>�	@���!��I�%.�/B�%C�!��c��6�6���>��"�6�?���v�%��
�c�=�1�1=�v�0F�I�c�n�n�-�6:�F�^�I�h�1�1�2�&D� �y�~�~�/�0�K��<�<��V�.�.���G��7�|�q� �)2�;�w�q�z�3J�)K�&� �$��W���!��0�0�5����0�0�
9>�	@����,�,�1��
��+�-=�=�=r�c��dx}}t|�}|jrTtj|j|j�}t|�dkDrt
jd��|r|d}|�J|rHt|d�r<t|�D].\}}t|t�s�|j|�s�)|}||fS||fS)z�When 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.

        NrzrCan't identify which entity in which to assign the left side of this join.   Please use a more specific ON clause.rr)
r"r�rJ�#find_left_clause_that_matches_givenr�rrkrr-r�r&r'�corresponds_to)	r�r�r�r�r��l_infor��idxr(s	         r�r�z4ORMSelectCompileState._join_place_explicit_left_side[s���259�8��!1���������B�B��!�!�6�#4�#4��G��7�|�a���0�0�!����)0���&�
#�*�#����)�%�&9�:���S��c�=�1�c�6H�6H��6N�'*�$��%�'7�7�7�;�&�'7�7�7r�c	��t|�}t|�}d}t|dd�}|r�|js$t|jt
j�re|jxs
|jgD]G}	tj|j|	�s�$tj|	|j�s�Ed}n|r:|j|jur"tjd|jz��t|dd�|jt|dd�}}
}|r8|r6|j|j�stjd|�d|����t|d�r|xj |fz
c_d}|j"r�|r|j}|
j$r|j'�}
|
��|
|d�}n�|r�|
j)|j�s:tjd	|
j*�d
|jj*�d���t|
t
j,�r&t/j0t2j4|
�}
d}t7||
�}t9j:d|zd
d��|xr|xr|}|s+|r)t7|d��}d}t9j<d|zd��|rF|sJ�t?t@jBt|�|jD��}|jG||�n[|j"sO|sM|jHrA|jG|t?t@jJ||j|jD���t|t
jL�r|j'�}
|
r	|
|d�}|r#|xjN|||jPffz
c_'t|�||fS)z�transform 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.

        FrNTz*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 '�'z�An 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.z1.4�xaj1)�code)�flatz�An 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�rJ�selectables_overlaprkr�
common_parentrr-r��is_clause_element�_is_lateralr��is_derived_from�descriptionrPr%r�r'�FromClauseRolerr$�warn_deprecated�warnrr� DEPRECATED_JOIN_ADAPT_RIGHT_SIDEr1r/�#_has_aliased_polymorphic_fromclause�#WITH_POLYMORPHIC_ADAPTER_RIGHT_JOIN�
ClauseElementr�r)r�r�r�r�rXr�r��overlap�right_mapperr3�right_selectable�right_is_aliased�need_adapterr��aliased_entityr8s                r�r�z6ORMSelectCompileState._join_check_and_adapt_right_side�s��������������v�x��6����)�)��,�9�9�:�?�?�K� �-�-�D�&�2C�2C�1D�D���/�/��%�%�x���2�2��f�/�/��#�G��E��v�(�(�F�,=�,=�=��,�,�<��#�#�$��
�
�F�H�d�+�����F�.��6�)9�&��
�� �.�.�t�{�{�;��,�,�9>��J��
��6�8�$����F�9�,�����#�#��#�{�{���+�+�#'�";�";�"=��"�.�,�E�4�8�E��(�7�7� �3�3��!�4�4�-�8�8�(�;�;�G�G�����.�
�0E�0E�F�'0�'7�'7��,�,�.>�(�$�$(�L�%�\�3C�D���$�$�D�
#�#���	�&�J�.>�*>�J�7����!��T�2�E��L��I�I�@�
CO�O��
�� ��<� ��@�@����(�<�<��G�
�3�3�L�'�J��(�(�$��@�@�
�3�3���#�G�G� �+�6�6� ,� @� @�	�
��h�
� 8� 8�9�"�7�7�9�O��*�8�T�:����&�&�D�%����+B�*D�D�&��u�~�u�h�.�.r�c��|jj|jj|j|j|jj
|jj|jxsd|jj|jj|jj|jjd�S)N)rirjrr�rmrnr�rkrlrorp)r�r^r_rr�rdrer�r`rarbrcr�s r�rMz"ORMSelectCompileState._select_argsZ	s���!�1�1�?�?�!�2�2�A�A��
�
��+�+��-�-�7�7��-�-�7�7��
�
�-�� �1�1�?�?��%�%�;�;� $� 5� 5� G� G��%�%�<�<�
�	
r�c���|j}|jd�duxsO|jd�duxs:|jdd�xs&|jdd�xs|jdd�S)NrirjrFr�r�r�)rMr�)r��kwargss  r�r	z-ORMSelectCompileState._should_nest_selectablen	sv���"�"���J�J�~�&�d�2�
-��z�z�/�*�$�6�
-��z�z�*�e�,�
-��z�z�-��,�
-��z�z�*�e�,�	
r�c����d�jf�jvr.t��fd��jd�jfD��Sy)N�additional_entity_criteriac3��K�|]@}|js|j�ur$|j��r|j�����By�wr�)�include_aliasesr��_should_include�_resolve_where_criteria)r��aer2r�s  ��r�r�z<ORMSelectCompileState._get_extra_criteria.<locals>.<genexpr>~	sL�������B��&�&�"�)�)�x�*?��&�&�t�,��*�*�8�4��s�AA	r�)rr�r�)r�r2s``r�r�z)ORMSelectCompileState._get_extra_criteriay	sZ���(��O�O�
��
#�
#�$����0�0�1�8�?�?�C����
�r�c��|jD]�}|jjdd�}|s�"|jj�d|jf|j
vs�S||jvs�b||jr|jndf|j|<��t|jj��}|D]�\}}||jvr�|jj}|jjrg}n|j|�}|�||fz
}|j�}|D]N}|r|j!|�}|r!t#j$|ddi�}||d�}|xj&|fz
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�r{TF)r�rr�r�_single_table_criterionr�rzr,r/rwrAr�r�r�r�r��traverserJ�_deep_annotater�)	r��
fromclauser2rtr8�single_critr�r�r�s	         r�rz0ORMSelectCompileState._adjust_for_extra_criteria�	s|���+�+�J�!�.�.�2�2�>�4�H�H���O�O�;�;�G�4�h�o�o�F��-�-�.��D�$@�$@�@��)1�)B�)B�H�%�%��:��,�,�X�6�,�"�T�1�1�8�8�:�;��!'��H�g��4�.�.�.��"�/�/�A�A�K��#�#�6�6�-/�*�-1�-E�-E�h�-O�*��&�*�{�n�<�*�"�7�7�9�O�2���"�+�+�D�1�D�"�#�2�2�4�,��9M�N�D�*�4��7�D��$�$���/�$�3�"(r�)
r�r�r�r�r�r=r�rr�r�r�)0rqrrrsr�r�r�r�r>r�r�r�r�rrr�r�r�r�r�r�r<rrr"r&r�r*rr9r<r?r1r
rrJrur�r�r�r�r�r�r�r?rMr	r�rr�r�r�r�r�-s�����$���O� ����#����!���I����O����`�/�`��	`�
(�`��
`�
�`��`�D
5�K�Z����2�@��@�
�8��8��
��
� ����"+��8(��0�#��"Y�v�(K�Z/�$�.�`]�~a�Fh>�T@8�D{/�z�
��
�&�
��
�� 70r�r�c
�j�|�tj||��}|}|jD�cgc]}||jf��c}D��cgc][\}}|j|j
t
|dd�|j|j�|js
t
|dd�ndd���]}}}|Scc}wcc}}w)N)rr,Fr�)r�type�aliased�exprr�)	r�r<r�r7�_label_namer�rr�r�)�query_or_select_stmtrWrr�_entr(�insp_ent�ds        r�r
r
�	s���
��-�I�I� ��J�
�
��C�25���
�1>��T�4�#�#�$��
�	�
�M�C���O�O��H�H��x�);�U�C��H�H��?�?�.� �2�2���(�D�1��	
�
��	�"
�H��	
��	s�B*�A B/c���|}|jr|j}|�|S|jr7d|jdjvr|jdjdSt	|�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���*�&�&��~�~�.�D�N�N�1�,=�,J�,J�J��~�~�a� �-�-�n�=�=�$�T�*�*r�c���|}|jsy|jd}d|jvr|jdSt|t�r|jSd|jvr|jdS|S)Nrr �bundle)rurr&rr�)r�r�r(s   r�r�r��	s}��%�D�����
�
�
�A�
�C���)�)�)�����/�/�	�C�-�	.��z�z��	�S�%�%�	%�����)�)��
r�c�l�|sy|d\}}}}t|tj�r|jS|S)N���)r&rr�r�)rr7�targetr�r�r�s      r�rr
sA����'2�2��$�V�X�u�e����%�%���}�}���
r�c��eZdZUdZdZded<dZdZdZded<ded	<d
ed<ded
<dd�Z							dd�Z
d�Zed��Z
y)rsz: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�zOptional[_InternalEntityType]r7c��t��r�r��r�rWs  r�r{z _QueryEntity.setup_compile_state%
r�r�c��t��r�r��r�rWr8s   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\}}|jr7|jr|j||j||��>|j}|j
r�|jrAd|jvrt||||��tj||j|||���|jjdd�rt||||���|jr$tj||j|||���tj||g|||���|js��(t|||���7|S)Nr r�F)r��_is_lambda_element�_is_sequencert�	_resolvedr�rrr'�
_ColumnEntity�_for_columns�_select_iterabler��
_BundleEntity�_is_clause_list�	is_bundle)r�rWr�r�rgr�r�s       r�rtz_QueryEntity.to_compile_state2
sQ��%�X�.�K�C���(�(��&�&��(�(�%��(�(�+�+�	��#�-�-�F��'�'��'�'�%��)<�)<�<�%�)�"�/�/�	�&�2�2�)�"�3�3�/��/���*�*�.�.�x��?�%�)�"�/�/�	� �/�/�&�2�2�)�"�3�3�/��/��&�2�2�)�#�H�/��/���!�!��m�V�5H�I�s/�v#�"r�N)rWrnr��None�rWrnr8z Optional[_DMLReturningColFilter]r�r)rqrrrsr�r�r��_non_hashable_value�_null_column_type�use_id_for_hashr{r�r�r�rtr�r�r�rsrs
sx��D��I� � ������O���
+�+�
8�8�.�.�$�$�&�$�2�$�
�	$�$��>#��>#r�rsc��eZdZUdZdZded<ded<ded<ded	<d
ed<ded
<d�ZdZdZdZ	e
d��Ze
d��Zd�Z
d�Zd�Z						dd�Zd�Zy)r'z mapper/class/AliasedClass entity)
r�rr7r,�path�_extra_entitiesr�r6r��_polymorphic_discriminatorr?r�zMapper[Any]rr7r�r,rr�strr�c��|j|�|r!|j�||_d|_d|_|jd}|j
|x}|_|j}||_|jx|_	}|jf|_
|jr|j|_
n|jj|_
|j|_|j |_|j$|_|j&|_|j*|_|j.r|j1||j$�yy)NTr )r�r�r>r�r�
_post_inspectr7r�r�rrr,rr��class_rqr�rr��with_polymorphic_mappersr6�polymorphic_onr	� _should_select_with_poly_adapterr4)r�rWr�r�rgr2rs       r�r�z_MapperEntity.__init__�
s��	�"�"�4�(���,�,�4�04�
�-�15�M�.�.2�M�+��$�$�^�4�����&,�,��4�#�������	�'���.���f� $�	�	�|����$�$�'�}�}�D��%�}�}�5�5�D�� (� 9� 9����+�+��	�"�-�-���)1�)J�)J��&�*2�*A�*A��'��2�2��:�:��$�/�/�
�3r�Tc�.�|jjSr�)rr
r�s r�r�z_MapperEntity.type�
s���{�{�!�!�!r�c��|jSr�)r7r�s r�r�z'_MapperEntity.entity_zero_or_selectable�
s�����r�c�.�t|j|�Sr�)rr7�r�r�s  r�r�z_MapperEntity.corresponds_to�
s��%�d�&6�&6��?�?r�c�*�d}|js3|jr=|jj|jd�}n|jj
}|r-|jr|j|j�}|S|}|S|j}|Sr�)r,r�r�rr7r/r��wrap)r�rWr8�rets    r��_get_entity_clausesz!_MapperEntity._get_entity_clauses�
s������$�$��2�2�'�=�=�A�A��K�K�����&�&�/�/�G���,�,��l�l�=�#@�#@�A���
�	���
� �/�/�C��
r�c��|j}|j|�}|jr|r|j|j�}n|s|j}|j|ur#|j
j}|j}ndx}}tj||j|||j||||j��	}||j|jfS)N)�only_load_propsrc�polymorphic_discriminator)rWrr�rr�r�r�rcr�_instance_processorrrr	r�r)r�r r�rWr8rrc�	_instances        r�r�z_MapperEntity.row_processor�
s����-�-�
��*�*�=�9���/�/�G��l�l�=�#G�#G�H�G��#�:�:�G��(�(�D�0�+�;�;�L�L�O�#�1�1�M�.2�2�O�m��/�/���K�K����I�I��+�'�&*�&E�&E�

�	��$�*�*�D�,@�,@�@�@r�c���tj||j||j||j|j
|jj|j��	y)N�r�rr)	r�_setup_entity_queryrrr�r6r�r�r	r�s   r�r�z/_MapperEntity.setup_dml_returning_compile_state�
sS��
	�#�#���K�K���I�I���)�)�!�;�;�)�9�9�J�J�&*�&E�&E�
	
r�c��|j|�}|jj}|�d|jf|jvr5|j}||j
r|jndf|j|<tj||j||j||j|j|jj|j��	|j j#|j$�y)Nr�r)rrr�r�r7r,r/rzrr rr�r6r�r�r	rxr�r�)r�rWr8�single_table_critr2s     r�r{z!_MapperEntity.setup_compile_states����*�*�=�9�� �K�K�?�?���)�,�d�k�k�:��.�.�/��'�'�H��%-�%>�%>��!�!�D�?�M�1�1�(�;�
	�#�#���K�K���I�I���)�)�!�;�;�)�9�9�J�J�&*�&E�&E�
	
�	�,�,�3�3�D�O�O�Dr�Nr)rqrrrsr�r�r�r�r�rrr?r�r�r�rr�r�r{r�r�r�r'r't
s���*��I�����$�$���
����#�J"�����O�
�"��"�� �� �@��*A�:
�&�
�2�
�
�	
�"Er�r'c��eZdZUdZdZded<ded<ded<d	ed
<ded<ded
<		dd�Zed��Zed��Z	d�Z
ed��Zd�Z						dd�Z
d�Zy)r�r�)r�r�r�r�r�r�r�r�rr�z	Type[Any]r�r
r�r�r�r�Nc	��d|_|jd}|r|jj|�n|j|�t	|t
jtjf�r|j�}n|}|x|_
|_t|�|_|j|_g|_|rm|jD]^}d|jvrt!|||||���"t	|t"�rt!|||||���Ct$j'||g|d||���`|jj(|_y)NTr���
parent_bundle)r�rr�r�r&rr�rr�r!r�r�r�rr��exprsr�r�_ORMColumnEntityr��
single_entityr�)r�rWr�r�rg�setup_entitiesr&r�s        r�r�z_BundleEntity.__init__3s6��+/�
�'�� � ��*����#�#�*�*�4�0��&�&�t�,���:�0�0�*�2K�2K�L�
��,�,�.�F��F�"(�(���d�i���L��	�!�;�;������������t�0�0�0�!�%��+�+�&*�� ��f�-�!�%��+�+�&*��%�1�1�%���+��+�&*�
2��%%�6'+�k�k�&?�&?��#r�c�8�|j}|�|jSyr�)r7r)r�rs  r�rz_BundleEntity.mapperns ��� � �����<�<��r�c�J�|jD]}|j}|��|cSyr�)r�r7�r�r(rs   r�r7z_BundleEntity.entity_zerovs)���>�>�C��O�O�E�� ���"�
r�c��yr�r�rs  r�r�z_BundleEntity.corresponds_tos��r�c�J�|jD]}|j}|��|cSyr�)r�r�r-s   r�r�z'_BundleEntity.entity_zero_or_selectable�s+���>�>�C��1�1�E�� ���"�
r�c�H�|jD]}|j|��yr�)r�r{)r�rWr(s   r�r{z!_BundleEntity.setup_compile_state�s���>�>�C��#�#�M�2�"r�c�$�|j|�Sr��r{r�s   r�r�z/_BundleEntity.setup_dml_returning_compile_state����
�'�'�
�6�6r�c	���t|jD�cgc]}|j||���c}�\}}}|jj	|j
||�}||j|jfScc}wr�)r�r�r�r��create_row_processorrXr�r)r�r r�r(�procs�labels�extra�procs        r�r�z_BundleEntity.row_processor�ss��"�<@�N�N�
K�N�S�c�����0�N�
K� 
���v�u��{�{�/�/��
�
�u�f�M���T�%�%�t�';�';�;�;��Ls�A5r�r)rqrrrsrr�r�r�r?rr7r�r�r{r�r�r�r�r�r�r� s����O��I�"�!��N�
�O��� � �
�L���9@�v���������
����3�7�&�7�2�7�
�	7�<r�r�c�Z�eZdZdZe	dd��Zed��Zed��Zed��Z	d�Z
y)	r�)�
_fetch_column�_row_processor�raw_column_index�translate_raw_columnNc
��|D]u}|j}d|vr|d}	ntj|d�}	|	r4d|jvrt||||	|||���Rt	||||	|||���et||||||���wy)Nr rir%)rrJ�extract_first_column_annotation�_IdentityTokenEntityr(�_RawColumnEntity)
r�rWrBr�r=rgr&�columnr�_entitys
          r�r�z_ColumnEntity._for_columns�s����F� �-�-�K���,�%�n�5��"�B�B��N����#�v�':�':�:�(�%��+��(�+�&3��%�%��+��(�+�&3��!�!��'�$�'�"/�
�?r�c�.�|jjSr�)rCr�r�s r�r�z_ColumnEntity.type�s���{�{���r�c�D�|jjjSr�)rCr��hashabler�s r�rz!_ColumnEntity._non_hashable_value�s���;�;�#�#�,�,�,�,r�c�B�|jjjSr�)rCr��_isnullr�s r�rz_ColumnEntity._null_column_type�s���{�{���'�'�'r�c���|j}|j�H|j\}}}|jr'||jj|j
fz
}|||fS|j�
|j}nM|j}|jr|jj|}|jr|j�}|jr|jj|}|j|�}||j|jf}||_|jr@|j|jj|j
fz}||j|fS|Sr�)rWr<r>rXrur=r;rCr�rBr�_deannotater��_getterr�r)	r�r r�rW�getter�
label_name�extra_entitiesrCrs	         r�r�z_ColumnEntity.row_processor�sg���-�-�
����*�15�1D�1D�.�F�J���(�(���M�M�.�.�t�/D�/D�E�#����:�~�5�5����)��'�'�F��[�[�F��,�,�&�6�6�>�>�v�F���"�"� �+�+�-���/�/�"�9�9�A�A�&�I�F�����'���d�&�&��(<�(<�<��!����$�$�!�1�1��
�
�*�*�4�+@�+@�A�5��N��4�+�+�^�;�;��Jr�r�)rqrrrsr�r�r�r?r�rrr�r�r�r�r�r��sd���I���/��/�b� �� ��-��-��(��(�0r�r�c�F�eZdZdZdZdZdZ	dd�Zd�Z						d	d�Z	d�Z
y)
rBNF)r�rCr�r�rc�&�||_||_|du|_|jr|xjddiz
c_|r|j
rd|_n*|r|j|_n|j|�|_|r|jj|�n|j|�||_|jjr|jjdnd|_
|j|jf|_dx|_|_y)Nr�Tr)r�r=r>r�r��_is_text_clauser��
_proxy_keyr�r�r�rCr�r�rr;r<)r�rWrCr�r=rgr&s       r�r�z_RawColumnEntity.__init__(s�����	� 0���$4�D�$@��!��?�?��)�)�j�$�-?�?�)�"�f�&<�&<�#�D���#)�#4�#4�� �#0�#B�#B�6�#J�� ���#�#�*�*�4�0��&�&�t�,����,0�K�K�,E�,E�D�K�K�%�%�a�(�4�	
�&�!%�	�	�4�;�;�7���37�7���T�0r�c��yr�r�rs  r�r�z_RawColumnEntity.corresponds_toLs��r�c�$�|j|�Sr�r2r�s   r�r�z2_RawColumnEntity.setup_dml_returning_compile_stateOr3r�c��|j�}|r||jd�}|�
y|j}|jr|j�}|jj|�|jj|�||_yr�)	r�rCrrKr�r�r�r�r;)r�rWr�rCs    r�r{z$_RawColumnEntity.setup_compile_stateVs}��'�<�<�>���$�T�[�[�%�8�F��~���[�[�F�����'�'�)�F��$�$�(�(��0��%�%�,�,�V�4�#��r�r�r)rqrrrsr7rr�r�r�r�r�r{r�r�r�rBrBsO���K�
�F�"���I��"8�H�7�&�7�2�7�
�	7�$r�rBc�B�eZdZdZdZdZ	d	d�Zd�Z						d
d�Zd�Z	y)r(zColumn/expression based entity.F)r�rrCr�r�r7rNc���|j}|}	|jdd�}
|jd|	�}|
r#t|j|
�|_d|_n||_|du|_||_|r1|r|
r|
n|j|_n |j||
��|_nd|_|	j|	x|_x|_}|	jx|_
}
|r|jj|�n|j|�d|_||_dx|_|_|j|j"f|_|
j*r|j-||j.�yy)N�	proxy_key�proxy_ownerF)rT)rr�rr�r�r>r=rSr�r�rr7r�rr�r�r�rCr;r<rrr4r�)r�rWrCr�r r=rgr&rrD�orm_keyrZrrs              r�r�z_ORMColumnEntity.__init__xse���)�)����"�+�/�/�+�t�4��%�k�o�o�m�W�=����� 2� 2�G�<�D�I�(-�D�%��D�I�(8��(D�D�%� 0�����.5�7�6�;L�;L�� �#0�#B�#B��W�$C�$�� � $�D�����DK�K���K�4�9�E�&�~�~�-���f���#�#�*�*�4�0��&�&�t�,�*.�
�'����37�7���T�0� $�	�	�4�;�;�7����2�2��:�:��u�'�'�
�3r�c��t|�r||juSt|j�xr|j|j�Sr�)rr7r�rs  r�r�z_ORMColumnEntity.corresponds_to�sO���V�$��T�-�-�-�-�(�� � ���9��&�&�t�'7�'7�8�
9r�c��|jx|_}|r	||d�}|�7|jj|�|jj|�yyr�)rCr;r�r�r�r�)r�rWr8rCs    r�r�z2_ORMColumnEntity.setup_dml_returning_compile_state�sW��'+�k�k�1���V���V�U�+�F����(�(�,�,�V�4��)�)�0�0��8�r�c��|j�}|r5||jd�}|�,|jsJ�|j|_y|j}|j}|j
j}|�d|j
f|jvr)||jr|jndf|j|<|jr|js|j�}t|jj�j!|j"j�r%|j$j'|j"�|j(j+|�|j,j'|�||_y)NFr�)r�rCr�r;r7rr�r�r,r/rzr�_expression_labelrKrwr��intersectionr�rxr�r�r�r�)r�rWr�rCrr"s      r�r{z$_ORMColumnEntity.setup_compile_state�sO��'�<�<�>���$�T�[�[�%�8�F��~�$�5�5�5�5�%)�[�[��"���[�[�F�� � �� �K�K�?�?���)�,�d�k�k�:��.�.�/��"'�"8�"8����d�<�M�1�1�%�8�
���v�'?�'?��'�'�)�F��t�{�{�(�(�)�6�6����*�*�
�
�0�0�7�7��8H�8H�I��$�$�(�(��0��%�%�,�,�V�4�#��r�r�r)
rqrrrsr�r�r�r�r�r�r{r�r�r�r(r(isI��)�"���I�$�A�F9�9�&�9�2�9�
�	9�)$r�r(c��eZdZdZd�Zd�Zy)rAFc��yr�r�r�s  r�r{z(_IdentityTokenEntity.setup_compile_state
s��r�c�@���fd�}||j|jfS)Nc�0���jjSr�)r[ry)�rowr s �r�rMz2_IdentityTokenEntity.row_processor.<locals>.getter
s����'�'�7�7�7r�)r�r)r�r r�rMs `  r�r�z"_IdentityTokenEntity.row_processor
s#���	8��t�'�'��)=�)=�=�=r�N)rqrrrsr>r{r�r�r�r�rArA�s�� ��
�>r�rAr�)r�z#Union[Query, Select, FromStatement]rWzOptional[ORMSelectCompileState]rr�r�zList[ORMColumnDescription])r�zUnion[Query[Any], Select[Any]]r��"Optional[_InternalEntityType[Any]]r�)rzTuple[_SetupJoinsElement, ...]r7rfr�z=Optional[Union[_InternalEntityType[Any], _JoinTargetElement]])��
__future__rr��typingrrrrrr	r
rrr
rr�rrr�baserrr�
path_registryrr$rrrrrrrr rkr!r"r#r%r&r'rJr(�sql._typingr)r*r+r,�sql.baser-r.r/r0r1r2�sql.dmlr3�sql.elementsr4r5�sql.selectabler6r7r8r9r:r;r<r=�sql.visitorsr>�_typingr?r@rArrBrXrCr^rDrE�enginerF�engine.interfacesrGrH�sql.compilerrIrJrKrLrMrNrOrP�sql.type_apirQrR�rootr�r�r�r�rUrr�r�rnrArRr[�
plugin_forr`rar�r�r
r�r�rrsr'r�r�rBr(rAr�r�r��<module>rysS��#����������� ������#�,�,�'�(��!����%���������"��� �*�(�(�'�#�!�!�� �)�%�0�:�-�;�#�-�(�-�,��,�3�!���'� ��<�4�*�*�,�3�9�3�6�+�)��T�����"�"�� �d� � �"��*�@�@��q.�q.�h,��+�+�'��.���
i$�l�i$�X*�#:�*�Zf
�-�f
�R	$$�$$�N>�'=�>�&�)?��0�����!�!�%�)=�>�wD�?�wD�?�wD�tuP�N�J�0@��0E�uP�p�����!�!�%�):�;�	� �"5�	�<�	������!�!�%��2�R0�O�[�R0�3�R0�n,6:��
�=�
�2�
�
�
� �	
�<+�=�+�'�+��=��'��*7;��/��3��C��$\#�\#�~iE�L�iE�X<�L�<�Dv�L�v�rK$�}�K$�\R$�}�R$�j
>�+�
>r�

ZeroDay Forums Mini