o
    KDiG                     @   s   d dl mZ d dlmZmZ d dlmZ ddlmZm	Z	m
Z
mZ ddlmZmZ dd Zd	d
 Zdd Zdd Zdd ZG dd deZG dd deZG dd deeedZdgZdS )    wraps)	signature	Parameter)FunctionType   )is_iterable
comma_joinNO_VALUE
arg_to_sql)CondQuerySetc                    s   t   fdd}|S )z?
    Decorates a function to mark it as a binary operator.
    c                     s    | i |}d|_ |S )NT)is_binary_operator)argskwargsretfunc R/var/www/Datamplify/venv/lib/python3.10/site-packages/infi/clickhouse_orm/funcs.pywrapper   s   z binary_operator.<locals>.wrapperr   r   r   r   r   r   binary_operator	   s   r   c                       t   fdd}d|_|S )z
    Decorates a function to mark it as a type conversion function.
    The metaclass automatically generates "OrZero" and "OrNull" combinators
    for the decorated function.
    c                         | i |S Nr   r   r   r   r   r   r         z type_conversion.<locals>.wrappertype_conversionr   f_typer   r   r   r   r         r   c                    r   )z
    Decorates a function to mark it as an aggregate function.
    The metaclass automatically generates combinators such as "OrDefault",
    "OrNull", "If" etc. for the decorated function.
    c                     r   r   r   r   r   r   r   r   (   r   zaggregate.<locals>.wrapper	aggregater   r   r   r   r   r"   "   r!   r"   c                    r   )z
    Decorates a function to mark it as a string function that has a UTF8 variant.
    The metaclass automatically generates a "UTF8" combinator for the decorated function.
    c                     r   r   r   r   r   r   r   r   4   r   z"with_utf8_support.<locals>.wrapperwith_utf8_supportr   r   r   r   r   r#   /   s   r#   c                    r   )zk
    Decorates a function to convert it to a parametric function, such
    as `quantile(level)(expr)`.
    c                     s   t  fdd}|S )Nc                     s.    | i |}t dd}d|j|f |_|S )NT)	stringifyz%s(%s))r	   name)r   r   fparameters_str)r   
parametersr   r   innerB   s   z*parametric.<locals>.wrapper.<locals>.innerr   )r(   r)   r   )r(   r   r   @   s   zparametric.<locals>.wrapperT)r   f_parametricr   r   r   r   
parametric;   s   	r+   c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<S )=FunctionOperatorsMixinzD
    A mixin for implementing Python operators using F objects.
    c                 C      t | |S r   )Flessselfotherr   r   r   __lt__U      zFunctionOperatorsMixin.__lt__c                 C   r-   r   )r.   lessOrEqualsr0   r   r   r   __le__X   r4   zFunctionOperatorsMixin.__le__c                 C   r-   r   )r.   equalsr0   r   r   r   __eq__[   r4   zFunctionOperatorsMixin.__eq__c                 C   r-   r   )r.   	notEqualsr0   r   r   r   __ne__^   r4   zFunctionOperatorsMixin.__ne__c                 C   r-   r   )r.   greaterr0   r   r   r   __gt__a   r4   zFunctionOperatorsMixin.__gt__c                 C   r-   r   )r.   greaterOrEqualsr0   r   r   r   __ge__d   r4   zFunctionOperatorsMixin.__ge__c                 C   r-   r   r.   plusr0   r   r   r   __add__i   r4   zFunctionOperatorsMixin.__add__c                 C      t || S r   r?   r0   r   r   r   __radd__l   r4   zFunctionOperatorsMixin.__radd__c                 C   r-   r   r.   minusr0   r   r   r   __sub__o   r4   zFunctionOperatorsMixin.__sub__c                 C   rB   r   rD   r0   r   r   r   __rsub__r   r4   zFunctionOperatorsMixin.__rsub__c                 C   r-   r   r.   multiplyr0   r   r   r   __mul__u   r4   zFunctionOperatorsMixin.__mul__c                 C   rB   r   rH   r0   r   r   r   __rmul__x   r4   zFunctionOperatorsMixin.__rmul__c                 C   r-   r   r.   divider0   r   r   r   __truediv__{   r4   z"FunctionOperatorsMixin.__truediv__c                 C   rB   r   rL   r0   r   r   r   __rtruediv__~   r4   z#FunctionOperatorsMixin.__rtruediv__c                 C   r-   r   r.   intDivr0   r   r   r   __floordiv__   r4   z#FunctionOperatorsMixin.__floordiv__c                 C   rB   r   rP   r0   r   r   r   __rfloordiv__   r4   z$FunctionOperatorsMixin.__rfloordiv__c                 C   r-   r   r.   modulor0   r   r   r   __mod__   r4   zFunctionOperatorsMixin.__mod__c                 C   rB   r   rT   r0   r   r   r   __rmod__   r4   zFunctionOperatorsMixin.__rmod__c                 C   
   t | S r   )r.   negater1   r   r   r   __neg__      
