o
    .1f%                     @  s   d dl mZ d dlmZ d dlZd dlZd dlZ	d dl
mZ d dlmZ dd Zdd	 Zd
d ZdddZdddZdd Zdd Zdd ZdS )    )annotations)LiteralN)Figure)_version_predatesc                 C  sf   t |tjjr	|S | du rdS |du rd }}n|\}}G dd dtjj}|||}|  j|_|S )zCProduce a Normalize object given a Scale and min/max domain limits.Nc                   @  s   e Zd ZdddZdS )z#norm_from_scale.<locals>.ScaledNormNc                 S  s   |  |\}}| | | j| jkrtd| j| jkr"t|dS |d u r)| j}|r4t|| j| j}| |	t
|}| | j| jg\}}t||g sWtd||8 }|||  }tjj|dd}|ro|d S |S )Nz"vmin must be less or equal to vmaxr   zInvalid vmin or vmaxF)copy)Zprocess_valueZautoscale_Nonevminvmax
ValueErrornpZ	full_likeclip	transformZreshapeshapeZisfiniteallZmaZmasked_invalid)selfvaluer   Z	is_scalarZt_valueZt_vminZt_vmax r   /lib/python3.10/site-packages/seaborn/_compat.py__call__   s$   
z,norm_from_scale.<locals>.ScaledNorm.__call__)N)__name__
__module____qualname__r   r   r   r   r   
ScaledNorm   s    r   )
isinstancemplZcolorsZ	NormalizeZget_transformr   )ZscaleZnormr   r   r   Znew_normr   r   r   norm_from_scale   s   

r   c                 C  s,   zt j|  W S  ty   t j|  Y S w )7Handle changes to matplotlib colormap interface in 3.6.)r   	colormapsAttributeErrorcmZget_cmapnamer   r   r   get_colormap;   s
   r!   c                 C  sJ   z| t jvrt jj|| d W dS W dS  ty$   t j| | Y dS w )r   r   N)r   r   registerr   r   Zregister_cmap)r    Zcmapr   r   r   register_colormapC   s   
r#   figr   engine5Literal['constrained', 'compressed', 'tight', 'none']returnNonec                 C  sh   t | dr| | dS |dkr| d dS |dkr"| d dS |dkr2| d | d dS dS )5Handle changes to auto layout engine interface in 3.6set_layout_engineZtightTZconstrainedZnoneFN)hasattrr*   Zset_tight_layoutZset_constrained_layout)r$   r%   r   r   r   r*   L   s   

r*   %mpl.layout_engine.LayoutEngine | Nonec                 C  s   t | dr	|  S dS )r)   get_layout_engineN)r+   r-   )r$   r   r   r   r-   ^   s   
r-   c                 C  sF   t tdrt| d| d }|||  dS t|d| |  dS )z(Handle changes to post-hoc axis sharing.z3.5Zget_shared_Z_axesZshareN)r   r   getattrjoin)Zax0Zax1whichgroupr   r   r   
share_axisg   s   
r2   c                 C  s   t tdr| jS | jS )z&Handle legendHandles attribute rename.z3.7)r   r   ZlegendHandlesZlegend_handles)Zlegendr   r   r   get_legend_handlesp   s   
r3   c                 C  s   t tdri S d| iS )Nz2.2.0Zinclude_groups)r   pd)valr   r   r   groupby_apply_include_groupsx   s   
r6   )r$   r   r%   r&   r'   r(   )r$   r   r'   r,   )Z
__future__r   typingr   Znumpyr
   Zpandasr4   Z
matplotlibr   Zmatplotlib.figurer   Zseaborn.utilsr   r   r!   r#   r*   r-   r2   r3   r6   r   r   r   r   <module>   s    0
	
		