o
    j$                    @   s  d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dl	Z
d dlmZmZ d dlZd dlZd dlmZ d dlmZ G dd dZG dd dZG d	d
 d
ZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZ G dd dZ!G dd dZ"G dd dZ#G dd  d Z$G d!d" d"Z%G d#d$ d$Z&G d%d& d&Z'G d'd( d(Z(G d)d* d*Z)G d+d, d,Z*G d-d. d.Z+d/d0 Z,ej-.d1g d2d3d4 Z/G d5d6 d6Z0d7d8 Z1d9d: Z2d;d< Z3d=d> Z4d?d@ Z5dAdB Z6dCdD Z7dEdF Z8ej-.dGdHdIdJ Z9ej-.dKdLdMge
:dNgdOdP Z;ej-.dQg dRej<=dSdTdU Z>dVdW Z?ej-.dXe@dYdZ eAd[fd\d] ZBd^d_ ZCdS )`    )nullcontextN)parse)assert_almost_equalassert_array_equalc                
   @   s|  e Zd Zddeg dfddeg dfddeg d	fd
dedd fdd
eddd fgZdddeg dfdddeg dfddg deg dfgZej	
dedd Zej	
dedd Zej	
d d!d
ieed"fd#d$dgied%fd#d$ied%fd#d$d&gied%fgd'd( Zej	
d)g d*g d*fd$d+gg d*fdd$gg d*fd$gg d*fgd,d- ZdS ).TestMaxNLocator   d   )      4@g      D@g      N@g      T@      Y@MbP?-C6?)        g-C6*?g-C6:?ga2U0*C?g-C6J?r     4&k  4&kC)r   g  4&kr   g  4&kBr   r   g&q5   gLog5g&q   皙皙?N)r   r      ffffff?)g      пr         ?      ?      ?      ?7   )r         ?   r   
   )r         -   <   vmin, vmax, expectedc                 C   s"   t jdd}t|||| d S )Nr   nbinsmtickerMaxNLocatorr   tick_values)selfvminvmaxexpectedloc r0   ]/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/matplotlib/tests/test_ticker.py
test_basic    s   zTestMaxNLocator.test_basiczvmin, vmax, steps, expectedc                 C   s&   t jdd|d}t|||| d S )Nr   T)r&   integerstepsr'   )r+   r,   r-   r4   r.   r/   r0   r0   r1   test_integer%   s   zTestMaxNLocator.test_integerzkwargs, errortype, matchfooz5set_params() got an unexpected keyword argument 'foo'r4   r   z$steps argument must be an increasing   c                 C   sD   t j||d tjdi | W d    d S 1 sw   Y  d S )Nmatchr0   )pytestraisesr(   r)   )r+   kwargsZ	errortyper9   r0   r0   r1   test_errors*   s   "zTestMaxNLocator.test_errorszsteps, result)r   r   r   r   c                 C   s"   t j|d}|j|k sJ d S )N)r4   )r(   r)   _stepsall)r+   r4   resultr/   r0   r0   r1   test_padding5   s   zTestMaxNLocator.test_padding)__name__
__module____qualname__nparrayarangeZ
basic_dataZinteger_datar:   markparametrizer2   r5   	TypeErrorreescape
ValueErrorr=   rA   r0   r0   r0   r1   r      s>    	


r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestLinearLocatorc                 C   0   t jdd}tg d}t|dd| d S )N   numticks)皙333333ӿ皙?rS   rU   )r(   LinearLocatorrE   rF   r   r*   r+   r/   
test_valuer0   r0   r1   r2   A   s   zTestLinearLocator.test_basicc                 C   s    t jdd}|ddg k d S )Nr   rQ   rS   rU   )r(   rV   r*   r+   r/   r0   r0   r1   test_zero_numticksF   s   z$TestLinearLocator.test_zero_numticksc                 C   sB   t jdd}|jddg id |jdksJ |jdg iksJ dS )z
        Create linear locator with presets={}, numticks=2 and change it to
        something else. See if change was successful. Should not exception.
        r   rQ      r   r   )rR   presetsN)r(   rV   
set_paramsrR   r]   rY   r0   r0   r1   test_set_paramsJ   s   z!TestLinearLocator.test_set_paramsc                 C   s   t jg dddgdd}|ddg dksJ |ddg dks%J |ddddgks1J |d	d
ddgks=J |ddtdddk sNJ d S )N)r         ?      ?r   r   ))r   r   r   r   )r]   r   r   r   r          @r7   )r(   rV   r*   rE   linspacer?   rY   r0   r0   r1   test_presetsT   s   

&zTestLinearLocator.test_presetsN)rB   rC   rD   r2   rZ   r_   re   r0   r0   r0   r1   rN   @   s
    
rN   c                   @   D   e Z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 )TestMultipleLocatorc                 C   rO   )NV-	@base)go"V-gV-	r   rh   V-@go"@gV-)@r   r(   MultipleLocatorrE   rF   r   r*   rW   r0   r0   r1   r2   _   s   zTestMultipleLocator.test_basicc                 C   s2   t jddd}tg d}t|dd| d S )Nrh   333333?rj   offset)gZd{ gK7A`gx&rp   gSc@g`"@gx&1H%@rm   r   rn   rW   r0   r0   r1   test_basic_with_offsete   s   z*TestMultipleLocator.test_basic_with_offsetc                 C   R   t ddi tjdd}t|ddd W d   dS 1 s"w   Y  dS )	z5
        Test basic behavior of view limits.
        axes.autolimit_modedatarh   ri   r   r   )r   r   Nmpl
rc_contextr(   ro   r   view_limitsrY   r0   r0   r1   test_view_limitsk      "z$TestMultipleLocator.test_view_limitsc                 C   rt   )	b
        Test that everything works properly with 'round_numbers' for auto
        limit.
        ru   round_numbersrh   ri      )rk   rl   Nrw   rY   r0   r0   r1   test_view_limits_round_numberss   s   "z2TestMultipleLocator.test_view_limits_round_numbersc                 C   sT   t ddi tjddd}t|ddd W d	   d	S 1 s#w   Y  d	S )
r}   ru   r~   rh   ?rq   r   r   )g`"g}?5^@Nrw   rY   r0   r0   r1   *test_view_limits_round_numbers_with_offset|   s   "z>TestMultipleLocator.test_view_limits_round_numbers_with_offsetc                 C   rt   )	zM
        Test that 'round_numbers' works properly with a single bin.
        ru   r~   r   r%   gffffffgffffff@)r   r   N)rx   ry   r(   r)   r   rz   rY   r0   r0   r1   test_view_limits_single_bin   r|   z/TestMultipleLocator.test_view_limits_single_binc                 C   sF   t jdd}|jdd |jjdksJ |jdd |jdks!J dS )z
        Create multiple locator with 0.7 base, and change it to something else.
        See if change was successful.
        ffffff?ri   333333?rP   )rr   N)r(   ro   r^   Z_edgestep_offset)r+   Zmultr0   r0   r1   r_      s
   z#TestMultipleLocator.test_set_paramsN)
