Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
util.cpython-313.pyc392 linesDownload Raw Back to __pycache__
1�

2��j����V�SrSSKJr SSKJr SSKrSSKJr SSKrSSKJ	r	 SSKJ3r4 SSKJr SS	KJr SS5KJ
r
 SSKJr SSKJr SS
KJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSK J!r! SSK J"r" SSK J#r# SSK$J%r% SS K$J&r& SS!K'J(r( SS"K)J*r* SS#K+J,r, SS$K+J-r- SS%K+J.r. SS&K+J/r/ SS'K+J0r0 SS(K+J1r1 SS)K+J2r2 SS*K+J3r3 SS+K+J4r4 SS,K+J5r5 SS-K+J6r6 SS.K+J7r7 SS/K+J8r8 SS0K9J:r: SS1K;J<r< SS2K;J=r= SS3K;J>r> SS4K;J?r? SS5K;J@r@ SS6K;JArA SS7K;JBrB SS8KJCrC S9S:KJDrD S9S;KJErE S9S<KFJGrG S9S=KFJHrH \R,(a`SS>KJIrI SS?KJJrJ SS@KJKrK SSAK+JLrL SSBK+JMrM SSCK;JNrN SSDK;JOrO SSEK;JPrP SSFKJQrQ SSGKJRrR SSHKJSrS S9SIKTJUrU S9SJKTJVrV S9SKKTJWrW S9SLKTJXrX S9SMKYJZrZ \"SNSOSP9r[S|S}SQjjr\S~SRjr]SSSjr^S�STjr_S�SUjr`SVSVSVSVSVSW.S�SXjjraS�SYjrbSZrcS[rdS\reS�S]jrfS^rgS�S_jrhS`riS�SajrjSbrkScrl"SdSe5rmSfrn"SgSh\m5ro"SiSj\p5rq"SkSl\m5rrS�SmjrsS�S�Snjjrt\S�Soj5ru\S�Spj5ruS�SqjruS�Srjrv"SsSt\R�5rx"SuSv\H5ry"SwSx\x5rzS|S�Syjjr{S�Szjr|S�S{jr}g)�z9High level utilities which build upon other modules here.�)�annotations)�dequeN)�chain)�AbstractSet)�Any)�Callable)�cast)�6Collection)�Dict)�Iterable)�Iterator)�List)�Optional)�overload)�Sequence)�Tuple)�
TYPE_CHECKING)�TypeVar)�Union�)�	coercions)�	operators)�roles)�visitors��is_text_clause)�_deep_annotate)�_deep_deannotate)�_shallow_annotate)�_expand_cloned)�
_from_objects)�HasCacheKey)�sort_tables)�
_find_columns)�_label_reference)�_textual_label_reference)�
BindParameter)�
ClauseElement)�ColumnClause)�
ColumnElement)�Grouping)�KeyedColumnElement)�Label)�NamedColumn)�Null)�UnaryExpression)�Column)�Alias)�7FromClause)�FromGrouping)�Join)�ScalarSelect)�8SelectBase)�TableClause)�_ET�)�exc)�util)�Literal)�Protocol)�_EquivalentColumnMap)�_LimitOffsetType)�_TypeEngineArgument)�BinaryExpression)�9TextClause)�_JoinTargetElement)�_SelectIterable)�10Selectable)�_TraverseCallableType)�ExternallyTraversible)�ExternalTraversal)�_AnyExecuteParams)�_AnyMultiExecuteParams)�_AnySingleExecuteParams)�_CoreSingleExecuteParams)�Row�_CE�ColumnElement[Any])�boundc�0�[R"UUUUS9$)a�Create a join condition between two tables or selectables.11 12e.g.::13 14    join_condition(tablea, tableb)15 16would produce an expression along the lines of::17 18    tablea.c.id == tableb.c.tablea_id19 20The join is determined based on the foreign key relationships21between the two selectables.   If there are multiple ways22to join, or no way to join, an error is raised.23 24:param a_subset: An optional expression that is a sub-component25    of ``a``.  An attempt will be made to join to just this sub-component26    first before looking at the full ``a`` construct, and if found27    will be successful even if there are other ways to join to ``a``.28    This allows the "right side" of a join to be passed thereby29    providing a "natural join".30 31)�a_subset�consider_as_foreign_keys)r5�_join_condition)�a�brSrTs    �YD:\code\apps\devtools\python\user_packages\Python313\site-packages\sqlalchemy/sql/util.py�join_conditionrY]s#��8���	�	��!9�	��c��[[U55n/n[U5H7upEUH,nURU5(dMUR	U5 M. M9 U$)apGiven a list of FROM clauses and a selectable,32return the first index and element from the list of33clauses which can be joined against the selectable.  returns34None, None if no match is found.35 36e.g.::37 38    clause1 = table1.join(table2)39    clause2 = table4.join(table5)40 41    join_to = table2.join(table3)42 43    find_join_source([clause1, clause2], join_to) == clause144 45)�listr!�	enumerate�is_derived_from�append)�clauses�join_to�selectables�idx�i�f�ss       rX�find_join_sourcerg�sV��&�}�W�-�.�K�46�C��'�"����A�� � ��#�#��47�48�1�
��#��JrZc��[[U55n/n[U5H8upEUH-nURU5(dMUR	U5  M6 M: [U5S:�af/nUHUnXnUHHn[
[U55R[U55(dM6UR	U5  MS MW U(aU$U$)z�Given a list of FROM clauses and a selectable,49return the indexes from the list of50clauses which is derived from the selectable.51 52r)	r\r!r]r^r_�len�set�surface_selectables�intersection)	r`�	join_fromrb�liberal_idxrdrerf�conservative_idxrcs	         rX�#find_left_clause_that_matches_givenrp�s����}�Y�/�0�K��K��'�"����A�� � ��#�#��"�"�1�%���#�"�;��!�����C���A� ���*�1�-�.�;�;�'��*���%�+�+�C�0��!���#�#��rZc53�"�/n[[U55n[U5S:�aUbSn[U5nOSnSn[	U5H�upxURU/5H�n	U(a]Uce[UR5RU	R5RU5(aURU5  M|MgUc[R"X�5(dM�URU5  M� M� [U5S:�aQ[[UVs/sHn[UR5PM sn65n54UVs/sHopUU55;dM
UPM nnU(d Ub[[![U555$U$s snfs snf)a�Given a list of FROM clauses, a selectable,56and optional ON clause, return a list of integer indexes from the57clauses list indicating the clauses that can be joined from.58 59The presence of an "onclause" indicates that at least one clause can60definitely be joined from; if the list of clauses is of length one61and the onclause is given, returns that index.   If the list of clauses62is more than length one, and the onclause is given, attempts to locate63which clauses contain the same columns.64 65rNTF)rjr!rir$r]�66difference�c�union�67issupersetr_r5�	_can_joinrr �_hide_fromsr\�range)r`ra�onclausercrb�resolve_ambiguity�cols_in_onclauserdrerf�toremoves           rX�find_left_clause_to_join_fromr}�sb�� 
�C��m�G�,�-�K��7�|�a��H�0� ��(��2��!�����'�"����'�'���,�A� �'�3�3�3��q�s�s�8�>�>�!�#�#�&�1�1�2B�C�C��J�J�q�M��D��%�����)=�)=��68�69�1�
��-�#��3�x�!�|���7�C�7�a�N�1�=�=�1�7�C�D�70���<�#�Q���8�!;�q�#��<��8�'��E�#�g�,�'�(�(��71��D��<s�F�F�Fc�H^^^�/mSUUU4Sjjm[T"U55 Smg)a�Produce a traversal of the given expression, delivering72column comparisons to the given function.73 74The function is of the form::75 76    def my_fn(binary, left, right): ...77 78For each binary expression located which has a79comparison operator, the product of "left" and80"right" will be delivered to that function,81in terms of that binary.82 83Hence an expression like::84 85    and_((a + b) == q + func.sum(e + f), j == r)86 87would have the traversal:88 89.. sourcecode:: text90 91    a <eq> q92    a <eq> e93    a <eq> f94    b <eq> q95    b <eq> e96    b <eq> f97    j <eq> r98 99That is, every combination of "left" and100"right" that doesn't further contain101a binary comparison is passed as pairs.102 103c3�2># �[U[5(aUv� gURS:Xa�[R"UR1045(a�TR
SU5 T"UR5H(nT"UR5HnT"TSX5 M M* TRS5 UR5HnT"U5 M
 g[U[5(aUv� UR5HnT"U5Shv�N M gN	7f)N�binaryr)�105isinstancer6�__visit_name__r�
is_comparison�operator�insert�left�right�pop�get_childrenr))�element�l�r�elem�fn�stack�visits    ���rXr��#visit_binary_product.<locals>.visit+s������g�|�,�,��M�
�
#�
#�x�
/�I�4K�4K����5106�5107�
�L�L��G�$��7�<�<�(���w�}�}�-�A��u�Q�x��&�.�)�
�I�I�a�L��,�,�.���d��/��'�<�0�0��
��,�,�.�� ��;�&�&�/�&�s�DD�D�108DN)r�r(�returnzIterator[ColumnElement[Any]])r\)r��exprr�r�s` @@rX�visit_binary_productr�s(���N*,�E�'�'�*	��t����ErZF)�
check_columns�include_aliases�
include_joins�include_selects�include_crudc�`^�/m0nU(aTR=US'US'U(aTRUS'U(aTR=US'=US'=US'US'U(aU4Sj=US	'=US109'US'U(a110U4SjnXvS
'TRUS'[R"U0U5 T$)z1locate Table objects within the given expression.�select�compound_select�join�alias�subquery�tablesample�lateralc�:>�TRUR5$�N�r_�table)�ent�tabless �rX�<lambda>�find_tables.<locals>.<lambda>_s����
�
�c�i�i�0rZr��update�deletec�<>�TRUR5 gr�r�)�columnr�s �rX�visit_column�!find_tables.<locals>.visit_columnds����M�M�&�,�,�'rZr�r�)r_r�traverse)	�clauser�r�r�r�r��	_visitorsr�r�s	        @rX�find_tablesr�Ds����!#�F�79�I��=C�]�]�J�	�(��i�(9�:��"�M�M�	�&���$*�=�=�	1�	�'��	1�Y�z�2�	1�Y��6111��i� ��0�	112�	�(��	113�i��1�I�h�4G��	(�+�(�����I�g�����f�b�)�,��MrZc�R�[R"5n/n[U/5nU(Ga{UR5n[	U[1145(Ga#[	U[5(a%[R"UR5(d�[	U[5(a_[	UR[5(d@URn[	U[5(aURnURU5 M�[	U[5(a URnURU5 GM[	U[ 5(aGM)XA;a"UR#U5 URU5 O(UR%5HnURU5 M U(aGM{U$)zmBreak up an 'order by' expression into individual column-expressions,115without DESC/ASC/NULLS FIRST/NULLS LAST)r<�116column_setr�popleftr�r*r0r�is_ordering_modifier�modifierr-r�r6r+r_r%r&�addr�)r��cols�resultr��trss      rX�unwrap_order_byr�os/���?�?��D�
�F��6�(�O�E���M�M�O���a��'�'��1�o�.�.��1�1�!�*�*�=�=��!�U�#�#�J��	�	�<�-�-��I�I���a��*�*��	�	�A����Q����A�/�0�0��I�I�����Q����!�6�8�8���}�������
�
�a� ���^�^�%�����Q��&�9�%�<�MrZc�H�SSjn[R"U0U5$)Nc�~�[U[5(aUR$[U[5(aS5eg)Nz&can't unwrap a textual label reference)r�r%r�r&)r��kws  rX�replace�'unwrap_label_reference.<locals>.replace�s8���g�/�0�0��?�?�"�
��!9�
:�
:�B�B�B�5�rZ)r�rHr�rr��Optional[ExternallyTraversible])r�replacement_traverse)r�r�s  rX�unwrap_label_referencer��s6���&��.1��	(���(�(��"�g�>�>rZc117��UVs1sHnURbUROUiM  nn[[UVs/sHn[	U5PM sn65nUVs/sHo"U;dM118UPM sn$s snfs snfs snf)z�Given the columns clause and ORDER BY of a selectable,119return a list of column expressions that can be added to the collist120corresponding to the ORDER BY, without repeating those already121in the collist.122 123)�_order_by_label_elementr�r\rr�)�collist�order_by�col�cols_already_present�o�to_look_fors      rX� expand_column_list_from_order_byr��s������C��2�2�>����C�G����124�u�8�D�8�a��q�1�8�D�E�F�K�&�J�;�C�5I�*I�C�;�J�J����125E��Js�%A1�A6�	A;�(A;c�6�[U5H126nX:XdM127 g g)z�Given a target clause and a second to search within, return True128if the target is plainly present in the search without any129subqueries or aliases involved.130 131Basically descends through Joins.132 133TF)rk)r��searchr�s   rX�clause_is_presentr��s ��$�F�+���>��,�rZc#�&# �[U[5(a;[UR5Shv�N [UR5Shv�N g[U[1345(a[UR5Shv�N gUv� gNZN?N7fr�)r�r5�tables_from_leftmostr�r�r4r�)r�s rXr�r��se����&�$���'����4�4�4�'����5�5�5�	�F�L�	)�	)�'����7�7�7���	5�5�7�s3�.B�B�B�
B
�2B�B�B�
B�Bc#�6# �U/nU(a�UR5nUv� [U[5(a(URURUR13545 O0[U[5(aURUR5 U(aM�gg7fr�)	r�r�r5�extendr�r�r4r_r��r�r�r�s   rXrkrk�si���
�H�E�136��y�y�{���137��d�D�!�!��L�L�$�)�)�T�Z�Z�0�1�
��l�
+�
+��L�L����&�
�%�s�BB�Bc#�# �U/nU(a�UR5n[U[[45(aUv� [U[5(a(URURUR45 O{[U[5(aURUR5 OJ[U[5(a.URbURUR5 OUv� OUbUv� U(aM�gg7fr�)
r�r�r8r2r5r�r�r�r4r_r�r)r�r�s   rX�surface_selectables_onlyr��s����
�H�E�138��y�y�{���d�[�%�0�1�1��J��d�D�!�!��L�L�$�)�)�T�Z�Z�0�1�
��l�
+�
+��L�L����&�
��l�
+�
+��z�z�%����T�Z�Z�(��139�
�
��J��%�s�C9C?�=C?c�$�[[4n[U/5nU(aqUR5nXR;aURU$UR5H&n[
XR5(aMURU5 M( U(aMqgr�)r4r7rr��_annotationsr�r�r_)r��annotation_name�filter_r�r��subs      rX�extract_first_column_annotationr��s{���Z�(�G��6�(�O�E�140��}�}����/�/�/��$�$�_�5�5��$�$�&�C��#�'�'���L�L���'�	�%�rZc�l�[[[U55R[U555$)z:Return True if left/right have some overlapping selectable)�boolrjrkrl)r�r�s  rX�selectables_overlapr�s0������%�&�3�3�4G��4N�O��rZc�L^�/mU4Sjn[R"U0SU05 T$)z�Return an ordered list of "bound" values in the given clause.141 142E.g.::143 144    >>> expr = and_(table.c.foo == 5, table.c.foo == 7)145    >>> bind_values(expr)146    [5, 7]147c�<>�TRUR5 gr�)r_�effective_value)�bind�vs �rX�visit_bindparam�$bind_values.<locals>.visit_bindparams���	����%�%�&rZ�	bindparam)rr�)r�r�r�s  @rX�bind_valuesr�s-���	�A�'�
���f�b�;��"@�A��HrZc�p�[U[5(aURSS5nSU-$[U5$)N�'z''z'%s')r��strr��repr)r�s rX�_quote_ddl_exprr�s4���'�3����/�/�#�t�,�������G�}�rZc�X�\rSrSr%SrS\S'SrS\S'SrS\S'S	rS\S148'SSjr	Sr149g
)�150_repr_basei&r�int�_LISTr�_TUPLEr:�_DICT)�	max_charsr�c��[U5n[U5nX0R:�a,URS-nUSUSX0R-151--X$*S-nU$)Nr:rz# ... (%d characters truncated) ... )r�rir�)�self�value�rep�lenrep�segment_lengths     rX�trunc�_repr_base.trunc/sk���5�k���S����N�N�"�!�^�^�q�0�N��A�n�%�9����.�0��152�o�&�'�(�
��153rZ�N)r�rr�r�)�__name__�154__module__�__qualname__�__firstlineno__r��__annotations__r�r��	__slots__r��__static_attributes__r�rZrXr�r�&s,���E�3�N��F�C�O��E�3�N��I��N�
rZr�c�F�[5nSUlURU5$)N�,)r�r�r�)r��rps  rX�_repr_single_valuer155?s��	��B��B�L�
�8�8�E�?�rZc�4�\rSrSrSrSrSS	SjjrS156SjrSrg)�	_repr_rowiEzProvide a string view of a row.)�rowc��XlX lgr�)r
r�)r�r
r�s   rX�__init__�_repr_row.__init__Js����"�rZc�^�URmSSRU4SjUR55<[UR5S:XaSOS<S3$)N�(�, c3�4># �UH
nT"U5v� M g7fr�r���.0r�r�s  �rX�	<genexpr>�%_repr_row.__repr__.<locals>.<genexpr>Qs����9��u�e�E�l�l����r�,��))r�r�r
ri)r�r�s @rX�__repr__�_repr_row.__repr__NsC����157�158���I�I�9����9�9��t�x�x�=�A�%�C�2�-�159�	160rZ)r�r
N)r)r
zRow[Any]r�r��r�r�)	rrrr�__doc__rrrrr�rZrXrrEs��)��I�#�161rZrc��\rSrSrSSjrSrg)�_long_statementiVc��[U5nUS:�aSnSnX-162U-163nUSUSUSX*S3$[RU5$)Ni����dr� ... z characters truncated ... )rir��__str__)r��lself�lleft�lrightr�s     rXr'�_long_statement.__str__Wse���D�	���3�;��E��F��M�F�*�E���%�=�/��u�g�.,�,0���N�+;�=�
�164�;�;�t�$�$rZr�Nr)rrrrr'rr�rZrXr"r"Vs��%rZr"c��\rSrSrSrSrSSSjjrSSjrSSjrSSjr	SS	jr165SS166jrSSjrSSjr
S
rg)�_repr_paramsiez�Provide a string view of bound parameters.167 168Truncates display to a given number of 'multi' parameter sets,169as well as long values to a given number of characters.170 171)�params�batches�ismulti�172max_paramsNc�@�XlXPlX lX@lX0lgr�)r.r0r/r�r1)r�r.r/r1r�r0s      rXr�_repr_params.__init__os��������"��$�rZc	�r�URcURUR5$[UR[5(a
UR173nOs[UR[5(a
URnOG[UR[5(a
URnOURUR5$UR(a�[SUR5n[UR5UR:�apSnSRURUSURS-174U5SSX0R[UR54-URUSSU5SS45$URX!5$UR[S	UR5U5$)175NrKz8 ... displaying %i of %i total bound parameter sets ... � r:r����������rrL)r0r�r.r�r\r��tupler��dictr�r	rir/r��_repr_multir-)r��typ�multi_params�msgs    rXr�_repr_params.__repr__}sx���<�<���:�:�d�k�k�*�*��d�k�k�4�(�(��*�*�C�
����U�
+�
+��+�+�C�
����T�
*�
*��*�*�C��:�:�d�k�k�*�*��<�<��(�����L�176�4�;�;��$�,�,�.�N���x�x��(�(�(�);�4�<�<�!�+;�<����B� ��|�|�S����-=�>�>��(�(��b�c�):�C�@���D�
�	�	��'�'��:�:��$�$��-��K�K����
rZc�^^�U(a�[US[5(a
TRmO`[US[5(a
TRmO;[US[1775(a
TRmOS[US5-5eSRUU4SjU55nOSnUTR:XaSU-$SU-$)NrzUnknown parameter type %src3�H># �UHnTRUT5v� M g7fr�)r-)rr.�	elem_typer�s  ��rXr�+_repr_params._repr_multi.<locals>.<genexpr>�s$����!�CO���!�!�&�)�4�4�<�s�"r�[%s]z(%s))	r�r\r�r8r�r9r��typer�)r�r<r;�elementsrAs`   @rXr:�_repr_params._repr_multi�s����178��,�q�/�4�0�0� �J�J�	��L��O�U�3�3� �K�K�	��L��O�T�2�2� �J�J�	��9���a��)���u��y�y�!�CO�!��H��H��$�*�*���H�$�$��H�$�$rZc��[U5n[U5nX0R:�a&URS-nUSUX$*SX0R-1794$USS4$)Nr:r)r\rir1)r�r.�lparams�	lenparamsr)s     rX�_get_batches�_repr_params._get_batches�sc���v�,����L�	����&��O�O�q�(�E���%� ���� ��O�O�+��
��D�$�&�&rZc���X RLaUR[SU55$X RLaUR	[SU55$URU5$)NrM�
Sequence[Any])r��_repr_param_dictr	r��_repr_param_tuple�_repr_param_list)r�r.r;s   rXr-�_repr_params._repr_params�sa��180�*�*���(�(��/��8��
��K�K�
��)�)�$���*G�H�H��(�(��0�0rZc�D^�URmURUR55unnnU(aJSSRU4SjU55-nUSUS3-
nUSSRU4SjU55--
nU$SSRU4S	jU55-nU$)181Nz{%src3�D># �UHupU<ST"U53v� M g7f�z: Nr��r�keyr�r�s   �rXr�0_repr_params._repr_param_dict.<locals>.<genexpr>��)�����&7�182���g�R��e��~�.�&7��� r&� parameters truncated ... z%s}c3�D># �UHupU<ST"U53v� M g7frTr�rUs   �rXrrW�s)�����&8�183���g�R��e��~�.�&8�rYz{%s}c3�D># �UHupU<ST"U53v� M g7frTr�rUs   �rXrrW�rXrY)r�rJ�itemsr��r�r.�items_first_batch�items_second_batch�trunclen�textr�s      @rXrN�_repr_params._repr_param_dict�s�����184�185��186
���f�l�l�n�-�		187�������	�	��&7����D�
�e�H�:�%?�@�@�D��E��	�	��&8����
�D���
��	�	��&7����D��rZc�V^�URmURU5unnnU(aKSSRU4SjU55-nUSUS3-
nUSRU4SjU55<S3-
nU$SSRU4S	jU55<[U5S188:XaSOS<S3nU$)
Nz(%src3�4># �UH
nT"U5v� M g7fr�r�rs  �rXr�1_repr_params._repr_param_tuple.<locals>.<genexpr>�����F�4E�5�%��,�,�4E�rr&rZc3�4># �UH
nT"U5v� M g7fr�r�rs  �rXrrf�����G�4F�5�%��,�,�4F�rrrc3�4># �UH
nT"U5v� M g7fr�r�rs  �rXrrfrgrrrr)r�rJr�rir^s      @rXrO�_repr_params._repr_param_tuples�����189�190��
���f�%�		191�������	�	�F�4E�F�F��D�
�e�H�:�%?�@�@�D���	�	�G�4F�G�G��
�D�����	�	�F�4E�F�F��,�-��2���:��D��rZc�(^�URmURU5unnnU(aJSSRU4SjU55-nUSUS3-
nUSSRU4SjU55--
nU$SSRU4S	jU55-nU$)192Nz[%src3�4># �UH
nT"U5v� M g7fr�r�rs  �rXr�0_repr_params._repr_param_list.<locals>.<genexpr>"rgrr&rZz%s]c3�4># �UH
nT"U5v� M g7fr�r�rs  �rXrrn&rirrCc3�4># �UH
nT"U5v� M g7fr�r�rs  �rXrrn*rgr)r�rJr�r^s      @rXrP�_repr_params._repr_param_lists�����193�194��195
���f�%�		196�������	�	�F�4E�F�F��D�
�e�H�:�%?�@�@�D��E��	�	�G�4F�G�G��
�D�����	�	�F�4E�F�F��D��rZ)r/r0r�r1r.)r%rN)197r.zOptional[_AnyExecuteParams]r/r�r1r�r�r�r0zOptional[bool]r)r<rKr;r�r�r�)r.z
Iterable[Any]r�r)r.rLr;r�r�r�)r.rMr�r�)r.rMr�r�)r.rLr�r�)rrrrr rrrr:rJr-rNrOrPrr�rZrXr-r-es����=�I���"&�
%�+�%��%��	%�198�%� �
%�+�Z%�,�%��%�199
�	%�8'�1�'�1��1�200
�	1��>�0rZr-c�D^�U4Sjn[R"U0SU05$)zOgiven criterion containing bind params, convert selected elements201to IS NULL.202 203c��>�[UR[5(aeURRT;aKURUl[5Ul[RUl[RUl204g[UR[5(aUURRT;a:[5Ul[RUl[RUl205gggr�)r�r�r'�_identifying_keyr�r/r�is_r��is_not�negate)r��nullss �rX�visit_binary�-adapt_criterion_to_null.<locals>.visit_binary5s�����v�{�{�M�2�2����,�,��5�!�,�,�F�K��6�F�L�'�m�m�F�O�%�,�,�F�M��v�|�|�]�3�3����-�-��6��6�F�L�'�m�m�F�O�%�,�,�F�M�	7�
4rZr�)r�cloned_traverse)�critrxrys ` rX�adapt_criterion_to_nullr}/s$���-�$�#�#�D�"�x��.F�G�GrZc��UcU$US4/n[U5nSnU(a�UR5up[U[5(aRXLaNUR	5nURUR5UlURURU45 OURU5nUbUceXlUcUnU(aM�U$r�)	�
ClauseAdapterr�r�r5�_cloner�ryr_r�)r�r��stop_onr��adapter�ret�	prevrights       rX�splice_joinsr�Js���206�|���AF��
��E��D�!�G�207�C�208�"�Y�Y�[����e�T�"�"�u�';��L�L�N�E�$�-�-�e�n�n�=�E�N��L�L�%�*�*�e�,�-��$�$�U�+�E�� ��$�$�$�"�N��;��C��%��JrZc��gr�r���columnsr`r�s   rX�reduce_columnsr�gs��209$'rZc��gr�r�r�s   rXr�r�os��2107:rZc�<^^^
�URSS5nURSS5m
[R"U5nURSU55m[R"5mTH�n[URVs/sHofRPM sn6HlnTHcnXeLaM	URnURU5(dM.T
(aURUR:XdMQTRU5  Mj Mn M� U(a0UUU
4Sjn	UH"n211U212cM[R "U2130SU	05 M$ URT5$s snf![Ra U(aM�e[Ra U(aM�ef=f)agiven a list of columns, return a 'reduced' set based on natural214equivalents.215 216the set is reduced to the smallest list of columns which have no natural217equivalent present in the list.  A "natural equivalent" means that two218columns will ultimately represent the same value because they are related219by a foreign key.220 221\*clauses is an optional list of join clauses which will be traversed222to further identify columns that are "equivalent".223 224\**kw may specify 'ignore_nonexistent_tables' to ignore foreign keys225whose tables are not yet configured, or columns that aren't yet present.226 227This function is primarily used to determine the most minimal "primary228key" from a selectable, by reducing the set of primary key columns present229in the selectable to just those that are not repeated.230 231�ignore_nonexistent_tablesF�
only_synonymsc3�J# �UHn[U5(dMUv� M g7fr�r)rrss  rXr�!reduce_columns.<locals>.<genexpr>�s���N��a���!2���:�s�#�	#c�>�UR[R:Xa�[R"[TR
T5Vs/sHoRPM sn65nURU;a�URU;as[T5HcnURUR5(dM%T(a&URURR:XdMRTRU5  g ggggs snfr�)r�r�eqr<r�rrr�	proxy_setr�r��reversed�shares_lineage�namer�)r�rsr��cset_no_text�omitr�s   ���rXry�$reduce_columns.<locals>.visit_binary�s�������)�,�,�.�����/;�/F�/F�t�/L�M�/L�!�+�+�/L�M����232�;�;�$�&�6�<�<�4�+?�%�l�3���+�+�F�L�L�9�9� -����6�;�;�;K�;K�1K� �H�H�Q�K�!�4�,@�&�
/��Ns�C;r�)r�r<�233OrderedSetrrr�rr��foreign_keysr�r;�NoReferencedColumnError�NoReferencedTableErrorr�r�r�rr�)r�r`r�r�r�r�rs�fk�fk_colryr�r�r�r�s           @@@rXr�r�wsl���0!#���'B�E� J���F�F�?�E�2�M�����)�J�8B�8M�8M�N��N�9�L��?�?��D����#�-�-�@�-�Q�.�.�-�@�A�B�!���8����Y�Y�F��(�(��+�+�%����3�8�8�);��H�H�S�M��/"�B��6�
	"��F��!��!�!�&�"�x��.F�G��� � ��&�&��_A���2�2��1� ���1�1��1� ��
�s�E234�+E�F	�;F	�F	c�^^^^^�T(aT(a[R"S5eSmUUUUU4Sjn/m[R"U0SU05 T$)z9traverse an expression and locate binary criterion pairs.zSCan only specify one of 'consider_as_foreign_keys' or 'consider_as_referenced_keys'c�$�URU5$r�)�compare)rVrWs  rX�col_is�"criterion_as_pairs.<locals>.col_is�s���y�y��|�rZc�235>�T(dUR[RLag[UR[2365(a[UR[2375(dgT(a�URT;aZT"URUR5(dURT;a(TRURUR45 gURT;a[T"URUR5(dURT;a(TRURUR45 gggT(a�URT;aZT"URUR5(dURT;a(TRURUR45 gURT;a[T"URUR5(dURT;a(TRURUR45 ggg[UR[5(a�[UR[5(a�URRUR5(a(TRURUR45 gURRUR5(a(TRURUR45 ggggr�)238r�rr�r�r�r*r�r_r1�239references)r��any_operatorr�rT�consider_as_referenced_keys�pairss �����rXry�(criterion_as_pairs.<locals>.visit_binary�s�������y�|�|� C���&�+�+�}�5�5�Z��L�L�-�>240�>241�
�#��{�{�6�6��v�|�|�V�[�[�1�1��<�<�'?�?����f�l�l�F�K�K�8�9����!9�9��v�{�{�F�L�L�1�1��;�;�&>�>����f�k�k�6�<�<�8�9�?�:�242)��{�{�9�9��v�|�|�V�[�[�1�1��<�<�'B�B����f�k�k�6�<�<�8�9����!<�<��v�{�{�F�L�L�1�1��;�;�&A�A����f�l�l�F�K�K�8�9�B�=��&�+�+�v�.�.�:����f�4�4��;�;�)�)�&�,�,�7�7��L�L�&�,�,����!<�=��\�\�,�,�V�[�[�9�9��L�L�&�+�+�v�|�|�!<�=�:�4�.rZr�)r;�
ArgumentErrorrr�)�243expressionrTr�r�ryr�r�s ``` @@rX�criterion_as_pairsr��sX��� �$?����
,�244�	245��%>�%>�NBD�E����j�"�x��&>�?��LrZc���\rSrSrSrSrS
SSjjr\(a\SSj5r	\SSj5r	SSjr	\246R4S	jr\247R"S2485SSSjj5rSrg)ri249a	Clones and modifies clauses based on column correspondence.250 251E.g.::252 253  table1 = Table(254      "sometable",255      metadata,256      Column("col1", Integer),257      Column("col2", Integer),258  )259  table2 = Table(260      "someothertable",261      metadata,262      Column("col1", Integer),263      Column("col2", Integer),264  )265 266  condition = table1.c.col1 == table2.c.col1267 268make an alias of table1::269 270  s = table1.alias("foo")271 272calling ``ClauseAdapter(s).traverse(condition)`` converts273condition to read::274 275  s.c.col1 == table2.c.col1276 277)�__traverse_options__�278selectable�279include_fn�280exclude_fn�equivalents�adapt_on_names�adapt_from_selectablesNc��U/US.UlXlX0lX@l[R281"U=(d 05UlXPlXplg)N)r��anonymize_labels)	r�r�r�r�r<�column_dictr�r�r�)r�r�r�r�r�r�r�r�s        rXr�ClauseAdapter.__init__3sK��#�|� 0�%282��!�%��$��$���+�+�K�,=�2�>���,��&<�#rZc��gr�r��r��objs  rXr��ClauseAdapter.traverseJs��8;rZc��gr�r�r�s  rXr�r�Us��-0rZc��gr�r�r�s  rXr�r�Xs��.1rZc��URRXS9nUcRXR;aCX;a>URUH+nURUUUR	U/5S9nUcM)Us $ UR283(aGUcD[
U[5(a/URRRUR5nU$)N��require_embedded)r��_seen)r��corresponding_columnr��_corresponding_columnrtr�r�r.�exported_columns�getr�)r�r�r�r��newcol�equivs      rXr��#ClauseAdapter._corresponding_column\s������5�5��6�284���>�c�%5�%5�5�#�:J��)�)�#�.���3�3��%5��+�+�s�e�,�4���285�%�!�M�/�
������3��,�,��_�_�5�5�9�9�#�(�(�C�F��
rZzsqlalchemy.sql.functionsc�t�[RRnUR(aURU5(dgUR(aUR	U5(ag[U[5(a�[XR5(d�URRU5(aTUR(a7URH&nURU5(dM UR$ gUR$[U[5(a![UR[5(aU$g[U[5(dgU(dUR(agSUR ;aUR Sn["(a[U[$5(deUR(aBXR&;a3URH"nUR(R+US5cM" O g["(a[U[$5(deUR-USS9$)N�adapt_columnFTr�)r<�	preloaded�
sql_functionsr�r�r�r3�FunctionElementr�r^r�r2r�r8r*�_is_singleton_constantr�rr,r�rsr�r�)r�r��_include_singleton_constants�	functions�adps     rXr��ClauseAdapter.replacets����N�N�0�0�	��?�?�4�?�?�3�#7�#7��
�_�_�����!5�!5���c�:�&�&�z��*�*�0286�0287����.�.�s�3�3��.�.�#�:�:���.�.�s�3�3�!����&� ;� $����&��C��'�'�J����[�-�-��288�289��C��/�/��-�#�2L�2L���S�-�-�-��"�"�>�2�C��=��c�#5�6�6�6�6��&�&�3�6F�6F�+F��2�2���5�5�-�-�c�5�9�E��3���=��c�#5�6�6�6�6��)�)��$�*�290�	291rZ)r�r�r�r�r�r�r�)NNNFFN)r�rFr��Optional[_EquivalentColumnMap]r��)Optional[Callable[[ClauseElement], bool]]r�r�r�r�r�r�r��!Optional[AbstractSet[FromClause]]�r�z
Literal[None]r��None�r�r9r�r9�r�r�r�r�)F)r�r9r�r�r�z
Optional[_ET])rrrrr rrrrr�r<�	EMPTY_SETr��preload_moduler�rr�rZrXrr292s����<�I�7;�@D�@D�$�!&�DH�=��=�4�=�>�	=�293>�=��
=��=�!B�=�*�	�;�294�;�295�0�296�0�	2�6�	2�
,�	2�297,0�>�>��0298���3�4�=B�F299��F300�6:�F301�	�F302�5�F303rZrc�n�\rSrSr\S	Sj5r\S304Sj5r\SSj5r\SSj5rS
SjrSrg)�
_ColumnLookupi�c��gr�r��r�rVs  rX�__getitem__�_ColumnLookup.__getitem__�s��.1rZc��gr�r�r�s  rXr�r��s��HKrZc��gr�r�r�s  rXr�r��s��JMrZc��gr�r�r�s  rXr�r��s��,/rZc��gr�r�r�s  rXr�r��s��CrZr�N)rVr�r�r�)rV�ColumnClause[Any]r�r�)rVrPr�rP)rVr9r�r9)rVrr�r)rrrrrr�rr�rZrXr�r��s=��
�1��1�
�K��K�
�M��M�
�/��/�/rZr�c�<^�\rSrSr%SrSrS\S'SSU4Sjjjr"SS5rS	r	\305SS306j5r\307SSj5rSSjrSU4S
jjr\
(a308\SSj5r\r\R$rSSjrSSjrSrU=r$)�
ColumnAdapteri�a+Extends ClauseAdapter with extra utility functions.309 310Key aspects of ColumnAdapter include:311 312* Expressions that are adapted are stored in a persistent313  .columns collection; so that an expression E adapted into314  an expression E1, will return the same object E1 when adapted315  a second time.   This is important in particular for things like316  Label objects that are anonymized, so that the ColumnAdapter can317  be used to present a consistent "adapted" view of things.318 319* Exclusion of items from the persistent collection based on320  include/exclude rules, but also independent of hash identity.321  This because "annotated" items all have the same hash identity as their322  parent.323 324* "wrapping" capability is added, so that the replacement of an expression325  E can proceed through a series of adapters.  This differs from the326  visitor's "chaining" feature in that the resulting object is passed327  through all replacing functions unconditionally, rather than stopping328  at the first one that returns non-None.329 330* An adapt_required option, used by eager loading to indicate that331  We don't trust a result row column that is not translated.332  This is to prevent a column from being interpreted as that333  of the child row in a self-referential scenario, see334  inheritance/test_basic.py->EagerTargetingTest.test_adapt_stringency335 336)r��adapt_required�allow_label_resolve�_wrap�__weakref__r�r�c337338� >�[T339U]UUUUUUU	S9 [R"UR5UlUR(dUR(a URXR3405UlX0l	Xpl341SUlg)N)r�r�r�r�r�)�superrr<�WeakPopulateDict�_locate_colr�r�r��_IncludeExcludeMappingr�r�r�)r�r�r�r�r�r�r�r�r�r��	__class__s          �rXr�ColumnAdapter.__init__�s|���	�����!�!�)�-�#9�	�	342��,�,�T�-=�-=�>����?�?�d�o�o��6�6�t�\�\�J�D�L�,��#6� ���343rZc� �\rSrSrSrSrSrg)�$ColumnAdapter._IncludeExcludeMappingic��XlX lgr�)�parentr�)r�r�r�s   rXr�-ColumnAdapter._IncludeExcludeMapping.__init__s�� �K�"�LrZc��URR(a URRU5(a;URR(a`URRU5(a@URR(a#URRRU$U$URU$r�)r�r�r�r�r�r�s  rXr��0ColumnAdapter._IncludeExcludeMapping.__getitem__s������&�&�t�{�{�/E�/E�c�/J�/J��+�+�(�(�T�[�[�-C�-C�C�-H�-H��;�;�$�$��;�;�,�,�4�4�S�9�9��J��<�<��$�$rZ)r�r�N)rrrrrr�rr�rZrXr�r�s��	#�	%rZr�c��[R"U5nXl[R"UR5UlUR(dUR(a URX"R3445UlU$r�)	�copyr�r<r�r�r�r�r�r�)r�r��acs   rX�wrap�ColumnAdapter.wrap#sR��
�Y�Y�t�_�����*�*�2�>�>�:��345�
�=�=�B�M�M��4�4�R���D�B�J��	rZc��gr�r�r�s  rXr��ColumnAdapter.traverse,s��47rZc��gr�r�r�s  rXr�r/s��),rZc� �URU$r�)r�r�s  rXr�r2s���|�|�C� � rZc�P>�[U[5(de[TU]
U5$r�)r�r�r�r)r��visitorr�s  �rXr�ColumnAdapter.chain7s%����'�=�1�1�1�1��w�}�W�%�%rZc��gr�r�)r�s rX�visitor_iterator�ColumnAdapter.visitor_iterator>s��?BrZc�T�URUnX!LaURUS5cgU$)NT)r�r�)r�r�r�s   rX�adapt_check_present�!ColumnAdapter.adapt_check_presentDs1�����c�"���=�T�7�7��T�B�J���
rZc�`�UR(a+URHnURUSS9nUcM O UnO[R	X5nUR346(a UR347R
U5nUbUnUR(aX1LagX1LaURUl	U$)NT)r�)348�
_is_immutabler	r�rr�r�r�r�r��_allow_label_resolve)r�r��visrs�c2s     rXr��ColumnAdapter._locate_colNs�������,�,���K�K��$�K�G���=��-�349���&�&�t�1�A��:�:����'�'��*�B��~������1�8��
�<�%)�%=�%=�A�"��rZ)r�r�r�r�)NFNNFTFN)r�rFr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�)rrIr�r�)r�zIterator[ColumnAdapter])r�rPr��Optional[ColumnElement[Any]])rrrrr rrrr�r�rr�rr�propertyr	�adapt_clauser�copy_and_process�350adapt_listrr�r�
__classcell__)r�s@rXr�r��s-����<�I���3517;�$�@D�@D�$�$(�!&�DH����4���	�352>��>�
���"����!B���:
%�
%���7��7�
�,��,�!�2�!�	(�!�353&�354�	�B�355�B��L��/�/�J��%��	%��*�%�*�	%�*�*rZr�c�J�[R"[RXUS9$)z�Convert the given value to an "offset or limit" clause.356 357This handles incoming integers and converts to an expression; if358an expression is already given, it is passed through.359 360)r��type_)r�expectr�LimitOffsetRole)r�r�rs   rX�_offset_or_limit_clauser{s$�����
���w���rZc�t�Ucg[US5(a"URn[R"U5$U$)z\Return the offset or limit clause as a simple integer if possible,361else return the clause.362 363N�_limit_offset_value)�hasattrr r<�asint)r�r�s  rX�)_offset_or_limit_clause_asint_if_possibler#�s9���~���v�,�-�-��*�*���z�z�%� � ��
rZc�.�UbFUbC[U5nUcSnUS:waX-nUS:XaSnOUce[U5n[X2-3645nX4$UcUb[U5nX4$Ub3Uc0[U5nUcSnUS:waX-nUS:XaSnX4$[U5nX4$)z0Compute LIMIT/OFFSET in terms of slice start/endNr)r#r)�limit_clause�
offset_clause�start�stops    rX�_make_slicer)�s���
��T�-�A��365�
�� ��M��A�:�)�1�M��A�� �M� �,�,�,�3�M�B�M�.�t�|�<��&�&�&�#366��4�+�.�t�4�� �&�&�367�	�t�|�A��368�
�� ��M��A�:�)�1�M��A�� �M��&�&�4�M�B�M��&�&rZ)NN)369rVr3rWr3rS�Optional[FromClause]rTz(Optional[AbstractSet[ColumnClause[Any]]]r�zColumnElement[bool])r`zList[FromClause]rar3r��	List[int])r`�Sequence[FromClause]rmr3r�r+)r`r,rarDryrr�r+)r�zOCallable[[BinaryExpression[Any], ColumnElement[Any], ColumnElement[Any]], None]r�rPr�r�)r�r(r�r�r�r�r�r�r�r�r�r�r�zList[TableClause])r�rr�r)r�r3r�zIterator[FromClause])r�r(r�zIterator[ClauseElement])r�r3r�r3r�r�)r|rOrxzCollection[Any]r�rOr�)r�r*r�r*r�r*r�r*)r�zIterable[ColumnElement[Any]]r`�Optional[ClauseElement]r�r�r�zSequence[ColumnElement[Any]])r�rEr`r-r�r�r�z/Sequence[Union[ColumnElement[Any], TextClause]])r�rEr`r-r�r�r�z1Collection[Union[ColumnElement[Any], TextClause]])NNF)r�r@r�z
Optional[str]rz"Optional[_TypeEngineArgument[int]]r�zColumnElement[int])r�r@r�r@)370r%r@r&r@r'r�r(r�r�zATuple[Optional[ColumnElement[int]], Optional[ColumnElement[int]]])~r �371__future__r�collectionsrr��	itertoolsr�typingrrrr	r372rrr
rrrrrrrrrrrrr�_typingr�373annotationrrr�baser r!�	cache_keyr"�ddlr#rEr$r%r&r'r(r)r*r+r,r-r.r/r0�schemar1r�r2r3r4r5r6r7r8r9r;r<�util.typingr=r>r?r@rArBrCrDrErFrGrHrI�engine.interfacesrJrKrLrM�374engine.rowrNrOrYrgrpr}r�r�r�r�r�r�r�rkr�r�r�r�r�r�r375rr�r"r-r}r�r�r��ReplacingExternalTraversalrr�r�rr#r)r�rZrX�<module>r<s ��@�"����
�������������� �������#�8�<�>� ��1�+�4�&�.�#�#�"�#��(��!��%���"�$��$�"�#����!�"�	���-�)�,�*�$�.�+�&�/�/�+�5�:�;�<� �
�e�/�0��&*�IM�	!��!��!�#�!�G�	!�376�!�H�
��(2����8)�
!�)�.8�)��)�X6�
!�6�
�6�+�6��	6�r?�	�?��	?�377378�?�J �!��!��(��(��(��	(�379�(��
(��(��(�V,�^380?�K�"
� �'��&��
�&���2�381�382�383�"%�c�%�G�:�G�TH�<%)��384����"���	�:385�'�
)�'�%�'��'�"�	'�386�'�387�:�
�:�%�:��:�5�	:�388�:�Q'�
�Q'�%�Q'��Q'�7�	Q'�l"� $��	<�~q389�H�7�7�q390�h
0�H�
0� j�M�j�^�04�
�
�
�391�
�.�
��	
� 
��
��
� 2'�"�2'�#�2'��2'��	2'�392G�2'rZ
codekingpro/portable-devtools · Team Ai