a
    ëÝEb€Ê  ã                   @   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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.d/„ Z(G d0d1„ d1ƒZ)d2d3„ Z*d4d5„ Z+d6d7„ Z,d8d9„ Z-d:d;„ Z.e
j/ 0d<d=¡d>d?„ ƒZ1e
j/ 0d@dAdBge 2dC¡g¡dDdE„ ƒZ3e
j/ 0dFg dG¢¡ej4 5dH¡dIdJ„ ƒƒZ6dS )Ké    )ÚnullcontextN)Ú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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&õküÂr   g  4&õküBr   r   g�œ&q‰5é   gL“oûñg5g�œ&q‰µéûÿÿÿé   çš™™™™™¹¿çš™™™™™ñ?N)éÿÿÿÿr   r   é   çffffffî?)g      Ð¿r   ç      Ð?ç      à?ç      è?ç      ð?é7   )r   ç      ø?é   r   é
   )r   é   é   é-   é<   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.   ú\/home/ja/django-apps/lartica_env/lib/python3.9/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+   r2   r,   r-   r.   r.   r/   Útest_integer#   s    zTestMaxNLocator.test_integer)Ú__name__Ú
__module__Ú__qualname__ÚnpÚarrayÚarangeZ
basic_dataZinteger_dataÚpytestÚmarkÚparametrizer0   r3   r.   r.   r.   r/   r      s   û	ý
r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestLinearLocatorc                 C   s0   t jdd�}t g d¢¡}t| dd¡|ƒ d S )Né   ©Únumticks)çš™™™™™é¿g333333Ó¿çš™™™™™É?rA   rB   )r&   ÚLinearLocatorr7   r8   r   r(   ©r)   r-   Ú
test_valuer.   r.   r/   r0   *   s    zTestLinearLocator.test_basicc                 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   r?   é   )r   r   )r@   ÚpresetsN)r&   rC   Ú
set_paramsr@   rG   ©r)   r-   r.   r.   r/   Útest_set_params/   s    z!TestLinearLocator.test_set_paramsN)r4   r5   r6   r0   rJ   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   s0   t jdd�}t g d¢¡}t| dd¡|ƒ d S )Nç“V-	@©Úbase)goƒÀÊá"Àç“V-Àg“V-	Àr   rL   ç“V-@goƒÀÊá"@g“V-)@éùÿÿÿr   )r&   ÚMultipleLocatorr7   r8   r   r(   rD   r.   r.   r/   r0   ;   s    zTestMultipleLocator.test_basicc                 C   sP   t  ddi¡�. tjdd�}t| dd¡dƒ W d  ƒ n1 sB0    Y  dS )	z5
        Test basic behavior of view limits.
        úaxes.autolimit_modeÚdatarL   rM   r   r   )r   r   N©ÚmplÚ
rc_contextr&   rR   r   Zview_limitsrI   r.   r.   r/   Útest_view_limitsA   s    z$TestMultipleLocator.test_view_limitsc                 C   sP   t  ddi¡�. tjdd�}t| dd¡dƒ W d  ƒ n1 sB0    Y  dS )	zb
        Test that everything works properly with 'round_numbers' for auto
        limit.
        rS   Zround_numbersrL   rM   éüÿÿÿé   )rO   rP   NrU   rI   r.   r.   r/   Útest_view_limits_round_numbersI   s    z2TestMultipleLocator.test_view_limits_round_numbersc                 C   s,   t jdd�}|jdd� |j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æ?rM   g333333û?N)r&   rR   rH   Z_edgeÚstep)r)   Zmultr.   r.   r/   rJ   R   s    z#TestMultipleLocator.test_set_paramsN)r4   r5   r6   r0   rX   r[   rJ   r.   r.   r.   r/   rK   :   s   	rK   c                	   @   s¸   e Zd Zdd„ Zddg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dS )ÚTestAutoMinorLocatorc                 C   sF   t  ¡ \}}| dd¡ | ¡  t g d¢¡}t|jjdd�|ƒ d S )Nr   ç=