rB   rC   rD   r2   rs   r{   r   r   r   r_   r0   r0   r0   r1   rg   ^   s    		rg   c                
   @   sH  e Zd Zdd ZddgZdd Zejdedd	 Z	g d
Z
dd Zejde
dd Zg dZg dg dg dg dg dg dg dg dgZeeeeZejdedd Zejdddgejddg dfd g dfgd!d" Zejdddgejd#d$d%g d&fd'd(g d)fd*d+g d,fgd-d. Zd/S )0TestAutoMinorLocatorc                 C   sF   t  \}}|dd |  tg d}t|jjdd| d S )Nr   =
ףp=?皙?皙?g333333?r   333333?gffffff??r   皙?g?r   r   g333333??r   ?r   gffffff?r`   r   g?Tminor)	pltsubplotsset_xlimminorticks_onrE   rF   r   xaxisget_ticklocsr+   figaxrX   r0   r0   r1   r2      s
   zTestAutoMinorLocator.test_basicr   r   )r   r   c                 C   s|   t  \}}|dd |jt  tg d}t	|jj
dd| |dd tg d}t	|jj
dd| d	S )
zI
        Test that first and last minor tick appear as expected.
        ffffffffffff?) r   g333333ggffffffgg333333皙grS   gffffffg333333皙ٿrT   皙ɿr   r   rU   r   皙?333333?r   皙?r   r   rp   r   gffffff?g?r   g?r   Tr   r   r   )g      g      g      g      g      g                  r   r   r         @g      @      @g      @      @N)r   r   r   r   set_minor_locatorr(   AutoMinorLocatorrE   rF   r   r   r   r0   r0   r1   test_first_and_last_minorticks   s   z3TestAutoMinorLocator.test_first_and_last_minorticksz%nb_majorticks, expected_nb_minorticksc                 C   sh   t  \}}d}|j|  |t|d |d | |  |jt	
  t|j |ks2J d S )N)r   r   r   r   )r   r   r   
set_xticksrE   rd   r   r   r   r(   r   lenget_minorticklocs)r+   Znb_majorticksZexpected_nb_minorticksr   r   xlimsr0   r0   r1   test_low_number_of_majorticks   s   
z2TestAutoMinorLocator.test_low_number_of_majorticks))r   r   )r   r   )r   r   )r   r   )r   r   c                 C   sX   t ddi dd | jD }tj|t j W d    d S 1 s%w   Y  d S )N_internal.classic_modeFc                 S   s   g | ]}|d  qS r   r0   .0xr0   r0   r1   
<listcomp>       zKTestAutoMinorLocator.test_using_all_default_major_steps.<locals>.<listcomp>)	rx   ry   majorstep_minordivisionsrE   testingZassert_allcloser(   ZAutoLocatorr>   )r+   Z
majorstepsr0   r0   r1   "test_using_all_default_major_steps   s   "z7TestAutoMinorLocator.test_using_all_default_major_stepsz&major_step, expected_nb_minordivisionsc                 C   sb   t  \}}d|f}|j|  || |  |jt  t	|j
 d }||ks/J d S Nr   r   )r   r   r   r   r   r   r   r(   r   r   r   )r+   Z
major_stepZexpected_nb_minordivisionsr   r   r   Znb_minor_divisionsr0   r0   r1   test_number_of_minor_ticks   s   

z/TestAutoMinorLocator.test_number_of_minor_ticks)r   r   r   gn?)r   ԍ;)r   gVs?=)gH׊gIhG|a)gv!>ҷ>)ʔA{v()g"s2_dglEՎfUr   ){Gzt?{Gz?Q?g?gQ?gQ?g
ףp=
?r   g)\(?gp=
ף?gQ?g333333?g(\µ?g
ףp=
?gRQ?gzG?)\(?gq=
ףp?      ?gp=
ף?gHzG?)gO
;gO
;gU;g#B;gU;g̈=;gnP*@;g#B;gԍ;gaW;g̈=;gmx;gJ;gnP*@;gnXen;g+3M;r   )g+<g+=gt=gvIh%=gt =g(#=gQu.U)=gvIh%,=gU.=gnb]K2=g(3=g7Q5=gU>?7=gQu.U9=gc߯x:=g; ==gU>=)g*#&,gYg#"5Ԉg_eG|gS'цgBY[%gk̈́gv!g|)vgQ؎gqrgƀg%e~gw$}g߈/|gYygv(xgS'vgv!tgz]rgqrqgw$mgHjgv(hgz]b)gL>gE/w>gZMϢ>gkʹ>g	ʧ#>g!+lěN>g:0y>gR>g};h>gBY[%>gqwNP>gʔA{>gS'Ѷ>g>g.W'>gG)R>gxz)e秷>r   )g5m/Gg<gT跾g`gxz)e秷gIGmg肸zggG)Rg<g&|gg5_涾gqdqAg34gY#)g#"5Ըg_~r   gҷg.W'gS'Ѷr   gBY[%g:0yg	ʧ#gkʹgE/wgE̳g|)vg<sAC gz]ʲgQ؎g 4PSȱgqrg>g\+-eqg+i)+gM7܉g%eޮgw$zlim, refc                 C   sZ   t  \}}|  |jddddd |jddddd || t|jjdd	| d S )
NTr   yr   )	linewidthmajork)colorr   r   )r   r   r   gridset_ylimr   yaxisr   )r+   limrefr   r   r0   r0   r1   test_additional  s   
z$TestAutoMinorLocator.test_additionaluse_rcparamFTr   r   c                 C   s   |r
ddd}i }ni }ddi}t |E t \}}|j|  |j|  |jtj	di | |j
tj	di | t|jjdd| t|j
jdd| W d    d S 1 s]w   Y  d S )Nautozxtick.minor.ndivszytick.minor.ndivsnTr   r0   )rx   ry   r   r   r   r   r   r   r(   r   r   r   r   )r+   r   r   r   contextr<   r   r   r0   r0   r1   test_number_of_minor_ticks_auto  s   


"z4TestAutoMinorLocator.test_number_of_minor_ticks_autozn, lim, refr   )r   r   )r   r   r   r   r   rb   )r   r   r   r`   r   ra   r   r\   )	r   rU   r   r   r   r   r   r   r   c           	      C   s   |r
||d}i }ni }d|i}t |W t \}}|j|  |j|  |jt	d |j
tjdi | |jt	d |j
tjdi | t|jjdd| t|jjdd| W d    d S 1 sow   Y  d S )Nr   r   r   Tr   r0   )rx   ry   r   r   r   r   r   set_major_locatorr(   ro   r   r   r   r   r   )	r+   r   r   r   r   r   r<   r   r   r0   r0   r1   test_number_of_minor_ticks_int.  s    


"z3TestAutoMinorLocator.test_number_of_minor_ticks_intN)rB   rC   rD   r2   paramsr   r:   rH   rI   r   r   r   r   Zlimits	referencelistzipZadditional_datar   r   r   r0   r0   r0   r1   r      s`    




r   c                   @   rf   )TestLogLocatorc                 C   s   t jdd}tt |dd W d    n1 sw   Y  tg d}t|dd| t jdd	}tg d
}t|dd| d S )Nr   rQ   r     )h㈵>r   r         $@     @@     j@    cA    eAr   g     @r   ri   )
r   r   rc         @g       @g      0@g      @@g      P@g      `@g      p@r   r   )	r(   
LogLocatorr:   r;   rM   r*   rE   rF   r   rW   r0   r0   r1   r2   J  s   zTestLogLocator.test_basicc                 C   s@   t jddid\}}|d |dd t| g d dS )	z<
        Polar Axes have a different ticking logic.
        Z
projectionZpolar)Z
subplot_kwlogr   r   )r   r   r   N)r   r   
set_yscaler   r   
get_yticksr+   r   r   r0   r0   r1   test_polar_axesX  s   
zTestLogLocator.test_polar_axesc                 C   sb   t jdd}t|ddg d t jtddd}d|d	d
vs%J d|d	d
vs/J d S )Nr?   subsr   r   )g)\(?gq=
ףp?gQ?r   gp=
ף?gHzG?gQ?r   r   r   r   r	   r   )r(   r   r   r*   rE   rG   rY   r0   r0   r1   test_switch_to_autolocatora  s   z)TestLogLocator.test_switch_to_autolocatorc                 C   sN   t  }|jddgdd |jdksJ |jdksJ t|jdgks%J dS )z
        Create log locator with default value, base=10.0, subs=[1.0],
        numticks=15 and change it to something else.
        See if change was successful. Should not raise exception.
           rc   r   )rR   r   rj   N)r(   r   r^   rR   _baser   _subsrY   r0   r0   r1   r_   j  s
   zTestLogLocator.test_set_paramsc                 C   rO   )Nr   r   r   r   )r   rU   r   r   rc   r   r   r	         I@r
         i@     @@r        @@     @     @     @     j@r        jA    A    .A    >A    SAr       sA    ׇA    חA    קA    eͽAr   r   )r(   r   rE   rF   r   r*   r+   llrX   r0   r0   r1   test_tick_values_correctv  s   z'TestLogLocator.test_tick_values_correctc                 C   s:   dt jd< tjdd}tg d}t|dd| d S )NFr   r   r   )!r   rU   r   r   rc   r   r   r	   r   r
   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r  r  r  r	  r
  r   g    eAg    _Ar   r  )rx   rcParamsr(   r   rE   rF   r   r*   r  r0   r0   r1   test_tick_values_not_empty  s   
z)TestLogLocator.test_tick_values_not_emptyc                 C   s   t jd}|jddg g g}tjt|ddd\}}t| |D ]\}}|j	|dd |j
dd	d
 q"| D ]}t| |d  ksIJ | |d  ksUJ q9d S )Ni!N,r   )sizeT)ZsharexZshareyr   )Zbinsr   Zclip)nonpositiver   )rE   randomZdefault_rngnormalr   r   r   r   flattenhistr   r?   r   Zget_ylim)r+   rngZ
dummy_datar   Zaxesr   rv   r0   r0   r1   test_multiple_shared_axes  s   z(TestLogLocator.test_multiple_shared_axesN)
rB   rC   rD   r2   r   r   r_   r  r  r  r0   r0   r0   r1   r   I  s    			r   c                   @      e Zd Zdd ZdS )TestNullLocatorc                 C   s@   t  }tt |  W d   dS 1 sw   Y  dS )z
        Create null locator, and attempt to call set_params() on it.
        Should not exception, and should raise a warning.
        N)r(   ZNullLocatorr:   warnsUserWarningr^   rY   r0   r0   r1   r_     s   
"zTestNullLocator.test_set_paramsNrB   rC   rD   r_   r0   r0   r0   r1   r        r  c                   @   s$   e Zd Zedd Zedd ZdS )_LogitHelperc                 C   s`   d|   k r
dk r.n n"d|  k rdk r.n nt t d|  d  t d| d  S dS )Nr   r   F)rE   iscloser   )r   r   r0   r0   r1   r    s   0,z_LogitHelper.isclosec                 C   s   t | }t |}t |dkrt |dk sJ t |dkr(t |dk s*J t d| d  }t d| d  }t|| d S r   )rE   rF   r?   r   r   )r   r   r   ZaylxZlyr0   r0   r1   r     s   

  z _LogitHelper.assert_almost_equalN)rB   rC   rD   staticmethodr  r   r0   r0   r0   r1   r    s
    
