U
    Âmœdžä  ã                   @   sx  d dl mZ d dlZd dlZd dlZd dl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(G d.d/„ d/ƒZ)d0d1„ Z*G d2d3„ d3ƒZ+d4d5„ Z,d6d7„ Z-d8d9„ Z.d:d;„ Z/d<d=„ Z0ej1 2d>d?¡d@dA„ ƒZ3ej1 2dBdCdDge 4dE¡g¡dFdG„ ƒZ5ej1 2dHdIdJdKdLg¡ej6 7dM¡dNdO„ ƒƒZ8dPdQ„ Z9ej1 2dRe :dSdT„ ¡e ;dU¡f¡dVdW„ ƒZ<dS )Xé    )ÚnullcontextN)Úassert_almost_equalÚassert_array_equalc                   @   s  e Zd Zdde dddddg¡fdd	e d
dddddg¡fdde ddd
ddg¡fdde d¡d fdde dd¡d fgZddde ddddg¡fddde d dd!d"d#d$g¡fdd%dd&d'dd(ge dd)d*d+d,g¡fgZej	 
d-e¡d.d/„ ƒZej	 
d0e¡d1d2„ ƒZdS )3ÚTestMaxNLocatoré   éd   ç      4@g      D@g      N@g      T@ç      Y@çü©ñÒMbP?ç-Cëâ6?ç        g-Cëâ6*?g-Cëâ6:?ga2U0*©C?g-Cëâ6J?g  4&õkÃg  4&õkCg  4&õküÂg  4&õküBr   g�œ&q‰5é   gL“oûñg5g�œ&q‰µéûÿÿÿé   çš™™™™™¹¿çš™™™™™ñ?Néÿÿÿÿé   çffffffî?g      Ð¿ç      Ð?ç      à?ç      è?ç      ð?é7   ç      ø?é   é
   é   é   é-   é<   zvmin, vmax, expectedc                 C   s"   t jdd�}t| ||¡|ƒ d S )Nr   ©Únbins©ÚmtickerÚMaxNLocatorr   Útick_values)ÚselfÚvminÚvmaxÚexpectedÚloc© r,   úU/home/sam/Atlas/atlas_env/lib/python3.8/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)   r0   r*   r+   r,   r,   r-   Útest_integer$   s    zTestMaxNLocator.test_integer)Ú__name__Ú
__module__Ú__qualname__ÚnpÚarrayÚarangeZ
basic_dataZinteger_dataÚpytestÚmarkÚparametrizer.   r1   r,   r,   r,   r-   r      s   û	$ý
r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestLinearLocatorc                 C   s2   t jdd�}t dddg¡}t| dd¡|ƒ d S )Né   ©Únumticksgš™™™™™é¿ç333333Ó¿çš™™™™™É?)r$   ÚLinearLocatorr5   r6   r   r&   ©r'   r+   Ú
test_valuer,   r,   r-   r.   +   s    zTestLinearLocator.test_basicc                 C   sB   t jdd�}|jddg id� |jdks,t‚|jdg iks>t‚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   r=   é   )r   r   )r>   ÚpresetsN)r$   rA   Ú
set_paramsr>   ÚAssertionErrorrE   ©r'   r+   r,   r,   r-   Útest_set_params0   s    z!TestLinearLocator.test_set_paramsN)r2   r3   r4   r.   rI   r,   r,   r,   r-   r;   *   s   r;   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestMultipleLocatorc              
   C   s<   t jdd�}t dddddddd	g¡}t| d
d¡|ƒ d S )Nç“V-	@©ÚbasegoƒÀÊá"Àç“V-Àg“V-	Àr   ç“V-@goƒÀÊá"@g“V-)@éùÿÿÿr   )r$   ÚMultipleLocatorr5   r6   r   r&   rB   r,   r,   r-   r.   <   s     ÿzTestMultipleLocator.test_basicc              	   C   s<   t  ddi¡�$ tjdd�}t| dd¡dƒ W 5 Q R X dS )	z5
        Test basic behavior of view limits.
        úaxes.autolimit_modeÚdatarK   rL   r   r   )r   r   N©ÚmplÚ
rc_contextr$   rQ   r   Zview_limitsrH   r,   r,   r-   Útest_view_limitsB   s    z$TestMultipleLocator.test_view_limitsc              	   C   s<   t  ddi¡�$ tjdd�}t| dd¡dƒ W 5 Q R X dS )	zb
        Test that everything works properly with 'round_numbers' for auto
        limit.
        rR   Zround_numbersrK   rL   éüÿÿÿé   )rN   rO   NrT   rH   r,   r,   r-   Útest_view_limits_round_numbersJ   s    z2TestMultipleLocator.test_view_limits_round_numbersc                 C   s,   t jdd�}|jdd� |jjdks(t‚dS )z
        Create multiple locator with 0.7 base, and change it to something else.
        See if change was successful.
        çffffffæ?rL   g333333û?N)r$   rQ   rF   Z_edgeÚsteprG   )r'   Zmultr,   r,   r-   rI   S   s    z#TestMultipleLocator.test_set_paramsN)r2   r3   r4   r.   rW   rZ   rI   r,   r,   r,   r-   rJ   ;   s   	rJ   c                    @   sè  e Zd Zdd„ ZddgZej de¡dd„ ƒZdd	d
ddgZ	dd„ Z
ej de	¡dd„ ƒZddddddddgZddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.gd/d0d1d2d3d4d5dd6d7d8d9d:d;d<d=d>d?d@dAdBgdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSgdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcddgdedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}gd~dd€d�d‚dƒd„d…d†d‡dˆd‰dŠd‹dŒd�dŽd�gd�d‘d’d“d”d•d–d—d˜d™dšd›dœd�džgdŸd d¡d¢d£d¤d¥d¦d§d¨d©dªd«d¬d­d®d¯d°d±d²d³d´dµd¶d·ggZeeeeƒƒZej d¸e¡d¹dº„ ƒZd»S )¼ÚTestAutoMinorLocatorc                 C   sl   t  ¡ \}}| dd¡ | ¡  t ddddddd	d
dddddddddddddg¡}t|jjdd�|ƒ d S )Nr   ç=
×£p=ö?çš™™™™™©?çš™™™™™¹?ç333333Ã?r   ç333333Ó?çffffffÖ?çÍÌÌÌÌÌÜ?r   çš™™™™™á?çÍÌÌÌÌÌä?r[   r   ç333333ë?çÍÌÌÌÌÌì?r   çÍÌÌÌÌÌð?r   çffffffò?ç      ô?çÍÌÌÌÌÌô?çš™™™™™õ?T©Úminor)	ÚpltÚsubplotsÚset_xlimÚminorticks_onr5   r6   r   ÚxaxisÚget_ticklocs)r'   ÚfigÚaxrC   r,   r,   r-   r.   ^   s(                þzTestAutoMinorLocator.test_basic©r   r   )r   r   z%nb_majorticks, expected_nb_minorticksc                 C   sh   t  ¡ \}}d}|j|Ž  | t |d |d |¡¡ | ¡  |j t	 
¡ ¡ t|j ¡ ƒ|ksdt‚d S )N)r   r   r   r   )rp   rq   rr   Ú
set_xticksr5   Úlinspacers   rt   Úset_minor_locatorr$   ÚAutoMinorLocatorÚlenÚget_minorticklocsrG   )r'   Znb_majorticksZexpected_nb_minorticksrv   rw   Úxlimsr,   r,   r-   Útest_low_number_of_majorticksm   s    
z2TestAutoMinorLocator.test_low_number_of_majorticks)r   r   )r   rY   )ç      @r   )r   r   )r   r   c              	   C   sB   t  ddi¡�* dd„ | jD ƒ}tj |t ¡ j¡ W 5 Q R X d S )Nz_internal.classic_modeFc                 S   s   g | ]}|d  ‘qS ©r   r,   ©Ú.0Úxr,   r,   r-   Ú
<listcomp>ƒ   s     zKTestAutoMinorLocator.test_using_all_default_major_steps.<locals>.<listcomp>)	rU   rV   Úmajorstep_minordivisionsr5   ÚtestingZassert_allcloser$   ZAutoLocatorZ_steps)r'   Z
majorstepsr,   r,   r-   Ú"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^t‚d S ©Nr   r   )rp   rq   rr   ry   rs   rt   r{   r$   r|   r}   r~   rG   )r'   Z
major_stepZexpected_nb_minordivisionsrv   rw   r   Znb_minor_divisionsr,   r,   r-   Útest_number_of_minor_ticks‡   s    

