
    ^j<                        d dl Z d dlmZ d dlmZmZmZmZm	Z	m
Z
mZ d dlmZ d dlmZmZmZmZmZmZ d dlmZmZ d dlmZ d dlZd dlmZ d dlZd dlZd Z  e       d        Z!d	 Z" ed
gdd      d        Z#d Z$d Z% edgdd      d        Z&d Z'd Z(d Z) edgddd      d        Z*d Z+ edgdd      d        Z,d Z-d Z. G d  d!      Z/d" Z0d# Z1d$ Z2d% Z3d& Z4y)'    N)
AsinhScaleAsinhTransform	FuncScale
LogitScaleLogTransformInvertedLogTransformSymmetricalLogTransform)AsinhLocatorAutoLocatorLogFormatterSciNotationNullFormatterNullLocatorScalarFormatter)check_figures_equalimage_comparison)IdentityTransform)assert_allclosec                     d } t        | d d f       t        | d d f       t        |        t        | d       t        | d       t        | d	       t        |        t        | d
       t        | d       t        | d
dg       t        | d d f       t        |        t        | d       t        | d       t        |        t        | d
       t        | d       t        | d
dg       t        d d f       t        d d f       t                t        d       t        d	       t                t        d
       t        d       t        d
dg       y )Nc                     | S N xs    f/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/matplotlib/tests/test_scale.py<lambda>z.test_optional_axis_signature.<locals>.<lambda>#   s    q     c                     | S r   r   r   s    r   r   z.test_optional_axis_signature.<locals>.<lambda>#   s    A r   c                     | S r   r   r   s    r   r   z.test_optional_axis_signature.<locals>.<lambda>$   s     r   c                     | S r   r   r   s    r   r   z.test_optional_axis_signature.<locals>.<lambda>$   s    a r   	functionsclipnonpositiveT)use_overline   )linear_width   base   subsc                     | S r   r   r   s    r   r   z.test_optional_axis_signature.<locals>.<lambda>.   s    a r   c                     | S r   r   r   s    r   r   z.test_optional_axis_signature.<locals>.<lambda>.   s    1 r   )axisr!   r0   )r0   r$   )r0   r%   r0   r'   r0   r*   )r0   r-   c                     | S r   r   r   s    r   r   z.test_optional_axis_signature.<locals>.<lambda>7   s     r   c                     | S r   r   r   s    r   r   z.test_optional_axis_signature.<locals>.<lambda>7   s    a r   c                     | S r   r   r   s    r   r   z.test_optional_axis_signature.<locals>.<lambda>8   s    1 r   c                     | S r   r   r   s    r   r   z.test_optional_axis_signature.<locals>.<lambda>8   s     r   )r   r   r   r1   s    r   test_optional_axis_signaturer8      s    D d[+./d{K89ttVt(t$'tt!$t!t1a&!4K#=>DDf-Dt,DDq)Dq!D1v&{K()k23L6"D!LAAQFr   c                 R   | j                  ddd      }|j                  d       |j                  d       |j                         }|j	                         }|j                  ddd      }|j                  ||       |j                  ddg|d       |j                  |ddgd       y )Nz   logsymlog)yscalexscaleg8@)xlimylimb)add_subplotaxvlineaxhlineget_xlimget_ylimsetplot)fig_testfig_refax_testr?   r@   ax_refs         r   test_log_scalesrM   B   s    ""3uX"FGOODOODDD  U8 DF
JJDtJ$
KKtdC(
KKtTlC(r   c                  *   t        ddd      } | j                         }t        j                  ddd      }|j	                  | j	                  |            }t        ||       t        |      t        |      u sJ t        j                  |d<   |j	                  | j	                  |            }t        ||       t        |      t        |      u sJ t        j                  j                  |      }|j	                  | j	                  |            }t        ||       t        |      t        |      u sJ t        j                  j                  |d<   |j	                  | j	                  |            }t        ||       t        |      t        |      u sJ y )	N
   r&      g               ?   r(   )r	   invertednparangetransform_non_affiner   typenanmaarraymasked)sltsltir   outs       r   test_symlog_mask_nanr`   O   sJ    ""a
+C<<>D
		$3A

#
#C$<$<Q$?
@CC9Q66AaD

#
#C$<$<Q$?
@CC9Q
AA

#
#C$<$<Q$?
@CC9Q55<<AaD

#
#C$<$<Q$?
@CC9Qr   zlogit_scales.pngT_classic_test)remove_textstylec                     t        j                         \  } }t        j                  g d      }d|z  }|j	                  ||       |j                  d       |j                  d       |j                  | j                  j                               }t        j                  |j                        sJ t        j                  |j                        sJ y )N)gMbP?g~jth?{Gz?gQ?g?皙?g333333?g?rR   g333333?gffffff?g?g?g
ףp=
?gGz?gCl?g+?      ?logitT)pltsubplotsrU   r[   rH   
set_xscalegridget_tightbboxcanvasget_rendererisfinitex0y0)figaxr   ybboxs        r   test_logit_scalesrw   j   s    llnGC 	 @ 	AAaAGGAqMMM'GGDMCJJ3356D;;tww;;twwr   c                     t        j                  d      \  } }t        j                  d      }t        j                  d      dz
  }|j	                  ||       t        j                         }| j                  |d       t        j                         }| j                  |d       t        j                         }| j                  |d       y)zIssue #1799rP   rO   pdf)formatepssvgN)ri   rj   rU   rV   scatterioBytesIOsavefig)rs   rt   r   ru   bufs        r   test_log_scatterr   {   s    ll1oGC
		"A
		"AJJq!
**,CKKEK"
**,CKKEK"
**,CKKEK"r   c                      t        j                         \  } }|j                  dt        j                  g d             | j
                  j                          y )Nr;   )r&   r(   rS   r,   )ri   rj   
set_yscalerU   r[   rn   drawrs   rt   s     r   test_logscale_subsr      s8    llnGCMM%bhhy1M2JJOOr   zlogscale_mask.pngc            	      :   t        j                  ddd      } t        j                         \  }}|j	                  t        j
                  | dz                |j                  j                          |j                  ddt        j                  ddd      z  	       y )
Nr   2   i  r&   r;         $@i   )r=   yticks)
rU   linspaceri   rj   rH   exprn   r   rG   rV   )xsrs   rt   s      r   test_logscale_maskr      su     
QD	!BllnGCGGBFFBE6NJJOOFF%ryyq"--  /r   c                      t        j                         \  } }dD ]7  }t        j                  t              5  |j                  |d       d d d        9 y # 1 sw Y   DxY w)N)linearr;   r<   mask)foo)ri   rj   pytestraises	TypeErrorr   rs   rt   scales      r   test_extra_kwargs_raiser      sV    llnGC, -]]9% 	-MM%VM,	- 	--	- 	-s   AA	c                  8   t        j                         \  } }|j                  d       |j                  |j                  j                         z   j                         }t        d      j                         }t        |t              sJ |j                  dk(  sJ y )Nr;   r&   r)   )
ri   rj   r   	transAxes	transDatarT   r   
isinstancer   r*   )rs   rt   tforminverted_transforms       r   test_logscale_invert_transformr      s}    llnGCMM%\\BLL1133==?E &1-668(*>???""a'''r   c                      t        j                         \  } }|j                  d       t        |j                         t        t        dd             y )Nr;   rO   r"   r#   )ri   rj   r   reprr   r   r   s     r   test_logscale_transform_reprr      s8    llnGCMM%bf	-.r   zlogscale_nonpos_values.pngg{Gz?mpl20)rb   tolrc   c                  `   t         j                  j                  d       t         j                  j                  t	        d            } t        j                  dd      \  }\  \  }}\  }}|j                  | dd       |j                  d       |j                  | dd       |j                  dd	
       t        j                  ddd      }t        j                  |       }dd|z
  z  t        j                  d|z        z  t        j                  |       z  }|j                  |||z
  ||z          |j                  d       t        j                  dd      }	|	dz  }