zFunctionOperatorsMixin.__neg__c                 C   s   | S r   r   rZ   r   r   r   __pos__   s   zFunctionOperatorsMixin.__pos__c                 C   r-   r   r.   _andr0   r   r   r   __and__   r4   zFunctionOperatorsMixin.__and__c                 C   rB   r   r^   r0   r   r   r   __rand__   r4   zFunctionOperatorsMixin.__rand__c                 C   r-   r   r.   _orr0   r   r   r   __or__   r4   zFunctionOperatorsMixin.__or__c                 C   rB   r   rb   r0   r   r   r   __ror__   r4   zFunctionOperatorsMixin.__ror__c                 C   r-   r   r.   _xorr0   r   r   r   __xor__   r4   zFunctionOperatorsMixin.__xor__c                 C   rB   r   rf   r0   r   r   r   __rxor__   r4   zFunctionOperatorsMixin.__rxor__c                 C   rX   r   )r.   _notrZ   r   r   r   
__invert__   r\   z!FunctionOperatorsMixin.__invert__c                 C   r-   r   )r.   _inr1   othersr   r   r   isIn   r4   zFunctionOperatorsMixin.isInc                 C   r-   r   )r.   _notInrm   r   r   r   isNotIn   r4   zFunctionOperatorsMixin.isNotInN)!__name__
__module____qualname____doc__r3   r6   r8   r:   r<   r>   rA   rC   rF   rG   rJ   rK   rN   rO   rR   rS   rV   rW   r[   r]   r`   ra   rd   re   rh   ri   rk   ro   rq   r   r   r   r   r,   N   s>    r,   c                   @   sh   e Zd Zddiddigddiddiddgdddgdd	dgdgdd
igdZdd Zedd ZdS )FMetasuffixOrZeroOrNull	OrDefaultIfcond)rw   r   OrDefaultIfOrNullIfUTF8)r   r"   r#   c              
   C   sf   |  D ],\}}t|dr0t|jdd}tj|g D ]}||d  }t| |j||d qqd S )N__func__r     rw   r   )itemshasattrgetattrr   rv   FUNCTION_COMBINATORSget	_add_func)clsr%   basesdctobjr    
combinatornew_namer   r   r   __init__   s   
zFMeta.__init__c           
      C   s   t |}t|dd }t|j}|r,|r$t|g| }t|g| }nt|}t|}tdd |j D }tdjdi t t	d}t
|jd t ||d}	t|d	d
r[t|	}	t| ||	 dS )zp
        Adds a new func to the cls, based on the signature of the given base_func but with a new name.
        r   c                 s   s"    | ]}|j tjkr|j V  qd S r   )defaultr   empty).0pr   r   r   	<genexpr>   s     z"FMeta._add_func.<locals>.<genexpr>z9def {new_name}({new_sig}): return F("{new_name}", {args})execr   )codeglobalsr%   argdefsr*   FNr   )r   strr	   r(   tuplevaluescompileformatlocals__file__r   	co_constsr   r   r+   setattr)
r   	base_funcr   
extra_argssignew_sigr   r   new_codenew_funcr   r   r   r      s"   
zFMeta._add_funcN)rr   rs   rt   r   r   staticmethodr   r   r   r   r   rv      s     


rv   c                   @   s  e Zd ZdZdd Zdd Zdd Zeedd	 Z	eed
d Z
eedd Zeedd Zedd Zedd Zeedd Zedd Zedd Zedd Zedd Zeedd Zeed d! Zeed"d# Zeed$d% Zeed&d' Zeed(d) Zeed*d+ Zeed,d- Zed.d/ Zed0d1 Zeed2d3 Zeed4d5 Zed6d7 Z ee!fd8d9Z"ee!fd:d;Z#ed<d= Z$ed>e!fd?d@Z%ee!fdAdBZ&edCdD Z'edEdF Z(edGdH Z)edIdJ Z*edKdL Z+edMdN Z,edOdP Z-edQdR Z.edSdT Z/edUdV Z0edWdX Z1edYdZ Z2edd[d\Z3ed]d^ Z4ed_d` Z5edadb Z6edcdd Z7ededf Z8ee!fdgdhZ9edidj Z:ee!fdkdlZ;ee!fdmdnZ<ee!fdodpZ=ee!fdqdrZ>ee!fdsdtZ?ee!fdudvZ@ee!fdwdxZAee!fdydzZBee!fd{d|ZCee!fd}d~ZDee!fddZEedd ZFedd ZGedd ZHedd ZIedd ZJee!fddZKee!fddZLee!fddZMee!fddZNee!fddZOee!fddZPee!fddZQee!fddZRee!fddZSee!fddZTee!fddZUee!fddZVee!fddZWee!fddZXee!fddZYee!fddZZee!fddZ[edd Z\edd Z]edd Z^edd Z_edd Z`edd Zaedd Zbedd Zceeddd Zeeeddd Zfeeddd ZgeedddĄ ZheedddƄ ZieedddȄ Zjeedddʄ Zkeeddd̄ Zleeddd΄ ZmeedddЄ Zneeddd҄ ZoeedddԄ Zpeedddք Zqeeddd؄ Zreedddڄ Zseede!fdd܄Zteddބ Zuedd Zvedd Zwedd Zxeede!fddZyedd Zzedd Z{ee|dd Z}ee|dd Z~ee|dd Zee|dd Zedd Zee|dd Zedd Zedd Zedd Zedd Zedd  Zedd Zedd Zedd Zedd Zed	d
 Zedd Zee|dd Zee|dd Zedd Zedd Zedd Zedd Zedd Zee|dd Zee|dd Zee|dd  Zee|d!d" Zed#d$ ZeZed%d& Zed'd( Zed)d* Zed+d, Zed-d. Zed/d0 Zed1d2 Zed3d4 Zed5d6 ZeZed7d8 Zed9d: Zed;d< Zed=d> Zed?d@ ZedAdB ZedCdD ZedEdF ZedGdH ZedIdJ ZedKdL ZedMdN ZedOdP ZedQdR ZedSdT ZedUdV ZedWdX ZeZedYdZ Zed[d\ ZedŐd^d_ZedŐd`daZeZedŐdbdcZeddde Zedfdg Zedhdi Zedjdk Zedldm Zedndo Zedpdq Zedrds Zedtdu Zedvdw Zedxdy Zedzd{ Zed|d} Zed~d Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd ZedŐddZedŐddZedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd ZedŐddÄZedĐdń ZedƐdǄ ZedȐdɄ Zedʐd˄ Zed̐d̈́ Zedΐdτ ZedАdф ZedҐdӄ ZedԐdՄ Zed֐dׄ Zedؐdل Zedڐdۄ Zedܐd݄ Zedސd߄ Zedd Zedd Zedd Zedd Zedd Zedd Zedd Z edd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Z	ed d Z
edd Zedd Zedd Zedd	 Zed
d ZedŐddZedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zed d! Zed"d# Zed$d% ZedŐd&d'ZedŐd(d)ZedŐd*d+Zed,d- Z ed.d/ Z!ed0d1 Z"ed2d3 Z#ed4d5 Z$ed6d7 Z%ed8d9 Z&ed:d; Z'ed<d= Z(ed>d? Z)ed@dA Z*edBdC Z+edDdE Z,edFdG Z-edHdI Z.edJdK Z/edLdM Z0edNdO Z1ee2dPdQ Z3ee2dRdS Z4ee2dTdU Z5ee2dVdW Z6ee2dXdY Z7ee2dZd[ Z8ee2d\d] Z9ee2d^d_ Z:ee2d`da Z;ee2dbdc Z<ee2ddde Z=ee2dfdg Z>ee2dhdi Z?ee2djdk Z@ee2dldm ZAee2dndo ZBee2dpdq ZCee2drds ZDee2dtdu ZEee2dvdw ZFee2dxdy ZGee2dzd{ ZHee2d|d} ZIee2d~d ZJee2eKdd ZLee2eKdd ZMee2eKdd ZNee2eKdd ZOee2eKdd ZPee2eKdd ZQee2eKdd ZRee2eKdd ZSee2eKdd ZTee2eKdd ZUee2eKdd ZVee2eKdd ZWee2eKdd ZXee2eKdd ZYee2eKdd ZZee2eKdd Z[ee2eKdd Z\ee2eKdd Z]edd Z^edd Z_edd Z`edd Zaedd Zbedd Zcedd Zdedd Zeedd Zfedd Zgedd Zhedd Ziedd Zjedd Zkedd ZleddÄ Zmd]S (  r.   z
    Represents a database function call and its arguments.
    It doubles as a query condition when the function returns a boolean result.
    c                 G   s   || _ || _d| _dS )z
        Initializer.

        FN)r%   r   r   )r1   r%   r   r   r   r   r      s   
