Ë
    ¨eh  ã                   óÄ   — d Z ddlmZ 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
Zddl
mZ  ej                  e«      Zd„ Zd„ Zd„ Z	 	 	 dd	„Zdd
œd„Zd„ Zd„ Zd„ Zd„ Zy)z
Helper functions for testing.
é    )ÚPath)ÚTemporaryDirectoryN)Ú_apic                  óv   — dt         j                  d<   dt         j                  d<   dt         j                  d<   y )NzDejaVu Sanszfont.familyÚnoneztext.hintingé   ztext.hinting_factor©ÚmplÚrcParams© ó    úY/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/matplotlib/testing/__init__.pyÚset_font_settings_for_testingr      s-   € Ø"/„C‡L�L�ÑØ#)„C‡L�L�Ñ Ø*+„C‡L�LÐ&Ò'r   c                  ó*   — dt         j                  d<   y )NÚ
matplotlibzsvg.hashsaltr	   r   r   r   Úset_reproducibility_for_testingr      s   € Ø#/„C‡L�L�Ò r   c                  óô  — 	 t        j                  t         j                  d«       t        j                  d«       t        j                  «       5  t        j                  «        d d d «       t        «        t        «        y # t         j                  $ rW 	 t        j                  t         j                  d«       n.# t         j                  $ r t        j                  d«       Y nw xY wY ŒÄw xY w# 1 sw Y   Œ‹xY w)Nzen_US.UTF-8zEnglish_United States.1252zPCould not set locale to English/United States. Some date-related tests may fail.ÚAgg)ÚlocaleÚ	setlocaleÚLC_ALLÚErrorÚ_logÚwarningr
   Úuser   Ú'suppress_matplotlib_deprecation_warningÚ
rcdefaultsr   r   r   r   r   Úsetupr      s´   € ð5Ü×ÑœŸ™¨Ô6ô ‡G�GˆE„Nä	×	5Ñ	5Ó	7ñ Ü�‰Ô÷ô
 "Ô#Ü#Õ%øô! �<‰<ò 5ð	5Ü×ÑœVŸ]™]Ð,HÕIøÜ�|‰|ò 	5Ü�L‰Lð4ö5ð	5üð5ú÷ð úsA   ‚$B ÁC.ÂC+Â$B:Â9C+Â:(C%Ã"C+Ã$C%Ã%C+Ã*C+Ã.C7c           	      óÔ   — |rt         j                  x}}	 t        j                  | ||||||¬«      }|S # t        $ r* t        j
                  dk(  rddl}	|	j                  d«       ‚ w xY w)a‡  
    Create and run a subprocess.

    Thin wrapper around `subprocess.run`, intended for testing.  Will
    mark fork() failures on Cygwin as expected failures: not a
    success, but not indicating a problem with the code either.

    Parameters
    ----------
    args : list of str
    env : dict[str, str]
    timeout : float
    stdout, stderr
    check : bool
    text : bool
        Also called ``universal_newlines`` in subprocess.  I chose this
        name since the main effect is returning bytes (`False`) vs. str
        (`True`), though it also tries to normalize newlines across
        platforms.
    capture_output : bool
        Set stdout and stderr to subprocess.PIPE

    Returns
    -------
    proc : subprocess.Popen

    See Also
    --------
    subprocess.run

    Raises
    ------
    pytest.xfail
        If platform is Cygwin and subprocess reports a fork() failure.
    ©ÚenvÚtimeoutÚcheckÚstdoutÚstderrÚtextÚcygwinr   NzFork failure)Ú
subprocessÚPIPEÚrunÚBlockingIOErrorÚsysÚplatformÚpytestÚxfail)
Úcommandr!   r"   r$   r%   r#   r&   Úcapture_outputÚprocr.   s
             r   Úsubprocess_run_for_testingr3   5   sq   € ñL Ü$Ÿ/™/Ð)ˆ�ðÜ�~‰~Ø˜Ø 5Ø &Øô	
ˆð €Køô ò Ü�<‰<˜8Ò#ãØ�L‰L˜Ô(Øðús	   –4 ´3A')Ú	extra_envc                ó,  — | j                   }| j                  }| j                  j                  }t	        t
        j                  dd|›d|›d|› d�g|¢i t        j                  ¥ddi¥|xs i ¥|dt        j                  t        j                  d¬	«      }|S )
a“  
    Run a function in a sub-process.

    Parameters
    ----------
    func : function
        The function to be run.  It must be in a module that is importable.
    *args : str
        Any additional command line arguments to be passed in
        the first argument to ``subprocess.run``.
    extra_env : dict[str, str]
        Any additional environment variables to be set for the subprocess.
    ú-czEimport importlib.util;_spec = importlib.util.spec_from_file_location(z, z]);_module = importlib.util.module_from_spec(_spec);_spec.loader.exec_module(_module);_module.z()ÚSOURCE_DATE_EPOCHÚ0Tr    )Ú__name__Ú
