o
    in                     @   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u 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MarkerStyle
get_marker)marker	fillstyle r
   J/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/seaborn/_compat.pyr      s
   r   c                 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)process_valueautoscale_Nonevminvmax
ValueErrornp	full_likeclip	transformreshapeshapeisfiniteallmamasked_invalid)selfvaluer   	is_scalart_valuet_vmin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   colors	Normalizeget_transformr   )scalenormr   r   r&   new_normr
   r
   r   norm_from_scale   s   

r-   c                    s   d}t tjt dk r9 d dv r9d} d  |dd}|dur(||d  < |dd}|dur9||d	  < t| trJG  fd
dd}|  tjj|  fi |} |rl|  }|	dd|_
|	ddkrld|_| 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   xyTbaseNnonpositivenonposc                       s   e Zd Z ZdS )zscale_factory.<locals>.AxisN)r#   r$   r%   	axis_namer
   axisr
   r   Axis[   s    r6   
   mask)r   r   __version__popr   strr*   scale_factoryr)   getr0   _clip)r*   r5   kwargsmodify_transformr0   r2   r6   r   r
   r4   r   r<   F   s*   
r<   c                 C   s   t tjt dk rD|jdu rdS t| d| d}i }|jdkr,| }|j|jf|d< ||jfi | t| | d}|| dS | j	di | d|i dS )	z=Handle backwards compatability with setting matplotlib scale.r.   Nset_r*   function	functionsr5   r
   )
r   r   r9   namegetattrr)   _forward_inverse#set_default_locators_and_formattersset)axr5   r*   methodkwstransaxis_objr
   r
   r   set_scale_objl   s   

rO   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cmget_cmaprD   r
   r
   r   get_colormap   s
   rV   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 )rP   rU   N)r   rQ   registerrR   rS   register_cmap)rD   cmapr
   r
   r   register_colormap   s   
rZ   c                 C   sH   t | dr| | dS |dkr| d dS |dkr"| d dS dS )z5Handle changes to auto layout engine interface in 3.6set_layout_enginetightTconstrainedN)hasattrr[   set_tight_layoutset_constrained_layout)figenginer
   r
   r   r[      s   
r[   c                 C   sN   t tjt dk rt| d| d }|||  dS t|d| |  dS )z(Handle changes to post-hoc axis sharing.z3.5.0get_shared__axesshareN)r   r   r9   rE   join)ax0ax1whichgroupr
   r
   r   
share_axis   s   rk   )NN)numpyr   
matplotlibr   seaborn.external.versionr   r   r-   r<   rO   rV   rZ   r[   rk   r
   r
   r
   r   <module>   s    
0&	