z
F.__init__c                 C   s   |   S r   )to_sqlrZ   r   r   r   __repr__   s   z
F.__repr__c                 G   sJ   | j rd}d| j d }n| j}d}dd | jD }|d || d S )z
        Generates an SQL string for this function and its arguments.
        For example if the function name is a symbol of a binary operator:
            (2.54 * `height`)
        For other functions:
            gcd(12, 300)
        r    z, c                 s   s     | ]}|t krt|V  qd S r   )r
   r   )r   argr   r   r   r   	  s    zF.to_sql.<locals>.<genexpr>())r   r%   r   join)r1   r   prefixseparg_strsr   r   r   r      s   zF.to_sqlc                 C      t d| |S )N+r.   abr   r   r   r@        zF.plusc                 C   r   )N-r   r   r   r   r   rE     r   zF.minusc                 C   r   )N*r   r   r   r   r   rI     r   z
F.multiplyc                 C   r   )N/r   r   r   r   r   rM     r   zF.dividec                 C   r   )NrQ   r   r   r   r   r   rQ   "     zF.intDivc                 C   r   )NintDivOrZeror   r   r   r   r   r   &  r   zF.intDivOrZeroc                 C   r   )N%r   r   r   r   r   rU   *  r   zF.moduloc                 C   
   t d| S )NrY   r   r   r   r   r   rY   /     