__module__Ú__code__Úco_filenamer3   r,   Ú
executableÚosÚenvironr(   r)   )Úfuncr"   r4   ÚargsÚtargetÚmoduleÚfiler2   s           r   Úsubprocess_run_helperrE   m   s©   € ð �]‰]€FØ�_‰_€FØ�=‰=×$Ñ$€DÜ%ä�N‰NØð>Ø>D¸ZÀrÈ$Èð Rð �h˜bð	"ð		
ð ð		
ð JŒr�z‰zÐIÐ.°ÑI¸	ºÀRÐIØ˜tÜ�‰Ü�‰Øô€Dð" €Kr   c                 óT  — t        «       5 }t        |d«      }|j                  dd¬«       	 t        j                  | dt        |«      g|t        j                  t        j                  ¬«       	 ddd«       y	# t        t        j                  f$ r Y ddd«       yw xY w# 1 sw Y   yxY w)
z�
    Check if a given TeX system + pgf is available

    Parameters
    ----------
    texsystem : str
        The executable name to check
    ztest.texzÁ
            \documentclass{article}
            \usepackage{pgf}
            \begin{document}
            \typeout{pgfversion=\pgfversion}
            \makeatletter
            \@@end
        zutf-8)Úencodingz-halt-on-error)Úcwdr$   r%   NFT)	r   r   Ú
write_textr(   Ú
check_callÚstrÚDEVNULLÚOSErrorÚCalledProcessError)Ú	texsystemÚtmpdirÚtex_paths      r   Ú_check_for_pgfrR   ’   s³   € ô 
Ó	ð  Ü˜ 
Ó+ˆØ×Ñð ð ð 	ô 	ð	Ü×!Ñ!ØÐ,¬c°(«mÐ<À&Ü!×)Ñ)´*×2DÑ2DõFð
 ÷!ð øô œ×6Ñ6Ð7ò 	Ø÷ð ð	ú÷ð ús/   ‹ B¬AA7Á-BÁ7BÂBÂBÂBÂB'c                 óh   — 	 t         j                  j                  | › d�«       y# t        $ r Y yw xY w)Nz.styTF)r
   ÚdvireadÚfind_tex_fileÚFileNotFoundError)Úpackages    r   Ú_has_tex_packagerX   ®   s5   € ðÜ�‰×!Ñ! W I¨TÐ"2Ô3ØøÜò Ùðús   ‚"% ¥	1°1c                 ó°  — dd l }|j                  d«      }t        j                  dk(  r|j	                  d«       |j
                  d d dk(  r| dk(  r|j	                  d«       |j                  «       D ]  \  }}|j
                  d d	 |k\  sŒ|} n d
}t        ddd| › �d|gdd¬«      }|j                  j                  «       j                  d› d�«      sJ ‚y )Nr   ÚIPythonÚwin32z>Cannot change backend running IPython in subprocess on Windowsé   )r   é   r   Úosxz:Bug using macosx backend in IPython 8.24.0 fixed in 8.24.1é   zpimport matplotlib as mpl, matplotlib.pyplot as plt;fig, ax=plt.subplots(); ax.plot([1, 3, 2]); mpl.get_backend()Úipythonz--no-simple-promptz--matplotlib=r6   T)r#   r1   ú')r.   Úimportorskipr,   r-   ÚskipÚversion_infoÚitemsr3   r$   ÚstripÚendswith)	Ú"requested_backend_or_gui_frameworkÚall_expected_backendsr.   rZ   Úmin_versionÚbackendÚexpected_backendÚcoder2   s	            r   Úipython_in_subprocessrn   ¶   sù   € ÛØ×!Ñ! )Ó,€Gä
‡|�|�wÒØ�‰ÐTÔUà×Ñ˜R˜aÐ  JÒ.Ø.°%Ò7Ø�‰ÐPÔQð !6× ;Ñ ;Ó =ò Ñˆ�WØ×Ñ  Ð# {Ó2Ø&ÐÙðð
L€Dä%àØ ØÐ>Ð?Ð@Ø�$ð		
ð Øô	€Dð �;‰;×ÑÓ×'Ñ'¨!Ð,<Ð+=¸QÐ(?Ô@Ð@Ñ@r   c                  óH   — g d¢} | D ]  }t        j                  |«      sŒ y y)N)ÚCIÚCONTINUOUS_INTEGRATIONÚTRAVISÚCIRCLECIÚJENKINSÚ	GITLAB_CIÚGITHUB_ACTIONSÚTEAMCITY_VERSIONTF)r>   Úgetenv)Úci_environment_variablesÚenv_vars     r   Úis_ci_environmentr{   Ø   s/   € ò
 Ðð ,ò ˆÜ�9‰9�WÕÙðð r   )Né<   NNFTF)Ú__doc__Úpathlibr   Útempfiler   r   Úloggingr>   r(   r,   r   r
   r   Ú	getLoggerr9   r   r   r   r   r3   rE   rR   rX   rn   r{   r   r   r   ú<module>r‚      s|   ðñõ Ý 'Û Û Û 	Û Û 
ã Ý à€w×Ñ˜Ó"€ò,ò0ò&ð2 FJØ>BØ.3ó5ðp ;?ô "òJò8òAóDr   