r  c                   @   s  e Zd Zg dZddedd  ddedd  ddedd  ddedd  ddedd  ddedd	  ddedd
  ddedd  gZg dZej	
deeedd Zej	
dedd Zej	
dee dd Zej	
deeedd Zdd Zg dedd ddedd  Zej	
ddd ejeddD dd  Zej	
d!ed"d# Zd$S )%TestLogitLocator)r   r   )r   gףp=
?)gMb@?gCl?-C6
?gSt$?)gh㈵>g;?)gƠ>g?gHj>ge(?)g:0y5>g$P?r   r   rP   r   r   r   r   r[   	   ))r   r   )r   rU   )r   r   zlims, expected_low_ticksc                 C   s:   t g |dd| }tjdd}t|j| | dS )zR
        Create logit locator with huge number of major, and tests ticks.
        r   r   r   r%   N)sortedr(   LogitLocatorr  r   r*   )r+   limsexpected_low_ticksexpected_ticksr/   r0   r0   r1   test_basic_major  s   z!TestLogitLocator.test_basic_majorr*  c                 C   sx   t jdd}t jdg dd}dD ](}|j|d |j|d |j| }|j| }|j|jks1J ||k s9J qdS )zj
        When the axis is zoomed, the locator must have the same behavior as
        MaxNLocator.
        r   r%   )r   r   r   r   )r&   r4   )r   r[      N)r(   r)  r)   r^   r*   shaper?   )r+   r*  r/   Zmaxn_locr&   ticksZ
maxn_ticksr0   r0   r1   test_maxn_major  s   

z TestLogitLocator.test_maxn_majorc                 C   sj   t tt|d  d d }tjdd}t|ddD ]}|j|d t|j	| |d ks2J qdS )zB
        Assert logit locator for respecting nbins param.
        r   r   r   r   r%   r   N)
intrE   floorlog10r(   r)  ranger^   r   r*   )r+   r*  basic_neededr/   r&   r0   r0   r1   test_nbins_major  s   "z!TestLogitLocator.test_nbins_majorc           
      C   s   t g |dd| }t|}tjdd}tjddd}t|ddD ];}|j|d |j|d |j| }|j| }	t|t|krRt|d d	 t|	k sQJ q#tt g ||	| q#d
S )zt
        In large scale, test the presence of minor,
        and assert no minor when major are subsampled.
        r   r   r   r%   T)r&   r   r   r   r   N)	r(  r   r(   r)  r5  r^   r*   r  r   )
r+   r*  r+  r,  r6  r/   Z	minor_locr&   Zmajor_ticksZminor_ticksr0   r0   r1   
test_minor  s"   


zTestLogitLocator.test_minorc                 C   s@   t jdd}|jrJ d|_|jsJ |jdd |jrJ d S )Nr   r%   TFr   )r(   r)  r   r^   rY   r0   r0   r1   test_minor_attr  s   

z TestLogitLocator.test_minor_attrr   r   c                 C   s    g | ]\}}||kr||fqS r0   r0   )r   abr0   r0   r1   r   &  s
    zTestLogitLocator.<listcomp>r   )repeatc                 C   s*   t  }|j| }t|t|ksJ dS )zd
        Create logit locator, and test the nonsingular method for acceptable
        value
        N)r(   r)  nonsingularr(  )r+   r*  r/   Zlims2r0   r0   r1   test_nonsingular_ok$  s   
z$TestLogitLocator.test_nonsingular_okokvalc                 C   s   t  }d|}}|||\}}||ksJ d|  k r"|k s%J  J |d}}|||\}}||ks8J ||  k rCdk sFJ  J dS )zh
        Create logit locator, and test the nonsingular method for non
        acceptable value
        r   r   r   r   N)r(   r)  r>  )r+   r@  r/   r,   r-   Zvmin2Zvmax2r0   r0   r1   test_nonsingular_nok5  s   

 z%TestLogitLocator.test_nonsingular_nokN)rB   rC   rD   Zref_basic_limitsrE   rG   Zref_basic_major_ticksZref_maxn_limitsr:   rH   rI   r   r-  r1  r7  r8  r9  Zacceptable_vmin_vmax	itertoolsproductr?  rA  r0   r0   r0   r1   r"    sR    




	r"  c                   @   r  )TestFixedLocatorc                 C   s2   t jtdddd}|jdd |jdksJ dS )z
        Create fixed locator with 5 nbins, and change it to something else.
        See if change was successful.
        Should not exception.
        r      r   r%   r   N)r(   ZFixedLocatorr5  r^   r&   )r+   fixedr0   r0   r1   r_   G  s   z TestFixedLocator.test_set_paramsNr  r0   r0   r0   r1   rD  F  r  rD  c                   @   r  )TestIndexLocatorc                 C   s<   t jddd}|jddd |jdksJ |jdksJ dS )z
        Create index locator with 3 base, 4 offset. and change it to something
        else. See if change was successful.
        Should not exception.
        rP   r   rq   r   N)r(   ZIndexLocatorr^   r   rr   )r+   indexr0   r0   r1   r_   S  s   z TestIndexLocator.test_set_paramsNr  r0   r0   r0   r1   rG  R  r  rG  c                   @   sR   e Zd Zdd Zejdddddgfddg dfgdd	 Zd