zF.negatec                 C   r   )Nabsr   r   r   r   r   r   3  r   zF.absc                 C   r   )Ngcdr   r   r   r   r   r   7  r   zF.gcdc                 C   r   )Nlcmr   r   r   r   r   r   ;  r   zF.lcmc                 C   r   )N=r   r   r   r   r   r7   A  r   zF.equalsc                 C   r   )Nz!=r   r   r   r   r   r9   F  r   zF.notEqualsc                 C   r   )N<r   r   r   r   r   r/   K  r   zF.lessc                 C   r   )N>r   r   r   r   r   r;   P  r   z	F.greaterc                 C   r   )Nz<=r   r   r   r   r   r5   U  r   zF.lessOrEqualsc                 C   r   )Nz>=r   r   r   r   r   r=   Z  r   zF.greaterOrEqualsc                 C   r   )NANDr   r   r   r   r   r_   a  r   zF._andc                 C   r   )NORr   r   r   r   r   rc   f  r   zF._orc                 C   r   )Nxorr   r   r   r   r   rg   k  r   zF._xorc                 C   r   )Nnotr   r   r   r   r   rj   o  r   zF._notc                 C   *   t |rt|ttfst|}td| |S )NINr   
isinstancer   r   r.   r   r   r   r   rl   u     zF._inc                 C   r   )NzNOT INr   r   r   r   r   rp   |  r   zF._notInc                 C   r   )NtoYearr   dr   r   r   r     r   zF.toYearc                 C   r   )N	toISOYearr   r   timezoner   r   r   r     r   zF.toISOYearc                 C      |rt d| |S t d| S )N	toQuarterr   r   r   r   r   r        zF.toQuarterc                 C   r   )NtoMonthr   r   r   r   r   r     r   z	F.toMonthr   c                 C      t d| ||S )NtoWeekr   )r   moder   r   r   r   r     r   zF.toWeekc                 C   r   )N	toISOWeekr   r   r   r   r   r     r   zF.toISOWeekc                 C   r   )NtoDayOfYearr   r   r   r   r   r     r   zF.toDayOfYearc                 C   r   )NtoDayOfMonthr   r   r   r   r   r     r   zF.toDayOfMonthc                 C   r   )NtoDayOfWeekr   r   r   r   r   r     r   zF.toDayOfWeekc                 C   r   )NtoHourr   r   r   r   r   r     r   zF.toHourc                 C   r   )NtoMinuter   r   r   r   r   r     r   z
F.toMinutec                 C   r   )NtoSecondr   r   r   r   r   r     r   z
F.toSecondc                 C   r   )NtoMondayr   r   r   r   r   r     r   z
F.toMondayc                 C   r   )NtoStartOfMonthr   r   r   r   r   r     r   zF.toStartOfMonthc                 C   r   )NtoStartOfQuarterr   r   r   r   r   r     r   zF.toStartOfQuarterc                 C   r   )NtoStartOfYearr   r   r   r   r   r     r   zF.toStartOfYearc                 C   r   )NtoStartOfISOYearr   r   r   r   r   r     r   zF.toStartOfISOYearc                 C   r   )NtoStartOfTenMinutesr   r   r   r   r   r     r   zF.toStartOfTenMinutesc                 C   r   )NtoStartOfWeekr   )r   r   r   r   r   r     r   zF.toStartOfWeekc                 C   r   )NtoStartOfMinuter   r   r   r   r   r     r   zF.toStartOfMinutec                 C   r   )NtoStartOfFiveMinuter   r   r   r   r   r     r   zF.toStartOfFiveMinutec                 C   r   )NtoStartOfFifteenMinutesr   r   r   r   r   r     r   zF.toStartOfFifteenMinutesc                 C   r   )NtoStartOfHourr   r   r   r   r   r     r   zF.toStartOfHourc                 C   r   )NtoStartOfDayr   r   r   r   r   r     r   zF.toStartOfDayc                 C   r   )NtoTimer   r   r   r   r   r     r   zF.toTimec                 C   r   )N
toTimeZoner   dtr   r   r   r   r     r   zF.toTimeZonec                 C   r   )NtoUnixTimestampr   r   r   r   r   r     r   zF.toUnixTimestampc                 C   r   )NtoYYYYMMr   r   r   r   r   r     r   z
F.toYYYYMMc                 C   r   )N
toYYYYMMDDr   r   r   r   r   r     r   zF.toYYYYMMDDc                 C   r   )NtoYYYYMMDDhhmmssr   r   r   r   r   r     r   zF.toYYYYMMDDhhmmssc                 C   r   )NtoRelativeYearNumr   r   r   r   r   r     r   zF.toRelativeYearNumc                 C   r   )NtoRelativeMonthNumr   r   r   r   r   r     r   zF.toRelativeMonthNumc                 C   r   )NtoRelativeWeekNumr   r   r   r   r   r     r   zF.toRelativeWeekNumc                 C   r   )NtoRelativeDayNumr   r   r   r   r   r   	  r   zF.toRelativeDayNumc                 C   r   )NtoRelativeHourNumr   r   r   r   r   r     r   zF.toRelativeHourNumc                 C   r   )NtoRelativeMinuteNumr   r   r   r   r   r     r   zF.toRelativeMinuteNumc                 C   r   )NtoRelativeSecondNumr   r   r   r   r   r     r   zF.toRelativeSecondNumc                   C      t dS )Nnowr   r   r   r   r   r       zF.nowc                   C   r  )Ntodayr   r   r   r   r   r    r  zF.todayc                   C   r  )N	yesterdayr   r   r   r   r   r  !  r  zF.yesterdayc                 C   r   )NtimeSlotr   r   r   r   r   r  %  r   z
F.timeSlotc                 C   s   t d| t |S )N	timeSlots)r.   toUInt32)
start_timedurationr   r   r   r  )     zF.timeSlotsc                 C   r   )NformatDateTimer   )r   r   r   r   r   r   r  -  r   zF.formatDateTimec                 C   r   )NaddDaysr   r   nr   r   r   r   r  1  r   z	F.addDaysc                 C   r   )NaddHoursr   r  r   r   r   r  5  r   z
F.addHoursc                 C   r   )N
addMinutesr   r  r   r   r   r  9  r   zF.addMinutesc                 C   r   )N	addMonthsr   r  r   r   r   r  =  r   zF.addMonthsc                 C   r   )NaddQuartersr   r  r   r   r   r  A  r   zF.addQuartersc                 C   r   )N
addSecondsr   r  r   r   r   r  E  r   zF.addSecondsc                 C   r   )NaddWeeksr   r  r   r   r   r  I  r   z
F.addWeeksc                 C   r   )NaddYearsr   r  r   r   r   r  M  r   z
F.addYearsc                 C   r   )NsubtractDaysr   r  r   r   r   r  Q  r   zF.subtractDaysc                 C   r   )NsubtractHoursr   r  r   r   r   r  U  r   zF.subtractHoursc                 C   r   )NsubtractMinutesr   r  r   r   r   r  Y  r   zF.subtractMinutesc                 C   r   )NsubtractMonthsr   r  r   r   r   r  ]  r   zF.subtractMonthsc                 C   r   )NsubtractQuartersr   r  r   r   r   r  a  r   zF.subtractQuartersc                 C   r   )NsubtractSecondsr   r  r   r   r   r  e  r   zF.subtractSecondsc                 C   r   )NsubtractWeeksr   r  r   r   r   r  i  r   zF.subtractWeeksc                 C   r   )NsubtractYearsr   r  r   r   r   r  m  r   zF.subtractYearsc                 C   r   )NtoIntervalSecondr   numberr   r   r   r  q  r   zF.toIntervalSecondc                 C   r   )NtoIntervalMinuter   r   r   r   r   r"  u  r   zF.toIntervalMinutec                 C   r   )NtoIntervalHourr   r   r   r   r   r#  y  r   zF.toIntervalHourc                 C   r   )NtoIntervalDayr   r   r   r   r   r$  }  r   zF.toIntervalDayc                 C   r   )NtoIntervalWeekr   r   r   r   r   r%    r   zF.toIntervalWeekc                 C   r   )NtoIntervalMonthr   r   r   r   r   r&    r   zF.toIntervalMonthc                 C   r   )NtoIntervalQuarterr   r   r   r   r   r'    r   zF.toIntervalQuarterc                 C   r   )NtoIntervalYearr   r   r   r   r   r(    r   zF.toIntervalYearc                 C   r   )NtoUInt8r   xr   r   r   r)       
z	F.toUInt8c                 C   r   )NtoUInt16r   r*  r   r   r   r-    r,  z
F.toUInt16c                 C   r   )Nr  r   r*  r   r   r   r    r,  z
F.toUInt32c                 C   r   )NtoUInt64r   r*  r   r   r   r.    r,  z
F.toUInt64c                 C   r   )NtoInt8r   r*  r   r   r   r/    r,  zF.toInt8c                 C   r   )NtoInt16r   r*  r   r   r   r0    r,  z	F.toInt16c                 C   r   )NtoInt32r   r*  r   r   r   r1    r,  z	F.toInt32c                 C   r   )NtoInt64r   r*  r   r   r   r2    r,  z	F.toInt64c                 C   r   )N	toFloat32r   r*  r   r   r   r3    r,  zF.toFloat32c                 C   r   )N	toFloat64r   r*  r   r   r   r4    r,  zF.toFloat64c                 C   r   )NtoDecimal32r   r+  scaler   r   r   r5    r   zF.toDecimal32c                 C   r   )NtoDecimal64r   r6  r   r   r   r8    r   zF.toDecimal64c                 C   r   )NtoDecimal128r   r6  r   r   r   r9    r   zF.toDecimal128c                 C   r   )NtoDater   r*  r   r   r   r:    r,  zF.toDatec                 C   r   )N
toDateTimer   r*  r   r   r   r;    r,  zF.toDateTimec                 C   r   )NtoDateTime64r   )r+  	precisionr   r   r   r   r<       zF.toDateTime64c                 C   r   )NtoStringr   r*  r   r   r   r?    r   z
F.toStringc                 C   r   )NtoFixedStringr   )slengthr   r   r   r@    r   zF.toFixedStringc                 C   r   )NtoStringCutToZeror   rA  r   r   r   rC    r   zF.toStringCutToZeroc                 C   r   )NCASTr   )r+  typer   r   r   rE    r   zF.CASTc                 C   r   )NparseDateTimeBestEffortr   r   r   r   r   rG    r   zF.parseDateTimeBestEffortc                 C   r   )Nr   r   rD  r   r   r   r     r   zF.emptyc                 C   r   )NnotEmptyr   rD  r   r   r   rH    r   z
F.notEmptyc                 C   r   )NrB  r   rD  r   r   r   rB    r,  zF.lengthc                 C   r   )Nlowerr   rD  r   r   r   rI    r,  zF.lowerc                 C   r   )Nupperr   rD  r   r   r   rJ    r,  zF.upperc                 C   r   )Nreverser   rD  r   r   r   rK    r,  z	F.reversec                  G      t dg| R  S )Nconcatr   r   r   r   r   rM       zF.concatc                 C   r   )N	substringr   )rA  offsetrB  r   r   r   rP    r>  zF.substringc                 C   r   )NappendTrailingCharIfAbsentr   )rA  cr   r   r   rR     r   zF.appendTrailingCharIfAbsentc                 C   r   )NconvertCharsetr   )rA  from_charset
to_charsetr   r   r   rT  $  r   zF.convertCharsetc                 C   r   )Nbase64Encoder   rD  r   r   r   rW  (  r   zF.base64Encodec                 C   r   )Nbase64Decoder   rD  r   r   r   rX  ,  r   zF.base64Decodec                 C   r   )NtryBase64Decoder   rD  r   r   r   rY  0  r   zF.tryBase64Decodec                 C   r   )NendsWithr   )rA  rw   r   r   r   rZ  4  r   z
F.endsWithc                 C   r   )N
startsWithr   )rA  r   r   r   r   r[  8  r   zF.startsWithc                 C   r   )NtrimLeftr   rD  r   r   r   r\  <  r   z
F.trimLeftc                 C   r   )N	trimRightr   rD  r   r   r   r]  @  r   zF.trimRightc                 C   r   )NtrimBothr   rD  r   r   r   r^  D  r   z
F.trimBothc                 C   r   )NCRC32r   rD  r   r   r   r_  H  r   zF.CRC32c                 C   r   )Npositionr   haystackneedler   r   r   r`  N  r   z
F.positionc                 C   r   )NpositionCaseInsensitiver   ra  r   r   r   rd  S  r   zF.positionCaseInsensitivec                 C   r   )Nliker   rb  patternr   r   r   re  X  r   zF.likec                 C   r   )NnotLiker   rf  r   r   r   rh  \  r   z	F.notLikec                 C   r   )Nmatchr   rf  r   r   r   ri  `  r   zF.matchc                 C   r   )Nextractr   rf  r   r   r   rj  d  r   z	F.extractc                 C   r   )N
extractAllr   rf  r   r   r   rk  h  r   zF.extractAllc                 C   r   )NngramDistancer   ra  r   r   r   rl  l  r   zF.ngramDistancec                 C   r   )NngramDistanceCaseInsensitiver   ra  r   r   r   rm  q  r   zF.ngramDistanceCaseInsensitivec                 C   r   )NngramSearchr   ra  r   r   r   rn  v  r   zF.ngramSearchc                 C   r   )NngramSearchCaseInsensitiver   ra  r   r   r   ro  {  r   zF.ngramSearchCaseInsensitivec                 C   r   )Nreplacer   rb  rg  replacementr   r   r   rp    r   z	F.replacec                 C   r   )N
replaceAllr   rq  r   r   r   rs    r   zF.replaceAllc                 C   r   )N
replaceOner   rq  r   r   r   rt    r   zF.replaceOnec                 C   r   )NreplaceRegexpAllr   rq  r   r   r   ru    r   zF.replaceRegexpAllc                 C   r   )NreplaceRegexpOner   rq  r   r   r   rv    r   zF.replaceRegexpOnec                 C   r   )NregexpQuoteMetar   r*  r   r   r   rw    r   zF.regexpQuoteMetac                   C   r  )Ner   r   r   r   r   rx    r  zF.ec                   C   r  )Npir   r   r   r   r   ry    r  zF.pic                 C   r   )Nexpr   r*  r   r   r   rz    r   zF.expc                 C   r   )Nlogr   r*  r   r   r   r{    r   zF.logc                 C   r   )Nexp2r   r*  r   r   r   r|    r   zF.exp2c                 C   r   )Nlog2r   r*  r   r   r   r}    r   zF.log2c                 C   r   )Nexp10r   r*  r   r   r   r~    r   zF.exp10c                 C   r   )Nlog10r   r*  r   r   r   r    r   zF.log10c                 C   r   )Nsqrtr   r*  r   r   r   r    r   zF.sqrtc                 C   r   )Ncbrtr   r*  r   r   r   r    r   zF.cbrtc                 C   r   )Nerfr   r*  r   r   r   r    r   zF.erfc                 C   r   )Nerfcr   r*  r   r   r   r    r   zF.erfcc                 C   r   )Nlgammar   r*  r   r   r   r    r   zF.lgammac                 C   r   )Ntgammar   r*  r   r   r   r    r   zF.tgammac                 C   r   )Nsinr   r*  r   r   r   r    r   zF.sinc                 C   r   )Ncosr   r*  r   r   r   r    r   zF.cosc                 C   r   )Ntanr   r*  r   r   r   r    r   zF.tanc                 C   r   )Nasinr   r*  r   r   r   r    r   zF.asinc                 C   r   )Nacosr   r*  r   r   r   r    r   zF.acosc                 C   r   )Natanr   r*  r   r   r   r    r   zF.atanc                 C   r   )Npowerr   r+  yr   r   r   r    r   zF.powerc                 C   r   )NintExp10r   r*  r   r   r   r    r   z
F.intExp10c                 C   r   )NintExp2r   r*  r   r   r   r    r   z	F.intExp2Nc                 C   r   )Nfloorr   r+  r  r   r   r   r    r   zF.floorc                 C   r   )Nceilingr   r  r   r   r   r    r   z	F.ceilingc                 C   r   )Nroundr   r  r   r   r   r    r   zF.roundc                 C   r   )NroundAger   r*  r   r   r   r  
  r   z