|	dz  }|j                  |	|
|       |j                  d       |j                  d       |j!                  g d       y )Ni!N,g     @@)sizer&   )rQ   rO   )rangebinsr;   r   r#   r   re   rf   rQ   rP   r(   )yerr)re   rP   g      Y@)rU   randomseednormalintri   rj   histr   rV   r   cosfill_betweenlogspaceerrorbarrk   
set_yticks)r   rs   ax1ax2ax3ax4xdataydataedatar   ru   r   s               r   test_logscale_nonpos_valuesr      s]    IINN8			s3x		(B$'LLA$6!C	!*3jsCHHRwRH(NN5HHRwRH(NN5fN-IIaT"EFFE6NEEN266!E'?*2665&>9EUEEM55=9NN5
BA	QAa4DLLADL!NN5NN5NN?#r   c                     t        j                         \  } }|j                  t        dd      t        dd             |j	                  d       |j                         }t        j                  t              5  |j                  d       d d d        |j                         |k(  sJ t        j                  t              5  |j                  d       d d d        |j                         |k(  sJ |j                  d       |j                         }t        j                  t              5  |j                  d       d d d        |j                         |k(  sJ t        j                  t              5  |j                  d       d d d        |j                         |k(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   DxY w)	Nr   rS   r;   )leftr   )right)bottom)top)ri   rj   r}   r   rk   rE   r   warnsUserWarningset_xlimr   rF   set_ylim)rs   rt   original_xlimoriginal_ylims       r   test_invalid_log_limsr      se   llnGCJJuQ{E!QK(MM%KKMM	k	" 
;;=M)))	k	" 
";;=M)))MM%KKMM	k	" 
1;;=M)))	k	" 
;;=M)))    s0   8F%F2+F>4G
%F/2F;>G
Gzfunction_scales.pngc                      d } d }t        j                         \  }}t        j                  dd      }|j	                  ||       |j                  d|| f       |j                  dd       y )Nc                     | dz  S )Nr&   r   r   s    r   inversez$test_function_scale.<locals>.inverse   s    !tr   c                     | dz  S )NrR   r   r   s    r   forwardz$test_function_scale.<locals>.forward   s    3xr   rP   i  functionr    )ri   rj   rU   rV   rH   rk   r   )r   r   rs   rt   r   s        r   test_function_scaler      s]     llnGC
		!TAGGAqMMM*'(:M;KK4r   c                  J   t        j                         \  } }t        j                  d       }|j	                  |       t        j                  d       }|j                  |       |j                  j                         dk(  sJ |j                  j                         dk(  sJ y )Nr1   r;   )	ri   rj   mscaleLogScalerk   r   xaxis	get_scaleyaxisr   s      r   test_pass_scaler     s{    llnGCOO&EMM%OO&EMM%885(((885(((r   c                      t        j                  dd      } t        j                  |       }t	        | j                               t	        |j                               k(  sJ | j                  |j                  usJ y )Nr   rO   r3   )r   r   copydeepcopystrget_transform