d Zdd Z	dS )TestSymmetricalLogLocatorc                 C   s@   t jddd}|jdgdd |jdgksJ |jdksJ dS )z
        Create symmetrical log locator with default subs =[1.0] numticks = 15,
        and change it to something else.
        See if change was successful.
        Should not exception.
        r   r   rj   	linthreshrc   r[   )r   rR   N)r(   SymmetricalLogLocatorr^   r   rR   r+   symr0   r0   r1   r_   `  s   z)TestSymmetricalLogLocator.test_set_paramsr$   r   r   r   r   r   r   c                 C   s*   t jddd}|j||d}t|| d S )Nr   r   rJ  )r,   r-   )r(   rL  r*   r   )r+   r,   r-   r.   rN  r0  r0   r0   r1   test_valuesl  s   	z%TestSymmetricalLogLocator.test_valuesc                 C   s>   t jddddgd}|  |jdd t| g d d S )Nr   r   rc   r   )rj   rK  r   )	ir   r   r   r   r   (   )r(   rL  create_dummy_axisaxisset_view_intervalr   rM  r0   r0   r1   	test_subsy  s   z#TestSymmetricalLogLocator.test_subsc                 C   s   t jddd}|  |jdd | dgk sJ |jdd | ddgk s.J |ddd	ks8J |d
d
dksBJ |dddksLJ d S )Nr   r   rJ  r[   r'  r      r   )r   r   rQ  )r   r   )MbPr   )r(   rL  rU  rV  rW  r?   rz   rM  r0   r0   r1   test_extending  s   z(TestSymmetricalLogLocator.test_extendingN)
rB   rC   rD   r_   r:   rH   rI   rP  rX  r\  r0   r0   r0   r1   rI  _  s    
rI  c                   @   sL   e Zd Z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 )TestAsinhLocatorc                 C   s<   t jddd}|jdksJ |jdksJ |jdksJ d S )NgX9v@   )linear_widthrR   r   )r(   AsinhLocatorr_  rR   rj   r+   Zlctrr0   r0   r1   	test_init  s   zTestAsinhLocator.test_initc                 C   s8  t jdddddd}|jdksJ |jdksJ |jdksJ |jdks&J |jdd |jdks3J |d  |jdks?J |jd	d
 |jd	ksLJ |jd d
 |jd	ksYJ |jdd |jdksfJ |jd d |jdkssJ |jdd |jdksJ |jd d |jdksJ |jg d |jd u sJ d S )Nr      r   r   )r   g      
@)r_  rR   	symthreshrj   r      rQ   r   )rd  r   ri   )r   g     @r   )r(   r`  rR   rd  rj   r   r^   ra  r0   r0   r1   r_     s4   
z TestAsinhLocator.test_set_paramsc                 C   sh   t jdddd}t|ddtddd t|d	d
td	dd t|ddtddd d S )Nr   r7   r   r_  rR   rj   r   r   )\(?rU   r   r   gB`"۹?{Gz?g{Gzr   gMO?Mb`?r(   r`  r   r*   rE   rG   ra  r0   r0   r1   test_linear_values  s   z#TestAsinhLocator.test_linear_valuesc                 C   s@   t jdddd}t|ddg d t|dd	g d
 d S )Nr   r7   r   rf  rZ  r   )rZ  rR  r   r   r   r   rU   r   r   r   r   r   )rl  rZ  rR  r:  r   r   r   rP   r   r   r   r(   r`  r   r*   ra  r0   r0   r1   test_wide_values  s   z!TestAsinhLocator.test_wide_valuesc                 C   s*   t jdddd}t|ddg d dS )	z<Check that manually injected zero will supersede nearby tickr   rP   r   rf  r   r   )r   r   r   Nrm  ra  r0   r0   r1   test_near_zero  s   zTestAsinhLocator.test_near_zeroc                 C   s.   t jddd}t|ddtddd d S )Nr   r7   rQ   e   f   gq=
