
    sVf                     X    d dl Zd dlZd dlmZ ddZd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zy)    N)_version_predatesc                     t        | t        j                  j                        r|| S | j	                         } t        j                  j                  | |      S )z
    Allow MarkerStyle to accept a MarkerStyle object as parameter.

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

    )
isinstancemplmarkersMarkerStyle
get_marker)marker	fillstyles     X/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/seaborn/_compat.pyr   r      sH     &#++112M&&(F;;""6955    c                    t        |t        j                  j                        r|S | y|dx}}n|\  }} G d dt        j                  j                        } |||      }| j	                         j
                  |_        |S )zCProduce a Normalize object given a Scale and min/max domain limits.Nc                       e Zd ZddZy)#norm_from_scale.<locals>.ScaledNormNc                    | j                  |      \  }}| j                  |       | j                  | j                  kD  rt	        d      | j                  | j                  k(  rt        j                  |d      S || j                  }|r+t        j                  || j                  | j                        }| j                  |      j                  t        j                  |            }| j                  | j                  | j                  g      \  }}t        j                  ||g      j                         st	        d      ||z  }|||z
  z  }t
        j                  j                  |d      }|r|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_vmaxs          r   __call__z,norm_from_scale.<locals>.ScaledNorm.__call__(   s7     $11%8E9&yy499$ !EFFyyDII%||E1--|yytyy$))<nnU+33BHHUODG!^^TYY		,BCNFF;;/0446 !788vG(Gee**7*?G!*71:77r   )N)__name__
__module____qualname__r(    r   r   
ScaledNormr   &   s    	8r   r-   )r   r   colors	Normalizeget_transformr   )scalenormr   r   r-   new_norms         r   norm_from_scaler4      s}    
 $

,,-}|t
d8SZZ)) 84 $%H,,.88HOr   c                    d}t        t        d      rFd   dv r?d}d   |j                  dd      }|||d <   |j                  dd      }|||d	 <   t        | t              r G fd
d      } |       t        j
                  j                  | fi |} |rB| j                         }|j                  dd      |_	        |j                  d      dk(  rd|_
        | 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                       e Zd ZW  Zy)scale_factory.<locals>.AxisN)r)   r*   r+   	axis_name)axiss   r   Axisr<   [   s    Ir   r?   
   mask)r   r   popr   strr1   scale_factoryr0   getr8   _clip)r1   r>   kwargsmodify_transformr8   r:   r?   r   s    `      r   rD   rD   F   s     e$7d?#7D::fd+D(,dV}%ZZt4F!*0v'%	 	vII##E4:6:E'')	FB/	::m$. $IOLr   c                 l   t        t        d      r|j                  yt        | d| d      }i }|j                  dk(  r+|j	                         }|j
                  |j                  f|d<    ||j                  fi | t        | | d      }|j                  |       y | j                  di | d|i y)	z=Handle backwards compatability with setting matplotlib scale.r6   Nset_r1   function	functionsr>   r,   )	r   r   namegetattrr0   _forward_inverse#set_default_locators_and_formattersset)axr>   r1   methodkwstransaxis_objs          r   set_scale_objrX   l   s    e$
 ::tD6/0::#'')E %?Cuzz!S!2$t}-11(;)TF%.%()r   c                     	 t         j                  |    S # t        $ r" t         j                  j	                  |       cY S w xY w)7Handle changes to matplotlib colormap interface in 3.6.)r   	colormapsAttributeErrorcmget_cmaprM   s    r   get_colormapr`      s8    %}}T"" %vvt$$%s    (A A c                     	 | t         j                  vr"t         j                  j                  ||        yy# t        $ r# t         j                  j                  | |       Y yw xY w)rZ   r_   N)r   r[   registerr\   r]   register_cmap)rM   cmaps     r   register_colormapre      sR    )s}}$MM""4d"3 % )T4()s   37 )A#"A#c                     t        | d      r| j                  |       y|dk(  r| j                  d       y|dk(  r| j                  d       y|dk(  r#| j                  d       | j                  d       yy)z5Handle changes to auto layout engine interface in 3.6set_layout_enginetightTconstrainednoneFN)hasattrrg   set_tight_layoutset_constrained_layout)figengines     r   rg   rg      sr    s'(f% W  &}$&&t,v  '&&u- r   c                     t        t        d      r( t        | d| d             }|j                  ||        y t        |d|       |        y)z(Handle changes to post-hoc axis sharing.z3.5get_shared__axesshareN)r   r   rN   join)ax0ax1whichgroups       r   
share_axisry      sK    e$8{5'78:

3%uUG_%c*r   c                 R    t        t        d      r| j                  S | j                  S )z&Handle legendHandles attribute rename.z3.7)r   r   legendHandleslegend_handles)legends    r   get_legend_handlesr~      s$    e$###$$$r   )NN)numpyr   
matplotlibr   seaborn.utilsr   r   r4   rD   rX   r`   re   rg   ry   r~   r,   r   r   <module>r      s=      +6 -`#L*,%).+%r   