z/TestAutoMinorLocator.test_number_of_minor_ticks)r   r^   )r   g˜nƒÀÊÁ?)r   ç�Ô�ùÉ;)r   g¦ÖVs†?=)gH¯¼šò×Š¾gIhG|·a¾)gvƒôõ!´>ç�Ûí‚ÚÒ·>)çÍÒÊ”A{¶¾çÁ�v¾À(¸¾)g"s2_Èd­¾glEÕŽfU¹¾r_   r`   ra   r   rb   rc   rd   r   re   rf   r[   r   rg   rh   r   ri   r   rj   rk   rl   rm   ç{®Gázt?ç{®Gáz„?ç¸…ëQ¸Ž?gš™™™™™™?g¸…ëQ¸ž?gìQ¸…ë¡?g
×£p=
§?g)\�Âõ(¬?g¤p=
×£°?gìQ¸…ë±?g333333³?gÃõ(\�Âµ?g
×£p=
·?gR¸…ëQ¸?gáz®Gáº?ç)\�Âõ(¼?gq=
×£p½?ç      À?g¤p=
×£À?gHáz®GÁ?gO›
´ã‚;gO›
´ã’;g÷èŽUœ;g#B’¡œ§;g÷èŽU¬;gæÇÌˆ=‡°;g¹nP‹*@µ;g#B’¡œ·;g�Ô�ù¹;ga¼W�²¾;gæÇÌˆ=‡À;g›±mÉxµÁ;g…¯JïÄ;g¹nP‹*@Å;gnXñËenÆ;gØ+3MÜÊÈ;rŒ   g›+¡†›„ö<g›+¡†›„=g´àø¤tã=g‚vIhÂ%=g´àø¤tã =g(Í´#=gQu÷.U)=g‚vIhÂ%,=gõ›ÙUö.=gnób]¾K2=g(Í´3=gá7ÎQ5=gU>?åì7=gQu÷.U9=gÈcß¯x½:=g;‰³ Ž==gõ›ÙUö>=gç*«#&,Š¾g…¦™¬Y€‰¾g#"ˆ5�Ôˆ¾g_eGô|‡¾gý”SÐ'Ñ†¾gœBY[%†¾gØkÂÍ„¾gvƒôõ!„¾gÿû|)vƒ¾gQöØŽ�‚¾gïqÇÄr�¾g�íµ ÷Æ€¾g“É%e½Þ~¾gÐÀw$‡}¾g¸ßˆ‹/|¾g…¦™¬Y€y¾gÁ�v¾À(x¾gý”SÐ'Ñv¾gvƒôõ!t¾g³zê]Êr¾gïqÇÄrq¾gÐÀw$‡m¾gH¯¼šò×j¾gÁ�v¾À(h¾g³zê]Êb¾g�äÑéL´>g§E–/Üw´>gÀ¦ZMÏ¢´>gØkÂÍ´>g	Ê§¦¨#µ>g!+lÄ›Nµ>g:Œ0âŽyµ>gRíôÿ�¤µ>gƒ¯};húµ>gœBY[%¶>g´qwNP¶>gÍÒÊ”A{¶>gý”SÐ'Ñ¶>göîü¶>g.WÜ'·>gG¸ )R·>gxz)eç§·>r�   g5m”/G¸¾g©<² Íý·¾gÐTè·¾g«ô`½·¾gxz)eç§·¾gìIGÖm’·¾gÓè‚¸zg·¾gG¸ )R·¾g»‡¾š‡<·¾g¢&ú|”·¾göîü¶¾gŠÅ5_¡æ¶¾gqdqA®»¶¾gå3�²4¦¶¾gY­#»�¶¾g#"ˆ5�Ô¸¾gò_ÿù¦~¸¾r�   g�Ûí‚ÚÒ·¾g.WÜ'·¾gý”SÐ'Ñ¶¾rŽ   gœBY[%¶¾g:Œ0âŽyµ¾g	Ê§¦¨#µ¾gØkÂÍ´¾g§E–/Üw´¾gEÁ„¸Ì³¾gÿû|)v³¾gä<sAC ³¾g³zê]Ê²¾gQöØŽ�²¾g 4PSªÈ±¾gïqÇÄr±¾g¾¯>ÜÝ±¾g\+-eq°¾g+i¤)+°¾gõM7Ü‰Š¯¾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 )
NTro   Úyr   )Ú	linewidthÚmajorÚk)Úcolorr–   rn   )rp   rq   rs   ÚgridÚset_ylimr   Úyaxisru   )r'   ÚlimÚrefrv   rw   r,   r,   r-   Útest_additional¸   s    
z$TestAutoMinorLocator.test_additionalN)r2   r3   r4   r.   Úparamsr8   r9   r:   r€   r‡   r‰   r‹   ZlimitsÚ	referenceÚlistÚzipZadditional_datarŸ   r,   r,   r,   r-   r]   ]   s"  þ
üÿ
   ý         ÿ         þ        þ        þ               ü         þ
        þ               üér]   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestLogLocatorc                 C   sš   t jdd�}t t¡� | dd¡ W 5 Q R X t ddddd	d
ddg¡}t| dd¡|ƒ t jdd�}t ddddddddddg
¡}t| dd¡|ƒ d S )Nr   r=   r   éè  çñhãˆµøä>r
   r`   ç      $@ç     @�@ç     jø@g    ÐcAç    eÍÍAg     Ûú@r   rL   r   r   ç       @ç      @g       @g      0@g      @@g      P@g      `@g      p@r   r   )	r$   Ú
LogLocatorr8   ÚraisesÚ
ValueErrorr&   r5   r6   r   rB   r,   r,   r-   r.   Å   s    
   þzTestLogLocator.test_basicc                 C   sB   t jddid�\}}| d¡ | dd¡ t| ¡ dddgƒ d	S )
z<
        Polar axes have a different ticking logic.
        Z
projectionZpolar)Z
subplot_kwÚlogr   r   r   r¥   N)rp   rq   Ú
set_yscaler›   r   Z
get_yticks©r'   rv   rw   r,   r,   r-   Útest_polar_axesÓ   s    
zTestLogLocator.test_polar_axesc              	   C   sl   t jdd�}t| dd¡ddddd	d
dgƒ t jt dd¡d�}d| dd¡ksTt‚d| dd¡ksht‚d S )NÚall©Úsubsrd   re   g)\�Âõ(Ü?gq=
×£pÝ?g¸…ëQ¸Þ?r   g¤p=
×£à?gHáz®Gá?gìQ¸…ëá?r   r   r   rh   r   r§   )r$   r­   r   r&   r5   r7   rG   rH   r,   r,   r-   Útest_switch_to_autolocatorÜ   s    ÿz)TestLogLocator.test_switch_to_autolocatorc                 C   s^   t  ¡ }|jdddgdd� |jdks*t‚|jdks8t‚|jdksFt‚t|jƒdgksZt‚dS )zÑ
        Create log locator with default value, base=10.0, subs=[1.0],
        numdecs=4, numticks=15 and change it to something else.
        See if change was successful. Should not raise exception.
        é   rD   r«   rY   )r>   Únumdecsr¶   rM   N)	r$   r­   rF   r>   rG   r¹   Ú_baser¢   Ú_subsrH   r,   r,   r-   rI   å   s    zTestLogLocator.test_set_paramsN)r2   r3   r4   r.   r³   r·   rI   r,   r,   r,   r-   r¤   Ä   s   		r¤   c                   @   s   e Zd Zdd„ ZdS )ÚTestNullLocatorc              	   C   s*   t  ¡ }t t¡� | ¡  W 5 Q R X 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NullLocatorr8   ÚwarnsÚUserWarningrF   rH   r,   r,   r-   rI   ô   s    zTestNullLocator.test_set_paramsN©r2   r3   r4   rI   r,   r,   r,   r-   r¼   ó   s   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 nDd|  k r,dk r\n n,t  t  d|  d ¡ t  d| d ¡ ¡S dS )Nr   r   F)r5   Úiscloser°   )r…   r•   r,   r,   r-   rÁ   ÿ   s     ÿÿ
 ÿÿ6ÿz_LogitHelper.isclosec                 C   sŠ   t  | ¡}t  |¡}t  |dk¡r0t  |dk ¡s4t‚t  |dk¡rPt  |dk ¡sTt‚t  d| d ¡ }t  d| d ¡ }t||ƒ d S rŠ   )r5   r6   r´   rG   r°   r   )r…   r•   rw   ZayÚlxZlyr,   r,   r-   r     s    

  z _LogitHelper.assert_almost_equalN)r2   r3   r4   ÚstaticmethodrÁ   r   r,   r,   r,   r-   rÀ   þ   s   
