bg0EHddlmZddlZddlZddlmZddlmZddlmZddlmZddlm Z ddlm Z dd lm Z dd lm Z dd l mZdd l mZdd l mZddl mZddl mZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddl$m%Z%ddl&m'Z'e rTddl m(Z(ddl m)Z)ddlm*Z*dd lm+Z+dd!lm,Z,dd"l-m.Z.dd#l/m0Z0dd$l1m2Z2dd%l3m4Z4dd&lm5Z5dd'l6m7Z7dd(l6m8Z8dd)l9m:Z:dd*l9m;Z;e d+e d,-Zd3ej?d4eDZ@e@d5kZAe@d6kZBe@d7kZCe@d8kZDe@d9kZEeZF dd:lGmHZHn#eI$r dd:lmHZHYnwxYwGd;d<ZJ dd=l mKZKd>ZLe@d?kZMn#eI$rGd@dAeJZKdBZLdBZMYnwxYw ddCl mNZNdDZOeOdEzZPd>ZQn#eI$rGdFdGeJZNdBZQYnwxYweErddHl/mRZRnddIlSmTZRe deUeRfZVe eUeRfZWddMZXddOZYddQZZdRZ[ej\ddVZ]ddWZ^ddZZ_dd\Z`dd]Zadd_ZbddcZcddeZdddgZeddiZfddnZgdoZhdpZiddqZjddrZkddvZldwZmdd{Znd|Zoepejqd}rd~ZrdZsndZrdZsdZtddZuddZvdZwddZxddZyddZzGddej5Z{ee{ddZ|GddeZ}ee}ddZ~dZdZddZddZddZddZdZddZeBr ddl mZddl mZn ddl mZdZddZddZdS)) annotationsN)Any)Iterable)Iterator)Mapping)Optional) TYPE_CHECKING)TypeVar)Union) __version__)inspectschema)sql)types)url)compiles)CheckConstraint)Column)ForeignKeyConstraint)visitors) BindParameter) ColumnClause) quoted_name) TextClause)UnaryExpression)traverse) TypeGuard)Index)Table) Connection)Dialect) Transaction) Inspector)ColumnCollection) SQLCompiler)Insert) ColumnElement) Constraint) SchemaItem)Select) TableClause_CE)zColumnElement[Any]r*)boundvaluestrreturnUnion[int, str]c4 t|S#|cYSxYwN)int)r/s O/opt/cloudlinux/venv/lib64/python3.11/site-packages/alembic/util/sqla_compat.py _safe_intr74s%5zz sc,g|]}t|S)r7).0xs r6 r<<sEEEaYq\\EEEz (\d+|[abc]\d)))r>)r>r@)r>r@)) _NONE_NAMEceZdZdZdS) _Unsupportedz.Placeholder for unsupported SQLAlchemy classesN)__name__ __module__ __qualname____doc__r9r=r6rFrFLs4444r=rF)ComputedT)r>r?ceZdZdS)rKNrGrHrIr9r=r6rKrKT r=rKF)Identity) start incrementminvaluemaxvalue nominvalue nomaxvaluecyclecacheorder)on_nullceZdZdS)rPNrNr9r=r6rPrParOr=rP) _NoneName)symbolname_ConstraintName!TypeGuard[_ConstraintNameDefined]cL|tupt|ttfSr4)rD isinstancer0r\r^s r6constraint_name_definedrds# :  CD3 2B!C!CCr=TypeGuard[str]c,t|tSr4)rbr0rcs r6constraint_name_stringrgs dC  r= Optional[str]c(t|r|ndSr4)rgrcs r6constraint_name_or_nonerjs*$// 944T9r=auto connectionOptional[Connection]Iterator[None]c#K |j}n#t$rd}YnwxYw|dVdS|s7|J|5dVddddS#1swxYwYdSdVdSr4)in_transactionAttributeErrorbeginrlrps r6_ensure_scope_for_ddlrts #2       ~ )))!!##                     EEEEEs AA!AcTtr|j|S|j|S)N) hide_password)sqla_14render_as_string __to_string__)rrvs r6url_render_as_stringrzs6>#s#-@@@@ s }====r=r!r#cPt|}|r|S|Sr4)_get_connection_transactionrrrl transactions r6"_safe_begin_connection_transactionrs1.j99K"!!!r=NonecTt|}|r|dSdSr4)r|commitr}s r6#_safe_commit_connection_transactionrs;.j99Kr=cTt|}|r|dSdSr4)r|rollbackr}s r6%_safe_rollback_connection_transactionrs;.j99Kr=boolcH |j}|S#t$rYdSwxYw)NF)rprqrss r6_get_connection_in_transactionrsC #2 ~ uus  !!idxrIterable[ColumnElement[Any]]c|jSr4) expressionsrs r6_idx_table_bound_expressionsrs ?r= schema_itemc Vt|dr |jdi|S|jdi|S)N_copyr9)hasattrrcopy)rkws r6rrsF{G$$& { &&2&&&{%%"%%%r=Optional[Transaction]cTtr|S|j}|jSr4)rwget_transaction_root_Connection__transaction)rlrs r6r|r|s/*))+++  ))r=url.URLcttjdrtjj|i|Stj|i|S)Ncreate)rrURLr)argrs r6 _create_urlrsBsw!!#w~s)b)))w"r"""r= connectable tablename schemanameUnion[str, None]ctr#t|||S|j|||Sr4)rwr has_tabledialect)rrrs r6_connectable_has_tablersL {##--iDDD",, J   r=c trD|5}|||cdddS#1swxYwYdS|j||Sr4)rw_operation_contextexecutebind) inspector statementparamsconns r6_exec_on_inspectorrs9  ) ) + + 3t<< 622 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3~%%i888s?AAcFts|jSddlm}|j|juS)Nrr)rwnullablesqlalchemy.sqlr_user_defined_nullableNULL_UNSPECIFIED)metadata_columnrs r6_nullability_might_be_unsetrs:  ''))))))  2f6M M r=cFtsdStd|DS)NFc3@K|]}t|tVdSr4)rbrKr:sds r6 z._server_default_is_computed..,EE:b(++EEEEEEr=) has_computedanyserver_defaults r6_server_default_is_computedrs- FuEEnEEEEEEr=cFtsdStd|DS)NFc3@K|]}t|tVdSr4)rbrPrs r6rz._server_default_is_identity..rr=)rwrrs r6_server_default_is_identityrs- FuEEnEEEEEEr= constraintr)r cTt|tr |j}|J|S|jSr4)rbrparenttable)rrs r6_table_for_constraintr s7*233 !    r=ct|trd|jDSt|trt |jSt |jS)Ncg|] }|j Sr9)r)r:fks r6r<z+_columns_for_constraint..+s888b 888r=)rbrelementsr _find_columnssqltextlistcolumnsrs r6_columns_for_constraintr)s`*233(88J$78888 J 0 0(Z/000J&'''r=rr$rchtr||dS||dSr4)rw reflect_table reflecttable)rrs r6_reflect_tabler2s= &&ud333%% 4   r=c~t|r-t|\}}||j|S|Sr4)_type_has_variants_get_variant_mappinggetr^)type_r base_typemappings r6_resolve_for_variantr;s?%  1%88 7{{7<333 r=_variant_mappingc*t|jSr4)rrrs r6rrEsE*+++r=c||jfSr4)rrs r6rrHse,,,r=c8t|tjuSr4)typesqltypesVariantrs r6rrMsE{{h...r=c|j|jfSr4)implrrs r6rrPsz5=((r=c <fdjD}jj}jj}jdjjj}jdjjj}djD}j}j}j } j } ||||||||| | f S)Nc4g|]}j|jSr9)rr^)r:keyrs r6r<z_fk_spec..Us1), 3$r=rc&g|]}|jjSr9)columnr^)r:elements r6r<z_fk_spec..]sMMMggn)MMMr=) column_keysrr^rrrrondeleteonupdate deferrable initially) rsource_columns source_table source_schema target_schema target_tabletarget_columnsrrrrs ` r6_fk_specrTs0:0FN$)L%,M'*17>M&q)06;LMM9LMMMN"H"H&J$I  r=rc|jd}|d}|dd|}|jJ||jjkS)Nr.)r _get_colspecsplitpopjoinrr)rspectokenstablekeys r6_fk_is_self_referentialr psj  q ! . . 0 0D ZZ__F JJrNNNxxH   ( ( ( z(, ,,r=c|jSr4) _type_boundrs r6_is_type_boundr ys   !!r=cRt}t|id|ji|S)z2locate Column objects within the given expression.r)setradd)clausecolss r6rrs+ 55D VR(DH-... Kr= collectionr%r%Union[Column[Any], ColumnClause[Any]]c|jJ||j}t|dst|dr|j|dS||dS)z(remove a column from a ColumnCollection.N _immutable _readonly)rr_parentremove)rr to_removes r6_remove_column_from_collectionrsz : ! ! !6:&Iz<((%GJ ,L,L%!!),,,,,)$$$$$r=text_*Union[str, TextClause, ColumnElement[Any]]&Union[ColumnElement[Any], Column[Any]]ct|tr1t|tj}|||St|t rt||St|trt||j St|tj rt||Std)zAa workaround for the Index construct's severe lack of flexibilityz#String or text() construct expected)rbr0rrNULLTYPE append_columnr_textual_index_element_textual_index_columntextrr(_copy_expression ValueError)rrcs r6r"r"s% @ 5(+ , , A E: & &@%eU333 E1 2 2@$UEJ777 E3, - -@u--->???r= expressionrc:fd}tj|i|S)Nct|trV|jO|jurF|jjvrj|jSt |}||SdSr4)rbrrr^r&rr )colr&rs r6replacez!_copy_expression..replacesq sF # #  % --x<>))#~ch//#JJ**1---4r=)rreplacement_traverse)r'rr+s ` r6r$r$s:       (B  r=c$eZdZdZdZd d Zd Zd S) r!aQWrap around a sqlalchemy text() construct in such a way that we appear like a column-oriented SQL expression to an Index construct. The issue here is that currently the Postgresql dialect, the biggest recipient of functional indexes, keys all the index expressions to the corresponding column expressions when rendering CREATE INDEX, so the Index we create here needs to have a .columns collection that is the same length as the .expressions collection. Ultimately SQLAlchemy should support text() expressions in indexes. See SQLAlchemy issue 3174. _textual_idx_elementrr r#rr1rc||_||_|j|_tj|jjt j|_||jdSr4) rr#rrrrr fake_columnr )selfrr#s r6__init__z_textual_index_element.__init__sQ  9!=9JKK D,-----r=c|jgSr4)r0)r1s r6 get_childrenz#_textual_index_element.get_childrens !!r=N)rr r#rr1r)rGrHrIrJ__visit_name__r2r4r9r=r6r!r!sH  ,N...."""""r=r!rcompilerr&c (|j|jfi|Sr4)processr#rr6rs r6_render_textual_index_columnr:s! 8 GL / /B / //r=ceZdZdS)_literal_bindparamNrNr9r=r6r<r<sDr=r<c |j|fi|Sr4)render_literal_bindparamr9s r6_render_literal_bindparamr?s -8 ,W ; ; ; ;;r=c*t|jSr4)rrrs r6_get_index_expressionsrAs   r=c4dt|DS)Nc0g|]}t|ddS)r^N)getattr)r:exps r6r<z+_get_index_column_names..s$ N N N3GC & & N N Nr=)rArs r6_get_index_column_namesrFs N N2H2M2M N N NNr=r*rrc"tr|jSiSr4)sqla_13kwargs)r*s r6_column_kwargsrJsz r=Union[Index, Constraint]rOptional[Dialect]c|jdS|Jtr|j|dSt |jdrt |j}nt }|t|jd}||}t|tj r+| |d}| |S|j|S)NF_alembic_quotequote)rPrc)r^rwidentifier_preparerformat_constraintrrrr0 __class__rbrr ddl_compiler_prepared_index_name)rrquoted_name_clsnew_nameds r6_get_constraint_final_namerYs t    M *<< u=    :?G , , *%)$9$9OO)O"?3z#7#7uEEE))x)88 j&, / / M$$Wd33A))  .@@LL Lr=Union[Constraint, Index]c|tr-|jdS|J|j|d}|duS|jduS)NFrN)rwr^rQrR)rrr^s r6_constraint_is_namedr\'sa + ? "5"""*<< u=  4d**r= mysql_dialectr"cTtr|jSt|jo|jSr4)rw is_mariadbrserver_version_info _is_mariadbr]s r6rara6s6 ''  - *)   r=c|jSr4) _mariadb_normalized_version_inforbs r6rdrd@s  99r=Union[TableClause, Table]r'ctr&|S|dS)NT)inline)rwinsertrg)rs r6_insert_inlineriDs8)||~~$$&&&||4|(((r=)create_mock_engine)select create_enginec &tdd|S)Nz postgresql://mock)strategyexecutorrl)rrqrs r6rjrjQs  fx    r=r+c@tjt|fi|Sr4)rrkr)rrs r6_selectrsVs z$w--..2...r=indexc|jD]R}t|tr|j}t|tt|tr|jrdSSdS)NTF)rrbrrr is_literal)rtexprs r6is_expression_indexrxZsm!// rs """"""  """"""((((((!!!!!!,,,,,,------$$$$$$222222######111111000000//////......333333,,,,,,''''''6            ,,,,,,))))))------666666444444333333))))))555555000000000000000000555555 ge5!CDEEE EE:2:&6 DDEEE   6/ 6/ j j $ A>>>>>>>AAA@@@@@@@@A55555555 2######L#z1$$$     <   L# $###### . >>>""""    &&&&****####    999   FFFFFFFF    (((     78  233),,,---- ///)))8----""""%%%%$@@@@$*"""""S.""":  !!000"!0           <<<< !!!OOO%M%M%M%MP + + + +    :::)))) /------,,,,,,,((((((   ////s6E$$ E21E2FF,+F,0GGG