×£p=ö?©çš™™™™™©?çš™™™™™¹?g333333Ã?r   g333333Ó?gffffffÖ?çÍÌÌÌÌÌÜ?r   çš™™™™™á?gÍÌÌÌÌÌä?r\   r   g333333ë?çÍÌÌÌÌÌì?r   gÍÌÌÌÌÌð?r   gffffffò?g      ô?gÍÌÌÌÌÌô?gš™™™™™õ?T©Úminor)	ÚpltÚsubplotsÚset_xlimÚminorticks_onr7   r8   r   ÚxaxisÚget_ticklocs)r)   ÚfigÚaxrE   r.   r.   r/   r0   ]   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sdJ ‚d S )N)r   r   r   r   )rh   ri   rj   Ú
set_xticksr7   Úlinspacerk   rl   Úset_minor_locatorr&   ÚAutoMinorLocatorÚlenÚget_minorticklocs)r)   Znb_majorticksZexpected_nb_minorticksrn   ro   Úxlimsr.   r.   r/   Útest_low_number_of_majorticksl   s    
z2TestAutoMinorLocator.test_low_number_of_majorticks))r   r   )r   rZ   )ç      @r   )r   r   )r   r   c                 C   sV   t  ddi¡�4 dd„ | jD ƒ}tj |t ¡ j¡ W d   ƒ n1 sH0    Y  d S )Nz_internal.classic_modeFc                 S   s   g | ]}|d  ‘qS ©r   r.   ©Ú.0Úxr.   r.   r/   Ú
<listcomp>‚   ó    zKTestAutoMinorLocator.test_using_all_default_major_steps.<locals>.<listcomp>)	rV   rW   Úmajorstep_minordivisionsr7   Ú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^J ‚d S ©Nr   r   )rh   ri   rj   rq   rk   rl   rs   r&   rt   ru   rv   )r)   Z
major_stepZexpected_nb_minordivisionsrn   ro   rw   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`   )ç{®Gázt?ç{®Gáz„?ç¸…ëQ¸Ž?gš™™™™™™?g¸…ëQ¸ž?gìQ¸…ë¡?g
×£p=
§?ra   g)\�Âõ(¬?g¤p=
×£°?gìQ¸…ë±?g333333³?gÃõ(\�Âµ?g
×£p=
·?gR¸…ëQ¸?gáz®Gáº?g)\�Âõ(¼?gq=
×£p½?g      À?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 )
NTrg   Úyr   )Ú	linewidthÚmajorÚk)Úcolorr�   rf   )rh   ri   rk   ÚgridÚset_ylimr   Úyaxisrm   )r)   ÚlimÚrefrn   ro   r.   r.   r/   Útest_additional·   s    
z$TestAutoMinorLocator.test_additionalN)r4   r5   r6   r0   Úparamsr:   r;   r<   rx   r€   r‚   r„   ZlimitsÚ	referenceÚlistÚzipZadditional_datar–   r.   r.   r.   r/   r^   \   s2   þ
ÿ
ér^   c                   @   s$   e Z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 d   ƒ n1 s80    Y  t g d¢¡}t| dd¡|ƒ t jdd	�}t g d
¢¡}t| dd¡|ƒ d S )Nr   r?   r   éè  )çñhãˆµøä>r
   rb   ç      $@ç     @�@ç     jø@g    ÐcAç    eÍÍAr
   g     Ûú@r   rM   )
r   r   ç       @ç      @g       @g      0@g      @@g      P@g      `@g      p@r   r   )	r&   Ú
LogLocatorr:   ÚraisesÚ
ValueErrorr(   r7   r8   r   rD   r.   r.   r/   r0   Ä   s    *zTestLogLocator.test_basicc                 C   sb   t jdd�}t| dd¡g d¢ƒ t jt dd¡d�}d| d	d
¡vsJJ ‚d| d	d
¡vs^J ‚d S )NÚall©Úsubsrc   rd   )g)\�Âõ(Ü?gq=
×£pÝ?g¸…ëQ¸Þ?r   g¤p=
×£à?gHáz®Gá?gìQ¸…ëá?r   r   r   re   r   rž   )r&   r¤   r   r(   r7   r9   rI   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*J ‚|jdks8J ‚|jdksFJ ‚t|jƒdgksZJ ‚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.
        é   rF   r¢   rZ   )r@   Únumdecsr©   rN   N)r&   r¤   rH   r@   r¬   Ú_baser™   Ú_subsrI   r.   r.   r/   rJ   Û   s    zTestLogLocator.test_set_paramsN)r4   r5   r6   r0   rª   rJ   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 d  ƒ n1 s00    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ÚUserWarningrH   rI   r.   r.   r/   rJ   ê   s    zTestNullLocator.test_set_paramsN©r4   r5   r6   rJ   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)r7   ÚiscloseÚlog)r}   rŒ   r.   r.   r/   r´   õ   s    ÿÿ
ÿÿ6ÿz_LogitHelper.isclosec                 C   sŠ   t  | ¡}t  |¡}t  |dk¡r0t  |dk ¡s4J ‚t  |dk¡rPt  |dk ¡sTJ ‚t  d| d ¡ }t  d| d ¡ }t||ƒ d S rƒ   )r7   r8   r§   rµ   r   )r}   rŒ   ro   ZayÚlxZlyr.   r.   r/   r   ú   s    

  z _LogitHelper.assert_almost_equalN)r4   r5   r6   Ústaticmethodr´   r   r.   r.   r.   r/   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)©ra   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>   rZ   r   r   r«   rF   é	   ))gš™™™™™Ù?g333333ã?)ra   rB   )gš™™™™™é?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-   r.   r.   r/   Útest_basic_major  s    ÿþz!TestLogitLocator.test_basic_majorrÀ   c                 C   sx   t jdd�}t jdg d¢d�}dD ]P}|j|d� |j|d� |j|Ž }|j|Ž }|j|jksbJ ‚||k ¡ s"J ‚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$   r2   )rZ   rF   é   N)r&   r¿   r'   rH   r(   Úshaper§   )r)   rÀ   r-   Zmaxn_locr$   ÚticksZ