rÀ   c                   @   s’  e Zd Zddddddddg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dddg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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=
×ï?)gü©ñÒMb@?g–C‹lçûï?©ç-Cëâ6
?g�St$—ÿï?)gñhãˆµøÔ>gŽ;¥ƒõÿï?)g�íµ ÷Æ >gõ…�óþÿï?©gH¯¼šò×j>ge(åÿÿï?)g:Œ0âŽy5>g$ÎPýÿÿï?r   r   r<   rY   r   r   r¸   rD   é	   )çš™™™™™Ù?g333333ã?)r_   r@   )gš™™™™™é?r   zlims, expected_low_ticksc                 C   s4   t |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)r   )Úsortedr$   ÚLogitLocatorrÀ   r   r&   )r'   ÚlimsÚexpected_low_ticksÚexpected_ticksr+   r,   r,   r-   Útest_basic_major(  s    ÿþz!TestLogitLocator.test_basic_majorrÍ   c                 C   s|   t jdd�}t jdddddgd�}dD ]P}|j|d� |j|d� |j|Ž }|j|Ž }|j|jksft‚||k ¡ s&t‚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"   r0   )rY   rD   é   N)r$   rÌ   r%   rF   r&   ÚshaperG   r´   )r'   rÍ   r+   Zmaxn_locr"   ÚticksZ
maxn_ticksr,   r,   r-   Útest_maxn_major9  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s:t
‚q:dS )zB
        Assert logit locator for respecting nbins param.
        r   r   r   r   r!   r   N)Úintr5   ÚfloorÚlog10r$   rÌ   ÚrangerF   r}   r&   rG   )r'   rÍ   Úbasic_neededr+   r"   r,   r,   r-   Útest_nbins_majorI  s
    "z!TestLogitLocator.test_nbins_majorc           
      C   s¸   t |dd| •ƒ}t|ƒ}tjdd�}tjddd�}t|ddƒD ]r}|j|d� |j|d� |j|Ž }|j|Ž }	t|ƒt|ƒkržt|ƒd d	 t|	ƒk s²t‚q@t 	t ||	•ƒ|¡ 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"   ro   r   r   r   N)r   )
rË   r}   r$   rÌ   rØ   rF   r&   rG   rÀ   r   )
r'   rÍ   rÎ   rÏ   rÙ   r+   Z	minor_locr"   Zmajor_ticksZminor_ticksr,   r,   r-   Ú
test_minorU  s"    
ÿ


 ÿzTestLogitLocator.test_minorc                 C   s@   t jdd�}|jrt‚d|_|js&t‚|jdd� |jr<t‚d S )Nr   r!   TFrn   )r$   rÌ   ro   rG   rF   rH   r,   r,   r-   Útest_minor_attrr  s    

z TestLogitLocator.test_minor_attrr�   éýÿÿÿr   c                 C   s    g | ]\}}||kr||f‘qS r,   r,   )r„   ÚaÚbr,   r,   r-   r†   �  s   þzTestLogitLocator.<listcomp>r   )Úrepeatc                 C   s*   t  ¡ }|j|Ž }t|ƒt|ƒks&t‚dS )zd
        Create logit locator, and test the nonsingular method for acceptable
        value
        N)r$   rÌ   ÚnonsingularrË   rG   )r'   rÍ   r+   Zlims2r,   r,   r-   Útest_nonsingular_ok  s    
z$TestLogitLocator.test_nonsingular_okÚokvalc                 C   sŒ   t  ¡ }d| }}| ||¡\}}||ks.t‚d|  k rB|k sHn t‚|d }}| ||¡\}}||ksnt‚||  k r‚dk sˆn t‚dS )zh
        Create logit locator, and test the nonsingular method for non
        acceptable value
        r   r   r   r   N)r$   rÌ   rá   rG   )r'   rã   r+   r(   r)   Zvmin2Zvmax2r,   r,   r-   Útest_nonsingular_nok�  s    

z%TestLogitLocator.test_nonsingular_nokN)r2   r3   r4   Zref_basic_limitsr5   r7   Zref_basic_major_ticksZref_maxn_limitsr8   r9   r:   r£   rÐ   rÔ   rÚ   rÛ   rÜ   Zacceptable_vmin_vmaxÚ	itertoolsÚproductrâ   rä   r,   r,   r,   r-   rÄ     s\   øø
þ


þ
	þþþ
	rÄ   c                   @   s   e Zd Zdd„ ZdS )ÚTestFixedLocatorc                 C   s2   t jtddƒdd�}|jdd� |jdks.t‚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FixedLocatorrØ   rF   r"   rG   )r'   Zfixedr,   r,   r-   rI   ¢  s    z TestFixedLocator.test_set_paramsNr¿   r,   r,   r,   r-   rç   ¡  s   rç   c                   @   s   e Zd Zdd„ ZdS )ÚTestIndexLocatorc                 C   s<   t jddd�}|jddd� |jdks*t‚|jdks8t‚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.
        r<   rY   )rM   Úoffsetr¸   N)r$   ZIndexLocatorrF   rº   rG   rê   )r'   Úindexr,   r,   r-   rI   ®  s    z TestIndexLocator.test_set_paramsNr¿   r,   r,   r,   r-   ré   ­  s   ré   c                   @   s   e Z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.t‚|jdks<t‚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   )rM   Z	linthreshr«   rD   )r¶   r>   N)r$   ZSymmetricalLogLocatorrF   r»   rG   r>   )r'   Úsymr,   r,   r-   rI   »  s    z)TestSymmetricalLogLocator.test_set_paramsNr¿   r,   r,   r,   r-   rì   º  s   rì   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t‚|jdks*t‚|jdks8t‚d S )NgX9´Èv¾@é   )Úlinear_widthr>   r   )r$   ÚAsinhLocatorrð   rG   r>   rM   ©r'   Úlctrr,   r,   r-   Ú	test_initÉ  s    zTestAsinhLocator.test_initc                 C   s>  t jdddddd�}|jdks"t‚|jdks0t‚|jdks>t‚|jdksLt‚|jdd� |jdksft‚| d ¡ |jdks~t‚|jd	d