F.roundAgec                 C   r   )N	roundDownr   r  r   r   r   r    r   zF.roundDownc                 C   r   )NroundDurationr   r*  r   r   r   r    r   zF.roundDurationc                 C   r   )NroundToExp2r   r*  r   r   r   r    r   zF.roundToExp2c                   C   r  )NemptyArrayDater   r   r   r   r   r    r  zF.emptyArrayDatec                   C   r  )NemptyArrayDateTimer   r   r   r   r   r     r  zF.emptyArrayDateTimec                   C   r  )NemptyArrayFloat32r   r   r   r   r   r  $  r  zF.emptyArrayFloat32c                   C   r  )NemptyArrayFloat64r   r   r   r   r   r  (  r  zF.emptyArrayFloat64c                   C   r  )NemptyArrayInt16r   r   r   r   r   r  ,  r  zF.emptyArrayInt16c                   C   r  )NemptyArrayInt32r   r   r   r   r   r  0  r  zF.emptyArrayInt32c                   C   r  )NemptyArrayInt64r   r   r   r   r   r  4  r  zF.emptyArrayInt64c                   C   r  )NemptyArrayInt8r   r   r   r   r   r  8  r  zF.emptyArrayInt8c                   C   r  )NemptyArrayStringr   r   r   r   r   r  <  r  zF.emptyArrayStringc                   C   r  )NemptyArrayUInt16r   r   r   r   r   r  @  r  zF.emptyArrayUInt16c                   C   r  )NemptyArrayUInt32r   r   r   r   r   r  D  r  zF.emptyArrayUInt32c                   C   r  )NemptyArrayUInt64r   r   r   r   r   r  H  r  zF.emptyArrayUInt64c                   C   r  )NemptyArrayUInt8r   r   r   r   r   r  L  r  zF.emptyArrayUInt8c                 C   r   )NemptyArrayToSingler   r*  r   r   r   r  P  r   zF.emptyArrayToSinglec                 C   r   )Nranger   )r  r   r   r   r  T  r   zF.rangec                  G   rL  )Narrayr   rN  r   r   r   r  X  rO  zF.arrayc                  G   rL  )NarrayConcatr   rN  r   r   r   r  \  rO  zF.arrayConcatc                 C   r   )NarrayElementr   )arrr  r   r   r   r  `  r   zF.arrayElementc                 C   r   )Nhasr   r  r+  r   r   r   r  d  r   zF.hasc                 C   r   )NhasAllr   r  r   r   r   r  h  r   zF.hasAllc                 C   r   )NhasAnyr   r  r   r   r   r  l  r   zF.hasAnyc                 C   r   )NindexOfr   r  r   r   r   r  p  r   z	F.indexOfc                 C   r   )N
countEqualr   r  r   r   r   r  t  r   zF.countEqualc                 C   r   )NarrayEnumerater   r  r   r   r   r  x  r   zF.arrayEnumeratec                  G   rL  )NarrayEnumerateDenser   rN  r   r   r   r  |  rO  zF.arrayEnumerateDensec                  G   rL  )NarrayEnumerateDenseRankedr   rN  r   r   r   r    rO  zF.arrayEnumerateDenseRankedc                  G   rL  )NarrayEnumerateUniqr   rN  r   r   r   r    rO  zF.arrayEnumerateUniqc                  G   rL  )NarrayEnumerateUniqRankedr   rN  r   r   r   r    rO  zF.arrayEnumerateUniqRankedc                 C   r   )NarrayPopBackr   r  r   r   r   r    r   zF.arrayPopBackc                 C   r   )NarrayPopFrontr   r  r   r   r   r    r   zF.arrayPopFrontc                 C   r   )NarrayPushBackr   r  r   r   r   r    r   zF.arrayPushBackc                 C   r   )NarrayPushFrontr   r  r   r   r   r    r   zF.arrayPushFrontc                 C   "   |d urt d| ||S t d| |S )NarrayResizer   )r  sizeextenderr   r   r   r       "zF.arrayResizec                 C   r  )N
arraySlicer   )r  rQ  rB  r   r   r   r    r  zF.arraySlicec                  G   rL  )N	arrayUniqr   rN  r   r   r   r    rO  zF.arrayUniqc                 C   r   )N	arrayJoinr   r  r   r   r   r    r   zF.arrayJoinc                 C   r   )NarrayDifferencer   r  r   r   r   r    r   zF.arrayDifferencec                 C   r   )NarrayDistinctr   r*  r   r   r   r    r   zF.arrayDistinctc                  G   rL  )NarrayIntersectr   rN  r   r   r   r    rO  zF.arrayIntersectc                 G      t d| g|R  S )NarrayReducer   )agg_func_namer   r   r   r   r    r  zF.arrayReducec                 C   r   )NarrayReverser   r  r   r   r   r    r   zF.arrayReversec                 C   r   )NsplitByCharr   r   rA  r   r   r   r    r   zF.splitByCharc                 C   r   )NsplitByStringr   r  r   r   r   r    r   zF.splitByStringc                 C   r   )NarrayStringConcatr   )r  r   r   r   r   r    r   zF.arrayStringConcatc                 C   r   )NalphaTokensr   rD  r   r   r   r    r   zF.alphaTokensc                 C   r   )NbitAndr   r  r   r   r   r    r   zF.bitAndc                 C   r   )NbitNotr   r*  r   r   r   r    r   zF.bitNotc                 C   r   )NbitOrr   r  r   r   r   r    r   zF.bitOrc                 C   r   )NbitRotateLeftr   r  r   r   r   r    r   zF.bitRotateLeftc                 C   r   )NbitRotateRightr   r  r   r   r   r    r   zF.bitRotateRightc                 C   r   )NbitShiftLeftr   r  r   r   r   r    r   zF.bitShiftLeftc                 C   r   )NbitShiftRightr   r  r   r   r   r    r   zF.bitShiftRightc                 C   r   )NbitTestr   r  r   r   r   r    r   z	F.bitTestc                 G   r  )N
bitTestAllr   r+  r   r   r   r   r    r  zF.bitTestAllc                 G   r  )N
bitTestAnyr   r  r   r   r   r    r  zF.bitTestAnyc                 C   r   )NbitXorr   r  r   r   r   r    r   zF.bitXorc                 C   r   )N	bitmapAndr   r  r   r   r   r    r   zF.bitmapAndc                 C   r   )NbitmapAndCardinalityr   r  r   r   r   r    r   zF.bitmapAndCardinalityc                 C   r   )NbitmapAndnotr   r  r   r   r   r  
  r   zF.bitmapAndnotc                 C   r   )NbitmapAndnotCardinalityr   r  r   r   r   r    r   zF.bitmapAndnotCardinalityc                 C   r   )NbitmapBuildr   r*  r   r   r   r    r   zF.bitmapBuildc                 C   r   )NbitmapCardinalityr   r*  r   r   r   r    r   zF.bitmapCardinalityc                 C   r   )NbitmapContainsr   ra  r   r   r   r    r   zF.bitmapContainsc                 C   r   )NbitmapHasAllr   r  r   r   r   r    r   zF.bitmapHasAllc                 C   r   )NbitmapHasAnyr   r  r   r   r   r  "  r   zF.bitmapHasAnyc                 C   r   )NbitmapOrr   r  r   r   r   r  &  r   z
F.bitmapOrc                 C   r   )NbitmapOrCardinalityr   r  r   r   r   r  *  r   zF.bitmapOrCardinalityc                 C   r   )NbitmapToArrayr   r*  r   r   r   r  .  r   zF.bitmapToArrayc                 C   r   )N	bitmapXorr   r  r   r   r   r  2  r   zF.bitmapXorc                 C   r   )NbitmapXorCardinalityr   r  r   r   r   r  6  r   zF.bitmapXorCardinalityc                  G   rL  )NhalfMD5r   rN  r   r   r   r  <  rO  z	F.halfMD5c                 C   r   )NMD5r   rD  r   r   r   r  @  r   zF.MD5c                  G   rL  )N
sipHash128r   rN  r   r   r   r  D  rO  zF.sipHash128c                  G   rL  )N	sipHash64r   rN  r   r   r   r  H  rO  zF.sipHash64c                  G   rL  )N
cityHash64r   rN  r   r   r   r  L  rO  zF.cityHash64c                 C   r   )N	intHash32r   r*  r   r   r   r  P  r   zF.intHash32c                 C   r   )N	intHash64r   r*  r   r   r   r  T  r   zF.intHash64c                 C   r   )NSHA1r   rD  r   r   r   r  X  r   zF.SHA1c                 C   r   )NSHA224r   rD  r   r   r   r  \  r   zF.SHA224c                 C   r   )NSHA256r   rD  r   r   r   r  `  r   zF.SHA256c                 C   s   |d ur
t d| |S t d| S )NURLHashr   )urlr  r   r   r   r  d  s   z	F.URLHashc                  G   rL  )N
farmHash64r   rN  r   r   r   r  h  rO  zF.farmHash64c                 C   r   )NjavaHashr   rD  r   r   r   r  l  r   z
F.javaHashc                 C   r   )NhiveHashr   rD  r   r   r   r  p  r   z
F.hiveHashc                  G   rL  )NmetroHash64r   rN  r   r   r   r  t  rO  zF.metroHash64c                 C   r   )NjumpConsistentHashr   )r+  bucketsr   r   r   r  x  r   zF.jumpConsistentHashc                  G   rL  )NmurmurHash2_32r   rN  r   r   r   r  |  rO  zF.murmurHash2_32c                  G   rL  )NmurmurHash2_64r   rN  r   r   r   r    rO  zF.murmurHash2_64c                  G   rL  )NmurmurHash3_32r   rN  r   r   r   r    rO  zF.murmurHash3_32c                  G   rL  )NmurmurHash3_64r   rN  r   r   r   r    rO  zF.murmurHash3_64c                 C   r   )NmurmurHash3_128r   rD  r   r   r   r     r   zF.murmurHash3_128c                  G   rL  )NxxHash32r   rN  r   r   r   r    rO  z
F.xxHash32c                  G   rL  )NxxHash64r   rN  r   r   r   r    rO  z
F.xxHash64c                 C      | d u rt dS t d| S )Nrandr   dummyr   r   r   r    r   zF.randc                 C   r  )Nrand64r   r  r   r   r   r    r   zF.rand64c                 C   r  )NrandConstantr   r  r   r   r   r    r   zF.randConstantc                 C   r   )Nhexr   r*  r   r   r   r	    r   zF.hexc                 C   r   )Nunhexr   r*  r   r   r   r
    r   zF.unhexc                 C   r   )NbitmaskToArrayr   r*  r   r   r   r    r   zF.bitmaskToArrayc                 C   r   )NbitmaskToListr   r*  r   r   r   r    r   zF.bitmaskToListc                   C   r  )NgenerateUUIDv4r   r   r   r   r   r    r  zF.generateUUIDv4c                 C   r   )NtoUUIDr   rD  r   r   r   r    r   zF.toUUIDc                 C   r   )NUUIDNumToStringr   rD  r   r   r   r    r   zF.UUIDNumToStringc                 C   r   )NUUIDStringToNumr   rD  r   r   r   r    r   zF.UUIDStringToNumc                 C   r   )NIPv4CIDRToRanger   )ipv4cidrr   r   r   r    r   zF.IPv4CIDRToRangec                 C   r   )NIPv4NumToStringr   numr   r   r   r    r   zF.IPv4NumToStringc                 C   r   )NIPv4NumToStringClassCr   r  r   r   r   r    r   zF.IPv4NumToStringClassCc                 C   r   )NIPv4StringToNumr   rD  r   r   r   r    r   zF.IPv4StringToNumc                 C   r   )N
