Ë
    èlÖiÉ  ã                   ób   — 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  G d„ de«      Zy	)
é    )ÚAggregation)ÚHasNulls)ÚPercentiles©ÚNumber)ÚDataTypeError)Úwarn_null_calculationc                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚIQRz�
    Calculate the interquartile range of a column.

    :param column_name:
        The name of a column containing :class:`.Number` data.
    c                 ó2   — || _         t        |«      | _        y ©N)Ú_column_namer   Ú_percentiles)ÚselfÚcolumn_names     ú[/var/www/html/strategist-ai/venv_dbt/lib/python3.12/site-packages/agate/aggregations/iqr.pyÚ__init__zIQR.__init__   s   € Ø'ˆÔÜ'¨Ó4ˆÕó    c                 ó   — t        «       S r   r   )r   Útables     r   Úget_aggregate_data_typezIQR.get_aggregate_data_type   s	   € Ü‹xˆr   c                 óæ   — |j                   | j                     }t        |j                  t        «      st        d«      ‚t        | j                  «      j                  |«      }|rt        | |«       y y )Nz:IQR can only be applied to columns containing Number data.)	Úcolumnsr   Ú
isinstanceÚ	data_typer   r   r   Úrunr	   )r   r   ÚcolumnÚ	has_nullss       r   ÚvalidatezIQR.validate   s_   € Ø—‘˜t×0Ñ0Ñ1ˆä˜&×*Ñ*¬FÔ3ÜÐ \Ó]Ð]ä˜T×.Ñ.Ó/×3Ñ3°EÓ:ˆ	áÜ! $¨Õ/ð r   c                 óf   — | j                   j                  |«      }|d   �|d   �|d   |d   z
  S y y )NéK   é   )r   r   )r   r   Úpercentiless      r   r   zIQR.run"   sG   € Ø×'Ñ'×+Ñ+¨EÓ2ˆà�r‰?Ð&¨;°r©?Ð+FØ˜r‘? [°¡_Ñ4Ð4ð ,GÐ&r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   © r   r   r   r   	   s   „ ñò5òò	0ó5r   r   N)Úagate.aggregations.baser   Úagate.aggregations.has_nullsr   Úagate.aggregations.percentilesr   Úagate.data_typesr   Úagate.exceptionsr   Úagate.warnsr	   r   r(   r   r   ú<module>r/      s#   ðÝ /Ý 1Ý 6Ý #Ý *Ý -ô5ˆ+õ 5r   