Ë
    ëÿæiq  ã                   óØ   — 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mZ ddlm	Z	 ddl
mZ ddlmZmZ d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Ze	ej0                  fd„«       Ze	d„ «       Zd„ Zd„ Zy)z
Utilities for testing code.
é    N)ÚPath)Úcontextmanageré   )Ú__version__)Úcheck_versionÚ
get_loggerc                 óú   — t         j                  j                  | «      sJ ‚t        | d¬«      5 }|j	                  «       }ddd«       dj                  ddg«      }j                  «       |k(  sJ ‚y# 1 sw Y   Œ2xY w)zN
    Load the tiny-data.txt file and check that the contents are correct.
    úutf-8©ÚencodingNÚ
z)# A tiny data file for test purposes onlyú1  2  3  4  5  6)ÚosÚpathÚexistsÚopenÚreadÚjoinÚstrip)ÚfnameÚtinydataÚcontentÚtrue_contents       úf/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/pooch/tests/utils.pyÚcheck_tiny_datar      sl   € ô �7‰7�>‰>˜%Ô Ð Ð Ü	ˆe˜gÕ	&¨(Ø—-‘-“/ˆ÷ 
'à—9‘9Ø	4Ð6HÐIó€Lð �=‰=‹?˜lÒ*Ð*Ñ*÷ 
'Ð	&ús   ¯A1Á1A:c                 ó"  — t         j                  j                  | «      sJ ‚t        | d¬«      5 }|j	                  «       }ddd«       dg}|j                  dgdz  «       j                  «       dj                  |«      k(  sJ ‚y# 1 sw Y   ŒFxY w)zO
    Load the large-data.txt file and check that the contents are correct.
    r
   r   Nz*# A larer data file for test purposes onlyr   ir  r   )r   r   r   r   r   Úextendr   r   )r   Údatar   r   s       r   Úcheck_large_datar   #   s{   € ô �7‰7�>‰>˜%Ô Ð Ð Ü	ˆe˜gÕ	&¨$Ø—)‘)“+ˆ÷ 
'à@ÐA€LØ×ÑÐ+Ð,¨tÑ3Ô4Ø�=‰=‹?˜dŸi™i¨Ó5Ò5Ð5Ñ5÷	 
'Ð	&ús   ¯BÂBc                  ó4   — t        t        d¬«      } d| › d�}|S )as  
    Get the base URL for the test data used in Pooch itself.

    The URL is a GitHub raw link to the ``pooch/tests/data`` directory from the
    `GitHub repository <https://github.com/fatiando/pooch>`__. It matches the
    pooch version specified in ``pooch.version.full_version``.

    Returns
    -------
    url
        The versioned URL for pooch's test data.

    Úmain)Úfallbackz&https://github.com/fatiando/pooch/raw/z/pooch/tests/data/)r   Úfull_version)ÚversionÚurls     r   Úpooch_test_urlr&   /   s$   € ô œL°6Ô:€GØ2°7°)Ð;MÐ
N€CØ€Jó    c                  ó
   — d} | S )zý
    Get the base URL for the test data stored in figshare.

    The URL contains the DOI for the figshare dataset using the appropriate
    version for this version of Pooch.

    Returns
    -------
    url
        The URL for pooch's test data.

    z$doi:10.6084/m9.figshare.14763051.v1/© ©r%   s    r   Úpooch_test_figshare_urlr+   B   s   € ð 1€CØ€Jr'   c                  ó
   — d} | S )zù
    Get the base URL for the test data stored in Zenodo.

    The URL contains the DOI for the Zenodo dataset using the appropriate
    version for this version of Pooch.

    Returns
    -------
    url
        The URL for pooch's test data.

    zdoi:10.5281/zenodo.4924875/r)   r*   s    r   Úpooch_test_zenodo_urlr-   S   s   € ð (€CØ€Jr'   c                  ó
   — d} | S )aj  
    Get base URL for test data in Zenodo, where the file name contains a slash

    The URL contains the DOI for the Zenodo dataset that has a slash in the
    filename (created with the GitHub-Zenodo integration service), using the
    appropriate version for this version of Pooch.

    Returns
    -------
    url
        The URL for pooch's test data.

    zdoi:10.5281/zenodo.7632643/r)   r*   s    r   Ú pooch_test_zenodo_with_slash_urlr/   d   s   € ð (€CØ€Jr'   c                  ó
   — d} | S )z”
    Get the base URL for the test data stored on a DataVerse instance.

    Returns
    -------
    url
        The URL for pooch's test data.
    zdoi:10.11588/data/TKCFEF/r)   r*   s    r   Úpooch_test_dataverse_urlr1   v   s   € ð &€CØ€Jr'   c                  ó    — dddddddddd	d
œ
} | S )z©
    Get a registry for the test data used in Pooch itself.

    Returns
    -------
    registry
        Dictionary with pooch's test data files and their hashes.

    Ú@baee0894dba14b12085eacb204284b97e362f4f3e5a5807693cc90ef415c1b2dÚ@98de171fb320da82982e6bf0f3994189fff4b42b23328769afce12bdd340444aÚ@0d49e94f07bc1866ec57e7fd1b93a351fba36842ec9b13dd50bf94e8dfa35cbbÚ@0498d2a001e71051bbd2acd2346f38da7cbd345a633cb7bf0f8a20938714b51aÚ@41503f083814f43a01a8e9a30c28d7a9fe96839a99727a7fdd0acf7cd5bab63bÚ@088c7f4e0f1859b1c769bb6065de24376f366374817ede8691a6ac2e49f29511Ú@753663687a4040c90c8578061867d1df623e6aa8011c870a5dbd88ee3c82e306Ú@2e2da6161291657617c32192dba95635706af80c6e7335750812907b58fd4b52Ú@99dcb5c32a6e916344bacb4badcbc2f2b6ee196977d1d8187610c21e7e607765)