_transform)scsc2s     r   test_scale_deepcopyr     s`    	c	+B
--
Cr!"c#*;*;*=&>>>>==...r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestAsinhScalec                 T   d}t        j                  ddd      }t        |      }|j                         }|j                         }|j	                  |      }|j	                  |      }t        ||       |j	                  |      }t        ||t        j                  ||z        z         y )Ng      1@ir   d   )rU   r   r   rT   rW   r   arcsinh)	selfa0ar   r   invinv	a_forward
a_inverteda_invinvs	            r   test_transformszTestAsinhScale.test_transforms  s    KKR% $""$!!#003	11)<

A&..q1"rzz!b&'9"9:r   c                 ,   t        j                         \  }}t        d d      }|j                  dk(  sJ |j                  dk(  sJ |j
                  dk(  sJ |j                         }t        |t              sJ |j                  |j                  k(  sJ y )Ng      7@r2      rO   )r&   rQ   )	ri   rj   r   r'   _base_subsr   r   r   )r   rs   rt   stxs        r   	test_initzTestAsinhScale.test_init$  s    ,,.RDt4~~###ww"}}ww&   __"n---!..000r   c                     t        j                         \  }}t        d d      }|j                  dk(  sJ |j                  dk(  sJ t        d dd      }|j                  dk(  sJ |j                  dk(  sJ y )Nr(   r3   )r&      )r&   rS   )r0   r*   r-   )ri   rj   r   r   r   )r   rs   rt   s3s7s        r   test_base_initzTestAsinhScale.test_base_init0  so    ,,.RT*xx1}}xx4T7xx1}}xx6!!!r   c                     G d d      } |       }t        |d      }|j                  |       t        |j                  d   t              sJ t        |j                  d   t
              sJ  |       }t        |d      }|j                  |       t        |j                  d   t              sJ t        |j                  d   t              sJ y )Nc                       e Zd Zd Zd Zd Zy)-TestAsinhScale.test_fmtloc.<locals>.DummyAxisc                     i | _         y r   fieldsr   s    r   __init__z6TestAsinhScale.test_fmtloc.<locals>.DummyAxis.__init__=  s	     r   c                 <     | j                   j                  di | y )Nr   )r  update)r   kwargss     r   rG   z1TestAsinhScale.test_fmtloc.<locals>.DummyAxis.set?  s    """,V,r   c                 "    || j                   d<   y )Nmajor_formatterr   )r   fs     r   set_major_formatterzATestAsinhScale.test_fmtloc.<locals>.DummyAxis.set_major_formatterA  s    12-.r   N)__name__
__module____qualname__r  rG   r
  r   r   r   	DummyAxisr   <  s    !-3r   r  r   r3   major_locatorr  rQ   )r   #set_default_locators_and_formattersr   r  r
   r   r   )r   r  ax0s0ax5r   s         r   test_fmtloczTestAsinhScale.test_fmtloc;  s    	3 	3 kSq)
..s3#**_5|DDD#**%67===kSq)
..s3#**_5|DDD#**%6713 	3 3r   c                 P   t        j                         \  }}t        j                  t              5  t        d d       d d d        t        j                  t              5  t        d d       d d d        t        d       }t        d d      }y # 1 sw Y   RxY w# 1 sw Y   /xY w)Nr   r2   r   r1   g      @)ri   rj   r   r   
ValueErrorr   )r   rs   rt   r  s1s        r   test_bad_scalezTestAsinhScale.test_bad_scaleQ  s}    ,,.R]]:& 	2Dq1	2]]:& 	3Dr2	3T$T4	2 	2	3 	3s   B BBB%N)r  r  r  r   r   r   r  r  r   r   r   r   r     s    ;
1	"3,5r   r   c                      G d dt                G fddt        j                        } 	 t        j                  |        t	        j
                         \  }}|j                  d       t        |j                  j                               sJ 	 t        j                  d= t        j                  d= y# t        j                  d= t        j                  d= w xY w)z[
    Test that one can register and use custom scales that don't take an *axis* param.
    c                       e Zd Zy)7test_custom_scale_without_axis.<locals>.CustomTransformNr  r  r  r   r   r   CustomTransformr  `      r   r  c                   (    e Zd ZdZ fdZd Zd Zy)3test_custom_scale_without_axis.<locals>.CustomScalecustomc                             | _         y r   r   )r   r  s    r   r  z<test_custom_scale_without_axis.<locals>.CustomScale.__init__g      -/DOr   c                     | j                   S r   r#  r  s    r   r   zAtest_custom_scale_without_axis.<locals>.CustomScale.get_transformj      ??"r   c                     |j                  t                      |j                  t                      |j	                  t                      |j                  t                      y r   set_major_locatorr   r
  r   set_minor_locatorr   set_minor_formatterr   r   r0   s     r   r  zWtest_custom_scale_without_axis.<locals>.CustomScale.set_default_locators_and_formattersm  C    "";=1$$_%67"";=1$$]_5r   Nr  r  r  namer  r   r  r  s   r   CustomScaler   c      	0	#	6r   r1  r!  N)r   r   	ScaleBaseregister_scaleri   rj   rk   r   r   r   _scale_mapping_scale_has_axis_parameterr1  rs   rt   r  s      @r   test_custom_scale_without_axisr8  \  s    + 6f&& 6 7k*,,.R
