U
    Gvf%                     @  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dddZdd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krdS |dkr0d }}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rDt|dS |d krR| j}|rht|| j| j}| |	t
|}| | j| jg\}}t||g std||8 }|||  }tjj|dd}|r|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shapeisfiniteallmaZmasked_invalid)selfvaluer   Z	is_scalarZt_valueZt_vminZt_vmax r   3/tmp/pip-unpacked-wheel-ir0tye89/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mplcolorsZ	NormalizeZget_transformr   )ZscaleZnormr   r   r   Znew_normr   r   r   norm_from_scale   s    

r   c                 C  s2   zt j|  W S  tk
r,   t j|  Y S X dS )7Handle changes to matplotlib colormap interface in 3.6.N)r   	colormapsAttributeErrorcmZget_cmapnamer   r   r   get_colormap;   s    r$   c                 C  sF   z| t jkrt jj|| d W n" tk
r@   t j| | Y nX dS )r   r"   N)r   r   registerr    r!   Zregister_cmap)r#   Zcmapr   r   r   register_colormapC   s
    
r&   r   z7Literal[('constrained', 'compressed', 'tight', 'none')]None)figenginereturnc                 C  s^   t | dr| | nD|dkr*| d n0|dkr>| d n|dkrZ| d | d dS )5Handle changes to auto layout engine interface in 3.6set_layout_engineZtightTZconstrainednoneFN)hasattrr,   Zset_tight_layoutZset_constrained_layout)r(   r)   r   r   r   r,   L   s    

r,   z%mpl.layout_engine.LayoutEngine | None)r(   r*   c                 C  s   t | dr|  S dS dS )r+   get_layout_engineN)r.   r/   )r(   r   r   r   r/   ^   s    
r/   c                 C  sD   t tdr,t| d| d }|||  n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    
r4   c                 C  s   t tdr| jS | jS dS )z&Handle legendHandles attribute rename.z3.7N)r   r   ZlegendHandlesZlegend_handles)Zlegendr   r   r   get_legend_handlesp   s    
r5   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    
r8   )
__future__r   typingr   Znumpyr
   Zpandasr6   Z
matplotlibr   Zmatplotlib.figurer   Zseaborn.utilsr   r   r$   r&   r,   r/   r4   r5   r8   r   r   r   r   <module>   s   0			