IPv4ToIPv6r   r  r   r   r   r    r   zF.IPv4ToIPv6c                 C   r   )NIPv6CIDRToRanger   )ipv6r  r   r   r   r    r   zF.IPv6CIDRToRangec                 C   r   )NIPv6NumToStringr   r  r   r   r   r    r   zF.IPv6NumToStringc                 C   r   )NIPv6StringToNumr   rD  r   r   r   r    r   zF.IPv6StringToNumc                 C   r   )NtoIPv4r   r  r   r   r   r    r   zF.toIPv4c                 C   r   )NtoIPv6r   )r  r   r   r   r     r   zF.toIPv6c                 C   r   )Nanyr   r*  r   r   r   r!    r,  zF.anyc                 C   r   )NanyHeavyr   r*  r   r   r   r"    r,  z
F.anyHeavyc                 C   r   )NanyLastr   r*  r   r   r   r#     r,  z	F.anyLastc                 C   r   )NargMaxr   r  r   r   r   r$    r   zF.argMaxc                 C   r   )NargMinr   r  r   r   r   r%  
  r   zF.argMinc                 C   r   )Navgr   r*  r   r   r   r&    r,  zF.avgc                 C   r   )Ncorrr   r  r   r   r   r'    r   zF.corrc                   C   r  )Ncountr   r   r   r   r   r(    s   zF.countc                 C   r   )NcovarPopr   r  r   r   r   r)    r   z