h"((002ODDD !!(+,,X6 !!(+,,X6s   A#B4 4$Cc                      G d dt                G fddt        j                        } 	 t        j                  t
        d      5  t        j                  |        ddd       t        j                         \  }}|j                  d       t        |j                  j                               sJ 	 t        j                  d= t        j                  d= y# 1 sw Y   {xY w# t        j                  d= t        j                  d= w xY w)	z
    Test that one can still register and use custom scales with an *axis*
    parameter, but that registering issues a pending-deprecation warning.
    c                       e Zd Zy)4test_custom_scale_with_axis.<locals>.CustomTransformNr  r   r   r   r  r;    r  r   r  c                   (    e Zd ZdZ fdZd Zd Zy)0test_custom_scale_with_axis.<locals>.CustomScaler!  c                             | _         y r   r#  )r   r0   r  s     r   r  z9test_custom_scale_with_axis.<locals>.CustomScale.__init__  r$  r   c                     | j                   S r   r#  r  s    r   r   z>test_custom_scale_with_axis.<locals>.CustomScale.get_transform  r&  r   c                     |j                  t                      |j                  t                      |j	                  t                      |j                  t                      y r   r(  r,  s     r   r  zTtest_custom_scale_with_axis.<locals>.CustomScale.set_default_locators_and_formatters  r-  r   Nr.  r0  s   r   r1  r=    r2  r   r1  z)'axis' parameter .* is pending-deprecated)matchNr!  )r   r   r3  r   r   PendingDeprecationWarningr4  ri   rj   rk   r   r   r   r5  r6  r7  s      @r   test_custom_scale_with_axisrC  ~  s    