ztiny-data.txtzlarge-data.txtzsubdir/tiny-data.txtztiny-data.zipz	store.zipztiny-data.tar.gzzstore.tar.gzztiny-data.txt.bz2ztiny-data.txt.gzztiny-data.txt.xzr)   )Úregistrys    r   Úpooch_test_registryr=   ƒ   s1   € ð \Ø\Ø bØ[ØWØ^ØZØ_Ø^Ø^ñ€Hð €Or'   c              #   óì   K  — t        j                  «       }t        j                  |«      }|j	                  | «       t        «       j                  |«       |–— t        «       j                  |«       y­w)z¦
    Create a context manager for reading from the logs.

    Yields
    ------
    log_file : StringIO
        a file-like object to which the logs were written
    N)ÚioÚStringIOÚloggingÚStreamHandlerÚsetLevelr   Ú
addHandlerÚremoveHandler)ÚlevelÚlog_fileÚhandlers      r   Úcapture_logrI   œ   sV   è ø€ ô �{‰{‹}€HÜ×#Ñ# HÓ-€GØ×Ñ�UÔÜƒL×Ñ˜GÔ$Ø
‚NÜƒL×Ñ˜wÕ'ùs   ‚A2A4c              #   óÎ  K  — t        t        t        «      j                  dz  |z  «      }t        j
                  j                  | j                  |«      }	 t        j                  ||«       d|› �}|–— t        j
                  j                  |«      rt	        j                  |«       yy# t        j
                  j                  |«      rt	        j                  |«       w w xY w­w)aÀ  
    Add a test data file to the test FTP server and clean it up afterwards.

    Parameters
    ----------
    server
        The ``ftpserver`` fixture provided by pytest-localftpserver.
    fname : str
        The name of a file *relative* to the test data folder of the package
        (usually just the file name, not the full path).

    Yields
    ------
    url : str
        The download URL of the data file from the test FTP server.

    r   zftp://localhost/N)Ústrr   Ú__file__Úparentr   r   r   Ú	anon_rootÚshutilÚcopyfiler   Úremove)Úserverr   Úpackage_pathÚserver_pathr%   s        r   Údata_over_ftprU   ®   s¦   è ø€ ô& ”tœH“~×,Ñ,¨vÑ5¸Ñ=Ó>€LÜ—'‘'—,‘,˜v×/Ñ/°Ó7€Kð#Ü�‰˜ kÔ2Ø   Ð(ˆØŠ	ä�7‰7�>‰>˜+Ô&Ü�I‰I�kÕ"ð 'øŒ2�7‰7�>‰>˜+Ô&Ü�I‰I�kÕ"ð 'üs   ‚AC%ÁB+ Á56C%Â+7C"Ã"C%c                 óÀ   — | j                  «       D ]K  }|j                  «       sŒ|j                  |j                  «       j                  |z  «       t        ||«       ŒM y)zg
    Recursively change the permissions on the child directories using a bitwise
    OR operation.
    N)ÚiterdirÚis_dirÚchmodÚstatÚst_modeÚ_recursive_chmod_directories)ÚrootÚmodeÚitems      r   r\   r\   Ì   sD   € ð
 —‘–ˆØ�;‰;�=Ø�J‰J�t—y‘y“{×*Ñ*¨TÑ1Ô2Ü(¨¨tÕ4ñ r'   c                 ó®   — t        | «      } t        |«      | j                  z  }t        j                  | |«       t	        |t
        j                  ¬«       |S )aä  
    Copy contents of the source directory into destination and fix permissions.

    Parameters
    ----------
    source : str, :class:`pathlib.Path`
        Source data directory.
    destination : str, :class:`pathlib.Path`
        Destination directory that will contain the copy of source. The actual
        source directory (not just it's contents) is copied.

    Returns
    -------
    mirror : :class:`pathlib.Path`
        The path of the mirrored output directory.

    )r^   )r   ÚnamerO   Úcopytreer\   rZ   ÚS_IWUSR)ÚsourceÚdestinationÚmirrors      r   Úmirror_directoryrg   ×   sA   € ô$ �&‹\€FÜ�+Ó §¡Ñ,€FÜ
‡O�O�F˜FÔ#Ü  ¬d¯l©lÕ;Ø€Mr'   )Ú__doc__r   r?   rA   rO   rZ   Úpathlibr   Ú
contextlibr   Ú r   r#   Úutilsr   r   r   r   r&   r+   r-   r/   r1   r=   ÚDEBUGrI   rU   r\   rg   r)   r'   r   Ú<module>rn      sˆ   ðñó 
Û 	Û Û Û Ý Ý %å *ß -ò
+ò	6òò&ò"ò"ò$
òð2 Ø—m‘mò (ó ð(ð" ñ#ó ð#ò:5ór'   