� |jd	ks˜t‚|jd d
� |jd	ks²t‚|jdd� |jdksÌt‚|jd d� |jdksæt‚|jdd� |jdk�st‚|jd d� |jdk�st‚|jg d� |jd k�s:t‚d S )Nr   é   r”   rY   )r�   g      
@)rð   r>   Ú	symthreshrM   r¶   é   r=   r   )rö   r¸   rL   )r   g     €@rµ   )r$   rñ   r>   rG   rö   rM   r¶   rF   rò   r,   r,   r-   rI   Ï  s8      þ
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   é   r   ©rð   r>   rM   r   r   ç)\�Âõ(ð?r@   r   r`   gB`åÐ"Û¹?ç{®Gáz”?g{®Gáz„¿r‘   gM„O¯„?çü©ñÒMb`?©r$   rñ   r   r&   r5   r7   rò   r,   r,   r-   Útest_linear_valuesî  s    ÿÿÿz#TestAsinhLocator.test_linear_valuesc                 C   sd   t jdddd�}t| dd¡dddd	d
ddddddgƒ t| dd¡dddddddddddgƒ d S )Nr`   rø   r   rù   éœÿÿÿr   éìÿÿÿr   r   çš™™™™™É¿r@   r   r   r   iüÿÿr¥   rÝ   gš™™™™™Ù¿rÊ   r<   ©r$   rñ   r   r&   rò   r,   r,   r-   Útest_wide_valuesø  s*    
     ÿÿ
     ÿÿz!TestAsinhLocator.test_wide_valuesc                 C   s,   t jdddd�}t| dd¡dddgƒ d	S )
z<Check that manually injected zero will supersede nearby tickr   r<   r   rù   gš™™™™™ñ¿rh   g      ð¿r   Nr  rò   r,   r,   r-   Ú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   rø   r=   ée   éf   gq=
×£€Y@r`   rý   rò   r,   r,   r-   Útest_fallback  s    ÿzTestAsinhLocator.test_fallbackc                 C   sŠ   G dd„ dƒ}t jddddd�}||_d|_t|ƒ d	dd
gƒ d|_t|ƒ d	ddgƒ d|_t|ƒ d	ddgƒ d|_t|ƒ dddgƒ d S )Nc                   @   s   e Zd ZdZedd„ ƒZdS )z5TestAsinhLocator.test_symmetrizing.<locals>.DummyAxis)r   r   c                 S   s   | j S ©N)Úbounds)Úclsr,   r,   r-   Úget_view_interval  s    zGTestAsinhLocator.test_symmetrizing.<locals>.DummyAxis.get_view_intervalN)r2   r3   r4   r	  Úclassmethodr  r,   r,   r,   r-   Ú	DummyAxis  s   r  r   r<   r   r   )rð   r>   rö   rM   )r   r   r   r   )r   rh   )g333333ë¿ri   )r   r   ri   r   )r$   rñ   Úaxisr	  r   )r'   r  ró   r,   r,   r-   Útest_symmetrizing  s     ÿz"TestAsinhLocator.test_symmetrizingc                 C   s–   t jddddd�}t| dd¡dd	d
ddddddddddddddddddddddgƒ t jdddd �}t| d!d"¡d#d$d%ddd&dd'ddd(d)d*gƒ d S )+Nr   rD   r   )r   r<   r   )rð   r>   rM   r¶   é’ÿÿÿén   iþÿÿiÔþÿÿrÿ   iÎÿÿÿiâÿÿÿéöÿÿÿr   rÝ   r   ç      à¿r?   r   r   r`   rb   r   r<   r   r   é2   r   i,  éô  r   rù   iæûÿÿi  i�ýÿÿiƒÿÿÿiçÿÿÿr  r@   é   é}   iq  r  )r'   Zlctr10Zlctr5r,   r,   r-   Útest_base_rounding$  sF     ÿ              þÿ     ÿÿz#TestAsinhLocator.test_base_roundingN)r2   r3   r4   rô   rI   rþ   r  r  r  r  r  r,   r,   r,   r-   rî   È  s   

