o
    E6d<C                     @  sV  U d Z 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 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j!d!ed"Z"ej#rdd#lm$Z$ dd$lm%Z% dd%lm&Z& dd&e'de(fd&dd'dd:d;Z)	&	ddd?d@Z*d&ddAddEdFZ+ddHdIZ,ddLdMZ-ddPdQZ.ddRdSZ/ddVdWZ0ddXdYZ1ddZd[Z2dd\d]Z3dd^d_Z4dd`daZ5ddddeZ6ddidjZ7ddndoZ8ddqdrZ9i dse,e j:fdte,e j:fdue1e j:fdve+e j:fdwe+e j:fdxe+e j:fdye+e j:fdze+e j:fd{e+e j:fd|e+e j:fd}e+e j:fd~e3e j:fde+e j:fde+e j:fde+e j:fde+e j:fde*e j:fi de+e j:fde+e j:fde+e j:fde-e ;dJej<ifde-e ;dJej=ifde)e ;d.ej>ifde)e ;d.ej?ifde)e ;d.ej@ifde)e ;d.ejAifde)e ;d.ejBifde)e ;d.ejCifde)e ;d.ejDifde)e ;d.ejEifde)e ;d.ejFifde)e ;d.ejGifde)e ;d.ejHifde)e ;d.ejIifi de)e ;d.ejJifde)e ;d.ejKifde)e ;d.ejLifde)e ;d.ejMifde)e ;d.ejNifde)e ;d.ejOifde-e ;dJejPifde-e ;dJejQifde-e ;dJejRifde-e ;dJejSifde.e ;d.ejTifde.e ;d.ejUifde)e ;d.ejVifde)e ;d.ejWifde7e j:fde4e j:fde4e j:fe5e j:fe6e j:fe6e j:fe2e j:fe/e j:fe0e j:fe0e j:fe0e j:fe8e j:fe8e j:fe9e j:fdZXdeYd< dS )z5Default implementation of SQL comparison operations.
    )annotationsN)Any)Callable)Dict)NoReturn)Optional)Tuple)Type)Union   )	coercions)	operators)roles)type_api)and_)BinaryExpression)ClauseElement)CollationClause)CollectionAggregate)ExpressionClauseList)False_)Null)OperatorExpression)or_)True_)UnaryExpression)OperatorType   )exc)util_T)bound)ColumnElement)	custom_op)
TypeEngineF)	negate_opreverse_python_is_types_any_all_exprresult_typeexprColumnElement[Any]opr   objr   r%   Optional[OperatorType]r&   boolr'   Tuple[Type[Any], ...]r(   r)   Optional[TypeEngine[bool]]kwargsreturnOperatorExpression[bool]c          	      K  s^  |d u rt j}t||tttf r|tjtjfv r1t|t	ttfr1t
j| ttj|||||dS |tjtjfv rIt
j| ttj|||||dS |rVtjtj||| d}nA|tjtjfv rot
j| ttj|tjtj|dS |tjtjfv rt
j| ttj|tjtj|dS tdtjtj||| d}|rt
j|| ||||dS t
j| |||||dS )N)type_negate	modifiers)elementoperatorr*   )r6   r5   z~Only '=', '!=', 'is_()', 'is_not()', 'is_distinct_from()', 'is_not_distinct_from()' operators can be used with None/True/False)r   BOOLEANTYPE
isinstancer   r   r   r   eqner/   r   _construct_for_opr   expectr   ZConstExprRoleis_distinct_fromis_not_distinct_fromis_is_notr   ArgumentErrorBinaryElementRole)	r*   r,   r-   r%   r&   r'   r(   r)   r2    rF   xC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\sqlalchemy/sql/default_comparator.py_boolean_compare3   s   


	rH   custom_op[Any]Optional[TypeEngine[Any]]kwc                 K  s<   |d u r|j r|j }n|jrtj}t| ||f||d|S )Nr&   r)   )return_typeZis_comparisonr   r:   _binary_operate)r*   r,   r-   r&   r)   rK   rF   rF   rG   _custom_op_operate   s   rO   rL   roles.BinaryElementRole[Any]Optional[TypeEngine[_T]]OperatorExpression[_T]c          	      K  s^   t jtj|| |d}|r|| }}n| |}}|d u r%|j||j\}}tj|||||dS )Nr*   r9   )r5   r7   )r   r?   r   rE   Z
comparatorZ_adapt_expressionr   r>   )	r*   r,   r-   r&   r)   rK   Zcoerced_objleftrightrF   rF   rG   rN      s   	


rN   otherc                 K  s.   |t ju r
t| |S |t ju rt| |S t N)r   r   r   NotImplementedErrorr*   r,   rV   rK   rF   rF   rG   _conjunction_operate   s
   



rZ   fn2Callable[[ColumnElement[Any]], ColumnElement[Any]]c                 K  s   || S rW   rF   )r*   r,   r[   rK   rF   rF   rG   _scalar   s   r]   seq_or_selectabler   c                 K  sD   t jtj|| |d}d|jv r|jd \}}t| ||fd|i|S )NrS   Zin_opsr%   )r   r?   r   ZInElementRoleZ_annotationsrH   )r*   r,   r^   r%   rK   rF   rF   rG   _in_impl   s   

