
     
3jq                         S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJ	r	  SSK
Jr  SSKJrJr  S rS	 rS
 rS rS rS rS rS r\	\R0                  4S j5       r\	S 5       rS rS rg)z
Utilities for testing code.
    N)Path)contextmanager   )__version__)check_version
get_loggerc                 
   [         R                  R                  U 5      (       d   e[        U SS9 nUR	                  5       nSSS5        SR                  SS/5      nWR                  5       U:X  d   eg! , (       d  f       N8= f)zF
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       K/home/wildlama/miniconda3/lib/python3.13/site-packages/pooch/tests/utils.pycheck_tiny_datar      so     77>>%    	eg	&(--/ 
'99	46HIL ==?l*** 
'	&s   A44
Bc                 2   [         R                  R                  U 5      (       d   e[        U SS9 nUR	                  5       nSSS5        S/nUR                  S/S-  5        WR                  5       SR                  U5      :X  d   eg! , (       d  f       NL= f)zG
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~     77>>%    	eg	&$))+ 
'@AL+,t34==?dii5555	 
'	&s   B
Bc                  .    [        [        SS9n SU  S3nU$ )aO  
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$     L6:G27);M
NCJ    c                  
    Sn U $ )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     1CJr'   c                  
    Sn U $ )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                  
    Sn U $ )aF  
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                  
    Sn U $ )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                       SSSSSSSSSS	S
.
n U $ )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              #      #    [         R                  " 5       n[        R                  " U5      nUR	                  U 5        [        5       R                  U5        Uv   [        5       R                  U5        g7f)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      sU      {{}H##H-GULG$
NLw's   A4A6c              #     #    [        [        [        5      R                  S-  U-  5      n[        R
                  R                  U R                  U5      n [        R                  " X#5        SU 3nUv   [        R
                  R                  U5      (       a  [        R                  " U5        gg! [        R
                  R                  U5      (       a  [        R                  " U5        f f = f7f)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     & tH~,,v5=>L'',,v//7K#2 (	77>>+&&IIk" '277>>+&&IIk" 's   AC1B1 5<C11=C..C1c                     U R                  5        HQ  nUR                  5       (       d  M  UR                  UR                  5       R                  U-  5        [        X!5        MS     g)z[
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    
 ;;==JJtyy{**T12(4 r'   c                     [        U 5      n [        U5      U R                  -  n[        R                  " X5        [	        U[
        R                  S9  U$ )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      s?    $ &\F+,F
OOF# dll;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 mm ( (" # #:5r'   