maxn_ticksr.   r.   r/   Ú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s:J ‚q:dS )zB
        Assert logit locator for respecting nbins param.
        r   r   r   r   r#   r   N)
Úintr7   ÚfloorÚlog10r&   r¿   ÚrangerH   ru   r(   )r)   rÀ   Úbasic_neededr-   r$   r.   r.   r/   Ú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 ]v}|j|d� |j|d� |j|Ž }|j|Ž }	t|ƒt|ƒkr¤t|ƒd d	 t|	ƒk s¼J ‚qFt t g |¢|	¢ƒ|¡ qFd
S )zt
        In large scale, test the presence of minor,
        and assert no minor when major are subsampled.
        r   r   r   r#   T)r$   rg   r   r   r   N)	r¾   ru   r&   r¿   rË   rH   r(   r³   r   )
r)   rÀ   rÁ   rÂ   rÌ   r-   Z	minor_locr$   Zmajor_ticksZminor_ticksr.   r.   r/   Ú
test_minorK  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#   TFrf   )r&   r¿   rg   rH   rI   r.   r.   r/   Útest_minor_attrh  s    

z TestLogitLocator.test_minor_attrry   éýÿÿÿr   c                 C   s    g | ]\}}||kr||f‘qS r.   r.   )r|   ÚaÚbr.   r.   r/   r~   w  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lims2r.   r.   r/   Útest_nonsingular_oku  s    
z$TestLogitLocator.test_nonsingular_okÚokvalc                 C   sŒ   t  ¡ }d| }}| ||¡\}}||ks.J ‚d|  k rB|k sHn J ‚|d }}| ||¡\}}||ksnJ ‚||  k r‚dk sˆn 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vmax2r.   r.   r/   Útest_nonsingular_nok†  s    

z%TestLogitLocator.test_nonsingular_nokN)r4   r5   r6   Zref_basic_limitsr7   r9   Zref_basic_major_ticksZref_maxn_limitsr:   r;   r<   rš   rÃ   rÇ   rÍ   rÎ   rÏ   Zacceptable_vmin_vmaxÚ	itertoolsÚproductrÕ   r×   r.   r.   r.   r/   r¸     sP   øþ


þ
ÿþþþ
	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.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FixedLocatorrË   rH   r$   )r)   Úfixedr.   r.   r/   rJ   ˜  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*J ‚|jdks8J ‚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>   rZ   )rN   Úoffsetr«   N)r&   ZIndexLocatorrH   r­   rÞ   )r)   Úindexr.   r.   r/   rJ   ¤  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.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   )rN   Z	linthreshr¢   rF   )r©   r@   N)r&   ZSymmetricalLogLocatorrH   r®   r@   )r)   Úsymr.   r.   r/   rJ   ±  s    z)TestSymmetricalLogLocator.test_set_paramsNr²   r.   r.   r.   r/   rà   °  s   rà   c                   @   sÞ   e Zd Zg d¢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ej 	dddg¡dd„ ƒZ
ej 	de¡dd„ ƒZej 	de¡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d$d%„ Zd&S )'Ú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Ý?rc   )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®ï?g)\�Âõ(ð?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)	)Frp   )rž   r   r   F)T©éþÿÿÿr   )iöÿÿÿr   r   F)Trê   )iìÿÿÿr   r   F)Trê   )i’ÿÿÿéx   r   F)Trê   )iˆÿÿÿén   r   F)Trê   )gü©ñÒMbP¿gü©ñÒMb`?rÐ   F)T)rQ   r«   )g   €tÒÚAg   0ëþAr½   T)Trp   ©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.300zunicode_minus, result)Tõ   âˆ’1)Fú-1c                 C   s.   |t jd< t ¡ j ¡  d¡ ¡ |ks*J ‚d S )Núaxes.unicode_minusr   )rV   ÚrcParamsrh   Zgcarl   Úget_major_formatterÚformat_data_shortÚstrip)r)   Úunicode_minusÚresultr.   r.   r/   Útest_unicode_minus÷  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 sT0    Y  |j 	¡  |j
|ksvJ ‚||krŒtjtdd�ntƒ � | ||¡ W d   ƒ n1 s´0    Y  |j 	¡  |j
|ksÖJ ‚d S )NzAttempting to set identical©Úmatch)rh   ri   rl   ró   r:   r°   r±   r   rj   Z_update_ticksrÞ   )r)   ÚleftÚrightrÞ   rn   ro   Ú	formatterr.   r.   r/   Útest_offset_valueÿ  s     
ÿÿ*
ÿÿ*
z%TestScalarFormatter.test_offset_valueÚ
use_offsetc                 C   sJ   t  d|i¡�( t ¡ }|| ¡ ks(J ‚W d   ƒ n1 s<0    Y  d S )Nzaxes.formatter.useoffset)rV   rW   r&   ÚScalarFormatterZget_useOffset)r)   rÿ   Útmp_formr.   r.   r/   Útest_use_offset  s    z#TestScalarFormatter.test_use_offsetc                 C   s´   t  ¡ }|d }|r0|d dd … g t jgfv r:t d¡ t ddi¡�X t ¡ }| 	¡ s^J ‚| 
¡  |j dd¡ | g d	¢¡ ||d
ƒv s’J ‚W d   ƒ n1 s¦0    Y  d S )NÚthousands_sepÚgroupingr   zLocale does not apply groupingzaxes.formatter.use_localeTr   r   )r   r   r>   r¡   )ÚlocaleÚ
localeconvÚCHAR_MAXr:   ÚskiprV   rW   r&   r   Zget_useLocaleÚcreate_dummy_axisÚaxisZset_data_intervalÚset_locs)r)   ÚconvÚsepr  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srJ ‚d S )NrZ   )r&   r   Zset_scientificZset_powerlimitsrh   ri   r“   Úset_major_formatterr’   Úset_major_locatorr'   r  Úget_majorticklocsZorderOfMagnitude)	r)   Zsci_typeZ	scilimitsr”   Z
orderOfMagZfewticksr  rn   ro   r.   r.   r/   Útest_scilimits%  s    


