U
    Âmœdp  ã                   @   sÀ   d Z ddl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	 ddl
mZmZ ddd	„Zej d
ddddddejdddeegd�dejddded�g	¡dd„ ƒZej dddg¡dd„ ƒZdS )z
Test output reproducibility.
é    N)Úpyplot)Úneeds_ghostscriptÚneeds_usetexÚmhiÚpdfFc                 C   s@  t  |¡ t j d|dœ¡ t ¡ }d| kr°| ddd¡}tdƒ}|j|dgd dd� |j|d	gd d
d� |j|dgd dd� |j|dgd dd� |j|dgd dd� d| k�r8| ddd	¡}| 	tddƒtddƒ¡|j	tddƒdgd tddƒd� }| 
ddddg¡ d}t||ƒD ]\}	}
|	 |
¡ �q"d| k�rÞdd	dgd	ddgddd	gg}| ddd¡j|dd� ddd	gdd	dgddd	gg}| ddd¡j|dd� d	ddgdd	dgd	ddgg}| ddd¡j|dd� tdƒ}| ddd¡}| ||¡ | d¡ | d¡ | d¡ ttjdtjƒ}|j||d� d S ) NZasdf)zsvg.hashsaltztext.usetexÚmé   é   é
   ÚD)Úmarkeré   Úxé   ú^é   ÚHé   ÚvÚh)Úbottomg      ø?g      @g      @g      @)ú-ú+r   ú\Ú*ÚoÚOÚ.ÚiZnearest)ÚinterpolationZbilinearZbicubiczA string $1+2+\sigma$Úbuffer)Úformat)ÚmplZuseZrcParamsÚupdateÚpltZfigureZadd_subplotÚrangeZplotÚbarZ
set_xticksÚzipZ	set_hatchZimshowÚ	set_titleZ
set_xlabelZ
set_ylabelÚgetattrÚsysÚstdoutZsavefig)ÚobjectsÚfmtÚusetexZfigZax1r   Zax2ZbarsÚpatternsr&   ÚpatternÚAZaxr+   © r2   úZ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/matplotlib/tests/test_determinism.pyÚ_save_figure   sF    

 ÿ



r4   zobjects, fmt, usetex)Ú r   F)r   r   F)r   r   F)r   r   F)r   r   F)r   ÚpsFr6   T)Zmarks)r   ÚsvgFr7   c                    sd   ‡ ‡‡fdd„t dƒD ƒ}|dd… D ]8}ˆ dkrNˆrN||d kr^t d¡ q&||d ks&t‚q&dS )	a?  
    Output three times the same graphs and checks that the outputs are exactly
    the same.

    Parameters
    ----------
    objects : str
        Objects to be included in the test document: 'm' for markers, 'h' for
        hatch patterns, 'i' for images.
    fmt : {"pdf", "ps", "svg"}
        Output format.
    c                    sD   g | ]<}t jtjd ddˆ›dˆ ›dˆ› d�gtjdddœ–d�‘qS )	ú-Rú-czHfrom matplotlib.tests.test_determinism import _save_figure;_save_figure(z, ú)Ú	946684800ÚAgg©ÚSOURCE_DATE_EPOCHZ
MPLBACKEND©Úenv)Ú
subprocessÚcheck_outputr*   Ú
executableÚosÚenviron)Ú.0Ú_©r-   r,   r.   r2   r3   Ú
<listcomp>[   s   úÿÿüz*test_determinism_check.<locals>.<listcomp>r   r   Nr6   r   z+failed, maybe due to ghostscript timestamps)r%   ÚpytestÚskipÚAssertionError)r,   r-   r.   ZplotsÚpr2   rH   r3   Útest_determinism_check@   s    ù	rN   zfmt, string)r   s!   /CreationDate (D:20000101000000Z))r6   s(   %%CreationDate: Sat Jan 01 00:00:00 2000c                 C   s<   t jtjddd| ›d�gtjdddœ–d�}||ks8t‚d	S )
a—  
    Test SOURCE_DATE_EPOCH support. Output a document with the environment
    variable SOURCE_DATE_EPOCH set to 2000-01-01 00:00 UTC and check that the
    document contains the timestamp that corresponds to this date (given as an
    argument).

    Parameters
    ----------
    fmt : {"pdf", "ps", "svg"}
        Output format.
    string : bytes
        Timestamp string for 2000-01-01 00:00 UTC.
    r8   r9   zMfrom matplotlib.tests.test_determinism import _save_figure; _save_figure('', r:   r;   r<   r=   r?   N)rA   rB   r*   rC   rD   rE   rL   )r-   ÚstringÚbufr2   r2   r3   Ú"test_determinism_source_date_epochl   s    
ÿÿürQ   )r   r   F)Ú__doc__rD   rA   r*   rJ   Z
matplotlibr"   Zmatplotlib.testing.comparer   r$   Zmatplotlib.testing._markersr   r   r4   ÚmarkZparametrizeÚparamrN   rQ   r2   r2   r2   r3   Ú<module>   sF   
/   ÿöÿ
úÿ
