o
    9f&                     @  s   d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ er8d dlmZ ed	ed
ZG dd dee ZG dd dee Zeedeeddd ZdS )    )annotations)TYPE_CHECKINGAnyTypeVar)compiles)	coercionsroles)ColumnElement)GenericFunction)types)_ColumnExpressionArgument_T)boundc                      s&   e Zd ZdZ	dd fd
dZ  ZS )quantileTNlevelfloatexpr_ColumnExpressionArgument[Any]	conditionkwargsr   c                   s   t jtj|| d}|g}|d urt jtj|| d}|| || _t|jtj	tj
tjfr1tj}nt|jtjr<tj}nt|jtjrGtj}ntj}||d< ||d< t j|fi | d S )N)apply_propagate_attrstype__parsed_args)r   expectr   ExpressionElementRoleappendr   
isinstancetyper   DecimalFloatIntFloat64DateTimeDatesuper__init__)selfr   r   r   r   argargsreturn_type	__class__ \/var/www/Datamplify/venv/lib/python3.10/site-packages/clickhouse_sqlalchemy/sql/functions.pyr%      s*   
zquantile.__init__)N)r   r   r   r   r   r   r   r   )__name__
__module____qualname__inherit_cacher%   __classcell__r,   r,   r*   r-   r      s    r   c                   @  s   e Zd ZdZdS )
quantileIfTN)r.   r/   r0   r1   r,   r,   r,   r-   r3   5   s    r3   
clickhousec                 K  s*   |j | fi |}| j d| j d| S )N())function_argspecnamer   )elementcompilerr   args_strr,   r,   r-   compile_quantile9   s   r<   N)
__future__r   typingr   r   r   sqlalchemy.ext.compilerr   sqlalchemy.sqlr   r   sqlalchemy.sql.elementsr	   sqlalchemy.sql.functionsr
   clickhouse_sqlalchemyr   sqlalchemy.sql._typingr   r   r   r3   r<   r,   r,   r,   r-   <module>   s    #