+ 6f&& 6 7\\)BD 	/ !!+.	/ ,,.R
h"((002ODDD !!(+,,X6	/ 	/ !!(+,,X6s$   C$ CAC$ C!C$ $$Dc                     ddddt         j                  dfdt         j                  dfdddd	d
t         j                  dfd
t         j                  dfddddddt         j                  dfdt         j                  dfddddt         j                  dfdt         j                  dfg} | D ]J  \  }}}t        j                  |   } |d       }|j                  |      }||u r9J d| d| d| d|         y )N)r   r   T)r         $T)r           Tr   F)r;   rg   T)r;   gYnT)r;   rF  F)r;         Fr;   )rh   rR   T)rh   rF  F)rh   rg   F)rh   gF)rh   g?Frh   )r<   r   T)r<   rE  T)r<   rF  Tr<   r1   zFailed z.val_in_range(z).Expected z, got )rU   infrY   r   r5  val_in_range)
test_casesr/  valexpected	scale_clsr   results          r   test_val_in_rangerO    s&    		2665!	2665! 			 		"&&% 	"&&%  		2665!	2665!? JD  * 
c8))$/	4 $! 	
dV># / zx1	
!
r   c                  X   t        j                  d       } | j                  d      du sJ | j                  d      du sJ | j                  t        j                        du sJ | j                  t        j
                        du sJ | j                  t        j
                         du sJ y )Nr1   rg   Tg      F)r   r3  rI  rU   rY   rH  )r   s    r   test_val_in_range_base_fallbackrQ    s     	d#A >>#$&&&>>$4''' >>"&&!U***>>"&&!U***>>266'"e+++r   c                  @   t        j                  dddt         j                  t         j                  dg      } g dg dg dg dg dd}|j	                         D ]M  \  }}t        j                  |   d       }t         j                  j                  |j                  |       |       O t        j                  d	   d       j                  t        j                  d
dgdt         j                  gg            }t         j                  j                  |ddgddgg       y )NrR   rG  rF  g      ?)TTTFFT)TFFFFT)r   r;   r<   asinhrh   r1   r;   rg   TF)
rU   r[   rY   rH  itemsr   r5  testingassert_array_equalrI  )arrcasesr/  rL  r   r_   s         r   test_val_in_range_arrayrY    s    
((CsBFFBFFD9
:C8:88:E  ++- Eh!!$'T2


%%annS&98DE
 


&D
1
>
>
3+RVV}-.0CJJ!!#ue}'EFr   )5r   matplotlib.pyplotpyplotri   matplotlib.scaler   r   r   r   r   r   r	   r   r   matplotlib.tickerr
   r   r   r   r   r   matplotlib.testing.decoratorsr   r   matplotlib.transformsr   numpyrU   numpy.testingr   r~   r   r8   rM   r`   rw   r   r   r   r   r   r   r   r   r   r   r   r   r8  rC  rO  rQ  rY  r   r   r   <module>rb     s>      
 "  P 3  ) 	 (V 	) 	) 6 %&DP  Q  #& &'TQ	/ R	/-	(/ /0"G=$=$4*0 ()t7K L )/E5 E5P7D#7L,
^,Gr   