z"TestScalarFormatter.test_scilimitszdata, expectedc                 C   s8   t  ¡ \}}| dd¡ |j ¡ j}||ƒ|ks4J ‚d S )Nr   r   )rh   ri   rj   rl   ró   rô   )r)   rT   r,   rn   ro   Úfmtr.   r.   r/   Útest_cursor_precision4  s    z)TestScalarFormatter.test_cursor_precisionc                 C   s8   t  ¡ }| ¡  |j dd¡ |j}||ƒ|ks4J ‚d S )Nr   r   )r&   r   r	  r
  Zset_view_intervalrô   )r)   rT   r,   Zsfr  r.   r.   r/   Útest_cursor_dummy_axis;  s
    z*TestScalarFormatter.test_cursor_dummy_axisc                 C   sj   t j ddddœ¡ tjtdd��4 t ¡ \}}| g d¢¡ |j	 
¡  W d   ƒ n1 s\0    Y  d S )NZserifZcmr10F)zfont.familyz
font.serifzaxes.formatter.use_mathtextzcmr10 font should ideallyrù   )r   r   r   )rV   rò   Úupdater:   r°   r±   rh   ri   rq   ÚcanvasÚdraw)r)   rn   ro   r.   r.   r/   Útest_mathtext_ticksD  s    ýz'TestScalarFormatter.test_mathtext_ticksN)r4   r5   r6   Úoffset_dataZuse_offset_dataZscilimits_dataZcursor_datar:   r;   r<   rø   rþ   r  r  r  r  r  r  r.   r.   r.   r/   râ   ¾  s6   !ûÿ


ÿ


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 ©N©r*   r+   )r)   r*   r+   r.   r.   r/   Ú__init__S  s    zFakeAxis.__init__c                 C   s   | j | jfS r  r  )r)   r.   r.   r/   Úget_view_intervalW  s    zFakeAxis.get_view_intervalN)r   r   )r4   r5   r6   Ú__doc__r  r  r.   r.   r.   r/   r  Q  s   
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 )ÚTestLogFormatterExponentTrZ   rÐ   r£   )z-3z-2rð   Ú0Ú1Ú2Ú3Fr   rb   r�   rB   gš™™™™™É¿gñhãˆµøä¾r   )ú0.1z1e-05ú3.14z0.2z-0.2z-1e-05é2   )r>   r   é   é*   ©Zdtype)r%  Ú5Z12Z42r¢   g      @rž   z2labelOnlyBase, exponent, locs, positions, expectedrN   c           	         sN   t j||d�‰ td|| ƒˆ _|| }‡ fdd„t||ƒD ƒ}||ksJJ ‚d S )N©rN   ÚlabelOnlyBaser   c                    s   g | ]\}}ˆ ||ƒ‘qS r.   r.   )r|   r}   Úpos©rý   r.   r/   r~   r  r   z7TestLogFormatterExponent.test_basic.<locals>.<listcomp>)r&   ÚLogFormatterExponentr  r
  rš   )	r)   r.  rN   ÚexponentÚlocsZ	positionsr,   ÚvalsÚlabelsr.   r0  r/   r0   i  s    ÿz#TestLogFormatterExponent.test_basicc                 C   s*   t jddd�}tƒ |_|dƒdks&J ‚d S )Nr   Tr-  g&üøŽ$ô?Ú )r&   r1  r  r
  )r)   rý   r.   r.   r/   Ú
