
    -Phq                         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j        fd            Ze	d             Zd Zd ZdS )z
Utilities for testing code.
    N)Path)contextmanager   )__version__)check_version
get_loggerc                 $   t           j                            |           sJ t          | d          5 }|                                }ddd           n# 1 swxY w Y   d                    ddg          }|                                |k    sJ dS )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       Q/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pooch/tests/utils.pycheck_tiny_datar      s     7>>%     	eg	&	&	& "(--//" " " " " " " " " " " " " " "99	46HI L ==??l******   AAAc                 T   t           j                            |           sJ t          | d          5 }|                                }ddd           n# 1 swxY w Y   dg}|                    dgdz             |                                d                    |          k    sJ dS )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>>%     	eg	&	&	& $))++              @AL+,t3444==??dii55555555r   c                  >    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+     L6:::G
N7
N
N
NC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     1C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_urlr0   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_urlr2   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>      s6     \\ b[W^Z_^^ H Or(   c              #     K   t          j                    }t          j        |          }|                    |            t                                          |           |V  t                                          |           dS )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_logrJ      sv       {}}H#H--GULLG$$$
NNNLLw'''''r(   c              #     K   t          t          t                    j        dz  |z            }t          j                            | j        |          }	 t          j	        ||           d| }|V  t          j        
                    |          rt	          j        |           dS dS # t          j        
                    |          rt	          j        |           w w xY 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_ftprV      s      & tH~~,v5=>>L',,v/77K#k222(((			7>>+&& 	#Ik"""""	# 	#27>>+&& 	#Ik""""	#s   B* *6C c                     |                                  D ]U}|                                r?|                    |                                j        |z             t          ||           VdS )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]      sh    
  5 5;;== 	5JJtyy{{*T1222(t4445 5r(   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   namerP   copytreer]   r[   S_IWUSR)sourcedestinationmirrors      r   mirror_directoryrh      sO    $ &\\F+,F
OFF### dl;;;;Mr(   )__doc__r   r@   rB   rP   r[   pathlibr   
contextlibr    r   r$   utilsr   r   r   r    r'   r,   r.   r0   r2   r>   DEBUGrJ   rV   r]   rh   r*   r(   r   <module>ro      sl    
			 				          % % % % % % * * * * * * - - - - - - - -
+ 
+ 
+	6 	6 	6  &  "  "  $
 
 
  2 m ( ( ( (" # # #:5 5 5    r(   