r_   c                 K  sl   t | jtjst | jtjr*t | jjtjr*tjtj	|| |d}t
| ||fi |S t| ||fi | d S )NrS   )r;   typer   Z	INDEXABLEZTypeDecoratorZimpl_instancer   r?   r   rE   rN   _unsupported_implrY   rF   rF   rG   _getitem_impl   s   
rb   argr   c                 O  s   t d|j )Nz1Operator '%s' is not supported on this expression)rX   __name__)r*   r,   rc   rK   rF   rF   rG   ra      s   ra   c                 K  s   t | dr| jS |  S )z%See :meth:`.ColumnOperators.__inv__`.negation_clause)hasattrre   Z_negater*   r,   rK   rF   rF   rG   	_inv_impl   s   
rh   c                 K     t | tj| jdS )z%See :meth:`.ColumnOperators.__neg__`.r9   r5   )r   r   negr`   rg   rF   rF   rG   	_neg_impl  s   rl   c                 K  ri   )z)See :meth:`.ColumnOperators.bitwise_not`.rj   )r   r   bitwise_not_opr`   rg   rF   rF   rG   _bitwise_not_impl  s   
rn   c              	   K  sB   t | tjtjtj|| tjdftj|tju rtj	ntjd|S )z#See :meth:`.ColumnOperators.match`.rS   )r)   r%   )
rH   r   match_opr   r?   r   rE   r   Z	MATCHTYPEnot_match_oprY   rF   rF   rG   _match_impl  s"   	
rq   c                 K  ri   )z&See :meth:`.ColumnOperators.distinct`.rj   )r   r   distinct_opr`   rg   rF   rF   rG   _distinct_impl3  s   
rs   cleftcrightc                 K  sb   t | tjtjtjtjt	j
|| tjdtjt	j
|| tjddd||tju r+tj|dS tj|dS )z%See :meth:`.ColumnOperators.between`.rS   Fgroupr6   r7   )r   r   _construct_for_listr   r   r   NULLTYPEr   r?   r   rE   
between_opnot_between_op)r*   r,   rt   ru   rK   rF   rF   rG   _between_impl<  s6   
r}   ColumnElement[str]	collationstrc                 K  s   t | |S rW   )r   Z_create_collation_expression)r*   r,   r   rK   rF   rF   rG   _collate_impl_  s   r   patternflagsOptional[str]c                 K  s*   t | tjtj|| tjd|tjd|idS )NrS   r   rx   )r   r   r?   r   rE   r   comma_opnot_regexp_match_op)r*   r,   r   r   rK   rF   rF   rG   _regexp_match_imple  s   r   replacementc                 K  sL   t | tjtjtjtjt	j
|| tjdtjt	j
|| tjddd|d|idS )NrS   Frv   r   )r7   )r   r   ry   r   r   r   rz   r   r?   r   rE   )r*   r,   r   r   r   rK   rF   rF   rG   _regexp_replace_implz  s,   r   r   r   invaddmulsubdivmodZbitwise_xor_opZbitwise_or_opZbitwise_and_oprm   Zbitwise_lshift_opZbitwise_rshift_optruedivfloordivr#   Zjson_path_getitem_opZjson_getitem_opZ	concat_opZany_opZall_opltler=   gtger<   r@   rA   like_opilike_opnot_like_opnot_ilike_opZcontains_opZicontains_opZstartswith_opZistartswith_opZendswith_opZiendswith_opZdesc_opZasc_opZnulls_first_opZnulls_last_opin_op	not_in_oprB   rC   Zcollatero   rp   )rr   r{   r|   rk   getitemlshiftrshiftcontainsZregexp_match_opr   Zregexp_replace_opzDict[str, Tuple[Callable[..., ColumnElement[Any]], util.immutabledict[str, Union[OperatorType, Callable[..., ColumnElement[Any]]]]]]operator_lookup)r*   r+   r,   r   r-   r   r%   r.   r&   r/   r'   r0   r(   r/   r)   r1   r2   r   r3   r4   )FN)r*   r+   r,   rI   r-   r   r&   r/   r)   rJ   rK   r   r3   r+   )r*   r+   r,   r   r-   rP   r&   r/   r)   rQ   rK   r   r3   rR   )
r*   r+   r,   r   rV   r   rK   r   r3   r+   )
r*   r+   r,   r   r[   r\   rK   r   r3   r+   )r*   r+   r,   r   r^   r   r%   r   rK   r   r3   r+   )
r*   r+   r,   r   rc   r   rK   r   r3   r   )r*   r+   r,   r   rK   r   r3   r+   )r*   r+   r,   r   rt   r   ru   r   rK   r   r3   r+   )
r*   r~   r,   r   r   r   rK   r   r3   r~   )r*   r~   r,   r   r   r   r   r   rK   r   r3   r+   )r*   r+   r,   r   r   r   r   r   r   r   rK   r   r3   r+   )Z__doc__
__future__r   typingr   r   r   r   r   r   r	   r
    r   r   r   r   elementsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   TypeVarr    TYPE_CHECKINGr"   r#   r$   r`   r/   rH   rO   rN   rZ   r]   r_   rb   ra   rh   rl   rn   rq   rs   r}   r   r   r   
EMPTY_DICTZimmutabledictZ_create_anyZ_create_allr   r   r<   r   r   r=   rA   r@   r   r   r   r   Znot_contains_opZnot_icontains_opZnot_startswith_opZnot_istartswith_opZnot_endswith_opZnot_iendswith_opZ_create_descZ_create_ascZ_create_nulls_firstZ_create_nulls_lastr   r   rB   rC   r   __annotations__rF   rF   rF   rG   <module>   s  
c


	








	
#

*








	











 !"#'+/37;?CGKOSW[_cgko
s
t
uv 