a
    1$e$                     @   s   d 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	m
Z
 ddlmZ dadaeeef dddd	Zeeef ddd
dZedddZdS )z.
Module for managing the PROJ data directory.
    N)Path)Union)_global_context_set_data_dirget_user_data_dir)DataDirError)proj_data_dirreturnc                 C   s   t | adat  dS )z
    Set the data directory for PROJ to use.

    Parameters
    ----------
    proj_data_dir: Union[str, Path]
        The path to the PROJ data directory.
    N)str_USER_PROJ_DATA_VALIDATED_PROJ_DATAr   r    r   J/var/www/html/django/DPS/env/lib/python3.9/site-packages/pyproj/datadir.pyset_data_dir   s    r   c                 C   s   t tjt t| g dS )z
    Add an additional data directory for PROJ to use.

    Parameters
    ----------
    proj_data_dir: Union[str, Path]
        The path to the PROJ data directory.
    N)r   ospathsepjoinget_data_dirr	   r   r   r   r   append_data_dir)   s    	r   )r   c                     s*  t durt S tt jd d d } tjdtjdd}ttj	dd}ttj	ddd}d	d
   fdd}|t
r~t
a n | rt| a n||r|a nv |rt|a nd |rt|a nRtjdtj	d}|du rtd}|durt|jjd d } |rt|a t du r&tdt S )a  
    The order of preference for the data directory is:

    1. The one set by pyproj.datadir.set_data_dir (if exists & valid)
    2. The internal proj directory (if exists & valid)
    3. The directory in PROJ_DATA (PROJ 9.1+) | PROJ_LIB (PROJ<9.1) (if exists & valid)
    4. The directory on sys.prefix (if exists & valid)
    5. The directory on the PATH (if exists & valid)

    Returns
    -------
    str:
        The valid data directory.

    NZproj_dirshareZprojZ	PROJ_DATAZPROJ_LIB Libraryc                 S   s   | d urt | d rdS dS )Nzproj.dbTF)r   exists)Zpotential_data_dirr   r   r   valid_data_dirN   s    z$get_data_dir.<locals>.valid_data_dirc                    s0   | d u rdS |  tjD ]} |r dS qd S )NFT)splitr   r   )Zpotential_data_dirsr   r   r   r   valid_data_dirsV   s    z%get_data_dir.<locals>.valid_data_dirs)pathzValid PROJ data directory not found. Either set the path using the environmental variable PROJ_DATA (PROJ 9.1+) | PROJ_LIB (PROJ<9.1) or with `pyproj.datadir.set_data_dir`.)r   r   __file__absoluteparentr   environgetsysprefixr
   r	   shutilwhichr   )Zinternal_datadirZproj_lib_dirsZprefix_datadirZconda_windows_prefix_datadirr   Zproj_exeZsystem_proj_dirr   r   r   r   5   s<    






r   )__doc__r   r%   r#   pathlibr   typingr   Zpyproj._datadirr   r   Zpyproj.exceptionsr   r
   r   r	   r   r   r   r   r   r   r   <module>   s   