o
    UhI
                     @  s   d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	 ddl
Z
ddlmZ er:ddlmZ dd	lmZ dd
lmZ eG dd dZdS )z,Base module for statistical transformations.    )annotations)Iterable)	dataclass)ClassVarAnyN)TYPE_CHECKING)	DataFrame)GroupBy)Scalec                   @  s@   e Zd ZU dZdZded< dddZ	dd ddZd!ddZdS )"Statz>Base class for objects that apply statistical transformations.FzClassVar[bool]group_by_orientparamstroptionsIterable[Any]returnNonec                 C  s|   t | |}||vr<|^ }}ddd |dd D d| }dd| d	| jj d
d| d|dg}t|dS )z9Raise when parameter value is not one of a specified set., c                 s      | ]}|V  qd S N .0xr   r   G/var/www/vscode/kcb/lib/python3.10/site-packages/seaborn/_stats/base.py	<genexpr>&       z+Stat._check_param_one_of.<locals>.<genexpr>Nz or  zThe `z` parameter for `z	` must bezone of z; not .)getattrjoin	__class____name__
ValueError)selfr   r   valuemostlast
option_strerrr   r   r   _check_param_one_of!   s   

&zStat._check_param_one_of   	data_vars	list[str]
stacklevelintc                 C  sl   t | |}t|t| }|r4| jj d| }ddd |D }d| d| d}tj||d dS dS )	zFWarn if vars are named in parameter without being present in the data.r   r   c                 s  r   r   r   r   r   r   r   r   5   r   z,Stat._check_grouping_vars.<locals>.<genexpr>z!Undefined variable(s) passed for z: )r/   N)r    setr"   r#   r!   warningswarn)r%   r   r-   r/   
param_vars	undefinednamesmsgr   r   r   _check_grouping_vars-   s   
zStat._check_grouping_varsdatar   groupbyr	   orientscalesdict[str, Scale]c                 C  s   |S )zIApply statistical transform to data subgroups and return combined result.r   )r%   r9   r:   r;   r<   r   r   r   __call__9   s   zStat.__call__N)r   r   r   r   r   r   )r,   )r   r   r-   r.   r/   r0   r   r   )
r9   r   r:   r	   r;   r   r<   r=   r   r   )	r#   
__module____qualname____doc__r   __annotations__r+   r8   r>   r   r   r   r   r      s   
 
r   )rA   
__future__r   collections.abcr   dataclassesr   typingr   r   r2   r   pandasr   seaborn._core.groupbyr	   seaborn._core.scalesr
   r   r   r   r   r   <module>   s    