� k\�g����D�dZddlmZddlZddlZddlmZddlmZddlmZddlm Z ddlm Z dd lm Z dd lm Z dd lm Z dd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddl"m#Z#ddl"m$Z$dd lm%Z%dd!lm&Z&dd"l'm(Z(er6dd#l)m*Z*dd$l)m+Z+dd%lm,Z,dd&lm-Z-dd'lm.Z.dd(lm/Z/dd)lm0Z0dd*lm1Z1dd+lm2Z2e&j3d,d-��Z4dyd2�Z5ed/e6eee6d3fe e6fZ7ed4e6e6e e6fZ8ed1e6d3e e6fZ9e e7Z:Gd5�d6e ��Z;dzdA�Z<e d{d|dL���Z=ed}dM���Z= d~ddP�Z=dQ�Z>d�dS�Z?dT�Z@dU�ZAdV�ZBdW�ZCdX�ZDdY�ZEdZ�ZFd�d_�ZGd`�ZHe d�d�da���ZIed�dd���ZI d�d�df�ZIe d�d�dg���ZJed�dh���ZJ d�d�di�ZJGdj�dkej/e��ZKd�dn�ZLdo�ZMd�du�ZNdv�ZOdw�ZPdx�ZQdS)�ziFunctions used by compiler.py to determine the parameters rendered within INSERT and UPDATE statements. �)� annotationsN)�Any)�Callable)�cast)�Dict)�Iterable)�List)�MutableMapping)� NamedTuple)�Optional)�overload)�Sequence)�Set)�Tuple)� TYPE_CHECKING)�Union�)� coercions)�dml)�elements)�roles)�_DefaultDescriptionTuple)�isinsert)� ColumnClause)�default_is_clause_element)�default_is_sequence)�Select)� TableClause�)�exc)�util)�Literal)�_BindNameForColProtocol)� SQLCompiler)�_DMLColumnElement)�DMLState)� ValuesBase)� ColumnElement)�KeyedColumnElement)�_SQLExprDefault)�Column�REQUIREDa8 Placeholder for the value within a :class:`.BindParameter` which is required to be present when the statement is passed to :meth:`_engine.Connection.execute`. This symbol is typically used when a :func:`_expression.insert` or :func:`_expression.update` statement is compiled without parameter values present. �c�ColumnElement[Any]�return�ColumnClause[Any]c�^�t|t��stjd|�����|S)Nz5Can't create DML statement against column expression )� isinstancerr � CompileError)r-s �c/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/sqlalchemy/sql/crud.py�_as_dml_columnr5Js;�� �a�� &� &� ��� I�A� I� I� � � � �H�r*�KeyedColumnElement[Any]c�N�eZdZUded<ded<dZded<dZded<d Zd ed <d S) � _CrudParams�_CrudParamSequence� single_params�$List[Sequence[_CrudParamElementStr]]�all_multi_paramsF�bool�is_default_metavalue_only�use_insertmanyvaluesNzOptional[Sequence[Column[Any]]]�use_sentinel_columns)�__name__� __module__� __qualname__�__annotations__r?r@rA�r6r4r9r9js`�������%�%�%�%�:�:�:�:�&+��+�+�+�+�!&��&�&�&�&�<@��@�@�@�@�@�@r6r9�compilerr$�stmtr'� compile_stater&�toplevelr>�kwrc ������g�_g�_g�_g�_|�dd��}|�|�dd��d|vs Jd���t �||��\�}}|�_|jr|j rtj d���|j r)t�||d|�|dd||� � tgg��S�j�-|jr&t�fd�|jjD��g��St'|��rJ|jrC|j}|�J�|d} t-| �����} �fd �| D���nl|jr!|j} |j} | �J��fd �| D���nD|jr7|j} t-| �����} �fd �| D���ndx} x} ��j�i} n.| r��J���fd ��jD��} n�fd ��jD��} g} | �t5�|| | �| |��i} t7j|��r|jrt=�||| | ||| |� � t'|��r.|jr'|jrJ�tA�||| |�|| | ||� � d}d}ntC�||| |�|| | ||� � \}}| ry| rwtE| ���#�fd�| D�����$| ��}|r4tj dd�%d�|D����z���d}t'|��rP|jrI|jrJ�tM�||tOd| ��tOd���|��}t| |��S| sk�j(rd�j)j*rXtW|jjd���j,�-|jjd���j)j.dfg} d}t| g|||���S)aQcreate a set of tuples representing column/string pairs for use in an INSERT or UPDATE statement. Also generates the Compiled object's postfetch, prefetch, and returning column collections, used for default handling and ultimately populating the CursorResult's prefetch_cols() and postfetch_cols() collections. � visiting_cteN�accumulate_bind_namesz;Don't know how to handle insert within insert without a CTEzVCan't compile statement that includes returning() and return_defaults() simultaneouslyrFc ���g|]>}|j� |�j�|��t�|dd���|jff��?S)NT)�required)�_omit_from_statements�preparer� format_column�_create_bind_param�key)�.0r-rGs �r4� <listcomp>z$_get_crud_params.<locals>.<listcomp>�sh��� � � ���.� ���%�3�3�A�6�6�&�x��D�4�H�H�H��U�H� � � � r6rc�&��h|] }�|����SrFrF�rVrU�_column_as_keys �r4� <setcomp>z#_get_crud_params.<locals>.<setcomp>��#���:�:�:�s�~�~�c�*�*�:�:�:r6c�&��h|] }�|����SrFrFrYs �r4r[z#_get_crud_params.<locals>.<setcomp>�r\r6c�&��h|] }�|����SrFrFrYs �r4r[z#_get_crud_params.<locals>.<setcomp>�r\r6c�:��i|]}|�v��|��t��SrF�r,)rVrUrZ� spd_str_keys ��r4� <dictcomp>z$_get_crud_params.<locals>.<dictcomp>�s:��� � � ���+�%�%� �N�3� � ��%�%�%r6c�2��i|]}�|��t��SrFr`rYs �r4rbz$_get_crud_params.<locals>.<dictcomp>s2��� � � �.1�N�N�3� � �� � � r6Fc3�4�K�|]\}}�|��V��dS�NrF)rV�k�vrZs �r4� <genexpr>z#_get_crud_params.<locals>.<genexpr>Ks1�����N�N���1�.�.��+�+�N�N�N�N�N�Nr6zUnconsumed column names: %s�, c3�K�|]}|�V��dSrerF)rVr-s r4rhz#_get_crud_params.<locals>.<genexpr>Qs$����8�8�Q�Q�Q�8�8�8�8�8�8r6�Sequence[_CrudParamElementStr]�Callable[..., str]T)r?r@rA)/� postfetch�insert_prefetch�update_prefetch�implicit_returning�get�pop�_key_getters_for_crud_column�_get_bind_name_for_col� _returning�_return_defaultsr r3�isdelete�_setup_delete_return_defaultsr9� column_keys�_no_parameters�table�columns�_compile_state_isinsert�_has_multi_parameters�_multi_parameters�list�items�_ordered_values�_dict_parameters�!_get_stmt_parameter_tuples_paramsr�isupdate� is_multitable�_get_update_multitable_params� _select_names�_scan_insert_from_select_cols� _scan_cols�set� intersection� difference�join�_extend_values_for_multiparamsr�for_executemany�dialect�supports_default_metavaluer5rRrS�default_metavalue_token)rGrHrIrJrKrM�_getattr_col_key�_col_bind_name�mp�spd�stmt_parameter_tuples� parameters�values� check_columnsr@rA�checkr?�multi_extended_valuesrZras` @@r4�_get_crud_paramsr�rs������P�H��!�H��!�H��"$�H���6�6�.�$�/�/�L��� ���&��-�-�-��r�)�)�)�D� *�)�)� %�X�t�]�C�C� ����'5�H�#� �� �4�0� ��� /� � � � ��#�%� � � � � � � � � � � � � � ��2�r�"�"�"���#� �(D�#�� � � � ���+� � � � �  �  � �( � �.�.�9� � /�9�� ,���~�~�~���e�� $�S�Y�Y�[�[� 1� 1��:�:�:�:�c�:�:�:� � � � &� 9��,�� -� =������:�:�:�:�c�:�:�:� � � � '�9��,�� $�S�Y�Y�[�[� 1� 1��:�:�:�:�c�:�:�:� � �48�8��8��k���#�� � � �  ��&�&�&� � � � � ��+� � � � � �  � � � �5=�5I� � � � � ')�F��(�)� � � � !� � � � � � �35�M� �|�M�"�"�  �}�'B�  �%� � � � !� � � � � � � � ��}�-�-�! �$�2D�! �!�6�6�6�6�%� � � � � � � � � � � � � � � %��#���5?� � � � � � � � � � � � 6 � 6 �2��2�� �+� � � �O�O� �\�N�N�N�N�8M�N�N�N� N� N� �Z� � &� &� � � ��"�-��9�9�8�8�%�8�8�8�8�8�:��� � !&�� � �.�.�#)� � /�#)� �%�%�%�%� >� � � � �0�� � � �%�~� 6� 6� � ! � ! ���6�#8�9�9�9� �)� � $�)� � � 7�)��t�z�1�!�4�5�5��!�/�/�� �0B�1�0E�F�F�� �8��  � ��%)�!� �� �";�1�1�  � � �r6.F�col�value�process� Literal[True]rP�name� Optional[str]�strc ��dSrerF)rGr�r�r�rPr�rKs r4rTrT�s �� �#r6c ��dSrerF)rGr�r�rKs r4rTrT�� �� �#r6T�'Union[str, elements.BindParameter[Any]]c ��|�|j}tj|||j|���}d|_|r|j|fi|��S|S)N)�type_rPT)rUr� BindParameter�type�_is_crud�_compiler_dispatch)rGr�r�r�rPr�rK� bindparams r4rTrT�se�� �|��w���&� �e�3�8�h����I��I����+�y�+�H�;�;��;�;�;��r6c ���d|v}|s7|jr0t|jtj��r||jd|jf<|jjr|�|j��}|j |fi|��S)NrMr�) �uniquer2rUr�_truncated_label�truncated_namesr��_isnull�_with_binary_element_typer�)rGr�r�r�rK�is_ctes r4�_handle_values_anonymous_paramr��s���(�r� !�F� �B� �L�B� �u�y�(�";� <� <�B� >B�� �+�u�y�!9�:� �z��:��/�/���9�9�� #�5� #�H� 3� 3�� 3� 3�3r6��Tuple[Callable[[Union[str, ColumnClause[Any]]], Union[str, Tuple[str, str]]], Callable[[ColumnClause[Any]], Union[str, Tuple[str, str]]], _BindNameForColProtocol]c�f���tj|��rX|jrQt|j���t jt jtj ���d ��fd� }d �fd� }d �fd � }n?t jt jtj ��}tj d��x}}|||fS)NrU�Union[ColumnClause[Any], str]r/�Union[str, Tuple[str, str]]c�l���|��}t|d��r|j�vr|jj|fS|S)Nr{)�hasattrr{r�)rU�str_key�_et� c_key_roles ��r4rZz4_key_getters_for_crud_column.<locals>._column_as_key�sD���!�j��o�o�G��s�G�$�$� ���c�)9�)9�� ���0�0��r6r�r0c�J��|j�vr|jj|jfS|jSre)r{r�rU�r�r�s �r4r�z6_key_getters_for_crud_column.<locals>._getattr_col_key�s*����y�C���� ����0�0��w�r6r�c���|j�vr9trt|jt��sJ�|jj�d|j��S|jS)N�_)r{rr2rr�rUr�s �r4r�z4_key_getters_for_crud_column.<locals>._col_bind_name�sN����y�C��� �>�%�c�i��=�=�=�=�=�"%�)�.�.�.�#�'�'�:�:��w�r6)rUr�r/r�)r�r0r/r�)r�r0r/r�) rr�� _extra_fromsr�� functools�partialr� expect_as_keyr� DMLColumnRole�operator� attrgetter)rGrHrIrZr�r�r�r�s @@r4rsrs�s����� �|�M�"�"�*G�}�'A�*G��-�,�-�-���&� � #�U�%8� � � � � � � � � � � � � � � � � � � � � � � �#�*� � #�U�%8� � ��-5�,?��,F�,F�F��>� �+�^� ;�;r6c ������fd��jD��} |jdd�usJ��j|jdd<g} �jrJt | ��} �jjD].}|| vr(|jr!|jjs| � |���/| D]o}||��}||vrK||vrG|� |��|� ||j � |��ddf���\t|�|| | ���p| r�|�| ��|jdd}t|t ��s5t#jdd�d�| D�����d ����|���}t+|j��d �| D��z|_||jdd<dSdS) Nc�F��g|]}�jj�|����SrF)r{r-)rVr�rZrHs ��r4rWz1_scan_insert_from_select_cols.<locals>.<listcomp>s,��� N� N� N�4�D�J�L����-�-� .� N� N� Nr6������ selectable�insert_from_selectrFz_Can't extend statement for INSERT..FROM SELECT to include additional default-holding column(s) ric3�>K�|]\}}}}t|��V��dSre)�repr)rVr�rUs r4rhz0_scan_insert_from_select_cols.<locals>.<genexpr>Bs0����L�L�L�A�s�A�q�d�3�i�i�L�L�L�L�L�Lr6z~. Convert the selectable to a subquery() first, or pass include_defaults=False to Insert.from_select() to skip these columns.c��g|] \}}}}|�� SrFrF)rVr��exprs r4rWz1_scan_insert_from_select_cols.<locals>.<listcomp>Is3��M �M �M �"�Q��4��D�M �M �M r6)r��stack�select�#include_insert_from_select_defaultsr�r{r|�default� is_sentinel�appendrrrRrS�&_append_param_insert_select_hasdefault�extendr2rr r3r�� _generater�� _raw_columns)rGrHrIr�r�rZr�r�r�rJrK�cols�add_select_cols�col_setr�r-�col_key�ins_from_selects ` ` r4r�r� sS���� O� N� N� N� N�4�;M� N� N� N�D� �>�"� �l� +�t� 3� 3� 3� 3�/3�{�H�N�2��+�,�68�O� �/�!��d�)�)���:�%� !� !�C��7�"�"��K�#�� �/�#�� � �C� � � �� ����"�"�1�%�%�� �j� � �W�M�%A�%A� �N�N�7� #� #� #� �M�M�1�h�/�=�=�a�@�@�$��K� L� L� L� L� 2��$��?�B� � � � ��C�� � �o�&�&�&�"�.��,�-A�B���/�6�2�2� ��"���I�I�L�L�O�L�L�L�L�L������ �*�3�3�5�5��'+�O�,H�'I�'I�M �M �&5�M �M �M �( ��$�4C���r��/�0�0�0�%C�Cr6c ������t|�|| ��\} } } }}}|js |jsJ�|jrJ�fd�|jD��}t |����fd�|D���fd��jjD��z}n �jj}t|��}|r |j s�jj }|j j }ndx}}�j rt �j ��}nt ��}|j}|D�]Y}||��}||vr"||vrt|�|||||| | ||||| ���n|r�|jr,| r*| rt#|�||| ��n�t%|�||| ��n�|j�#|jjr|�t+|�|| || ��n�|j�>| r|| vr|�|��n�|js|j�|��nd| r|| vr|�|��nH|jr$|�jj ur|jst5|��n|jrt7||�|| || ��||vr||vr|�|����[|r;|�|���|��fd��j D����||fS)Nc�&��g|] }�|����SrFrFrYs �r4rWz_scan_cols.<locals>.<listcomp>hs0��� � � �$'�N�N�3� � � � � r6c�z��g|]7}t|t��r |�jjv�%�jj|��8SrF)r2r�r{r-)rVrUrHs �r4rWz_scan_cols.<locals>.<listcomp>lsO��� � � ���#�s�#�#� �),�t�z�|�(;�(;� �J�L�� �(;�(;�(;r6c�&��g|] }|j�v� |��SrF)rU)rVr-� ordered_keyss �r4rWz_scan_cols.<locals>.<listcomp>ps%��� B� B� B�1���\�(A�(A�Q�(A�(A�(Ar6c3�$�K�|] }|�v�|V�� dSrerF)rVr-�remaining_supplementals �r4rhz_scan_cols.<locals>.<genexpr>�s;�����+ �+ ���*�*�*� �*�*�*�*�+ �+ r6)�_get_returning_modifiersr�r�_parameter_orderingr�r{r-r|r}r~�_autoincrement_columnr��#insert_null_pk_still_autoincrements�_supplemental_returningrp�_append_param_parameter� primary_key�!_append_param_insert_pk_returning�$_append_param_insert_pk_no_returningr�r��_append_param_insert_hasdefault�server_defaultr�rm�nullable�"_warn_pk_with_no_anticipated_value�_append_param_updater�r�)rGrHrIr�r�rZr�r�r�rJrK�need_pksrp�implicit_return_defaults�postfetch_lastrowidr@rA�parameter_orderingr�r�autoincrement_colr��supplemental_returning�compiler_implicit_returningr-r�r�r�s ` ` @@r4r�r�Os)������( !��4���I�I���� ���� � !�;�]�%;�;�;� ;��(� "� � � � �+8�+L� � � ���-�.�.� � � � � �)� � � � C� B� B� B�� � � B� B� B� C����z�!��&�}�5�5�H�� G� �;� G�!�J�<�� � � @� ,�+�CG�F��?� �#�'�!$�T�%A�!B�!B���!$����"*�"=�� �i2�i2��#�"�1�%�%�� �j� � �W�M�%A�%A� $��������"�(�#��!�3�� � � � �(�C ��}�3 6��3 6� &�� 6� �$��6�2�����9� �$��6�2�������&��y�,��(�4�3� �$��+C�V�R������!�-�,�1��5M�0M�0M�/�6�6�q�9�9�9�9���1��&�-�-�a�0�0�0��)� 6�a�3K�.K�.K�+�2�2�1�5�5�5�5�� � 6��T�Z�=�=�=�� �>�3�1�5�5�5�� � #� � !�����(��� � � � �'� '� '��4�4�4� '� .� .�q� 1� 1� 1���  �"8�!B�!B� '�" �" �� $�*�*�+ �+ �+ �+ ��1�+ �+ �+ � � � �& !�"6� 7�7r6c �� �t|||| ��^} } } } | sdS|jr|j�| ��|jrAt |j��� |j�� fd�|jD����dSdS)Nc3�$�K�|] }|�v�|V�� dSrerF)rVr-�ir_sets �r4rhz0_setup_delete_return_defaults.<locals>.<genexpr>,s0�����+ �+ ��q����A�����+ �+ r6)r��_return_defaults_columnsrpr�r�r�)rGrHrIr�r�rZr�r�r�rJrKr�r�rs @r4rxrxs����,D��$� �x�,�,�(�Q�� #�a� $���� �$�E��#�*�*�+C�D�D�D� �#� ��X�0�1�1���#�*�*�+ �+ �+ �+ ��3�+ �+ �+ � � � � � � � r6c��|�|��}|j�||j���}t ��}t j|��r|| r1|jr*|| ur&| rd|_n|r|j � |��t|||f|tut|��r|js ||��n d||��z|d�| ��}�nc|jr�| rB|j�;|jr4|| ur0|r|j � |��n|jjrd|_t%|||ft|��r|js ||��n d||��z|d�| ��}n�|j|���fd|i| ��}|jr<|r||vr|j � |��n�|j� |��ns|jr1|r|j � |��nO|jjrd|_n;|r||vr|j � |��n|j� |��| � ||||f��dS)N�� use_tableTz%s_m0)rPr�rN)r�rNrN)rrrRrS�include_table_with_column_exprsr�r� _is_literalr�r�rpr�rTr,r}r~�_is_bind_parameterr�r�r�r�� self_groupr�rm)rGrHrIr-r�r�r�rpr�r�r�r�r�rKr�� col_value�accumulated_bind_namess r4r�r�1sD�� �N�N�7� #� #�E��!�/�/� �]�B�0���I�(+�u�u����U�#�#�V-� /� 6�� � 6��&�&�&� #� 6�/3��,�,�#� 6��+�2�2�1�5�5�5�"� � � �  ��h�&�/�}�=�=�1�$�:�1���q�!�!�!��~�~�a�0�0�0�"8�  �  ��  �  ��� � !�:-� /� 4�� �#�� �$��&�&�&�"� 4��+�2�2�1�5�5�5�5��!�5� 4�/3��,�.� � � �  � /�}�=�=�1�$�:�1���q�!�!�!��~�~�a�0�0�0�"8�  �  ��  �  ���!�� � � � � � � � �"8� �� � �� � !� -�'� -�A�1I�,I�,I��+�2�2�1�5�5�5�5��"�)�)�!�,�,�,�,��}� -�%�8��/�6�6�q�9�9�9�9��%�9�8�37�H�0��)� -�q�4L�/L�/L��+�2�2�1�5�5�5�5��"�)�)�!�,�,�,� �M�M�1�i��(>�?�@�@�@�@�@r6c ��|j��t|jjr�|jjrj|jjr |jjsRt ��}|�||j� |��|j |jfd|i|��|f��|j �|��dS|jj r�t ��}|�||j� |��|j |jj ���fd|i|��|f��|j �|��dS|�||j� |��t||fi|��|jff��dS||jjus|j�|j �|��dS|jst+|��dSdS)z�Create a primary key expression in the INSERT statement where we want to populate result.inserted_primary_key and RETURNING is available. NrN)r�� is_sequencer��supports_sequences�optional�sequences_optionalr�r�rRrSr�rp�is_clause_element�argr �"_create_insert_prefetch_bind_paramrUr{r�r�r�r�)rGrHr-r�rKr s r4r�r��s6��  �y�� �9� �- ���2� ��I�&� ��'�:� �47�5�5�&�� � �� �)�7�7��:�:�(��(��I���2H��!��� /� � � � � � '� .� .�q� 1� 1� 1� 1� 1� �Y� (� �%(�U�U� "� �M�M���%�3�3�A�6�6�$�H�$�� � �0�0�2�2���.D����� +� � � � � � '� .� .�q� 1� 1� 1� 1� 1� �M�M���%�3�3�A�6�6�6�x��I�I�b�I�I��U�H� � � � � � � �d�j�.� .� .�!�2B�2N��#�*�*�1�-�-�-�-�-� �Z�.� +�1�-�-�-�-�-�.�.r6c �(�|j�0|jjrp|jjr|jjrX|jjrL||jjur�|jjsw|j�|jjr |jjs|j�Q|jj rE|� ||j � |��t||fi|��|jff��dS|j�-|j�&|js||jjurt#|��dS|jjr d|_dSdS)aoCreate a primary key expression in the INSERT statement where we want to populate result.inserted_primary_key and we cannot use RETURNING. Depending on the kind of default here we may create a bound parameter in the INSERT statement and pre-execute a default generation function, or we may use cursor.lastrowid if supported by the dialect. NT)r�rr�rrrr{r�r��"preexecute_autoincrement_sequencesr�rRrSrrUr�r�r��rGrHr-r�rKs r4r�r��sn�� � ��� �%� � � �3� �� �*� �$�+�>� � �T�Z� -�-�-�� �4� .��I�)�� �-�*� �(�;�*��I�%� �(�K�&� � � ���!�/�/��2�2�2�8�Q�E�E�"�E�E����  � � � � � � � �� � � $�� � %� �T�Z�5� 5� 5� +�1�-�-�-�-�-� � � -�,� (,��$�$�$� ,�,r6c ��|jjr�|jjr�|jjr |jjs�t ��}|�||j� |��|j |jfd|i|��|f��|r ||vr|j �|��dS|j s |j �|��dSdSdSdS|jjr�t ��}|�||j� |��|j |jj���fd|i|��|f��|r ||vr|j �|��dS|j s|j �|��dSdS|�||j� |��t#||fi|��|jff��dS)NrN)r�rr�rrrr�r�rRrSr�rpr�rmrrr rrU)rGrHr-r�r�rKr s r4r�r�.si�� �y��1 � � � .� -�� �"� -�*2�*:�*M� -�03�u�u� "� �M�M���%�3�3�A�6�6�$�H�$�� ���.D����� +� � � � �(� -�A�1I�,I�,I��+�2�2�1�5�5�5�5�5��]� -��"�)�)�!�,�,�,�,�,�' -� -� -� -�$ -� -� �� $� �!$����� � ���!�/�/��2�2� �� ��I�M�,�,�.�.���*@����� '� � � � � $� )��-E�(E�(E� � '� .� .�q� 1� 1� 1� 1� 1��� )� � � %� %�a� (� (� (� (� (� )� )� � � ���!�/�/��2�2�2�8�Q�E�E�"�E�E����  � � � � � r6r��List[_CrudParamElementSQLExpr]�Dict[str, Any]�Nonec �b�t|j��rr|jjrb|jjr |jjsL|�||j�|��|j� ��df��dSdSdSt|j��rO|�||j�|��|jj � ��df��dS|�||j�|��t||fddi|��|jff��dS)NrFr�F)rr�r�rrrr�rRrS� next_valuerrr rrUrs r4r�r�esy���1�9�%�%� � � � .� �� �"� �*2�*:�*M� � �M�M���%�3�3�A�6�6��I�(�(�*�*�� � � � � � � � � � � #�1�9� -� -� �� � ���!�/�/��2�2�� � �(�(�*�*��  � � � � � � � � ���!�/�/��2�2�2��a���).��24������  � � � � � r6c ��|j}|j��|jjs�|jjr�|�||j�||���|j|jj� ��fi|��df��|r ||vr|j �|��dS|j �|��dS|�||j�||���t||fi|��|j ff��dS|j�>|r ||vr|j �|��dS|j �|��dS|r.|js|js$||vr|j �|��dSdSdSdS)NrrF)r�onupdaterrr�rRrSr�rr rprm�"_create_update_prefetch_bind_paramrU�server_onupdaterrv)rGrIrHr-r�r�rK� include_tables r4r�r��s ��"�A�M��z��a�j�&<�� �:� '� � �M�M���%�3�3��"/�4���%�H�$�Q�Z�^�%>�%>�%@�%@�G�G�B�G�G��� � � �(� -�A�1I�,I�,I��+�2�2�1�5�5�5�5�5��"�)�)�!�,�,�,�,�,� �M�M���%�3�3��"/�4���7�x��I�I�b�I�I��U�H�� � � � � � � � &� #� )��-E�(E�(E� � '� .� .�q� 1� 1� 1� 1� 1� � � %� %�a� (� (� (� (� (� �.� � *�.�26�2G�.� �)� )� )��#�*�*�1�-�-�-�-�-� .�.� *� )�.�.r6c ��dSrerF�rGr-r�rKs r4rr�r�r6�Literal[False]�elements.BindParameter[Any]c ��dSrerFr%s r4rr�� �� #&�#r6�'Union[elements.BindParameter[Any], str]c �^�t||df||d�|��}|j�|��|S�N)r�r�)rTrnr��rGr-r�r�rK�params r4rr��O�� ��!�T� �#*�� � �9;� � �E� ��#�#�A�&�&�&� �Lr6c ��dSrerFr%s r4r!r!�r�r6c ��dSrerFr%s r4r!r!�r)r6c �^�t||df||d�|��}|j�|��|Sr,)rTror�r-s r4r!r!�r/r6c�n�eZdZdZd�Zd�Zd�Zd�Zej d d���Z ej d d ���Z d S) �_multiparam_columnTc�z�||_d|j|dzfz|_||_|j|_|j|_dS)N�%s_m%dr)�indexrU�originalr�r�)�selfr8r7s r4�__init__z_multiparam_column.__init__�s>���� ��x�|�U�Q�Y�7�7��� �� ��'�� ��M�� � � r6c ��t���re��NotImplementedError)r9�otherrKs r4�comparez_multiparam_column.compare���!�#�#�#r6c ��t���rer<)r9rKs r4�_copy_internalsz"_multiparam_column._copy_internals r@r6c�l�t|t��o|j|jko|j|jkSre)r2r4rUr8)r9r>s r4�__eq__z_multiparam_column.__eq__ s7�� �u�0� 1� 1� 0�� �T�X�%� 0���$�-�/� r6r/rc�4�tj|j��S�z1used by default.py -> _process_execute_defaults())r�_from_column_defaultr��r9s r4�_default_description_tuplez-_multiparam_column._default_description_tuples��(�<�T�\�J�J�Jr6c�4�tj|j��SrF)rrGr rHs r4�_onupdate_description_tuplez._multiparam_column._onupdate_description_tuples��(�<�T�]�K�K�Kr6N)r/r) rBrCrD�_is_multiparam_columnr:r?rBrDr!�memoized_propertyrIrKrFr6r4r4r4�s������� ��"�"�"�$�$�$�$�$�$� � � � ��K�K�K���K�  ��L�L�L���L�L�Lr6r4r7�intc�p�|jstjd|z���t|j��r*|j|jj���fi|��S|jjr|j|jfi|��St||��}t|tj ��sJ�t||fddi|��S)Nz�INSERT value for column %s is explicitly rendered as a boundparameter in the VALUES clause; a Python-side value or SQL expression is requiredr�T) r�r r3rr�rr rr4r2r�Insertr)rGrHr-r7rKr�s r4� _process_multiparam_default_bindrQ s��� �9� ��� @�BC� D� � � � #�1�9� -� -� ��x��� � � 8� 8� :� :�A�A�b�A�A�A� �� � � �x��� �0�0�R�0�0�0� ��E�*�*���$�� �+�+�+�+�+�1� �c� � �#'� �+-� � � r6c ��d�|pdD��} |j} t��} |jD�]} | jD�]} | | vr�| �| ��| ||| ��<| | }|�| | ���}t j|��r+t|| |f|tu|| ��d�|��}| j f}nc|j r || ��}t|| |fd|i|��}|f}n<|j �| ��|j|���fi|��}d}|�| |||f������| D�]} | jD�]} | | vr�| j��| jjs�| jjrq|�| |�| | ���|j| jj���fi|��df��|j �| ����|�| |�| | ���t)|| fd|| ��i|��| j ff����| j�|j �| ������dS)Nc�T�i|]%\}}tjtj|��|��&SrF)r�expectrr�)rVr-r.s r4rbz1_get_update_multitable_params.<locals>.<dictcomp>Ls>����� �A�u� ���,�a�0�0�%���r6rF�r#)rPr�r�)rr�r�r-�addr�rr rTr,rUr r�rmr�r r rrrr!r")rGrHrIr�r�r�r�r�rK�normalized_paramsr#�affected_tables�tr-r�r r �cbns r4r�r�AsQ����-�3������ "�A�M��e�e�O� � '�M�M���� M� M�A��%�%�%��#�#�A�&�&�&�56� �.�.�q�1�1�2�)�!�,��$�,�,�Q�m�,�L�L� ��(��/�/�0�.� ����"'�(�!2�+�^�A�.�.� �� � ��E�>?�U�H�*�*��-� 0�(�.��+�+�C�:� �!�U���14��8:���E�/2�V�*�*��&�-�-�a�0�0�0�,�H�,�U�-=�-=�-?�-?�F�F�2�F�F�E�-/�*�� � �q�)�U�4J�K�L�L�L��7 M�<�-�-���� -� -�A��%�%�%����'�� �0F�'��:�/���M�M��$�,�,�Q�m�,�L�L�,�H�,� !� �� 9� 9� ;� ;���?A���� � � � ��&�-�-�a�0�0�0�0��M�M��$�,�,�Q�m�,�L�L�>� (�!���2@�.��2C�2C��GI����U�H� � � � � ��"�.��"�)�)�!�,�,�,��9 -�-�-r6�initial_valuesrkrZrlr<c �(��|}|g}|j}|�J�t|dd���D]�\} } g} �fd�| ���D��} |D]�\} } }}| j| vrm| j}t j| |��r%t || | |fdd| j| dzfzi|��}n:|j| |���fi|��}nt||| | |��}| � | | ||f����|� | ����|S)Nrc�.��i|]\}}�|��|��SrFrF)rVrUrgrZs �r4rbz2_extend_values_for_multiparams.<locals>.<dictcomp>�s)���@�@�@�&�#�q�~�~�c�"�"�A�@�@�@r6r�r6) r� enumerater�rUrr rTr�r rQr�)rGrHrIr[rZrK�values_0r�r��i�row� extensionr��col_exprr.�accumulated_namesrU� new_params ` r4r�r��s}����H�� �F� � (�B� �>�>�>��B�q�r�r�F�#�#�!�!���3�02� �@�@�@�@�C�I�I�K�K�@�@�@��7?� L� L� 3�C��5�"3��w�#�~�~��g���(��S��2�2� N� 2� ���C��!�!�&���!�a�%�(8�8� !� � !�!�I�I�!1�� 0��S��1D�1D�1F�1F� M� M�"� M� M�I�I�<��d�C��B��� � � � �c�8�Y�8I�J� K� K� K� K�� � �i� � � � � �Mr6c���|D]�\}}||��} | �|�| |���)|�||j���} tj|��r)|jt jd||j���fi|��}nM|jr&|jj r|� |j��}|j|� ��fi|��}|� || |df����dS)NrU)r�rF) � setdefaultr�rrr rr�r�r r�r�r r�) rGrIr�r�rZr�rKrfrg�colkeyrcs r4r�r��s3��&�0�0���1����"�"�� � � � !� !�&�!� ,� ,� ,� ,� �'�'���!N�(���H��$�Q�'�'� ;�$�H�$��*�4��!�&�A�A�A���EG������'�<�A�F�N�<��3�3�A�F�;�;�A�$�H�$�Q�\�\�^�^�:�:�r�:�:�� �M�M�1�h��2�.� /� /� /� /�=0�0r6c�F�|j}|o<t|��o-|j o%|j p |jo|jo|j o|j }|o|jo |j j du}|o1|j o*|j j o|jo| p|jp |jp|j}|rd}t|��rZ|o|j}|p |jp|j} |o|jo|jo| p|j} d} | r#| r!|jr|�|j ��} n`|jr&|jo|j j o |jo|j}d} d} n3|jr&|jo|j j o |jo|j}d} d} nd}d} d} |r6|jst5|j j��} nt5|j��} nd} ||p|| || | fS)z�determines RETURNING strategy, if any, for the statement. This is where it's determined what we need to fetch from the INSERT or UPDATE statement after it's invoked. NF)r�r}�_inliner��insert_executemany_returningrvrur~r�r{r��insert_returning�_primary_tablerp�_supports_implicit_returning�favor_returning_over_lastrowidr�r@�!use_insertmanyvalues_wo_returning�_sort_by_parameter_order�_get_sentinel_column_for_tabler��update_returningrw�delete_returningrr�r-) rGrHrIrJr�r�r�rp�should_implicit_return_defaults�explicit_returningr@rAr�s r4r�r��s�����G� � 4� #�M� 2� 2� 4�� � � 4��(� (� P��4�N��9N� 4��� � 4��3� 3� � � 9� � '� 9� �J� ,�D� 8�� � � � $� � � (� ;�  � � 6� �$%� $� N��(N� %��2� %��$�-�2�$�#���}�-�-�1$� � 8�4�#8� (� ,� ,��� ,��+� � � ��(� ��,� �#�O�g�&O� � $�� � �"� ��-� � $,�#J�#J�� �$�$� �� � �$� � !� )��,�?� )��:� )��(� (� %��#��� � � $� � !� )��,�?� )��:� )��(� (� %��#���*/�'�$��#��&� (��,� J�(+�4�:�<�'8�'8� $� $�'*�4�+H�'I�'I� $� $�#'� � ��=�=� ����  �r6c��d|jj�d|j�d|jj�d�}t|jj��dkr|dz }t j|��dS)NzColumn '�.z6' is marked as a member of the primary key for table 'z�', but has no Python-side or server-side default generator indicated, nor does it indicate 'autoincrement=True' or 'nullable=True', and no explicit value is passed. Primary key columns typically may not store NULL.ra0 Note that as of SQLAlchemy 1.1, 'autoincrement=True' must be indicated explicitly for composite (e.g. multicolumn) primary keys if AUTO_INCREMENT/SERIAL/IDENTITY behavior is expected for one of the columns in the primary key. CREATE TABLE statements are impacted by this change as well on most backends.)r{�fullnamer��lenr�r!�warn)r-�msgs r4r�r�rso��� �7� � � �Q�V�V�V�Q�W�%5�%5�%5�  7�� �1�7� ���!�#�#� � � �� �I�c�N�N�N�N�Nr6)r-r.r/r0) rGr$rHr'rIr&rJr>rKrr/r9).FN)rGr$r�r.r�rr�r�rPr>r�r�rKrr/r�) rGr$r�r.r�rrKrr/r�)TFN)rGr$r�r.r�rr�r>rPr>r�r�rKrr/r�)rGr$rHr'rIr&r/r�) rGr$rHr'r-r0r�rrKrr/r).) rGr$r-r.r�r�rKrr/r�) rGr$r-r.r�r&rKrr/r')TN) rGr$r-r.r�r>r�r�rKrr/r*) rGr$rHr'r-r7r7rNrKrr/r�)rGr$rHr'rIr&r[rkrZrlrKrr/r<)R�__doc__� __future__rr�r��typingrrrrrr r r r r rrrrr�rrrr�baserrr}r�schemarrr�rrr r!� util.typingr"rGr#r$r%r&r'r(r)r*r+�symbolr,r5r��_CrudParamElement�_CrudParamElementStr�_CrudParamElementSQLExprr:r9r�rTr�rsr�r�rxr�r�r�r�r�r�rr!r4rQr�r�r�r�r�rFr6r4�<module>r�s�����#�"�"�"�"�"���������������������������������������������!�!�!�!�!�!������������������������������������� � � � � � �������������������������������*�*�*�*�*�*�4�4�4�4�4�4�"�"�"�"�"�"�-�-�-�-�-�-�'�'�'�'�'�'�������#�#�#�#�#�#�������������!�!�!�!�!�!�� �1�1�1�1�1�1�%�%�%�%�%�%�&�&�&�&�&�&�������������'�'�'�'�'�'�,�,�,�,�,�,�'�'�'�'�'�'������� �4�;�� � � �� � � � ���� � �c�$�$�%�� �S�M� ������� �S�M���� !���� �S�M�����+�,��A�A�A�A�A�*�A�A�A�O�O�O�O�d � !��� ���� ��� ���� ������ �����*#4�#4�#4�L3<�3<�3<�3<�lBC�BC�BC�JA8�A8�A8�H � � �<pA�pA�pA�f:.�:.�:.�zJ,�J,�J,�Z4 �4 �4 �n& �& �& �& �R+.�+.�+.�\ �!����� ��� �&�&�&� ��&��� � � � � � �!����� ��� �&�&�&� ��&��� � � � � �!L�!L�!L�!L�!L��/��4�!L�!L�!L�H � � � �BO-�O-�O-�d)�)�)�)�X'0�'0�'0�TF�F�F�R����r6
Memory