rî   c                   @   sz  e Zd Zddddddddd	d
dddddddddddddddddddgZddgZddgZd d!d"d#d$d%d&d'd(g	Zd)d*gd+d,gd-d.gd/d0gd1d2ggZd3d4d5d6gZe	j
 d7d8d9g¡d:d;„ ƒZe	j
 d<e¡d=d>„ ƒZe	j
 d?e¡d@dA„ ƒZe	j
 dBe¡dCdD„ ƒZdEdF„ ZdGdH„ Ze	j
 dIe¡dJdK„ ƒZe	j
 dLe¡dMdN„ ƒZe	j
 dOe¡dPdQ„ ƒZe	j
 dOe¡dRdS„ ƒZdTdU„ ZdVdW„ ZdXdY„ ZdZS )[ÚTestScalarFormatter)é{   é½   r   )iCÿÿÿi…ÿÿÿr   )i50  i=0  i40  )iÃÏÿÿiËÏÿÿiÌÏÿÿ)g    øiø@g    ¨jø@é † )g    ¨jøÀg    øiøÀé`yþÿ)g    hiø@g    jø@r  )g    jøÀg    hiøÀr  )iOÔ iQÔ iPÔ )i¯+íÿi±+íÿi°+íÿ)r   r   r   )r  r  r   )gì/»'Ý?g”ö_˜LÝ?rd   )g
×£p=š­@g33333Ž­@iÄ  )gš™™™‰æ@g    ø`æ@iÈ¯  )g1Ðµ/ G?gšÃÿgÞ»G?gÖÿ9Ì—G?)g\�Âõh˜È@g¤p=
·—È@i.1  )g      "@g      (@r   )g      Œ@ç     À’@r   )g     °�@r  r   )ç®Gáz®ï?rú   r   )g{®Gáú#@g…ëQ¸$@r   )g�Âõ(\ÿX@gq=
×£ Y@r   )gö(\�Âõ@g
×£p=
@r   )g{®Gáú/@gÃõ(\�0@rÑ   )g!°rh‘íÜ¿ç°rh‘í|ß?r   )g°rh‘í|ß¿r   r   )g3333³È@g    @È@i0  )gffff¦ÈÀgffff¦È@r   TF)Frx   )r§   r   r   F)T©éþÿÿÿr   )r  r   r   F)Tr!  )r   r   r   F)Tr!  )r  éx   r   F)Tr!  )iˆÿÿÿr  r   F)Tr!  )gü©ñÒMbP¿rü   rÝ   F)T)rP   r¸   )g   €tÒÚAg   0ëþArÉ   T)Trx   ©g     jøÀr©   r   F)T)r   r   r$  r   Fr   z0.000g�(í¾0‰?z0.012g°rh‘í|¿?z0.123g®Gáz®ó?z1.230gš™™™™™(@z12.300)r`   ú1e-1)r“   z1.1e-1)g    „×—AZ1e8)g    Þ9šAz1.1e8zunicode_minus, result)Tõ   âˆ’1)Fú-1c                 C   s.   |t jd< t ¡ j ¡  d¡ ¡ |ks*t‚d S )Núaxes.unicode_minusr   )	rU   ÚrcParamsrp   Zgcart   Úget_major_formatterÚformat_data_shortÚstriprG   )r'   Úunicode_minusÚresultr,   r,   r-   Útest_unicode_minust  s
    
ÿÿz&TestScalarFormatter.test_unicode_minuszleft, right, offsetc              	   C   s²   t  ¡ \}}|j ¡ }||kr,tjtdd�ntƒ � | ||¡ W 5 Q R X |j 	¡  |j
|ksbt‚||krxtjtdd�ntƒ � | ||¡ W 5 Q R X |j 	¡  |j
|ks®t‚d S )NzAttempting to set identical©Úmatch)rp   rq   rt   r*  r8   r½   r¾   r   rr   Z_update_ticksrê   rG   )r'   ÚleftÚrightrê   rv   rw   Ú	formatterr,   r,   r-   Útest_offset_value|  s     
ÿÿ
ÿÿ
z%TestScalarFormatter.test_offset_valueÚ
use_offsetc              	   C   sD   t  d|i¡�, t ¡ }|| ¡ ks(t‚|jdks6t‚W 5 Q R X d S )Nzaxes.formatter.useoffsetr   )rU   rV   r$   ÚScalarFormatterÚget_useOffsetrG   rê   )r'   r6  Útmp_formr,   r,   r-   Útest_use_offset�  s    z#TestScalarFormatter.test_use_offsetÚuse_math_textc              	   C   s6   t  d|i¡� t ¡ }|| ¡ ks(t‚W 5 Q R X d S )Núaxes.formatter.use_mathtext)rU   rV   r$   r7  Zget_useMathTextrG   )r'   r;  r9  r,   r,   r-   Útest_useMathText”  s    z$TestScalarFormatter.test_useMathTextc                 C   s0   t  ¡ }| d¡ | ¡ rt‚|jdks,t‚d S )Nr   )r$   r7  Zset_useOffsetr8  rG   rê   ©r'   r9  r,   r,   r-   Útest_set_use_offset_floatš  s    
z-TestScalarFormatter.test_set_use_offset_floatc              	   C   s¢   t  ¡ }|d }|r0|d dd … g t jgfkr:t d¡ t ddi¡�P t ¡ }| 	¡ s^t
‚| ¡  |j dd¡ | d	d
dg¡ ||dƒks”t
‚W 5 Q R X d S )NÚthousands_sepÚgroupingr   zLocale does not apply groupingzaxes.formatter.use_localeTr   r   r   r   r<   rª   )ÚlocaleÚ
localeconvÚCHAR_MAXr8   ÚskiprU   rV   r$   r7  Zget_useLocalerG   Úcreate_dummy_axisr  Zset_data_intervalÚset_locs)r'   ÚconvÚsepr9  r,   r,   r-   Útest_use_locale   s     
z#TestScalarFormatter.test_use_localez.sci_type, scilimits, lim, orderOfMag, fewticksc           	      C   sv   t  ¡ }| |¡ | |¡ t ¡ \}}|j |¡ |j|Ž  |rT|j 	t  
d¡¡ | |j ¡ ¡ ||jksrt‚d S )NrY   )r$   r7  Zset_scientificZset_powerlimitsrp   rq   rœ   Úset_major_formatterr›   Úset_major_locatorr%   rG  Úget_majorticklocsZorderOfMagnituderG   )	r'   Zsci_typeZ	scilimitsr�   Z
orderOfMagZfewticksr9  rv   rw   r,   r,   r-   Útest_scilimits¯  s    


z"TestScalarFormatter.test_scilimitszvalue, expectedc                 C   s(   dt jd< t ¡ }| |¡|ks$t‚d S )NFr(  )rU   r)  r$   r7  Úformat_datarG   )r'   Úvaluer*   Úsfr,   r,   r-   Útest_format_data¾  s    
z$TestScalarFormatter.test_format_datazdata, expectedc                 C   s8   t  ¡ \}}| dd¡ |j ¡ j}||ƒ|ks4t‚d S )Nr   r   )rp   rq   rr   rt   r*  r+  rG   )r'   rS   r*   rv   rw   Úfmtr,   r,   r-   Útest_cursor_precisionÄ  s    z)TestScalarFormatter.test_cursor_precisionc                 C   s\   t  ¡ }| ¡  |j dd¡ |j}||ƒ|ks4t‚|j ¡ dksFt‚|j ¡ dksXt‚d S )Nr   r   rÉ   )	r$   r7  rF  r  Zset_view_intervalr+  rG   Zget_tick_spaceZ
get_minpos)r'   rS   r*   rQ  rS  r,   r,   r-   Útest_cursor_dummy_axisË  s    z*TestScalarFormatter.test_cursor_dummy_axisc              	   C   sX   t j ddddœ¡ tjtdd��, t ¡ \}}| ddd	g¡ |j	 
¡  W 5 Q R X d S )
NZserifÚcmr10F)úfont.familyz
font.serifr<  zcmr10 font should ideallyr0  r   r   r   )rU   r)  Úupdater8   r½   r¾   rp   rq   ry   ÚcanvasÚdrawr²   r,   r,   r-   Útest_mathtext_ticksÖ  s    ýz'TestScalarFormatter.test_mathtext_ticksc              	   C   s˜   t j ddddœ¡ |jtjdd��j t ¡ \}}| ddgd	dg¡ | 	d
¡ ddddg}t
 ¡ }| |t||ƒ¡ |j ¡  |jrŠt‚W 5 Q R X d S )NrV  ÚcmT)rW  zmathtext.fontsetr<  zmatplotlib.mathtext)Úloggerg¸…ëQ¸ž¿r_   é(   r°   rû   rb   rY   r  )rU   r)  rX  Zat_levelÚloggingÚWARNINGrp   rq   Úplotr±   r$   ÚLogFormatterSciNotationZ
set_yticksÚmaprY  rZ  ÚtextrG   )r'   Zcaplogrv   rw   Zyticksr4  r,   r,   r-   Útest_cmr10_substitutionsâ  s    ý

z,TestScalarFormatter.test_cmr10_substitutionsc                 C   s&   t  ¡ }| g ¡ |dƒdks"t‚d S )Nr   Ú )r$   r7  rG  rG   )r'   rQ  r,   r,   r-   Útest_empty_locsô  s    
z#TestScalarFormatter.test_empty_locsN)r2   r3   r4   Úoffset_dataZuse_offset_dataZuseMathText_dataZscilimits_dataZcursor_datarO  r8   r9   r:   r/  r5  r:  r=  r?  rJ  rN  rR  rT  rU  r[  re  rg  r,   r,   r,   r-   r  2  sž   â!÷û	üÿ



 ÿ




r  c                   @   s"   e Zd ZdZd	dd„Zdd„ ZdS )
ÚFakeAxiszAAllow Formatter to be called without having a "full" plot set up.r   r   c                 C   s   || _ || _d S r  ©r(   r)   )r'   r(   r)   r,   r,   r-   Ú__init__ü  s    zFakeAxis.__init__c                 C   s   | j | jfS r  rj  )r'   r,   r,   r-   r     s    zFakeAxis.get_view_intervalN)r   r   )r2   r3   r4   Ú__doc__rk  r  r,   r,   r,   r-   ri  ú  s   
ri  c                   @   sÒ   e Zd Zdde dd¡e dd¡ddddd	d
dgfdde ddejdddg¡edƒddddddgfddejddddged�edƒdd d!d"g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 )-ÚTestLogFormatterExponentTrY   rÝ   r¬   z-3z-2r'  Ú0Ú1Ú2Ú3Fr   r`   r¦   r@   r  gñhãˆµøä¾r   ú0.1z1e-05ú3.14z0.2z-0.2z-1e-05r  r<   r   é   é*   ©ZdtypeÚ5Z12Z42r«   g      @r§   z2labelOnlyBase, exponent, locs, positions, expectedrM   c           	         s\   t j||d�‰ td|| ƒˆ _|| }‡ fdd„t||ƒD ƒ}dd„ |D ƒ}||ksXt‚d S )N©rM   ÚlabelOnlyBaser   c                    s   g | ]\}}ˆ ||ƒ‘qS r,   r,   )r„   r…   Úpos©r4  r,   r-   r†     s     z7TestLogFormatterExponent.test_basic.<locals>.<listcomp>c                 S   s   g | ]}|  d d¡‘qS )ú-u   âˆ’©Úreplace)r„   Úlabelr,   r,   r-   r†     s     )r$   ÚLogFormatterExponentri  r  r£   rG   )	r'   ry  rM   ÚexponentÚlocsZ	positionsr*   ÚvalsÚlabelsr,   r{  r-   r.     s    ÿz#TestLogFormatterExponent.test_basicc                 C   s*   t jddd�}tƒ |_|dƒdks&t‚d S )Nr   Trx  g&üøŽ$ô?rf  )r$   r€  ri  r  rG   )r'   r4  r,   r,   r-   Ú
test_blank  s    z#TestLogFormatterExponent.test_blankN)r2   r3   r4   r5   r7   r6   ÚpirØ   ÚfloatZ
param_dataÚeZ	base_datar8   r9   r:   r.   r…  r,   r,   r,   r-   rm    s&   ÿ ÿ
ÿù ÿ
rm  c                   @   s>   e Zd Ze ¡ Zddddddddg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}}$)r<   r   z$\mathdefault{1}$)r<   r‘   z$\mathdefault{0.01}$)r<   r	   z$\mathdefault{100}$)r<   r
   z$\mathdefault{10^{-3}}$)r<   r¨   z$\mathdefault{10^{3}}$zmin_exponent, value, expectedc              	   C   s0   t  d|i¡� |  |¡|ks"t‚W 5 Q R X d S )Nzaxes.formatter.min_exponent)rU   rV   rS  rG   )r'   Zmin_exponentrP  r*   r,   r,   r-   Útest_min_exponent3  s    z*TestLogFormatterMathtext.test_min_exponentN)r2   r3   r4   r$   ZLogFormatterMathtextrS  Ú	test_datar8   r9   r:   r‹  r,   r,   r,   r-   r‰  &  s   ør‰  c                   @   sR   e Zd Zddddddddd	d