test_blanku  s    z#TestLogFormatterExponent.test_blankN)r4   r5   r6   r7   r9   r8   ÚpirË   ÚfloatZ
param_dataÚeZ	base_datar:   r;   r<   r0   r7  r.   r.   r.   r/   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}}$)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   sD   t  d|i¡�" |  |¡|ks"J ‚W d   ƒ n1 s60    Y  d S )Nzaxes.formatter.min_exponent)rV   rW   r  )r)   Zmin_exponentÚvaluer,   r.   r.   r/   Útest_min_exponent‰  s    z*TestLogFormatterMathtext.test_min_exponentN)r4   r5   r6   r&   ZLogFormatterMathtextr  Ú	test_datar:   r;   r<   r>  r.   r.   r.   r/   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   ç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   sX   t j|d�}h d£|_t ddi¡�  ||ƒ|ks6J ‚W d   ƒ n1 sJ0    Y  d S )NrM   >   r   r   r   rB  útext.usetexF)r&   ZLogFormatterSciNotationZsublabelrV   rW   )r)   rN   r=  r,   rý   r.   r.   r/   r0   £  s    
z&TestLogFormatterSciNotation.test_basicN)r4   r5   r6   r?  rV   ÚstyleÚcontextr:   r;   r<   r0   r.   r.   r.   r/   r@  �  s   
r@  c                   @   s|   e Zd Zg d¢Zej de¡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)ç“à™¶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)rb   r
   ú1e-1)r   r
   r#  )r   r
   Ú10)r   r
   Ú100)rœ   r
   Ú1000)é'  r
   Ú1e4)rå   r
   Ú1e5)rH  r‹   r"  )rI  r‹   r"  )rJ  r‹   ú0.003)rK  r‹   ú0.031)rL  r‹   ú0.314)rM  r‹   rN  )rO  r‹   ú31.416)rP  r‹   ú314.159)rQ  r‹   ú3141.593)rR  r‹   ú	31415.927)rS  r‹   ú
314159.265)r�   r‹   r"  )r   r‹   r"  )r
   r‹   ú0.001)rŠ   r‹   ú0.01)rb   r‹   r&  )r   r‹   r#  )r   r‹   rY  )r   r‹   rZ  )rœ   r‹   r[  )r\  r‹   Ú10000)rå   r‹   Ú100000)rH  r   r"  )rI  r   r"  )rJ  r   r_  )rK  r   r`  )rL  r   ra  )rM  r   rN  )rO  r   rb  )rP  r   rc  )rQ  r   rd  )rR  r   re  )rS  r   rf  )r�   r   r"  )r   r   r"  )r
   r   rg  )rŠ   r   rh  )rb   r   r&  )r   r   r#  )r   r   rY  )r   r   rZ  )rœ   r   r[  )r\  r   ri  )rå   r   rj  )rH  r   r"  )rI  r   r"  )rJ  r   r"  )rK  r   z0.03)rL  r   z0.31)rM  r   r'  )rO  r   z31.42)rP  r   z314.16)rQ  r   z3141.59)rR  r   z31415.93)rS  r   z	314159.27)r�   r   r"  )r   r   r"  )r
   r   r"  )rŠ   r   rh  )rb   r   r&  )r   r   r#  )r   r   rY  )r   r   rZ  )rœ   r   r[  )r\  r   ri  )rå   r   rj  )rH  r   r"  )rI  r   r"  )rJ  r   r"  )rK  r   r"  )rL  r   z0.3)rM  r   ú3.1)rO  r   z31.4)rP  r   z314.2)rQ  r   z3141.6)rR  r   z31415.9)rS  r   z314159.3)r�   r   r"  )r   r   r"  )r
   r   r"  )rŠ   r   r"  )rb   r   r&  )r   r   r#  )r   r   rY  )r   r   rZ  )rœ   r   r[  )r\  r   ri  )rå   r   rj  )rH  ç    €„.Az3.1e-5)rI  rl  z3.1e-4)rJ  rl  z3.1e-3)rK  rl  z3.1e-2)rL  rl  z3.1e-1)rM  rl  rk  )rO  rl  z3.1e1)rP  rl  z3.1e2)rQ  rl  z3.1e3)rR  rl  z3.1e4)rS  rl  z3.1e5)r�   rl  rT  )r   rl  rU  )r
   rl  rV  )rŠ   rl  rW  )rb   rl  rX  )r   rl  r#  )r   rl  rY  )r   rl  rZ  )rœ   rl  r[  )r\  rl  r]  )rå   rl  r^  zvalue, domain, expectedc                 C   s$   t  ¡ }| ||¡}||ks J ‚d S r  )r&   ÚLogFormatterZ_pprint_val)r)   r=  Údomainr,   r  Úlabelr.   r.   r/   Útest_pprint4  s    zTestLogFormatter.test_pprintr.   c                    sf   |  ¡ ‰ | ¡ }ˆ  |¡ |dt t |¡¡  }‡fdd„|D ƒ}‡ fdd„|D ƒ}||ksbJ ‚dS )z.Test whether locator marks subs to be labeled.r   c                    s   g | ]}t |ƒˆ v ‘qS r.   )Úround)r|   Úcr¨   r.   r/   r~   @  r   z0TestLogFormatter._sub_labels.<locals>.<listcomp>c                    s   g | ]}ˆ |ƒd k‘qS ©r6  r.   r{   ©r  r.   r/   r~   A  r   N)Zget_minor_formatterrv   r  r7   rÉ   rÊ   )r)   r
  r©   Zminor_tlocsZcoefsZlabel_expectedZ
