U
    [h2                     @  s  U d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d d	lm
Z
 d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ erd dlmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z" d d l#m$Z$ dd!l%m&Z& dd"l'm(Z( dd#l'm)Z) dd$l'm*Z* dd%l+m,Z, dd&l+m-Z- dd'l.m/Z/ dd(l.m0Z0 dd)l.m1Z1 dd*l.m2Z2 dd+l.m3Z3 dd,l.m4Z4 dd-l5m6Z6 dd.lm7Z7 dd/l8m9Z9 dd0l:m;Z; dd1l:m<Z< dd2l:m=Z= dd3l:m>Z> dd4l:m?Z? dd5l:m@Z@ dd6l:mAZA dd7l:mBZB dd8l:mCZC dd9l:mDZD dd:l:mEZE dd;l:mFZF dd<lGmHZH dd=lGmIZI dd>lJmKZK dd?lLmMZM dd@lLmNZN ddAlLmOZO ddBlPmQZQ ddClmRZR edDedEZSedFedGdHZTedIdJdEZUedKdLdEZVG dMdN dNeeeT ZWG dOdP dPeZXG dQdR dReZYedSeZe[e\dTdUdVdWdXe]dYZ^edZ Z_ed[ej`e_ee eeWe  eWe Zaee[d\d]eWeS ejbeS f ZceejdeS ej`d^e_eeS eeWeS  eWeS f ZeeejdeS d^eeS f Zfed_eed`f dEZgedaedEZhedbedEZiedcedEZjeddedEZkedeedEZledfedEZmedgedEZnedhedEZoediedEZpedjedEZqed]eWeS d^ejbeS ejdeS eg d]f dkf ZrereS Zsdletdm< eeereS f Zuee[ereS f Zveeeve  eve f Zweeef Zxeej7ee eeWe  eWe f Zyeeyejzf Z{eere ej|f Z}edndoej~f Zee[eWe ejdpf ZedqedEZe	eef Zee[drejf Zedsdtdudvee eeWe  eWe f Zeje[ef Zeedw dwf ZedJedJ f ZeeZereZ df Zee\edx f Zedy Zer6dzd{d|d}d~Zdzdd|ddZdddddZdLdd|ddZdLdd|ddZdLdd|ddZdLdd|ddZdddddZdddddZdddddZdddddZdddddZdddddZdddddZdLdd|ddZnedZedZedZedZedZedZedZedZedZedZedZedZedZedZedZdddddZdddddZdddddƄZdLdd|ddɄZdd˜dd̈́ZddddМdd҄Zeddd՜ddׄZeddd՜ddׄZeddd՜ddׄZddd՜ddׄZeddd՜ddZeddd՜ddZeddd՜ddZeddd՜ddZddd՜ddZdS )    )annotationsN)Any)Callable)Dict)Generic)Iterable)Mapping)NoReturn)Optional)overload)Set)Tuple)Type)TYPE_CHECKING)TypeVar)Union   )roles   )exc)util)Inspectable)Literal)Protocol)	TypeAlias)date)datetime)time)	timedelta)Decimal)UUID)
Executable)Compiled)DDLCompiler)SQLCompiler)
UpdateBase)
ValuesBase)ClauseElement)ColumnElement)KeyedColumnElement)quoted_name)SQLCoreOperations)
TextClause)LambdaElement)FromClauseRole)Column)Alias)CompoundSelect)CTE)
FromClause)Join)NamedFromClause)ReturnsRows)Select)
Selectable)
SelectBase)Subquery)TableClause)TableValueType)	TupleType)
TypeEngine)
Connection)Dialect)Engine)MockConnection)	TypeGuard_T)bound_T_coT)rE   Z	covariant_CEzColumnElement[Any]_CLEr'   c                   @  s   e Zd ZdZddddZdS )_HasClauseElementz8indicates a class that has a __clause_element__() methodz"roles.ExpressionElementRole[_T_co]returnc                 C  s   d S N selfrM   rM   <./venv/lib/python3.8/site-packages/sqlalchemy/sql/_typing.py__clause_element__[       z$_HasClauseElement.__clause_element__N)__name__
__module____qualname____doc__rQ   rM   rM   rM   rP   rI   X   s   rI   c                   @  s    e Zd ZdZdddddZdS )_CoreAdapterProtoz?protocol for the ClauseAdapter/ColumnAdapter.traverse() method.rG   )objrK   c                 C  s   d S rL   rM   )rO   rX   rM   rM   rP   __call__a   rR   z_CoreAdapterProto.__call__N)rS   rT   rU   rV   rY   rM   rM   rM   rP   rW   ^   s   rW   c                   @  s"   e Zd ZdZeddddZdS )_HasDialectzQprotocol for Engine/Connection-like objects that have dialect
    attribute.
    r@   rJ   c                 C  s   d S rL   rM   rN   rM   rM   rP   dialecti   s    z_HasDialect.dialectN)rS   rT   rU   rV   propertyr[   rM   rM   rM   rP   rZ   d   s   rZ   _NOT_ENTITYr   r   r   r   r    r   )*r   _MAYBE_ENTITYr,   zColumnElement[_T]zSQLCoreOperations[_T]_TP._T0_T1_T2_T3_T4_T5_T6_T7_T8_T9r-   r   ColumnExpressionArgumentzSelect[_TP]zCompoundSelect[_TP]zSQLCoreOperations[Any]_DMLKeyzColumn[Any]r;   r4   r0   r2   zTypeEngine[_T])autoZ	ignore_fk)rA   r?   rB   r"   zTypeGuard[SQLCompiler])crK   c                 C  s   d S rL   rM   rn   rM   rM   rP   is_sql_compiler7  rR   rp   zTypeGuard[DDLCompiler]c                 C  s   d S rL   rM   ro   rM   rM   rP   is_ddl_compiler9  rR   rq   r.   zTypeGuard[NamedFromClause])trK   c                 C  s   d S rL   rM   rr   rM   rM   rP   is_named_from_clause;  s    rt   zTypeGuard[ColumnElement[Any]]c                 C  s   d S rL   rM   ro   rM   rM   rP   is_column_element?  s    ru   z"TypeGuard[KeyedColumnElement[Any]]c                 C  s   d S rL   rM   ro   rM   rM   rP   is_keyed_column_elementC  s    rv   zTypeGuard[TextClause]c                 C  s   d S rL   rM   ro   rM   rM   rP   is_text_clauseG  rR   rw   zTypeGuard[FromClause]c                 C  s   d S rL   rM   ro   rM   rM   rP   is_from_clauseI  rR   rx   zTypeEngine[Any]zTypeGuard[TupleType]c                 C  s   d S rL   rM   rs   rM   rM   rP   is_tuple_typeK  rR   ry   zTypeGuard[TableValueType]c                 C  s   d S rL   rM   rs   rM   rM   rP   is_table_value_typeM  s    rz   r   zTypeGuard[Selectable]c                 C  s   d S rL   rM   rs   rM   rM   rP   is_selectableQ  rR   r{   zUnion[Executable, ReturnsRows]zTypeGuard[SelectBase]c                 C  s   d S rL   rM   rs   rM   rM   rP   is_select_baseS  s    r|   zTypeGuard[Select[Any]]c                 C  s   d S rL   rM   rs   rM   rM   rP   is_select_statementW  s    r}   r3   zTypeGuard[TableClause]c                 C  s   d S rL   rM   rs   rM   rM   rP   is_table[  rR   r~   zTypeGuard[Subquery]c                 C  s   d S rL   rM   rs   rM   rM   rP   is_subquery]  rR   r   zTypeGuard[UpdateBase]c                 C  s   d S rL   rM   ro   rM   rM   rP   is_dml_  rR   r   Zis_sqlZis_ddlZnamed_with_columnZ_is_column_elementZ_is_keyed_column_elementZ_is_text_clauseZ_is_from_clauseZ_is_tuple_typeZ_is_table_valueZ_is_select_baseZ_is_select_statementZ	_is_tableZ_is_subqueryc                 C  s
   t | dS )Nschemahasattrrs   rM   rM   rP   has_schema_attrs  s    r   strzTypeGuard[quoted_name])srK   c                 C  s
   t | dS )NZquoter   r   rM   rM   rP   is_quoted_namew  s    r   objectz!TypeGuard[_HasClauseElement[Any]]c                 C  s
   t | dS )NrQ   r   r   rM   rM   rP   is_has_clause_element{  s    r   zTypeGuard[ValuesBase]c                 C  s   | j o| jp| jS rL   )r   Z	is_insertZ	is_updatero   rM   rM   rP   is_insert_update  s    r   zexc.ArgumentErrorrJ   c                   C  s
   t dS )Nz{Additional keyword arguments are not accepted by this function/method.  The presence of **kw is for pep-484 typing purposes)r   ArgumentErrorrM   rM   rM   rP   _no_kw  s    r   zDict[str, Any]r	   )methnamekwrK   c                 C  s$   t |d }t|  d| dd S )Nr   z% got an unexpected keyword argument '')list	TypeError)r   r   krM   rM   rP   _unexpected_kw  s    r   z'SQLCoreOperations[_T]'z!'SQLCoreOperations[Optional[_T]]')valrK   c                 C  s   d S rL   rM   r   rM   rM   rP   Nullable  s    r   zroles.ExpressionElementRole[_T]z)roles.ExpressionElementRole[Optional[_T]]c                 C  s   d S rL   rM   r   rM   rM   rP   r     s    zType[_T]zType[Optional[_T]]c                 C  s   d S rL   rM   r   rM   rM   rP   r     s    z_TypedColumnClauseArgument[_T]z(_TypedColumnClauseArgument[Optional[_T]]c                 C  s   | S )a  Types a column or ORM class as nullable.

    This can be used in select and other contexts to express that the value of
    a column can be null, for example due to an outer join::

        stmt1 = select(A, Nullable(B)).outerjoin(A.bs)
        stmt2 = select(A.data, Nullable(B.data)).outerjoin(A.bs)

    At runtime this method returns the input unchanged.

    .. versionadded:: 2.0.20
    rM   r   rM   rM   rP   r     s    c                 C  s   d S rL   rM   r   rM   rM   rP   NotNullable  s    r   c                 C  s   d S rL   rM   r   rM   rM   rP   r     s    c                 C  s   d S rL   rM   r   rM   rM   rP   r     s    zOptional[Type[_T]]c                 C  s   d S rL   rM   r   rM   rM   rP   r     s    zCUnion[_TypedColumnClauseArgument[Optional[_T]], Optional[Type[_T]]]c                 C  s   | S )a~  Types a column or ORM class as not nullable.

    This can be used in select and other contexts to express that the value of
    a column cannot be null, for example due to a where condition on a
    nullable column::

        stmt = select(NotNullable(A.value)).where(A.value.is_not(None))

    At runtime this method returns the input unchanged.

    .. versionadded:: 2.0.20
    rM   r   rM   rM   rP   r     s    )Z
__future__r   operatortypingr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r    r   r   r   Z
inspectionr   Zutil.typingr   r   r   r   r   r   r   decimalr   Zuuidr    baser!   Zcompilerr"   r#   r$   Zdmlr%   r&   elementsr'   r(   r)   r*   r+   r,   Zlambdasr-   r.   r   r/   Z
selectabler0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   Zsqltypesr<   r=   Ztype_apir>   Zenginer?   r@   rA   Zengine.mockrB   rC   rD   rF   rG   rH   rI   rW   rZ   intr   boolfloatr]   Z
_StarOrOneZColumnsClauseRoler_   ZExpressionElementRoleZ_TextCoercedExpressionArgumentZTypedColumnsClauseRoleZ_ColumnsClauseArgumentZ_TypedColumnClauseArgumentr`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   Z_ColumnExpressionArgumentrk   __annotations__Z"_ColumnExpressionOrLiteralArgumentZ#_ColumnExpressionOrStrLabelArgumentZ_ByArgumentZ	_InfoTypeZ_FromClauseArgumentZJoinTargetRoleZ_JoinTargetArgumentZOnClauseRoleZ_OnClauseArgumentZCompoundElementRoleZ#_SelectStatementForCompoundArgumentZDMLColumnRoleZ_DMLColumnArgumentrl   Z_DMLColumnKeyMappingZDDLConstraintColumnRoleZ_DDLColumnArgumentZ_DMLTableArgumentZimmutabledictZ_PropagateAttrsTypeZ_TypeEngineArgumentZ_EquivalentColumnMapZ_LimitOffsetTypeZ_AutoIncrementTypeZ_CreateDropBindrp   rq   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   
attrgetterr   r   r   r   r   r   r   r   rM   rM   rM   rP   <module>   s   






