ףY@r   rj  ra  r0   r0   r1   test_fallback  s   zTestAsinhLocator.test_fallbackc                 C   s   t jddddd}|  |jdd t| g d |jdd	 t| g d
 |jdd t| g d
 |jdd t| g d d S )Nr   rP   r   r   )r_  rR   rd  rj   r   r   )r   r   r   r   rO  g333333r   r   )r   r   r   )r(   r`  rU  rV  rW  r   ra  r0   r0   r1   test_symmetrizing  s   z"TestAsinhLocator.test_symmetrizingc                 C   sR   t jddddd}t|ddg d t jdd	d
d}t|ddg d d S )Nr   r[   r   )r   rP   r   )r_  rR   rj   r   n   )iirZ  iirQ  r   r:  r   r   rT   r   r   r   r   r   r   rP   r   r   r!   2   r   i,    r   r   rf  ii  )iiir   r   r   r   rU   r   r      }   iq  rm  )r+   Zlctr10Zlctr5r0   r0   r1   test_base_rounding  s   z#TestAsinhLocator.test_base_roundingN)rB   rC   rD   rb  r_   rk  rn  ro  rr  rs  rz  r0   r0   r0   r1   r]    s    

r]  c                   @   s2  e Zd Zg dZddgZddgZg dZddgddgd	d
gddgddggZg dZe	j
dddgdd Ze	j
dedd Ze	j
dedd Ze	j
dedd Zdd Zd d! Ze	j
d"ed#d$ Ze	j
d%ed&d' Ze	j
d(ed)d* Ze	j
d(ed+d, Zd-d. Zd/d0 Zd1d2 Zd3S )4TestScalarFormatter)){      r   )iCir   )i50  i=0  i40  )iii)g    i@g    j@順 )g    jg    i`y)g    hi@g    j@r~  )g    jg    hir  )iO iQ iP )i+i+i+)r   r   r   )r|  r|  r   )g/'?g_L?r   )g
ףp=@g33333@i  )g@g    `@iȯ  )g1е/G?gg޻G?g9̗G?)g\h@gp=
@i.1  )g      "@g      (@r   )g      @     @r   )g     @r  r   )Gz?rg  r   )g{G#@gQ$@r   )g(\X@gq=
ף Y@r   )g(\@g
ףp=
@r   )g{G/@g(\0@r.  )g!rhܿrh|?r   )grh|߿r  r   )g3333@g    @@i0  )gffffgffff@r   TF)	)Fr   )r   r	   r   F)TrS  r   )rQ  r   r   F)Tr  )rR  r   r   F)Tr  )rt  x   r   F)Tr  )iru  r   F)Tr  )r[  ri  r:  F)T)rm   r   )g   tAg   0Ar'  T)Tr   g     jr   r   F)T)r   r   r  r   Fr   z0.000g(0?z0.012grh|?z0.123gGz?z1.230g(@z12.300))r   1e-1)r   z1.1e-1)r  Z1e8)g    9Az1.1e8zunicode_minus, result)T   −1)F-1c                 C   s.   |t jd< t j d |ksJ d S )Naxes.unicode_minusr   )rx   r  r   Zgcar   get_major_formatterformat_data_shortstrip)r+   unicode_minusr@   r0   r0   r1   test_unicode_minus2  s   
z&TestScalarFormatter.test_unicode_minuszleft, right, offsetc                 C   s   t  \}}|j }||krtjtddnt  ||| W d    n1 s*w   Y  |j	  |j
|ks;J ||krFtjtddnt  ||| W d    n1 sZw   Y  |j	  |j
|kskJ d S )NzAttempting to set identicalr8   )r   r   r   r  r:   r  r  r   r   Z_update_ticksrr   )r+   leftrightrr   r   r   	formatterr0   r0   r1   test_offset_value:  s$   


z%TestScalarFormatter.test_offset_value
use_offsetc                 C   sZ   t d|i t }|| ksJ |jdksJ W d    d S 1 s&w   Y  d S )Nzaxes.formatter.useoffsetr   )rx   ry   r(   ScalarFormatterget_useOffsetrr   )r+   r  tmp_formr0   r0   r1   test_use_offsetK  s
   "z#TestScalarFormatter.test_use_offsetuse_math_textc                 C   sL   t d|i t }|| ksJ W d    d S 1 sw   Y  d S )Naxes.formatter.use_mathtext)rx   ry   r(   r  Zget_useMathText)r+   r  r  r0   r0   r1   test_useMathTextR  s   "z$TestScalarFormatter.test_useMathTextc                 C   s0   t  }|d | rJ |jdksJ d S )Nr   )r(   r  Zset_useOffsetr  rr   r+   r  r0   r0   r1   test_set_use_offset_floatX  s   
z-TestScalarFormatter.test_set_use_offset_floatc                 C   s   t  }|d }|r|d dd  g t jgfv rtd tddi- t }|	 s/J |
  |jdd |g d	 ||d
v sIJ W d    d S 1 sTw   Y  d S )Nthousands_sepgroupingr   zLocale does not apply groupingzaxes.formatter.use_localeTr   r   )r   r   rP   r   )locale
localeconvCHAR_MAXr:   skiprx   ry   r(   r  Zget_useLocalerU  rV  Zset_data_intervalset_locs)r+   convsepr  r0   r0   r1   test_use_locale^  s    
"z#TestScalarFormatter.test_use_localez.sci_type, scilimits, lim, orderOfMag, fewticksc           	      C   sv   t  }|| || t \}}|j| |j|  |r*|j	t 
d ||j  ||jks9J d S )Nr   )r(   r  Zset_scientificZset_powerlimitsr   r   r   set_major_formatterr   r   r)   r  get_majorticklocsZorderOfMagnitude)	r+   Zsci_typeZ	scilimitsr   Z
orderOfMagZfewticksr  r   r   r0   r0   r1   test_scilimitsm  s   


z"TestScalarFormatter.test_scilimitszvalue, expectedc                 C   s(   dt jd< t }|||ksJ d S )NFr  )rx   r  r(   r  format_data)r+   valuer.   sfr0   r0   r1   test_format_data|  s   
z$TestScalarFormatter.test_format_datazdata, expectedc                 C   s8   t  \}}|dd |j j}|||ksJ d S )Nr   r   )r   r   r   r   r  r  )r+   rv   r.   r   r   fmtr0   r0   r1   test_cursor_precision  s   z)TestScalarFormatter.test_cursor_precisionc                 C   s\   t  }|  |jdd |j}|||ksJ |j dks#J |j dks,J d S )Nr   r   r'  )r(   r  rU  rV  rW  r  Zget_tick_spaceZ
get_minpos)r+   rv   r.   r  r  r0   r0   r1   test_cursor_dummy_axis  s   z*TestScalarFormatter.test_cursor_dummy_axisc              	   C   s  t jdddd ttjjdk r>tjtdd t	
 \}}|g d |j  W d    d S 1 s7w   Y  d S tjtd	d: tjtdd t	
 \}}|g d |j  W d    n1 sjw   Y  W d    d S W d    d S 1 sw   Y  d S )
NZserifcmr10F)font.familyz
font.serifr  r[   zcmr10 font should ideallyr8   rO  z
Glyph 8722)rx   r  updateparse_versionr:   __version__r   r  r  r   r   r   canvasdrawr   r0   r0   r1   test_mathtext_ticks  s$   "Pz'TestScalarFormatter.test_mathtext_ticksc                 C   s   t jdddd |jtjdd9 t \}}|ddgd	dg |	d
 g d}t
 }||t|| |j  |jrCJ W d    d S 1 sNw   Y  d S )Nr  cmT)r  zmathtext.fontsetr  zmatplotlib.mathtext)loggergQr   rT  r   )rh  r   r   rv  )rx   r  r  Zat_levelloggingWARNINGr   r   plotr   r(   LogFormatterSciNotationZ
set_yticksmapr  r  text)r+   Zcaplogr   r   Zyticksr  r0   r0   r1   test_cmr10_substitutions  s   

"z,TestScalarFormatter.test_cmr10_substitutionsc                 C   s&   t  }|g  |ddksJ d S )Nr    )r(   r  r  )r+   r  r0   r0   r1   test_empty_locs  s   
z#TestScalarFormatter.test_empty_locsN)rB   rC   rD   offset_dataZuse_offset_dataZuseMathText_dataZscilimits_dataZcursor_datar  r:   rH   rI   r  r  r  r  r  r  r  r  r  r  r  r  r  r0   r0   r0   r1   r{    sJ    !








r{  c                   @   s   e Zd Zddeddeddg dfddedd	ejd
ddgedg dfddejg dededg dfgZ	dddejej
gZejde	ejdedd Zdd ZdS )TestLogFormatterExponentTr   r:  r   )z-3z-2r  0123Fr   r   r   rU   r   gh㈵r   )0.1z1e-053.14z0.2z-0.2z-1e-05rv  )rP   r   rY  *   Zdtype)r  5Z12Z42rc   r   r   z2labelOnlyBase, exponent, locs, positions, expectedrj   c           	         sf   t j||d     jd||  || } fddt||D }dd |D }||ks1J d S )Nrj   labelOnlyBaser   c                    s   g | ]	\}} ||qS r0   r0   )r   r   posr  r0   r1   r         z7TestLogFormatterExponent.test_basic.<locals>.<listcomp>c                 S   s   g | ]}| d dqS )-u   −replace)r   labelr0   r0   r1   r         )r(   LogFormatterExponentrU  rV  rW  r   )	r+   r  rj   exponentlocs	positionsr.   valslabelsr0   r  r1   r2     s   z#TestLogFormatterExponent.test_basicc                 C   s8   t jddd}|  |jdd |ddksJ d S )Nr   Tr  r   g&$?r  )r(   r  rU  rV  rW  )r+   r  r0   r0   r1   
test_blank  s   z#TestLogFormatterExponent.test_blankN)rB   rC   rD   rE   rG   rF   pir5  floatZ
param_dataeZ	base_datar:   rH   rI   r2   r  r0   r0   r0   r1   r    s$    r  c                   @   s2   e Zd Ze Zg dZej	dedd Z
dS )TestLogFormatterMathtext))r   r   $\mathdefault{10^{0}}$)r   r   z$\mathdefault{10^{-2}}$)r   r
   z$\mathdefault{10^{2}}$)rP   r   z$\mathdefault{1}$)rP   r   z$\mathdefault{0.01}$)rP   r
   z$\mathdefault{100}$)rP   r   z$\mathdefault{10^{-3}}$)rP   r   z$\mathdefault{10^{3}}$zmin_exponent, value, expectedc                 C   sF   t d|i | ||ksJ W d    d S 1 sw   Y  d S )Nzaxes.formatter.min_exponent)rx   ry   r  )r+   Zmin_exponentr  r.   r0   r0   r1   test_min_exponent  s   "z*TestLogFormatterMathtext.test_min_exponentN)rB   rC   rD   r(   ZLogFormatterMathtextr  	test_datar:   rH   rI   r  r0   r0   r0   r1   r    s
    r  c                   @   s6   e Zd Zg dZejdej	dedd Z
dS )TestLogFormatterSciNotation))r   g      ?z$\mathdefault{2^{-5}}$)r   r   z$\mathdefault{2^{0}}$)r       z$\mathdefault{2^{5}}$)r   g333333?z$\mathdefault{1.2\times2^{-5}}$)r   rp   z$\mathdefault{1.2\times2^{0}}$)r   g333333C@z$\mathdefault{1.2\times2^{5}}$)r   r   z$\mathdefault{-10^{0}}$)r   r   z$\mathdefault{10^{-5}}$)r   r   r  )r   r~  z$\mathdefault{10^{5}}$)r   gh㈵>z$\mathdefault{2\times10^{-5}}$)r   r   z$\mathdefault{2\times10^{0}}$)r   i@ z$\mathdefault{2\times10^{5}}$)r   r%  z$\mathdefault{5\times10^{-5}}$)r   r   z$\mathdefault{5\times10^{0}}$)r   i  z$\mathdefault{5\times10^{5}}$defaultzbase, value, expectedc                 C   sP   t j|d}tddi |||ksJ W d    d S 1 s!w   Y  d S )Nri   text.usetexF)r(   r  rx   ry   )r+   rj   r  r.   r  r0   r0   r1   r2   
  s   "z&TestLogFormatterSciNotation.test_basicN)rB   rC   rD   r  rx   styler   r:   rH   rI   r2   r0   r0   r0   r1   r    s
    
r  c                   @   s   e Zd Zg dZejdedd Zejdg ddd Zdd
dZ	e
jddd Zejdg ddd Zejdg ddd ZdS )TestLogFormatter))}9x ?r   z3.142e-5)Gŷ4?r   z3.142e-4)ei?r   z3.142e-3)\, ?r   z3.142e-2)s7v/?r   z3.142e-1)PERT!	@r   3.142)f)zj?@r   z3.142e1)&FYs@r   z3.142e2)WXp/@r   z3.142e3)mnL@r   z3.142e4),Ar   z3.142e5)r   r   1e-5)r   r   1e-4)r   r   1e-3)r   r   1e-2)r   r   r  )r   r   r  )r   r   10)r   r   100)r   r   1000)'  r   1e4)r~  r   1e5)r  r   r  )r  r   r  )r  r   0.003)r  r   0.031)r  r   0.314)r  r   r  )r  r   31.416)r  r   314.159)r  r   3141.593)r  r   	31415.927)r  r   
314159.265)r   r   r  )r   r   r  )r   r   0.001)r   r   0.01)r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   10000)r~  r   100000)r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r	  )r  r   r
  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r~  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   z0.03)r  r   z0.31)r  r   r  )r  r   z31.42)r  r   z314.16)r  r   z3141.59)r  r   z31415.93)r  r   z	314159.27)r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r~  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   z0.3)r  r   3.1)r  r   z31.4)r  r   z314.2)r  r   z3141.6)r  r   z31415.9)r  r   z314159.3)r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r   r   r  )r~  r   r  )r  r  z3.1e-5)r  r  z3.1e-4)r  r  z3.1e-3)r  r  z3.1e-2)r  r  z3.1e-1)r  r  r  )r  r  z3.1e1)r  r  z3.1e2)r  r  z3.1e3)r  r  z3.1e4)r  r  z3.1e5)r   r  r  )r   r  r  )r   r  r  )r   r  r  )r   r  r  )r   r  r  )r   r  r  )r   r  r  )r   r  r  )r   r  r  )r~  r  r  zvalue, domain, expectedc                 C   s$   t  }|||}||ksJ d S N)r(   LogFormatterZ_pprint_val)r+   r  domainr.   r  r  r0   r0   r1   test_pprint  s   zTestLogFormatter.test_pprintzvalue, long, short))r   r  r  )r   r  r  )r   z-10^0r  )g|=z2x10^-10z2e-10)g    _Bz10^10z1e+10c                 C   sH   t  \}}|d |j }|||ksJ |||ks"J d S )Nr   )r   r   
set_xscaler   r  r  r  )r+   r  longZshortr   r   r  r0   r0   r1   r    s
   

z!TestLogFormatter.test_format_datar0   c                    sf   |   | } | |dtt|  }fdd|D } fdd|D }||ks1J dS )z.Test whether locator marks subs to be labeled.r   c                    s   g | ]}t | v qS r0   )round)r   cr   r0   r1   r     r  z0TestLogFormatter._sub_labels.<locals>.<listcomp>c                       g | ]} |d kqS r  r0   r   r  r0   r1   r     r  N)Zget_minor_formatterr   r  rE   r3  r4  )r+   rV  r   Zminor_tlocsZcoefsZlabel_expectedZ
label_testr0   )r  r   r1   _sub_labels  s   
zTestLogFormatter._sub_labelsr  c                    sR  t  \}}|d |jtjdg d |jtjdt	ddd |j
tjdd |jtjdd |dd	 |j   |j   fd
d|j D }t|s_J | j|jg d |dd | j|jg d |dd | j|jg d |dd | j|jg dd |dd | j|jtj	ddtdd d S )Nr   r   )rj   r   r   T)r  Fr   r   c                    r  r  r0   r   r  r0   r1   r     s    z2TestLogFormatter.test_sublabel.<locals>.<listcomp>r   i   P   r[   )r   rP   r   r   r   r   r  )r   r   r  r   r   r(   r   r   rE   rG   r  r  set_minor_formatterr   r  r  r  r?   r  r2  )r+   r   r   Zshow_major_labelsr0   r  r1   test_sublabel  s0   



 zTestLogFormatter.test_sublabelval)r   r   r   r   c                 C   s6   t  }|  |jdd ||t|ksJ d S Nr   r   )r(   r  rU  rV  rW  strr+   r  Ztemp_lfr0   r0   r1   test_LogFormatter_call  s   z'TestLogFormatter.test_LogFormatter_call)g       g       g       g       c                 C   s*   t  }|  |jdd || d S r   )r(   r  rU  rV  rW  r"  r0   r0   r1   test_LogFormatter_call_tiny  s   z,TestLogFormatter.test_LogFormatter_call_tinyN)r0   )rB   rC   rD   Zpprint_datar:   rH   rI   r  r  r  rx   r  r   r  r#  r$  r0   r0   r0   r1   r    s     





%
r  c                   @   s  e Zd Zedd Zejdg ddd Ze	dd e
d	d
D dd e
d	d
D  dg Zejdedd Zejdddd Zejdd	d	eeddd
   dd Zg dZejdedd Zdd Zdd Zdd  Zejd!d"d#d$ Zd%S )&TestLogitFormatterc                 C   s   t d| }|r@|d du}|d rt|d nd}|d dur&t|d nd}|d|  }|d s8|d dur@|r>d| S |S t d	| }|rYt|d
 t|d }}|| S td)z
        Parser to convert string as r'$\mathdefault{1.41\cdot10^{-4}}$' in
        float 1.41e-4, as '0.5' or as r'$\mathdefault{\frac{1}{2}}$' in float
        0.5,
        zT[^\d]*(?P<comp>1-)?(?P<mant>\d*\.?\d*)?(?:\\cdot)?(?:10\^\{(?P<expo>-?\d*)})?[^\d]*$compNZmantr   expor   r   z4[^\d]*\\frac\{(?P<num>\d+)\}\{(?P<deno>\d+)\}[^\d]*$numdenozNot formatted by LogitFormatter)rK   r9   r  r2  rM   )stringr9   r&  Zmantissar'  r  r(  r)  r0   r0   r1   logit_deformatter  s(   	z$TestLogitFormatter.logit_deformatterzfx, x))zSTUFF0.41OTHERSTUFFg=
ףp=?)zSTUFF1.41\cdot10^{-2}OTHERSTUFFg!u?)zSTUFF1-0.41OTHERSTUFFgzG?)z!STUFF1-1.41\cdot10^{-2}OTHERSTUFFgx$(~?)ZSTUFFN)zSTUFF12.4e-3OTHERSTUFFNc                 C   s`   |d u r!t t t| W d    d S 1 sw   Y  d S t|}t||s.J d S r  )r:   r;   rM   r%  r+  r  r  )r+   fxr   r   r0   r0   r1   test_logit_deformater  s   "
z(TestLogitFormatter.test_logit_deformaterc                 C   s   g | ]}d |  qS )r   r0   r   ir0   r0   r1   r   %  s    zTestLogitFormatter.<listcomp>r   r   c                 C   s   g | ]	}d d|   qS )r   r   r0   r.  r0   r0   r1   r   &  r  r   r   c                 C   s>   t jdd}|| j ||}t|}t||sJ dS )zj
        Test the formatted value correspond to the value for ideal ticks in
        logit space.
        Fuse_overlineN)r(   LogitFormatterr  decade_testr%  r+  r  r  )r+   r   r  sx2r0   r0   r1   r2   *  s
   