label_testr.   )r  r©   r/   Ú_sub_labels:  s    
zTestLogFormatter._sub_labelsrC  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   )rN   r©   r   T)r.  Fr   g     ˆÃ@c                    s   g | ]}ˆ |ƒd k‘qS rs  r.   r{   rt  r.   r/   r~   R  s   ÿz2TestLogFormatter.test_sublabel.<locals>.<listcomp>r¨   i   éP   rF   )r   r>   rZ   r   r   re   r+  )rh   ri   Z
set_xscalerl   r  r&   r¤   rs   r7   r9   r  rm  Úset_minor_formatterrj   ró   r  r  r§   ru  rÈ   )r)   rn   ro   Zshow_major_labelsr.   rt  r/   Útest_sublabelD  s0    

ÿ

ÿzTestLogFormatter.test_sublabelÚval)r   r   r   rœ   c                 C   s(   t  ¡ }tƒ |_||ƒt|ƒks$J ‚d S r  )r&   rm  r  r
  Ústr©r)   ry  Ztemp_lfr.   r.   r/   Útest_LogFormatter_callj  s    z'TestLogFormatter.test_LogFormatter_call)g       g       g       g       c                 C   s   t  ¡ }tƒ |_||ƒ d S r  )r&   rm  r  r
  r{  r.   r.   r/   Útest_LogFormatter_call_tinyq  s    z,TestLogFormatter.test_LogFormatter_call_tinyN)r.   )r4   r5   r6   Zpprint_datar:   r;   r<   rp  ru  rV   rE  rF  rx  r|  r}  r.   r.   r.   r/   rG  ¬  s    




%
rG  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 r0t|d ƒnd}|d durLt|d ƒnd}|d|  }|d sp|d du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)Úrerú   r9  rÈ   r¦   )Ústringrú   r  Zmantissar€  r=  r�  r‚  r.   r.   r/   Úlogit_deformatterz  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   s\   |d u r>t  t¡� t |¡ W d   ƒ qX1 s20    Y  nt |¡}t ||¡sXJ ‚d S r  )r:   r¥   r¦   r~  r…  r³   r´   )r)   Úfxr}   rŒ   r.   r.   r/   Útest_logit_deformater›  s
    *
z(TestLogitFormatter.test_logit_deformaterc                 C   s   g | ]}d |  ‘qS )r   r.   ©r|   Úir.   r.   r/   r~   ¯  r   zTestLogitFormatter.<listcomp>r   r   c                 C   s   g | ]}d d|   ‘qS )r   r   r.   rˆ  r.   r.   r/   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Úx2r.   r.   r/   r0   ´  s
    
zTestLogitFormatter.test_basic)r   g      à¿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.
        FrŠ  r6  N)r&   rŒ  r  r�  )r)   r}   rý   rŽ  r.   r.   r/   Útest_invalidÀ  s    zTestLogitFormatter.test_invalidrQ   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 J ‚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Œ  r  r~  r…  )r)   r}   rý   ÚNÚsxZsx1Údr.   r.   r/   Útest_variablelengthË  s     ÿÿz&TestLogitFormatter.test_variablelength))Tr¼   )©é   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–J ||fƒ‚q6t|
ƒdks6J ||fƒ‚q6dS )z,
        Test minor/major displays.
        Trf   c                 S   s   g | ]}t |ƒd kr|‘qS rz   ©ru   ©r|   Úfr.   r.   r/   r~   ò  r   z:TestLogitFormatter.test_minor_vs_major.<locals>.<listcomp>r   N)	r&   r¿   r(   r7   r8   rŒ  Zset_minor_thresholdÚformat_ticksru   )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(J ‚q(dS )	z1
        Test the parameter minor_number
        Trf   ra   r   )r   rZ   rF   rÄ   c                 S   s   g | ]}t |ƒd kr|‘qS rz   r›  rœ  r.   r.   r/   r~     r   z8TestLogitFormatter.test_minor_number.<locals>.<listcomp>N)r&   r¿   rŒ  r(   Zset_minor_numberrž  ru   )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(J ‚| d¡ ||ƒ|ksBJ ‚| d¡ ||ƒ|ks\J ‚dS )z1
        Test the parameter use_overline
        rè   z$\mathdefault{1-10^{-2}}$z"$\mathdefault{\overline{10^{-2}}}$FrŠ  TN)r&   rŒ  r‹  )r)   r}   Zfx1Zfx2Úformr.   r.   r/   Útest_use_overline  s    