F.covarPopc                 C   r   )N	covarSampr   r  r   r   r   r*  #  r   zF.covarSampc                 C   r   )NkurtPopr   r*  r   r   r   r+  (  r,  z	F.kurtPopc                 C   r   )NkurtSampr   r*  r   r   r   r,  -  r,  z
F.kurtSampc                 C   r   )Nminr   r*  r   r   r   r-  2  r,  zF.minc                 C   r   )Nmaxr   r*  r   r   r   r.  7  r,  zF.maxc                 C   r   )NskewPopr   r*  r   r   r   r/  <  r,  z	F.skewPopc                 C   r   )NskewSampr   r*  r   r   r   r0  A  r,  z
F.skewSampc                 C   r   )Nsumr   r*  r   r   r   r1  F  r,  zF.sumc                  G   rL  )Nuniqr   rN  r   r   r   r2  K     zF.uniqc                  G   rL  )N	uniqExactr   rN  r   r   r   r4  P  r3  zF.uniqExactc                  G   rL  )N	uniqHLL12r   rN  r   r   r   r5  U  r3  zF.uniqHLL12c                 C   r   )NvarPopr   r*  r   r   r   r6  Z  r,  zF.varPopc                 C   r   )NvarSampr   r*  r   r   r   r7  _  r,  z	F.varSampc                 C   r   )N	stddevPopr   exprr   r   r   r8  d  r,  zF.stddevPopc                 C   r   )N
stddevSampr   r9  r   r   r   r;  i  r,  zF.stddevSampc                 C   r   )Nquantiler   r9  r   r   r   r<  n     
z
F.quantilec                 C   r   )NquantileDeterministicr   r:  determinatorr   r   r   r>  t     zF.quantileDeterministicc                 C   r   )NquantileExactr   r9  r   r   r   rB  z  r=  zF.quantileExactc                 C   r   )NquantileExactWeightedr   r:  weightr   r   r   rC    rA  zF.quantileExactWeightedc                 C   r   )NquantileTimingr   r9  r   r   r   rF    r=  zF.quantileTimingc                 C   r   )NquantileTimingWeightedr   rD  r   r   r   rG    rA  zF.quantileTimingWeightedc                 C   r   )NquantileTDigestr   r9  r   r   r   rH    r=  zF.quantileTDigestc                 C   r   )NquantileTDigestWeightedr   rD  r   r   r   rI    rA  zF.quantileTDigestWeightedc                 C   r   )N	quantilesr   r9  r   r   r   rJ    r=  zF.quantilesc                 C   r   )NquantilesDeterministicr   r?  r   r   r   rK    rA  zF.quantilesDeterministicc                 C   r   )NquantilesExactr   r9  r   r   r   rL    r=  zF.quantilesExactc                 C   r   )NquantilesExactWeightedr   rD  r   r   r   rM    rA  zF.quantilesExactWeightedc                 C   r   )NquantilesTimingr   r9  r   r   r   rN    r=  zF.quantilesTimingc                 C   r   )NquantilesTimingWeightedr   rD  r   r   r   rO    rA  zF.quantilesTimingWeightedc                 C   r   )NquantilesTDigestr   r9  r   r   r   rP    r=  zF.quantilesTDigestc                 C   r   )NquantilesTDigestWeightedr   rD  r   r   r   rQ    rA  zF.quantilesTDigestWeightedc                 C   r   )NtopKr   r9  r   r   r   rR    r=  zF.topKc                 C   r   )NtopKWeightedr   rD  r   r   r   rS    rA  zF.topKWeightedc                 C   r   )NifNullr   r  r   r   r   rT    r   zF.ifNullc                 C   r   )NnullIfr   r  r   r   r   rU    r   zF.nullIfc                 C   r   )N	isNotNullr   r*  r   r   r   rV    r   zF.isNotNullc                 C   r   )NisNullr   r*  r   r   r   rW    r   zF.isNullc                  G   rL  )Ncoalescer   rN  r   r   r   rX    rO  z
F.coalescec                 C   r   )NifNotFiniter   r  r   r   r   rY    r   zF.ifNotFinitec                 C   r   )NisFiniter   r*  r   r   r   rZ    r   z
F.isFinitec                 C   r   )N
isInfiniter   r*  r   r   r   r[    r   zF.isInfinitec                 C   r   )NisNaNr   r*  r   r   r   r\    r   zF.isNaNc                 C   r   )Nleastr   r  r   r   r   r]    r   zF.leastc                 C   r   )Ngreatestr   r  r   r   r   r^    r   z
F.greatestc                 C   r   )NdictGetr   )	dict_name	attr_nameid_exprr   r   r   r_    r   z	F.dictGetc                 C   s   t d| |||S )NdictGetOrDefaultr   )r`  ra  rb  r   r   r   r   rc    rO  zF.dictGetOrDefaultc                 C   r   )NdictHasr   r`  rb  r   r   r   rd    r   z	F.dictHasc                 C   r   )NdictGetHierarchyr   re  r   r   r   rf    r   zF.dictGetHierarchyc                 C   r   )NdictIsInr   )r`  child_id_exprancestor_id_exprr   r   r   rg    r   z
F.dictIsIn)r   r   (n  rr   rs   rt   ru   r   r   r   r   r   r@   rE   rI   rM   rQ   r   rU   rY   r   r   r   r7   r9   r/   r;   r5   r=   r_   rc   rg   rj   rl   rp   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r#  r$  r%  r&  r'  r(  r   r)  r-  r  r.  r/  r0  r1  r2  r3  r4  r5  r8  r9  r:  r;  r<  r?  r@  rC  rE  rG  r   rH  r#   rB  rI  rJ  rK  rM  rP  rR  rT  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  rd  re  rh  ri  rj  rk  rl  rm  rn  ro  rp  rs  rt  ru  rv  rw  rx  ry  rz  r{  lnr|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  powr  r  r  r  ceilr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r"   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r4  r5  r6  r7  r8  r;  r+   r<  r>  rB  rC  rF  rG  rH  rI  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  rc  rd  rf  rg  r   r   r   r   r.      sT   	



















































r.   )	metaclassN)	functoolsr   inspectr   r   typesr   utilsr   r	   r
   r   queryr   r   r   r   r"   r#   r+   objectr,   rF  rv   r.   __all__r   r   r   r   <module>   s4    c9            
D