zTestLogitFormatter.test_basic)r   r   r   r   r   r   c                 C   s0   t jdd}|| j ||}|dksJ dS )zl
        Test that invalid value are formatted with empty string without
        raising exception.
        Fr0  r  N)r(   r2  r  r3  )r+   r   r  r4  r0   r0   r1   test_invalid6  s   zTestLogitFormatter.test_invalidrm   r   c                 C   s   t jdd}dD ]@}|d|  dk rH||d|  ||d|  g ||}||d|  }t|t| }d|  k rEd| k sHJ  J qdS )zS
        The format length should change depending on the neighbor labels.
        Fr0  )	r   r   rv  r      r   i  i  r   r   r   r   N)r(   r2  r  r%  r+  )r+   r   r  NsxZsx1dr0   r0   r1   test_variablelengthA  s     z&TestLogitFormatter.test_variablelength))Tr&  )rx  F)K   F)Tr$  )r<  r=  T)Tr#  )rx  Tr>  )F)r   gRQ?gp=
ף?))r   Tr?  r>  zmethod, lims, casesc                 C   s   |rt jdd}|j| }nt|}t jdd}|D ]0\}}|| ||}	dd |	D }
|r?t|
dks>J ||fqt|
dksKJ ||fqdS )z,
        Test minor/major displays.
        Tr   c                 S      g | ]
}t |d kr|qS r   r   r   fr0   r0   r1   r   h      z:TestLogitFormatter.test_minor_vs_major.<locals>.<listcomp>r   N)	r(   r)  r*   rE   rF   r2  Zset_minor_thresholdformat_ticksr   )r+   methodr*  casesmin_locr0  min_form	thresholdZ	has_minor	formattedlabelledr0   r0   r1   test_minor_vs_majorY  s   


z&TestLogitFormatter.test_minor_vs_majorc                 C   sd   t jdd}t jdd}|dd}dD ]}|| ||}dd |D }t||ks/J qdS )	z1
        Test the parameter minor_number
        Tr   r   r   )r   r   r[   r.  c                 S   r@  r   rA  rB  r0   r0   r1   r   x  rD  z8TestLogitFormatter.test_minor_number.<locals>.<listcomp>N)r(   r)  r2  r*   Zset_minor_numberrE  r   )r+   rH  rI  r0  Zminor_numberrK  rL  r0   r0   r1   test_minor_numbern  s   