ddddddg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   ç333333ó?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   gñhãˆµøô>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   sH   t j|d�}ddddh|_t ddi¡� ||ƒ|ks:t‚W 5 Q R X d S )NrL   r   r   r   r�  útext.usetexF)r$   rb  ZsublabelrU   rV   rG   )r'   rM   rP  r*   r4  r,   r,   r-   r.   M  s    z&TestLogFormatterSciNotation.test_basicN)r2   r3   r4   rŒ  rU   ÚstyleÚcontextr8   r9   r:   r.   r,   r,   r,   r-   r�  9  s(   ð
r�  c                „   @   sˆ  e Zd Zddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dd€d�d‚dƒd„g„Zej d…e¡d†d‡„ ƒZdœd‰dŠ„Ze	j
 d‹¡dŒd�„ ƒZej dŽd�d�d‘d’g¡d“d”„ ƒZej dŽd•d–d—d˜g¡d™dš„ ƒZd›S )�ÚTestLogFormatter)ç}…9“x ?r
   z3.142e-5)çÜæGÅ·–4?r
   z3.142e-4)ç“à™¶e¼i?r
   z3.142e-3)ç\, ’¿ ?r
   z3.142e-2)çs7¨v/Ô?r
   z3.142e-1)çPERTû!	@r
   ú3.142)ç¤Öf)zj?@r
   z3.142e1)ç&FàYŒ¢s@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
   ro  )r   r
   Ú10)r   r
   Ú100)r¥   r
   Ú1000)é'  r
   Ú1e4)r  r
   Ú1e5)r•  r’   rn  )r–  r’   rn  )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’   rn  )r   r’   rn  )r
   r’   ú0.001)r‘   r’   ú0.01)r`   r’   rr  )r   r’   ro  )r   r’   r¥  )r   r’   r¦  )r¥   r’   r§  )r¨  r’   Ú10000)r  r’   Ú100000)r•  r   rn  )r–  r   rn  )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   rn  )r   r   rn  )r
   r   r³  )r‘   r   r´  )r`   r   rr  )r   r   ro  )r   r   r¥  )r   r   r¦  )r¥   r   r§  )r¨  r   rµ  )r  r   r¶  )r•  r   rn  )r–  r   rn  )r—  r   rn  )r˜  r   z0.03)r™  r   z0.31)rš  r   rs  )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   rn  )r   r   rn  )r
   r   rn  )r‘   r   r´  )r`   r   rr  )r   r   ro  )r   r   r¥  )r   r   r¦  )r¥   r   r§  )r¨  r   rµ  )r  r   r¶  )r•  r   rn  )r–  r   rn  )r—  r   rn  )r˜  r   rn  )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   rn  )r   r   rn  )r
   r   rn  )r‘   r   rn  )r`   r   rr  )r   r   ro  )r   r   r¥  )r   r   r¦  )r¥   r   r§  )r¨  r   rµ  )r  r   r¶  )r•  ç    €„.Az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¸  ro  )r   r¸  r¥  )r   r¸  r¦  )r¥   r¸  r§  )r¨  r¸  r©  )r  r¸  rª  zvalue, domain, expectedc                 C   s$   t  ¡ }| ||¡}||ks t‚d S r  )r$   ÚLogFormatterZ_pprint_valrG   )r'   rP  Údomainr*   rS  r  r,   r,   r-   Útest_pprintÞ  s    zTestLogFormatter.test_pprintr,   c                    sf   |  ¡ ‰ | ¡ }ˆ  |¡ |dt t |¡¡  }‡fdd„|D ƒ}‡ fdd„|D ƒ}||ksbt‚dS )z.Test whether locator marks subs to be labeled.r   c                    s   g | ]}t |ƒˆ k‘qS r,   )Úround)r„   Úcrµ   r,   r-   r†   ê  s     z0TestLogFormatter._sub_labels.<locals>.<listcomp>c                    s   g | ]}ˆ |ƒd k‘qS ©rf  r,   rƒ   ©rS  r,   r-   r†   ë  s     N)Zget_minor_formatterr~   rG  r5   rÖ   r×   rG   )r'   r  r¶   Zminor_tlocsZcoefsZlabel_expectedZ
label_testr,   )rS  r¶   r-   Ú_sub_labelsä  s    
zTestLogFormatter._sub_labelsr�  c                    sV  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¾t‚| j|jg d� | dd¡ | j|jg d� | dd¡ | j|jg d� | dd¡ | j|jddddgd� | dd¡ | j|jtj	ddtd�d� d S )Nr°   r   )rM   r¶   r   T)ry  Fr   g     ˆÃ@c                    s   g | ]}ˆ |ƒd k‘qS r¾  r,   rƒ   r¿  r,   r-   r†   ü  s   ÿz2TestLogFormatter.test_sublabel.<locals>.<listcomp>rµ   i   éP   rD   r<   rY   r   r   rh   rv  )rp   rq   Z
set_xscalert   rL  r$   r­   r{   r5   r7   rK  r¹  Úset_minor_formatterrr   r*  rG  rM  r´   rG   rÀ  rÕ   )r'   rv   rw   Zshow_major_labelsr,   r¿  r-   Útest_sublabelî  s0    

ÿ

ÿzTestLogFormatter.test_sublabelÚvalr   r   r   r¥   c                 C   s(   t  ¡ }tƒ |_||ƒt|ƒks$t‚d S r  )r$   r¹  ri  r  ÚstrrG   ©r'   rÄ  Ztemp_lfr,   r,   r-   Útest_LogFormatter_call  s    z'TestLogFormatter.test_LogFormatter_callg       g       g       g       c                 C   s   t  ¡ }tƒ |_||ƒ d S r  )r$   r¹  ri  r  rÆ  r,   r,   r-   Útest_LogFormatter_call_tiny  s    z,TestLogFormatter.test_LogFormatter_call_tinyN)r,   )r2   r3   r4   Zpprint_datar8   r9   r:   r»  rÀ  rU   r’  r“  rÃ  rÇ  rÈ  r,   r,   r,   r-   r”  V  s   € ü 




%
r”  c                   @   s  e Zd Zedd„ ƒZej ddddddd	g¡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ddddg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k	}|d r0t|d ƒnd}|d dk	rLt|d ƒnd}|d|  }|d sp|d dk	r€|r|d| S |S t  d	| ¡}|r²t|d
 ƒt|d ƒ }}|| S tdƒ‚dS )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)Úrer1  r‡  rÕ   r¯   )Ústringr1  rÊ  ZmantissarË  rP  rÌ  rÍ  r,   r,   r-   Úlogit_deformatter$  s*    ù	 ÿz$TestLogitFormatter.logit_deformatterzfx, x)zSTUFF0.41OTHERSTUFFg=
×£p=Ú?)zSTUFF1.41\cdot10^{-2}OTHERSTUFFgÿ!ýöuàŒ?)zSTUFF1-0.41OTHERSTUFFgâz®Gáâ?)z!STUFF1-1.41\cdot10^{-2}OTHERSTUFFgx$(~Œï?)ZSTUFFN)zSTUFF12.4e-3OTHERSTUFFNc              	   C   sH   |d kr*t  t¡� t |¡ W 5 Q R X nt |¡}t ||¡sDt‚d S r  )r8   r®   r¯   rÉ  rÐ  rÀ   rÁ   rG   )r'   Úfxr…   r•   r,   r,   r-   Útest_logit_deformaterE  s
    
z(TestLogitFormatter.test_logit_deformaterc                 C   s   g | ]}d |  ‘qS )r   r,   ©r„   Úir,   r,   r-   r†   Y  s     zTestLogitFormatter.<listcomp>r   r   c                 C   s   g | ]}d d|   ‘qS )r   r   r,   rÓ  r,   r,   r-   r†   Z  s     r   r…   c                 C   s>   t jdd�}| | j¡ ||ƒ}t |¡}t ||¡s:t‚dS )zj
        Test the formatted value correspond to the value for ideal ticks in
        logit space.
        F©Úuse_overlineN)	r$   ÚLogitFormatterrG  Údecade_testrÉ  rÐ  rÀ   rÁ   rG   )r'   r…   r4  ÚsÚx2r,   r,   r-   r.   ^  s
    
zTestLogitFormatter.test_basic)r   r  r   r   r   r   c                 C   s0   t jdd�}| | j¡ ||ƒ}|dks,t‚dS )zl
        Test that invalid value are formatted with empty string without
        raising exception.
        FrÕ  rf  N)r$   r×  rG  rØ  rG   )r'   r…   r4  rÙ  r,   r,   r-   Útest_invalidj  s    zTestLogitFormatter.test_invalidrP   r¸   c                 C   s”   t jdd�}dD ]~}|d|  dk r| |d|  ||d|  g¡ ||ƒ}||d|  ƒ}t |¡t |¡ }d|  k rˆd| k sn t‚qdS )zS
        The format length should change depending on the neighbor labels.
        FrÕ  )	r   r   r  r   éÈ   r¥   iÐ  iˆ  r¨  r   r   r   N)r$   r×  rG  rÉ  rÐ  rG   )r'   r…   r4  ÚNÚsxZsx1Údr,   r,   r-   Útest_variablelengthu  s     ÿÿz&TestLogitFormatter.test_variablelength)TrÈ   )©r  F)éK   F)TrÆ   )rá  ©râ  T)TrÅ   )©r  Trã  )F)r   gR¸…ëQè?g¤p=
