Ë
    ÌiH  ã                   óJ   — d dl Z d dlmZ d dlmZmZ d dlmZ  G d„ de«      Zy)é    N)ÚAggregation)ÚNumberÚ	TimeDelta)ÚDataTypeErrorc                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚSumz€
    Calculate the sum of a column.

    :param column_name:
        The name of a column containing :class:`.Number` data.
    c                 ó   — || _         y ©N)Ú_column_name)ÚselfÚcolumn_names     úW/var/www/html/strategist-ai/venv/lib/python3.12/site-packages/agate/aggregations/sum.pyÚ__init__zSum.__init__   s
   € Ø'ˆÕó    c                 óŽ   — |j                   | j                     }t        |j                  t        t
        f«      r|j                  S y r
   )Úcolumnsr   Ú
isinstanceÚ	data_typer   r   ©r   ÚtableÚcolumns      r   Úget_aggregate_data_typezSum.get_aggregate_data_type   s<   € Ø—‘˜t×0Ñ0Ñ1ˆä�f×&Ñ&¬´Ð(;Ô<Ø×#Ñ#Ð#ð =r   c                 óŒ   — |j                   | j                     }t        |j                  t        t
        f«      st        d«      ‚y )NzGSum can only be applied to columns containing Number or TimeDelta data.)r   r   r   r   r   r   r   r   s      r   ÚvalidatezSum.validate   s=   € Ø—‘˜t×0Ñ0Ñ1ˆä˜&×*Ñ*¬V´YÐ,?Ô@ÜÐ iÓjÐjð Ar   c                 óÈ   — |j                   | j                     }d}t        |j                  t        «      rt        j                  «       }t        |j                  «       |«      S )Nr   )	r   r   r   r   r   ÚdatetimeÚ	timedeltaÚsumÚvalues_without_nulls)r   r   r   Ústarts       r   ÚrunzSum.run   sO   € Ø—‘˜t×0Ñ0Ñ1ˆàˆÜ�f×&Ñ&¬	Ô2Ü×&Ñ&Ó(ˆEä�6×.Ñ.Ó0°%Ó8Ð8r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r!   © r   r   r   r      s   „ ñò(ò$òkó9r   r   )	r   Úagate.aggregations.baser   Úagate.data_typesr   r   Úagate.exceptionsr   r   r&   r   r   ú<module>r*      s   ðÛ å /ß .Ý *ô9ˆ+õ 9r   