U
    mdn                     @   sb   d dl Zd dlZd dlmZ dddZdd Zdd Zd	d
 Z	dd Z
dd Zdd Zdd ZdS )    N)Versionc                 C   s0   t | tjjr"|dkr| S |  } tj| |S )z
    Allow MarkerStyle to accept a MarkerStyle object as parameter.

    Supports matplotlib < 3.3.0
    https://github.com/matplotlib/matplotlib/pull/16692

    N)
isinstancemplmarkersMarkerStyleZ
get_marker)markerZ	fillstyle r   H/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/seaborn/_compat.pyr      s
    r   c                 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_vmaxr   r   r	   __call__(   s$    
z,norm_from_scale.<locals>.ScaledNorm.__call__)N)__name__
__module____qualname__r   r   r   r   r	   
ScaledNorm&   s   r   )r   r   colorsZ	Normalizeget_transformr   )scaleZnormr   r   r   Znew_normr   r   r	   norm_from_scale   s    

r   c                    s   d}t tjt dk rr d dkrrd} d  |dd}|dk	rP||d  < |dd}|dk	rr||d	  < t| trG  fd
dd}|  tjj|  f|} |r|  }|	dd|_
|	ddkrd|_| S )z
    Backwards compatability for creation of independent scales.

    Matplotlib scales require an Axis object for instantiation on < 3.4.
    But the axis is not used, aside from extraction of the axis_name in LogScale.

    F3.4r   ZxyTbaseNnonpositivenonposc                       s   e Zd Z ZdS )zscale_factory.<locals>.AxisN)r   r   r   Z	axis_namer   axisr   r	   Axis[   s   r&   
   mask)r   r   __version__popr   strr   scale_factoryr   getr!   Z_clip)r   r%   kwargsZmodify_transformr!   r#   r&   r   r   r$   r	   r,   F   s*    
r,   c                 C   s   t tjt dk r|jdkr dS t| d| d}i }|jdkrX| }|j|jf|d< ||jf| t| | d}|| n| j	f | d|i dS )z=Handle backwards compatability with setting matplotlib scale.r    Nset_r   functionZ	functionsr%   )
r   r   r)   namegetattrr   Z_forwardZ_inverseZ#set_default_locators_and_formattersset)Zaxr%   r   methodkwsZtransZaxis_objr   r   r	   set_scale_objl   s    

r6   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r1   r   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 )r7   r;   N)r   r8   registerr9   r:   Zregister_cmap)r1   Zcmapr   r   r	   register_colormap   s
    
r>   c                 C   s@   t | dr| | n&|dkr*| d n|dkr<| d dS )z5Handle changes to auto layout engine interface in 3.6set_layout_engineZtightTZconstrainedN)hasattrr?   Zset_tight_layoutZset_constrained_layout)ZfigZenginer   r   r	   r?      s    
r?   c                 C   sL   t tjt dk r4t| d| d }|||  nt|d| |  dS )z(Handle changes to post-hoc axis sharing.z3.5.0Zget_shared_Z_axesshareN)r   r   r)   r2   join)Zax0Zax1whichgroupr   r   r	   
share_axis   s    rE   )NN)numpyr   Z
matplotlibr   Zseaborn.external.versionr   r   r   r,   r6   r<   r>   r?   rE   r   r   r   r	   <module>   s   
0&	