z$TestLogitFormatter.test_minor_numberc                 C   s`   d}d}d}t jdd}|||ksJ |d |||ks!J |d |||ks.J dS )z1
        Test the parameter use_overline
        r  z$\mathdefault{1-10^{-2}}$z"$\mathdefault{\overline{10^{-2}}}$Fr0  TN)r(   r2  r1  )r+   r   Zfx1Zfx2formr0   r0   r1   test_use_overline{  s   

z$TestLogitFormatter.test_use_overlinec                 C   sP   t  }d|dv sJ |d d|dv sJ |d d|dv s&J dS )z-
        Test the parameter one_half
        z\frac{1}{2}r   z1/2zone halfN)r(   r2  Zset_one_half)r+   rO  r0   r0   r1   test_one_half  s   

z TestLogitFormatter.test_one_halfr8  )r      i  c                 C   sv   t dd|dd }t }|D ]'}||}|dr(dt|dd   }nt|}t|| d| k s8J qd S )Nr   r   r   z1-r   )rE   rd   r(   r2  r  
startswithr  abs)r+   r8  r  rO  r   r,  r5  r0   r0   r1   test_format_data_short  s   

z)TestLogitFormatter.test_format_data_shortN)rB   rC   rD   r!  r+  r:   rH   rI   r-  r(  r5  r3  r2   r6  rE   exprd   r;  Zlims_minor_majorrM  rN  rP  rQ  rU  r0   r0   r0   r1   r%    s:    
 


&


r%  c                   @   r  )TestFormatStrFormatterc                 C   s   t d}d|dksJ d S )Nz%05d00002r   )r(   ZFormatStrFormatterr  r0   r0   r1   r2     s   
z!TestFormatStrFormatter.test_basicN)rB   rC   rD   r2   r0   r0   r0   r1   rW    r  rW  c                   @   *   e Zd Zg dZejdedd ZdS )TestStrMethodFormatter)){x:05d}r   FrX  )r[  r\  TrX  )r[  rS  Fz-0002)r[  r]  Tu   −0002){x:03d}-{pos:02d}r   r   F002-01)r^  r_  Tr`  )r^  rS  r   Fz-02-01)r^  ra  Tu   −02-01z&format, input, unicode_minus, expectedc                 C   sN   t d|i t|}|| |ksJ W d    d S 1 s w   Y  d S )Nr  )rx   ry   r(   ZStrMethodFormatter)r+   formatinputr  r.   r  r0   r0   r1   r2     s   
"z!TestStrMethodFormatter.test_basicN)rB   rC   rD   r  r:   rH   rI   r2   r0   r0   r0   r1   rZ    s    rZ  c                   @   rY  )TestEngFormatter))FEJ)z
-1.23457 k-1 kz-1.23 k)Tre  )u   −1.23457 k   −1 ku	   −1.23 k)FރB)z-1.23457r  z-1.23)Trh  )u
   −1.23457r  u   −1.23)F_c97ݚ)z
-123.457 mz-123 mz	-123.46 m)Tri  )u   −123.457 mu   −123 mu   −123.46 m)FQ^-':T)z
-1.23457 mz-1 mz-1.23 m)Trj  )u   −1.23457 mu   −1 mu	   −1.23 m)Tg       r  r  z0.00Tr   rk  rl  )Tgm>)u
   1.23457 µu   1 µu   1.23 µ)Tg_c97ݚ?)z	123.457 mz123 mz123.46 m)Tr   )100 mrm  z100.00 m)Tr   )r  r  z1.00)TgރB?)z1.23457r  z1.23)Tg33333?@)z999.91 kz999.90)Tg*:?@rn  rn  1.00 k)F*:?)rf  rf  z-1.00 k)Trq  )rg  rg  u	   −1.00 k)Tr   ro  )Ti  )z1.001 krn  rp  )Ti )z	100.001 kz100 kz100.00 k)TgZ$.A)z	987.654 kz988 kz987.65 k)TgCY,dRF)1230 Qrr  z	1230.00 Qzunicode_minus, input, expectedc                    s  |t jd< dd |}t tjddtjddf}t||D ]\}}|||ks+J q fdd|D }tjd	tjdd
tjdd
f}t||D ]\}}|||ksZJ qNdD ]c fdd|D }tjdtjddtjddf}t||D ]\}}|||ksJ qfdd|D }tjdtjddtjddf}t||D ]\}}|||ksJ qq]dS )a  
        Test the formatting of EngFormatter for various values of the 'places'
        argument, in several cases:

        0. without a unit symbol but with a (default) space separator;
        1. with both a unit symbol and a (default) space separator;
        2. with both a unit symbol and some non default separators;
        3. without a unit symbol but with some non default separators.

        Note that cases 2. and 3. are looped over several separator strings.
        r  r4  
0123456789r   )placesr   c                 3   s0    | ]}|d   v r|d  n| V  qdS r    Nr0   r   Z_s)DIGITSUNITr0   r1   	<genexpr>  s    
z/TestEngFormatter.test_params.<locals>.<genexpr>)unit)r{  rt  )r  u    z@_@c                 3   s8    | ]}|d   v r|  n| d V  qdS ru  r  rw  rx  ry  _sepr0   r1   rz    s    
)r{  r  )r{  rt  r  c                 3   s    | ]	}| d  V  qdS )rv  Nr  rw  )r}  r0   r1   rz  "  s    )r  )rt  r  N)r   r  r(   EngFormatterr   )r+   r  rc  r.   Zexp_outputs
formattersZ
_formatterZ_exp_outputr0   r|  r1   test_params  sL   




zTestEngFormatter.test_paramsN)rB   rC   rD   Zraw_format_datar:   rH   rI   r  r0   r0   r0   r1   rd    s    %rd  c                  C   s   t  \} }|g dg d |g d tjddtjddfD ]}|j| | j	  dd |
 D }|g dksAJ q#d S )N)r   rw  r   T)usetex)useMathTextc                 S      g | ]}|  qS r0   Zget_textr   Zlablr0   r0   r1   r   4  r   z8test_engformatter_usetex_useMathText.<locals>.<listcomp>)z$0$z$500$z$1$ k)r   r   r  r   r(   r~  r   r  r  r  Zget_xticklabels)r   r   r  Zx_tick_label_textr0   r0   r1   $test_engformatter_usetex_useMathText,  s   


r  z9data_offset, noise, oom_center_desired, oom_noise_desired))g  @ROBr   r'  r   )g  BBi rY  r   )/$&;@r   r   r:  )g5@r   rP   r:  )g    Ar   rP   r:  )p=
p@r   r   r:  )g   uHBr   r'  rP   )r  gHz>r   i)r  r   r   r:  )r  r   r   r:  )g    @@r   r   rP   )r  r   r   rP   )r  r   r   rP   )r  r   r   r   )r  r   r   r   c                 C   s0  d}t  \}}| tjddtd|  }|| tjd|d}d|jd< |j	
| |j  | }	d	d
 | D }
|jro|	d }|j| }|	dt|  }|j| }||ks\J ||ksbJ |
D ]}||vslJ qdd S |dksuJ |	dks{J |
D ]}|d dkrdn|}||j| | sJ q}d S )NZeVr   r   r  T)Z	useOffsetr{  _r   c                 S   r  r0   r  r  r0   r0   r1   r   b  r   z0test_engformatter_offset_oom.<locals>.<listcomp>r   r   r  r  )r   r   rE   rG   r  r  r(   r~  ZENG_PREFIXESr   r  r  r  
get_offsetZget_yticklabelsrr   r   endswith)Zdata_offsetnoiseZoom_center_desiredZoom_noise_desiredry  r   r   Zydatar  Z
offset_gotZ	ticks_gotZprefix_noise_gotZprefix_noise_desiredZprefix_center_gotZprefix_center_desiredZtickZ
prefix_idxr0   r0   r1   test_engformatter_offset_oom:  s4   




r  c                   @   sT   e Zd Zg dZg dZg dZejjdeeddd Z	ejded	d
 Z