z$TestLogitFormatter.test_use_overlinec                 C   sP   t  ¡ }d|dƒv sJ ‚| d¡ d|dƒv s2J ‚| d¡ d|dƒv sLJ ‚dS )z-
        Test the parameter one_half
        z\frac{1}{2}r   z1/2zone halfN)r&   rŒ  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"J ‚q"d S )Nr   r   r   z1-r   )r7   rr   r&   rŒ  rô   Ú
startswithr9  Úabs)r)   r’  r3  r§  r}   r†  r�  r.   r.   r/   Útest_format_data_short  s    

z)TestLogitFormatter.test_format_data_shortN)r4   r5   r6   r·   r…  r:   r;   r<   r‡  r¾   rË   r�  r0   r�  r7   Úexprr   r•  Zlims_minor_majorr¥  r¦  r¨  r©  r­  r.   r.   r.   r/   r~  y  s8   
 þ
ÿþÿ


&

r~  c                   @   s   e Zd Zdd„ ZdS )ÚTestFormatStrFormatterc                 C   s   t  d¡}d|dƒksJ ‚d S )Nz%05dÚ00002r   )r&   ZFormatStrFormatter)r)   r  r.   r.   r/   r0   ,  s    
z!TestFormatStrFormatter.test_basicN)r4   r5   r6   r0   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J ‚d S r  )r&   ZStrMethodFormatter)r)   ÚformatÚinputr,   r  r.   r.   r/   r0   8  s    
z!TestStrMethodFormatter.test_basicN)r4   r5   r6   r?  r:   r;   r<   r0   r.   r.   r.   r/   r±  2  s
   þr±  c                   @   s*   e Zd Zg d¢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       €©r"  r"  z0.00©Tr   r»  r¼  )Tg›áÀm¶´>)u
   1.23457 Âµu   1 Âµu   1.23 Âµ)Tg_c97Ýš¿?)z	123.457 mz123 mz123.46 m)Trb   )ú100 mr½  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*:’Ëÿ?�@©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>J ‚q>‡ ‡fdd„|D ƒ}tjˆd	�tjˆdd
�tjˆdd
�f}t||ƒD ]\}}||ƒ|ksœJ ‚qœdD ]Î‰‡ ‡‡fdd„|D ƒ}tjˆˆd�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�sjJ ‚�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  ˆ v r|d ˆ n|ˆ V  qdS ©r   ú Nr.   ©r|   Z_s)ÚDIGITSÚUNITr.   r/   Ú	<genexpr>‡  s   ÿz/TestEngFormatter.test_params.<locals>.<genexpr>)Úunit)rË  rÄ  )r6  u   â€¯z@_@c                 3   s6   | ].}|d  ˆ v r|ˆ ˆ n|  dˆ¡ˆ V  qdS rÅ  ©ÚreplacerÇ  ©rÈ  rÉ  Ú_sepr.   r/   rÊ  —  s   þ)rË  r  )rË  rÄ  r  c                 3   s   | ]}|  d ˆ ¡V  qdS )rÆ  NrÌ  rÇ  )rÏ  r.   r/   rÊ  ¥  r   )r  )rÄ  r  N)rh   rò   r&   ÚEngFormatterrš   )r)   rö   r³  r,   Zexp_outputsÚ
formattersZ
_formatterZ_exp_outputr.   rÎ  r/   Útest_paramsg  sH    


ýÿ
ýþý
ýzTestEngFormatter.test_paramsN)r4   r5   r6   Zraw_format_datar:   r;   r<   rÒ  r.   r.   r.   r/   r´  >  s   %r´  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sFJ ‚qFd S )N)r   iô  rœ   T)Úusetex)ZuseMathTextc                 S   s   g | ]}|  ¡ ‘qS r.   )Zget_text)r|   Zlablr.   r.   r/   r~   ·  r   z8test_engformatter_usetex_useMathText.<locals>.<listcomp>)z$0$z$500$z$1$ k)rh   ri   Úplotrq   r&   rÐ  rl   r  r  r  Zget_xticklabels)rn   ro   rý   Zx_tick_label_textr.   r.   r/   Ú$test_engformatter_usetex_useMathText¯  s    

