
    
3j<                        S SK r S SKJr  S SKJrJrJrJrJ	r	J
r
Jr  S SKJr  S SKJrJrJrJrJrJr  S SKJrJr  S SKJr  S SKrS SKJr  S SKrS SKrS r \" 5       S 5       r!S	 r"\" S
/SSS9S 5       r#S r$S r%\" S/SSS9S 5       r&S r'S r(S r)\" S/SSSS9S 5       r*S r+\" S/SSS9S 5       r,S r-S r. " S  S!5      r/S" r0S# r1S$ r2S% r3S& r4g)'    N)
AsinhScaleAsinhTransform	FuncScale
LogitScaleLogTransformInvertedLogTransformSymmetricalLogTransform)AsinhLocatorAutoLocatorLogFormatterSciNotationNullFormatterNullLocatorScalarFormatter)check_figures_equalimage_comparison)IdentityTransform)assert_allclosec                  V   S n [        U S S 45        [        U S S 4S9  [        U 5        [        U S5        [        U SS9  [        U SS	9  [        U 5        [        U S
S9  [        U SS9  [        U S
S/S9  [        U S S 4S9  [        U S9  [        U SS9  [        U SS9  [        U S9  [        U S
S9  [        U SS9  [        U S
S/S9  [        S S 45        [        S S 4S9  [        5         [        SS9  [        SS	9  [        5         [        S
S9  [        SS9  [        S
S/S9  g )Nc                     U $ N xs    U/home/wildlama/miniconda3/lib/python3.13/site-packages/matplotlib/tests/test_scale.py<lambda>.test_optional_axis_signature.<locals>.<lambda>#   s    q    c                     U $ r   r   r   s    r   r   r   #   s    Ar   c                     U $ r   r   r   s    r   r   r   $   s    r   c                     U $ r   r   r   s    r   r   r   $   s    ar   	functionsclipnonpositiveT)use_overline   )linear_width   base   subsc                     U $ r   r   r   s    r   r   r   .   s    ar   c                     U $ r   r   r   s    r   r   r   .   s    1r   )axisr"   r1   )r1   r%   )r1   r&   r1   r(   r1   r+   )r1   r.   c                     U $ r   r   r   s    r   r   r   7   s    r   c                     U $ r   r   r   s    r   r   r   7   s    ar   c                     U $ r   r   r   s    r   r   r   8   s    1r   c                     U $ r   r   r   s    r   r   r   8   s    r   )r   r   r   r2   s    r   test_optional_axis_signaturer9      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                 >   U R                  SSSS9nUR                  S5        UR                  S5        UR                  5       nUR	                  5       nUR                  SSSS9nUR                  X4S9  UR                  SS/US5        UR                  USS/S5        g )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@   rA   ax_refs         r   test_log_scalesrN   B   s    ""3uX"FGOODOODDD  U8 DF
JJDJ$
KKtdC(
KKtTlC(r   c                  ,   [        SSS5      n U R                  5       n[        R                  " SSS5      nUR	                  U R	                  U5      5      n[        X25        [        U5      [        U5      L d   e[        R                  US'   UR	                  U R	                  U5      5      n[        X25        [        U5      [        U5      L d   e[        R                  R                  U5      nUR	                  U R	                  U5      5      n[        X25        [        U5      [        U5      L d   e[        R                  R                  US'   UR	                  U R	                  U5      5      n[        X25        [        U5      [        U5      L d   eg )	N
   r'      g               ?   r)   )r	   invertednparangetransform_non_affiner   typenanmaarraymasked)sltsltir   outs       r   test_symlog_mask_nanra   O   sB    ""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                     [         R                  " 5       u  p[        R                  " / SQ5      nSU-  nUR	                  X#5        UR                  S5        UR                  S5        UR                  U R                  R                  5       5      n[        R                  " UR                  5      (       d   e[        R                  " UR                  5      (       d   eg )N)gMbP?g~jth?{Gz?gQ?g?皙?g333333?g?rS   g333333?gffffff?g?g?g
ףp=
?gGz?gCl?g+?      ?logitT)pltsubplotsrV   r\   rI   
set_xscalegridget_tightbboxcanvasget_rendererisfinitex0y0)figaxr   ybboxs        r   test_logit_scalesrx   j   s    llnGC 	 @ 	AAaAGGAMMM'GGDMCJJ3356D;;tww;;twwr   c                     [         R                  " S5      u  p[        R                  " S5      n[        R                  " S5      S-
  nUR	                  X#5        [
        R                  " 5       nU R                  USS9  [
        R                  " 5       nU R                  USS9  [
        R                  " 5       nU R                  USS9  g)zIssue #1799rQ   rP   pdf)formatepssvgN)rj   rk   rV   rW   scatterioBytesIOsavefig)rt   ru   r   rv   bufs        r   test_log_scatterr   {   s    ll1oGC
		"A
		"AJJq
**,CKKEK"
**,CKKEK"
**,CKKEK"r   c                      [         R                  " 5       u  pUR                  S[        R                  " / SQ5      S9  U R
                  R                  5         g )Nr<   )r'   r)   rT   r-   )rj   rk   
set_yscalerV   r\   ro   drawrt   ru   s     r   test_logscale_subsr      s6    llnGCMM%bhhy1M2JJOOr   zlogscale_mask.pngc            	      :   [         R                  " SSS5      n [        R                  " 5       u  pUR	                  [         R
                  " U S-  * 5      5        UR                  R                  5         UR                  SS[         R                  " SSS5      -  S	9  g )
Nr   2   i  r'   r<         $@i   )r>   yticks)
rV   linspacerj   rk   rI   expro   r   rH   rW   )xsrt   ru   s      r   test_logscale_maskr      ss     
QD	!BllnGCGGBFFBE6NJJOOFF%ryyq"--  /r   c                      [         R                  " 5       u  pS H6  n[        R                  " [        5         UR                  USS9  S S S 5        M8     g ! , (       d  f       MJ  = f)N)linearr<   r=   mask)foo)rj   rk   pytestraises	TypeErrorr   rt   ru   scales      r   test_extra_kwargs_raiser      sD    llnGC,]]9%MM%VM, &% -%%s   A
A$	c                  >   [         R                  " 5       u  pUR                  S5        UR                  UR                  R                  5       -   R                  5       n[        SS9R                  5       n[        U[        5      (       d   eUR                  S:X  d   eg )Nr<   r'   r*   )
rj   rk   r   	transAxes	transDatarU   r   
isinstancer   r+   )rt   ru   tforminverted_transforms       r   test_logscale_invert_transformr      s~    llnGCMM%\\BLL1133==?E &1-668(*>????""a'''r   c                      [         R                  " 5       u  pUR                  S5        [        UR                  5        [        [        SSS95        g )Nr<   rP   r#   r$   )rj   rk   r   reprr   r   r   s     r   test_logscale_transform_reprr      s6    llnGCMM%bf	-.r   zlogscale_nonpos_values.pngg{Gz?mpl20)rc   tolrd   c                  D   [         R                  R                  S5        [         R                  R                  [	        S5      S9n [
        R                  " SS5      u  nu  u  p#u  pEUR                  U SSS9  UR                  S5        UR                  U SSS9  UR                  SS	S
9  [         R                  " SSS5      n[         R                  " U* 5      nSSU-
  -  [         R                  " SU-  5      -  [         R                  " U* 5      -  nUR                  XgU-
  Xx-   5        UR                  S5        [         R                  " SS5      n	U	S-  n
U	S-  nUR                  XUS9  UR                  S5        UR                  S5        UR!                  / SQ5        g )Ni!N,g     @@)sizer'   )rR   rP   )rangebinsr<   r   r$   r   rf   rg   rR   rQ   r)   )yerr)rf   rQ   g      Y@)rV   randomseednormalintrj   rk   histr   rW   r   cosfill_betweenlogspaceerrorbarrl   
set_yticks)r   rt   ax1ax2ax3ax4xdataydataedatar   rv   r   s               r   test_logscale_nonpos_valuesr      sS    IINN8			s3x		(B$'LLA$6!C	!*3jsHHRwRH(NN5HHRwRH(NN5fN-IIaT"EFFE6NEEN266!E'?*2665&>9EUEM5=9NN5
BA	QAa4DLLDL!NN5NN5NN?#r   c                     [         R                  " 5       u  pUR                  [        SS5      [        SS5      5        UR	                  S5        UR                  5       n[        R                  " [        5         UR                  SS9  S S S 5        UR                  5       U:X  d   e[        R                  " [        5         UR                  SS9  S S S 5        UR                  5       U:X  d   eUR                  S5        UR                  5       n[        R                  " [        5         UR                  SS9  S S S 5        UR                  5       U:X  d   e[        R                  " [        5         UR                  SS9  S S S 5        UR                  5       U:X  d   eg ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NY= f)	Nr   rT   r<   )leftr   )right)bottom)top)rj   rk   r~   r   rl   rF   r   warnsUserWarningset_xlimr   rG   set_ylim)rt   ru   original_xlimoriginal_ylims       r   test_invalid_log_limsr      sG   llnGCJJuQ{E!QK(MM%KKMM	k	"
 
#;;=M)))	k	"
" 
#;;=M)))MM%KKMM	k	"
1 
#;;=M)))	k	"
 
#;;=M))) 
#	" 
#	" 
#	" 
#	"s0   9F!F3*G2G!
F03
G
G
G#zfunction_scales.pngc                      S n S n[         R                  " 5       u  p#[        R                  " SS5      nUR	                  XD5        UR                  SX4S9  UR                  SS5        g )Nc                     U S-  $ )Nr'   r   r   s    r   inverse$test_function_scale.<locals>.inverse   s    !tr   c                     U S-  $ )NrS   r   r   s    r   forward$test_function_scale.<locals>.forward   s    3xr   rQ   i  functionr!   )rj   rk   rV   rW   rI   rl   r   )r   r   rt   ru   r   s        r   test_function_scaler      sW     llnGC
		!TAGGAMMM*(:M;KK4r   c                  F   [         R                  " 5       u  p[        R                  " S S9nUR	                  U5        [        R                  " S S9nUR                  U5        UR                  R                  5       S:X  d   eUR                  R                  5       S:X  d   eg )Nr2   r<   )	rj   rk   mscaleLogScalerl   r   xaxis	get_scaleyaxisr   s      r   test_pass_scaler     sy    llnGCOO&EMM%OO&EMM%885(((885(((r   c                      [         R                  " SSS9n [        R                  " U 5      n[	        U R                  5       5      [	        UR                  5       5      :X  d   eU R                  UR                  Ld   eg )Nr   rP   r4   )r   r   copydeepcopystrget_transform
_transform)scsc2s     r   test_scale_deepcopyr     s`    	c	+B
--
Cr!"c#*;*;*=&>>>>==...r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestAsinhScalei  c                 R   Sn[         R                  " SSS5      n[        U5      nUR                  5       nUR                  5       nUR	                  U5      nUR	                  U5      n[        Xr5        UR	                  U5      n[        X[         R                  " X!-  5      -  5        g )Ng      1@ir   d   )rV   r   r   rU   rX   r   arcsinh)	selfa0ar   r   invinv	a_forward
a_inverteda_invinvs	            r   test_transformsTestAsinhScale.test_transforms  s    KKR% $""$!!#003	11)<

&..q1rzz!&'9"9:r   c                 8   [         R                  " 5       u  p[        S SS9nUR                  S:X  d   eUR                  S:X  d   eUR
                  S:X  d   eUR                  5       n[        U[        5      (       d   eUR                  UR                  :X  d   eg )Ng      7@r3      rP   )r'   rR   )	rj   rk   r   r(   _base_subsr   r   r   )r   rt   ru   stxs        r   	test_initTestAsinhScale.test_init$  s    ,,.Dt4~~###ww"}}ww&   __"n----!..000r   c                     [         R                  " 5       u  p[        S SS9nUR                  S:X  d   eUR                  S:X  d   e[        S SSS9nUR                  S:X  d   eUR                  S:X  d   eg )Nr)   r4   )r'      )r'   rT   )r1   r+   r.   )rj   rk   r   r   r   )r   rt   ru   s3s7s        r   test_base_initTestAsinhScale.test_base_init0  sm    ,,.T*xx1}}xx4T7xx1}}xx6!!!r   c                     " S S5      nU" 5       n[        USS9nUR                  U5        [        UR                  S   [        5      (       d   e[        UR                  S   [
        5      (       d   eU" 5       n[        USS9nUR                  U5        [        UR                  S   [        5      (       d   e[        UR                  S   [        5      (       d   eg )Nc                   &    \ rS rSrS rS rS rSrg)-TestAsinhScale.test_fmtloc.<locals>.DummyAxisi<  c                     0 U l         g r   fieldsr   s    r   __init__6TestAsinhScale.test_fmtloc.<locals>.DummyAxis.__init__=  s	     r   c                 <    U R                   R                  " S0 UD6  g )Nr   )r  update)r   kwargss     r   rH   1TestAsinhScale.test_fmtloc.<locals>.DummyAxis.set?  s    "",V,r   c                      XR                   S'   g )Nmajor_formatterr  )r   fs     r   set_major_formatterATestAsinhScale.test_fmtloc.<locals>.DummyAxis.set_major_formatterA  s    12-.r   r  N)__name__
__module____qualname____firstlineno__r	  rH   r  __static_attributes__r   r   r   	DummyAxisr  <  s    !-3r   r  r   r4   major_locatorr  rR   )r   #set_default_locators_and_formattersr   r  r
   r   r   )r   r  ax0s0ax5r   s         r   test_fmtlocTestAsinhScale.test_fmtloc;  s    	3 	3 kSq)
..s3#**_5|DDDD#**%67====kSq)
..s3#**_5|DDDD#**%6713 3 	3 3r   c                 P   [         R                  " 5       u  p[        R                  " [        5         [        S SS9  S S S 5        [        R                  " [        5         [        S SS9  S S S 5        [        S S9n[        S SS9ng ! , (       d  f       NO= f! , (       d  f       N3= f)Nr   r3   r   r2   g      @)rj   rk   r   r   
ValueErrorr   )r   rt   ru   r  s1s        r   test_bad_scaleTestAsinhScale.test_bad_scaleQ  sk    ,,.]]:&Dq1 ']]:&Dr2 'T$T4 '&&&s   BB
B
B%r   N)
r  r  r  r  r   r   r   r  r$  r  r   r   r   r   r     s    ;
1	"3,5r   r   c                    ^  " S S[         5      m " U4S jS[        R                  5      n  [        R                  " U 5        [        R
                  " 5       u  pUR                  S5        [        UR                  R                  5       T5      (       d   e [        R                  S	 [        R                  S	 g! [        R                  S	 [        R                  S	 f = f)zS
Test that one can register and use custom scales that don't take an *axis* param.
c                       \ rS rSrSrg)7test_custom_scale_without_axis.<locals>.CustomTransformi`  r   Nr  r  r  r  r  r   r   r   CustomTransformr(  `      r   r*  c                   2   > \ rS rSrSrU 4S jrS rS rSrg)3test_custom_scale_without_axis.<locals>.CustomScaleic  customc                    > T" 5       U l         g r   r   )r   r*  s    r   r	  <test_custom_scale_without_axis.<locals>.CustomScale.__init__g      -/DOr   c                     U R                   $ r   r0  r  s    r   r   Atest_custom_scale_without_axis.<locals>.CustomScale.get_transformj      ??"r   c                     UR                  [        5       5        UR                  [        5       5        UR	                  [        5       5        UR                  [        5       5        g r   set_major_locatorr   r  r   set_minor_locatorr   set_minor_formatterr   r   r1   s     r   r  Wtest_custom_scale_without_axis.<locals>.CustomScale.set_default_locators_and_formattersm  C    "";=1$$_%67"";=1$$]_5r   r0  N	r  r  r  r  namer	  r   r  r  r*  s   r   CustomScaler-  c      	0	#	6r   rA  r.  N)r   r   	ScaleBaseregister_scalerj   rk   rl   r   r   r   _scale_mapping_scale_has_axis_parameterrA  rt   ru   r*  s      @r   test_custom_scale_without_axisrH  \  s    + 6f&& 6 7k*,,.
h"((002ODDDD !!(+,,X6 !!(+,,X6s   A)B; ;$Cc                  *  ^  " S S[         5      m " U4S jS[        R                  5      n  [        R                  " [
        SS9   [        R                  " U 5        SSS5        [        R                  " 5       u  pUR                  S5        [        UR                  R                  5       T5      (       d   e [        R                  S	 [        R                  S	 g! , (       d  f       N= f! [        R                  S	 [        R                  S	 f = f)	z
Test that one can still register and use custom scales with an *axis*
parameter, but that registering issues a pending-deprecation warning.
c                       \ rS rSrSrg)4test_custom_scale_with_axis.<locals>.CustomTransformi  r   Nr)  r   r   r   r*  rK    r+  r   r*  c                   2   > \ rS rSrSrU 4S jrS rS rSrg)0test_custom_scale_with_axis.<locals>.CustomScalei  r.  c                    > T" 5       U l         g r   r0  )r   r1   r*  s     r   r	  9test_custom_scale_with_axis.<locals>.CustomScale.__init__  r2  r   c                     U R                   $ r   r0  r  s    r   r   >test_custom_scale_with_axis.<locals>.CustomScale.get_transform  r5  r   c                     UR                  [        5       5        UR                  [        5       5        UR	                  [        5       5        UR                  [        5       5        g r   r7  r;  s     r   r  Ttest_custom_scale_with_axis.<locals>.CustomScale.set_default_locators_and_formatters  r=  r   r0  Nr>  r@  s   r   rA  rM    rB  r   rA  z)'axis' parameter .* is pending-deprecated)matchNr.  )r   r   rC  r   r   PendingDeprecationWarningrD  rj   rk   rl   r   r   r   rE  rF  rG  s      @r   test_custom_scale_with_axisrV  ~  s    
+ 6f&& 6 7\\)BD !!+.D ,,.
h"((002ODDDD !!(+,,X6D D !!(+,,X6s$   C. CAC. 
C+'C. .$Dc                     SSSS[         R                  S4S[         R                  S4SSSS	S
[         R                  S4S
[         R                  S4SSSSSS[         R                  S4S[         R                  S4SSSS[         R                  S4S[         R                  S4/n U  HG  u  pn[        R                  U   nU" S S9nUR                  U5      nXcL a  M6   SU SU SU SU 35       e   g )N)r   r   T)r         $T)r           Tr   F)r<   rh   T)r<   gYnT)r<   rY  F)r<         Fr<   )ri   rS   T)ri   rY  F)ri   rh   F)ri   gF)ri   g?Fri   )r=   r   T)r=   rX  T)r=   rY  Tr=   r2   zFailed z.val_in_range(z).Expected z, got )rV   infrZ   r   rE  val_in_range)
test_casesr?  valexpected	scale_clsr   results          r   test_val_in_rangerb    s    		2665!	2665! 			 		"&&% 	"&&%  		2665!	2665!? JD  *8))$/	4 $! 	
dV># / zx1	
!  *r   c                  ^   [         R                  " S S9n U R                  S5      SL d   eU R                  S5      SL d   eU R                  [        R                  5      SL d   eU R                  [        R
                  5      SL d   eU R                  [        R
                  * 5      SL d   eg )Nr2   rh   Tg      F)r   rC  r\  rV   rZ   r[  )r   s    r   test_val_in_range_base_fallbackrd    s     	d#A >>#$&&&>>$4''' >>"&&!U***>>"&&!U***>>266'"e+++r   c                  >   [         R                  " SSS[         R                  [         R                  S/5      n / SQ/ SQ/ SQ/ SQ/ SQS.nUR	                  5        HK  u  p#[
        R                  U   " S S9n[         R                  R                  UR                  U 5      U5        MM     [
        R                  S	   " S S9R                  [         R                  " S
S/S[         R                  //5      5      n[         R                  R                  USS/SS//5        g )NrS   rZ  rY  g      ?)TTTFFT)TFFFFT)r   r<   r=   asinhri   r2   r<   rh   TF)
rV   r\   rZ   r[  itemsr   rE  testingassert_array_equalr\  )arrcasesr?  r_  r   r`   s         r   test_val_in_range_arrayrl    s    
((CsBFFBFFD9
:C8:88:E  ++-!!$'T2


%%annS&98D (
 


&D
1
>
>
3+RVV}-.0CJJ!!#ue}'EFr   )5r   matplotlib.pyplotpyplotrj   matplotlib.scaler   r   r   r   r   r   r	   r   r   matplotlib.tickerr
   r   r   r   r   r   matplotlib.testing.decoratorsr   r   matplotlib.transformsr   numpyrV   numpy.testingr   r   r   r9   rN   ra   rx   r   r   r   r   r   r   r   r   r   r   r   r   rH  rV  rb  rd  rl  r   r   r   <module>ru     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   