×£è?))r¸   Trä  rã  zmethod, lims, casesc                 C   sœ   |rt jdd�}|j|Ž }n
t |¡}t jdd�}|D ]`\}}| |¡ | |¡}	dd„ |	D ƒ}
|r~t|
ƒdks–t	||fƒ‚q6t|
ƒdks6t	||fƒ‚q6dS )z,
        Test minor/major displays.
        Trn   c                 S   s   g | ]}t |ƒd kr|‘qS r‚   ©r}   ©r„   Úfr,   r,   r-   r†   œ  s      z:TestLogitFormatter.test_minor_vs_major.<locals>.<listcomp>r   N)
r$   rÌ   r&   r5   r6   r×  Zset_minor_thresholdÚformat_ticksr}   rG   )r'   ÚmethodrÍ   ZcasesÚmin_locrÓ   Úmin_formÚ	thresholdZ	has_minorÚ	formattedÚlabelledr,   r,   r-   Útest_minor_vs_major�  s    


z&TestLogitFormatter.test_minor_vs_majorc                 C   sd   t jdd�}t jdd�}| dd¡}dD ]6}| |¡ | |¡}dd„ |D ƒ}t|ƒ|ks(t‚q(dS )	z1
        Test the parameter minor_number
        Trn   r_   r   )r   rY   rD   rÑ   c                 S   s   g | ]}t |ƒd kr|‘qS r‚   rå  ræ  r,   r,   r-   r†   ¬  s      z8TestLogitFormatter.test_minor_number.<locals>.<listcomp>N)r$   rÌ   r×  r&   Zset_minor_numberrè  r}   rG   )r'   rê  rë  rÓ   Zminor_numberrí  rî  r,   r,   r-   Útest_minor_number¢  s    

z$TestLogitFormatter.test_minor_numberc                 C   s`   d}d}d}t jdd�}||ƒ|ks(t‚| d¡ ||ƒ|ksBt‚| d¡ ||ƒ|ks\t‚dS )z1
        Test the parameter use_overline
        r  z$\mathdefault{1-10^{-2}}$z"$\mathdefault{\overline{10^{-2}}}$FrÕ  TN)r$   r×  rG   rÖ  )r'   r…   Zfx1Zfx2Úformr,   r,   r-   Útest_use_overline¯  s    

z$TestLogitFormatter.test_use_overlinec                 C   sP   t  ¡ }d|dƒkst‚| d¡ d|dƒks2t‚| d¡ d|dƒksLt‚dS )z-
        Test the parameter one_half
        z\frac{1}{2}r   z1/2zone halfN)r$   r×  rG   Zset_one_half)r'   rñ  r,   r,   r-   Útest_one_half½  s    

z TestLogitFormatter.test_one_halfrÝ  )r   éý   iò  c                 C   sv   t  dd|¡dd… }t ¡ }|D ]N}| |¡}| d¡rPdt|dd … ƒ }nt|ƒ}t|| ƒd| k s"t‚q"d S )Nr   r   r   z1-r   )	r5   rz   r$   r×  r+  Ú
startswithr‡  ÚabsrG   )r'   rÝ  r‚  rñ  r…   rÑ  rÚ  r,   r,   r-   Útest_format_data_shortÈ  s    

z)TestLogitFormatter.test_format_data_shortN)r2   r3   r4   rÃ   rÐ  r8   r9   r:   rÒ  rË   rØ   rØ  r.   rÛ  r5   Úexprz   rà  Zlims_minor_majorrï  rð  rò  ró  r÷  r,   r,   r,   r-   rÉ  #  sL   
 úþ
ÿþÿ


&
ü
rÉ  c                   @   s   e Zd Zdd„ ZdS )ÚTestFormatStrFormatterc                 C   s   t  d¡}d|dƒkst‚d S )Nz%05dÚ00002r   )r$   ZFormatStrFormatterrG   r>  r,   r,   r-   r.   Ö  s    
z!TestFormatStrFormatter.test_basicN)r2   r3   r4   r.   r,   r,   r,   r-   rù  Õ  s   rù  c                   @   s*   e Zd ZddgZej de¡dd„ ƒZdS )ÚTestStrMethodFormatter)z{x:05d})r   rú  )z{x:03d}-{pos:02d})r   r   z002-01zformat, input, expectedc                 C   s   t  |¡}||Ž |kst‚d S r  )r$   ZStrMethodFormatterrG   )r'   ÚformatÚinputr*   rS  r,   r,   r-   r.   â  s    
z!TestStrMethodFormatter.test_basicN)r2   r3   r4   rŒ  r8   r9   r:   r.   r,   r,   r,   r-   rû  Ü  s
   þrû  c                   @   sX   e Zd Zddddddddd	d
d
ddddddddddddddgZej de¡dd„ ƒZdS )ÚTestEngFormatter)FççÆô„EJ“À)z
-1.23457 kú-1 kz-1.23 k)Trÿ  )u   âˆ’1.23457 kõ   âˆ’1 ku	   âˆ’1.23 k)FçÞƒBÊÀó¿)z-1.23457r'  z-1.23)Tr  )u
   âˆ’1.23457r&  u   âˆ’1.23)Fç_c97Ýš¿¿)z