ÿ
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Ø  r(  z90%)r   r   r×  g333333û¿é(   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×  iœÿÿÿg�íµ ÷Æ°>z-2000.00000%)r   r   NrB  r   z120.00)r˜  r>   r6  r(  r   z66.667)r*  Nz
^^Foobar$$é   r)  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)Úidsc                 C   sV   t  |||¡}tjddid��$ | ||¡|ks4J ‚W d   ƒ n1 sH0    Y  d S )NrD  F©Úrc©r&   ZPercentFormatterrV   rW   Z
format_pct)r)   ZxmaxZdecimalsÚsymbolr}   Zdisplay_ranger,   rý   r.   r.   r/   r0   ò  s    zTestPercentFormatter.test_basiczis_latex, usetex, expectedc                 C   sV   t jd|d�}tjd|id��$ | dd¡|ks4J ‚W d   ƒ n1 sH0    Y  d S )Nz\{t}%)râ  Úis_latexrD  rß  r(  r   rá  )r)   rã  rÓ  r,   r  r.   r.   r/   Ú
test_latexû  s    zTestPercentFormatter.test_latexN)r4   r5   r6   Zpercent_dataZpercent_idsZ
latex_datar:   r;   r<   r0   rä  r.   r.   r.   r/   rÖ  ½  s   þ
rÖ  c                  C   sJ   t  ¡ \} }t t¡�  |j t ¡ ¡ W d   ƒ n1 s<0    Y  d S r  )	rh   ri   r:   r¥   Ú	TypeErrorrl   r  r&   r¤   ©rn   ro   r.   r.   r/   Útest_majformatter_type  s    rç  c                  C   sJ   t  ¡ \} }t t¡�  |j t ¡ ¡ W d   ƒ n1 s<0    Y  d S r  )	rh   ri   r:   r¥   rå  rl   rw  r&   r¤   ræ  r.   r.   r/   Útest_minformatter_type  s    rè  c                  C   sJ   t  ¡ \} }t t¡�  |j t ¡ ¡ W d   ƒ n1 s<0    Y  d S r  )	rh   ri   r:   r¥   rå  rl   r  r&   rm  ræ  r.   r.   r/   Útest_majlocator_type  s    ré  c                  C   sJ   t  ¡ \} }t t¡�  |j t ¡ ¡ W d   ƒ n1 s<0    Y  d S r  )	rh   ri   r:   r¥   rå  rl   rs   r&   rm  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                    s|   | |dœ}t j|d�� ˆ  dd|¡}W d   ƒ n1 s:0    Y  t|j ¡ ƒdk| ks^J ‚t|j ¡ ƒdk|ksxJ ‚d S )N)zxtick.minor.visiblezytick.minor.visiblerß  r   r   )rh   rW   Zadd_subplotru   rl   Úget_minor_ticksr“   )ZxminorZyminorr‰  rà  ro   ©rn   r.   r/   Úminorticksubplot  s    ÿ,z,test_minorticks_rc.<locals>.minorticksubplotFr   Tr   r>   rZ   )rh   Úfigure)rí  r.   rì  r/   Útest_minorticks_rc  s    	rï  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 ur | |j_|jj}||j ¡ ksºJ ‚tj|j|d	� |jj}||jjksâJ ‚t|j ¡ ƒ|ksøJ ‚t|j ¡ ƒ|k�sJ ‚t|j ¡ ƒ|k�s(J ‚t|j ¡ ƒ|d
 k�sDJ ‚d S )Nz
2018-11-03z
2018-11-06Z
datetime64r+  z
%a)r   r   r)  é   z%H:%Mr   )Úremove_overlapping_locsr   )r7   r9   Zonesru   rh   ri   rÔ  rl   r  rV   ÚdatesZ
DayLocatorr  ZDateFormatterrs   ZHourLocatorrw  rë  rñ  Zget_remove_overlapping_locsZsetprv   Zget_minorticklabelsZget_minorticklines)rñ  Zexpected_numÚtr}   rn   ro   ÚcurrentÚnewr.   r.   r/   Útest_remove_overlap,  s(    rö  ÚsubÚhiZaardvark)r   r   c                 C   s@   t  ¡ }t t¡� | | ¡ W d   ƒ n1 s20    Y  d S r  )r&   r¤   r:   r¥   r¦   r©   )r÷  Úllr.   r.   r/   Útest_bad_locator_subsQ  s    rú  r@   )r   r   r>   r½   rC  c              	   C   sR   t  ¡ }|j| d� dD ]4}| d|¡}t t | dd¡¡¡dk ¡ sJ ‚qd S )Nr?   )r   r«   r½   é   r   r(  r   rœ   r   r   é–   r   )r&   r¤   rH   r(   r7   ÚdiffrÊ   r§   )r@   rù  ÚtoprÆ   r.   r.   r/   Útest_small_range_loglocatorZ  s
    rÿ  )7Ú
contextlibr   rØ   r  rƒ  Únumpyr7   Znumpy.testingr   r   r:   Z
matplotlibrV   Zmatplotlib.pyplotZpyplotrh   Zmatplotlib.tickerZtickerr&   r   r=   rK   r^   r›   r¯   r³   r¸   rÚ   rÝ   rà   râ   r  r!  r;  r@  rG  r~  r¯  r±  r´  rÕ  rÖ  rç  rè  ré  rê  rï  r;   r<   rö  Zzerosrú  rE  rF  rÿ  r.   r.   r.   r/   Ú<module>   sj   "g&  
! N 3qEÿ
!þ