dS )TestPercentFormatter))r   r   %r  r   z120%)r   r   r  r   Z   z100%)r   r   r  r  rv  z90%)r   r   r  r   rT  z-2%)r   r   r  g     V@r   z90.0%)r   r   r  gfffffT@r  z80.1%)r   r   r  gQQ@rv  z70.2%)r   r   r  gxFNrT  z-60.6%)r   Nr  _   r   z95.00%)r   Nr  rP   r   z300%)      1@Nr  r   g      !@z6%)r  Nr  r   g @z5.9%)r   Nr  rZ  gư>z-2000.00000%)r   r   Nrp   r   z120.00)r=  rP   r  rv  r   z66.667)r  Nz
^^Foobar$$   rY  z50.0^^Foobar$$)zdecimals=0, x>100%zdecimals=0, x=100%zdecimals=0, x<100%zdecimals=0, x<0%zdecimals=1, x>100%zdecimals=1, x=100%zdecimals=1, x<100%zdecimals=1, x<0%z$autodecimal, x<100%, display_range=1z7autodecimal, x>100%, display_range=6 (custom xmax test)z;autodecimal, x<100%, display_range=8.5 (autodecimal test 1)z;autodecimal, x<100%, display_range=8.4 (autodecimal test 2)z=autodecimal, x<-100%, display_range=1e-6 (tiny display range)zNone as percent symbolzEmpty percent symbolzCustom percent symbol))FF50\{t}%)FTz50\\\{t\}\%)TFr  )TTr  z2xmax, decimals, symbol, x, display_range, expected)Zidsc                 C   sX   t |||}tjddid ||||ksJ W d    d S 1 s%w   Y  d S )Nr  Frcr(   ZPercentFormatterrx   ry   Z
format_pct)r+   ZxmaxZdecimalssymbolr   Zdisplay_ranger.   r  r0   r0   r1   r2     s   "zTestPercentFormatter.test_basiczis_latex, usetex, expectedc                 C   sX   t jd|d}tjd|id |dd|ksJ W d    d S 1 s%w   Y  d S )Nz\{t}%)r  is_latexr  r  rv  r   r  )r+   r  r  r.   r  r0   r0   r1   
test_latex  s   "zTestPercentFormatter.test_latexN)rB   rC   rD   Zpercent_dataZpercent_idsZ
latex_datar:   rH   rI   r2   r  r0   r0   r0   r1   r  }  s    
r  c                  C   s   z	t t jd W n t jy   td Y d S w tjddd} d}| |d}|dks.J d}| |d}|d	ks<J tjd
dd} d}| |d}|dksQJ d S )Nzde_DE.UTF-8z9SKIP: Locale de_DE.UTF-8 is not supported on this machineT)r  Z	useLocalez$\mathdefault{%1.1f}$r   z$\mathdefault{0{,}5}$z,$\mathdefault{,%1.1f},$z,$\mathdefault{,0{,}5},$Fz%1.1fz0,5)r  	setlocaleLC_ALLErrorprintr(   r  Z_format_maybe_minus_and_locale)r0  r  r   r0   r0   r1   _impl_locale_comma  s"   r  c                  C   sF   t jjtdddid} tdd | j D d}|r!t| d S d S )Nr#   Z
MPLBACKENDZAgg)timeoutZ	extra_envc                 s   s.    | ]}| d r|td d  V  qdS )zSKIP:N)rS  r   r  )r   liner0   r0   r1   rz    s
    z$test_locale_comma.<locals>.<genexpr>r  )	rx   r   Zsubprocess_run_helperr  nextstdout
splitlinesr:   r  )procZskip_msgr0   r0   r1   test_locale_comma  s   
r  c                  C   L   t  \} }tt |jt  W d    d S 1 sw   Y  d S r  )	r   r   r:   r;   rJ   r   r  r(   r   r   r   r0   r0   r1   test_majformatter_type     "r  c                  C   r  r  )	r   r   r:   r;   rJ   r   r  r(   r   r  r0   r0   r1   test_minformatter_type  r  r  c                  C   r  r  )	r   r   r:   r;   rJ   r   r   r(   r  r  r0   r0   r1   test_majlocator_type  r  r  c                  C   r  r  )	r   r   r:   r;   rJ   r   r   r(   r  r  r0   r0   r1   test_minlocator_type  r  r  c                     sH   t    fdd} | ddd | ddd | ddd | ddd d S )	Nc                    s|   | |d}t j|d  dd|}W d    n1 sw   Y  t|j dk| ks/J t|j dk|ks<J d S )N)zxtick.minor.visiblezytick.minor.visibler  r   r   )r   ry   add_subplotr   r   get_minor_ticksr   )xminoryminorr/  r  r   r   r0   r1   minorticksubplot  s   z,test_minorticks_rc.<locals>.minorticksubplotFr   Tr   rP   r   )r   figure)r  r0   r  r1   test_minorticks_rc  s   	r  c                     st   t    fdd} g d}|D ]"}| dd|d | dd|d | dd|d | dd|d	    qt   d
S )ax  
    Test toggling minor ticks

    Test `.Axis.minorticks_on()` and `.Axis.minorticks_off()`. Testing is
    limited to a subset of built-in scales - `'linear'`, `'log'`, `'asinh'`
    and `'logit'`. `symlog` scale does not seem to have a working minor
    locator and is omitted. In future, this test should cover all scales in
    `matplotlib.scale.get_scale_names()`.
    c                    s     dd|}|| || | s|s|  | r'|s'|j  |j  | s5|r5|j  |j  | r=|r=|  t|j dk| ksJJ t|j dk|ksWJ d S )Nr   r   )	r  r  r   Zminorticks_offr   r   r   r   r  )r  r  scaler/  r   r  r0   r1   minortickstoggle  s   





z0test_minorticks_toggle.<locals>.minortickstoggle)Zlinearr   asinhZlogitFr   Tr   rP   r   N)r   r  clearclose)r  scalesr  r0   r  r1   test_minorticks_toggle  s   

r  z%remove_overlapping_locs, expected_num))Tr   )Nr   )Fr'  c                 C   sB  t jdddd}t t|}t \}}||| |jt	j
  |jt	j
d |jt	j
d |jt	j
d |jd | d urP| |j_|jj}||j ks]J tj|j|d	 |jj}||jjksqJ t|j |ks|J t|j |ksJ t|j |ksJ t|j |d
 ksJ d S )Nz
2018-11-03z
2018-11-06Z
datetime64r  z
%a)r   r   rY     z%H:%Mr    )remove_overlapping_locsr   )rE   rG   Zonesr   r   r   r  r   r   rx   datesZ
DayLocatorr  ZDateFormatterr   ZHourLocatorr  r  r  Zget_remove_overlapping_locsZsetpr   Zget_minorticklabelsZget_minorticklines)r  Zexpected_numtr   r   r   currentnewr0   r0   r1   test_remove_overlap9  s(   r  subhiZaardvark)r   r   c                 C   sD   t  }tt |j| d W d    d S 1 sw   Y  d S )Nr   )r(   r   r:   r;   rM   r^   )r  r  r0   r0   r1   test_bad_locator_subs^  s   "r  rR   )r   r   rP   r'  r  c              	   C   sR   t  }|j| d dD ]}|d|}tt|dddk s&J qd S )NrQ   )r   r   r'  r7   r    rv  r   r   r   r      r   )r(   r   r^   r*   rE   diffr4  r?   )rR   r  topr0  r0   r0   r1   test_small_range_loglocatorg  s   &r  c                  C   s@   t  } | ddksJ | ddksJ | ddksJ d S )Nr   r  )r(   ZNullFormatterr  r  r  r0   r0   r1   test_NullFormatterq  s   r  r  c                 C   s
   d|  S )Nzval: r0   )r;  r0   r0   r1   <lambda>y  s   
 r  )r6   barc                 C   s.   |   dksJ | d |   dksJ d S )Nr  rx   )r  Zset_offset_stringr  r0   r0   r1   test_set_offset_stringx  s   
r  c                  C   s   t  \} }|jtddgd |jtddgd |jtddgd |jdd |jdd |  |   | sAJ t	|j
 tjjsMJ dS )	z
    Turning on minor gridlines in a multi-Axes Figure
    that contains more than one boxplot and shares the x-axis
    should not raise an exception.
    r   r   )r  r   r   )whichr   N)r   r   ZboxplotrE   rG   r   r   Zdraw_without_renderingZget_xgridlines
isinstancer   Zget_minor_locatorrx   tickerr   r  r0   r0   r1   test_minorticks_on_multi_fig  s   r  )D
contextlibr   rB  r  r  rK   Zpackaging.versionr   r  numpyrE   Znumpy.testingr   r   r:   Z
matplotlibrx   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.tickerr  r(   r   rN   rg   r   r   r  r  r"  rD  rG  rI  r]  r{  r  r  r  r  r%  rW  rZ  rd  r  rH   rI   r  r  r  r  r  r  r  r  r  r  r  Zzerosr  r  r   r  r  ZFuncFormatterZFixedFormatterr  r  r0   r0   r0   r1   <module>   s    /; 1O ,e P$ ^ 3q
+E(
!