-123.457 mz-123 mz	-123.46 m)Tr  )u   âˆ’123.457 mu   âˆ’123 mu   âˆ’123.46 m)FçQ^•-':T¿)z
-1.23457 mz-1 mz-1.23 m)Tr  )u   âˆ’1.23457 mu   âˆ’1 mu	   âˆ’1.23 m)Tg       €©rn  rn  z0.00)Tr   r  )Tg›áÀm¶´>)u
   1.23457 Âµu   1 Âµu   1.23 Âµ)Tg_c97Ýš¿?)z	123.457 mz123 mz123.46 m)Tr`   )ú100 mr  z100.00 m)Tr   )ro  ro  z1.00)TgÞƒBÊÀó?)z1.23457ro  z1.23)Tg33333?�@)z999.9ú1 kz999.90)Tg*:’Ëÿ?�@©r  r  ú1.00 k)Fç*:’Ëÿ?�À)r   r   z-1.00 k)Tr
  )r  r  u	   âˆ’1.00 k)Tr¥   r  )Tié  )z1.001 kr  r	  )Ti¡† )z	100.001 kz100 kz100.00 k)Tg¬Z¤$.A)z	987.654 kz988 kz987.65 k)TgîäÜuË�E)ú1230 Yr  z	1230.00 Yzunicode_minus, input, expectedc                    sŽ  |t jd< d‰d‰ |}t ¡ tjdd�tjdd�f}t||ƒD ]\}}||ƒ|ks>t‚q>‡ ‡fdd„|D ƒ}tjˆd	�tjˆdd
�tjˆdd
�f}t||ƒD ]\}}||ƒ|ksœt‚qœdD ]Î‰‡ ‡‡fdd„|D ƒ}tjˆˆd�tjˆdˆd�tjˆdˆd�f}t||ƒD ]\}}||ƒ|k�s
t‚�q
‡fdd„|D ƒ}tjˆd�tjdˆd�tjdˆd�f}t||ƒD ]\}}||ƒ|k�sjt‚�qjqº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(  rÙ  Ú
0123456789r   )Úplacesr   c                 3   s.   | ]&}|d  ˆ kr|d ˆ n|ˆ V  qdS ©r   ú Nr,   ©r„   Z_s)ÚDIGITSÚUNITr,   r-   Ú	<genexpr>1  s   ÿz/TestEngFormatter.test_params.<locals>.<genexpr>)Úunit)r  r  )rf  u   â€¯z@_@c                 3   s6   | ].}|d  ˆ kr|ˆ ˆ n|  dˆ¡ˆ V  qdS r  r}  r  ©r  r  Ú_sepr,   r-   r  A  s   þ)r  rI  )r  r  rI  c                 3   s   | ]}|  d ˆ ¡V  qdS )r  Nr}  r  )r  r,   r-   r  O  s     )rI  )r  rI  N)rp   r)  r$   ÚEngFormatterr£   rG   )r'   r-  rý  r*   Zexp_outputsÚ
formattersZ
_formatterZ_exp_outputr,   r  r-   Útest_params  sH    


ýÿ
ýþý
ýzTestEngFormatter.test_paramsN)r2   r3   r4   Zraw_format_datar8   r9   r:   r  r,   r,   r,   r-   rþ  è  s8   Þ%rþ  c                  C   s�   t  ¡ \} }| dddgdddg¡ | dddg¡ tjdd�tjdd�fD ]>}|j |¡ | j 	¡  dd„ | 
¡ D ƒ}|d	d
dgksLt‚qLd S )Nr   r  r¥   T)Úusetex)ZuseMathTextc                 S   s   g | ]}|  ¡ ‘qS r,   )Zget_text)r„   Zlablr,   r,   r-   r†   a  s     z8test_engformatter_usetex_useMathText.<locals>.<listcomp>z$0$z$500$z$1$ k)rp   rq   ra  ry   r$   r  rt   rK  rY  rZ  Zget_xticklabelsrG   )rv   rw   r4  Zx_tick_label_textr,   r,   r-   Ú$test_engformatter_usetex_useMathTextY  s    

ÿ
r  c                   @   s�   e Zd Zddddddddd	d
ddddddgZdddddddddddddddd gZd!d"d#d$g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  r  z90%)r   r   r  g333333û¿r^  z-2%)r   r   r  g     €V@r   z90.0%)r   r   r  gfffffT@r  z80.1%)r   r   r  g…ëQ¸ŽQ@r  z70.2%)r   r   r  gôýÔxéFNÀr^  z-60.6%)r   Nr  é_   r   z95.00%)r   Nr  r<   r   z300%)ç      1@Nr  r   g      !@z6%)r   Nr  r   gÍÌÌÌÌÌ @z5.9%)r   Nr  rÿ   g�íµ ÷Æ°>z-2000.00000%)r   r   Nr�  r   z120.00)râ  r<   rf  r  r   z66.667)ru  Nz
^^Foobar$$é   rt  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   sB   t  |||¡}tjddid�� | ||¡|ks4t‚W 5 Q R X d S )Nr‘  F©Úrc©r$   ZPercentFormatterrU   rV   Z
format_pctrG   )r'   ZxmaxZdecimalsÚsymbolr…   Zdisplay_ranger*   r4  r,   r,   r-   r.   œ  s    zTestPercentFormatter.test_basiczis_latex, usetex, expectedc              	   C   sB   t jd|d�}tjd|id�� | dd¡|ks4t‚W 5 Q R X d S )Nz\{t}%)r&  Úis_latexr‘  r#  r  r   r%  )r'   r'  r  r*   rS  r,   r,   r-   Ú
test_latex¥  s    zTestPercentFormatter.test_latexN)r2   r3   r4   Zpercent_dataZpercent_idsZ
latex_datar8   r9   r:   r.   r(  r,   r,   r,   r-   r  g  s^   ìíü þ
r  c               	   C   s6   t  ¡ \} }t t¡� |j t ¡ ¡ W 5 Q R X d S r  )	rp   rq   r8   r®   Ú	TypeErrorrt   rK  r$   r­   ©rv   rw   r,   r,   r-   Útest_majformatter_type¬  s    r+  c               	   C   s6   t  ¡ \} }t t¡� |j t ¡ ¡ W 5 Q R X d S r  )	rp   rq   r8   r®   r)  rt   rÂ  r$   r­   r*  r,   r,   r-   Útest_minformatter_type²  s    r,  c               	   C   s6   t  ¡ \} }t t¡� |j t ¡ ¡ W 5 Q R X d S r  )	rp   rq   r8   r®   r)  rt   rL  r$   r¹  r*  r,   r,   r-   Útest_majlocator_type¸  s    r-  c               	   C   s6   t  ¡ \} }t t¡� |j t ¡ ¡ W 5 Q R X d S r  )	rp   rq   r8   r®   r)  rt   r{   r$   r¹  r*  r,   r,   r-   Útest_minlocator_type¾  s    r.  c                     sH   t  ¡ ‰ ‡ fdd„} | dddƒ | dddƒ | dddƒ | dddƒ d S )	Nc              	      sh   | |dœ}t j|d�� ˆ  dd|¡}W 5 Q R X t|j ¡ ƒdk| ksJt‚t|j ¡ ƒdk|ksdt‚d S )N)zxtick.minor.visiblezytick.minor.visibler#  r   r   )rp   rV   Zadd_subplotr}   rt   Úget_minor_ticksrG   rœ   )ZxminorZyminorrÔ  r$  rw   ©rv   r,   r-   ÚminorticksubplotÇ  s    ÿz,test_minorticks_rc.<locals>.minorticksubplotFr   Tr   r<   rY   )rp   Zfigure)r1  r,   r0  r-   Útest_minorticks_rcÄ  s    	r2  z%remove_overlapping_locs, expected_num))Tr   )Nr   )FrÉ   c                 C   sH  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 k	r | |j_|jj}||j ¡ ksºt‚tj|j|d	� |jj}||jjksât‚t|j ¡ ƒ|ksøt‚t|j ¡ ƒ|k�st‚t|j ¡ ƒ|k�s(t‚t|j ¡ ƒ|d
 k�sDt‚d S )Nz
2018-11-03z
2018-11-06Z
datetime64rv  z
%a)r   r   rt  é   z%H:%Mr   )Úremove_overlapping_locsr   )r5   r7   Zonesr}   rp   rq   ra  rt   rL  rU   ÚdatesZ
DayLocatorrK  ZDateFormatterr{   ZHourLocatorrÂ  r/  r4  Zget_remove_overlapping_locsrG   Zsetpr~   Zget_minorticklabelsZget_minorticklines)r4  Zexpected_numÚtr…   rv   rw   ÚcurrentÚnewr,   r,   r-   Útest_remove_overlapÖ  s(    r9  ÚsubÚhiZaardvark)r   r   c              	   C   s.   t  ¡ }t t¡� |j| d� W 5 Q R X d S )Nrµ   )r$   r­   r8   r®   r¯   rF   )r:  Úllr,   r,   r-   Útest_bad_locator_subsû  s    r=  r>   r   r   r<   rÉ   r�  c              	   C   sR   t  ¡ }|j| d� dD ]4}| d|¡}t t | dd¡¡¡dk ¡ st‚qd S )Nr=   )r   r¸   rÉ   rø   r   r  r   r¥   r   r   é–   r   )	r$   r­   rF   r&   r5   Údiffr×   r´   rG   )r>   r<  ÚtoprÓ   r,   r,   r-   Útest_small_range_loglocator  s
    rA  c                  C   s@   t  ¡ } | dƒdkst‚|  d¡dks*t‚|  d¡dks<t‚d S )Nr   rf  )r$   ZNullFormatterrG   rO  r+  r{  r,   r,   r-   Útest_NullFormatter  s    rB  r4  c                 C   s
   d| › �S )Nzval: r,   )rÞ   r,   r,   r-   Ú<lambda>  ó    rC  )ZfooÚbarc                 C   s.   |   ¡ dkst‚|  d¡ |   ¡ dks*t‚d S )Nrf  rU   )Z
get_offsetrG   Zset_offset_stringr{  r,   r,   r-   Útest_set_offset_string  s    
rF  )=Ú
contextlibr   rå   rB  r_  rÎ  Únumpyr5   Znumpy.testingr   r   r8   Z
matplotlibrU   Zmatplotlib.pyplotZpyplotrp   Zmatplotlib.tickerZtickerr$   r   r;   rJ   r]   r¤   r¼   rÀ   rÄ   rç   ré   rì   rî   r  ri  rm  r‰  r�  r”  rÉ  rù  rû  rþ  r  r  r+  r,  r-  r.  r2  r9   r:   r9  Zzerosr=  r’  r“  rA  rB  ZFuncFormatterZFixedFormatterrF  r,   r,   r,   r-   Ú<module>   sz   "g/ j I
" N 3qEÿ
!þ

þ