U
    GvfI
                     @  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rtd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dd	d
ZddddddddZddddddddZdS )Statz>Base class for objects that apply statistical transformations.FzClassVar[bool]group_by_orientstrzIterable[Any]None)paramoptionsreturnc                 C  s|   t | |}||krx|^ }}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  s   | ]}|V  qd S N .0xr   r   7/tmp/pip-unpacked-wheel-ir0tye89/seaborn/_stats/base.py	<genexpr>&   s     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   valueZmostlastZ
option_strerrr   r   r   _check_param_one_of!   s    

&zStat._check_param_one_of   z	list[str]int)r   	data_vars
stacklevelr   c                 C  sh   t | |}t|t| }|rd| jj d| }ddd |D }d| d| d}tj||d dS )	zFWarn if vars are named in parameter without being present in the data.r   r   c                 s  s   | ]}|V  qd S r   r   r   r   r   r   r   5   s     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*   Z
param_varsZ	undefinednamesmsgr   r   r   _check_grouping_vars-   s    
zStat._check_grouping_varsr   r	   zdict[str, Scale])datagroupbyorientscalesr   c                 C  s   |S )zIApply statistical transform to data subgroups and return combined result.r   )r"   r1   r2   r3   r4   r   r   r   __call__9   s    zStat.__call__N)r'   )	r    
__module____qualname____doc__r   __annotations__r&   r0   r5   r   r   r   r   r      s   
 r   )r8   
__future__r   collections.abcr   Zdataclassesr   typingr   r   r,   r   Zpandasr   Zseaborn._core.groupbyr	   Zseaborn._core.scalesr
   r   r   r   r   r   <module>   s   