f
��_� c @ s� d dl Z d dlZddd�Zdd� Zdd� Zdd � Ze j�e j�d
d
��dd� Z e fdd
�Z
[ dd� ZG dd� de�Z
dae� dS )� Nc C s� | }|d urZt |ttf�r6tddt|�� d|�� ��tttjj |��sTt
t|���|}n.tj�
dd �}|d urzt|�}ntt�d��}t|�ad S )Nz!tzpaths must be a list or tuple, znot z: ZPYTHONTZPATH�TZPATH)Z
isinstanceZstrZbytesZ TypeErrorZtypeZallZmap�os�path�isabs�
ValueError�_get_invalid_paths_messageZenvironZget�_parse_python_tzpath� sysconfigZget_config_var�tupler )Zto�tzpathsZbase_tzpath�env_var� r �)/usr/lib64/python3.10/zoneinfo/_tzpath.py�reset_tzpath s$ ��
�r c C sZ | sdS | � tj�}tttjj|��}t|�t|�krVdd l}t |�}|�
d| t� |S )Nr r z=Invalid paths specified in PYTHONTZPATH environment variable.)Zsplitr Zpathsepr Zfilterr r �len�warningsr Zwarn�InvalidTZPathWarning)r Z
raw_tzpathZ
new_tzpathr Zmsgr r r
r s ��r c C s( dd� | D �}d}||� |� }d| S )Nc s s | ]}t j�|�s|V qd S �N)r r r )Z.0r r r r
Z <genexpr>6 s z-_get_invalid_paths_message.<locals>.<genexpr>z
z@Paths should be absolute but found the following relative paths:)�join)r
Z
invalid_pathsZprefixZindented_strr r r
r 5 s ��r c C s6 t | � tD ]$}tj�|| �}tj�|�r| S dS )z,Retrieve the path to a TZif file from a key.N)�_validate_tzfile_pathr r r r Zisfile)�keyZsearch_pathZfilepathr r r
�find_tzfileA s r Z_i����c C sv t j�| �rtd| � ���t j�| �}t|�t| �krDtd| � ���t j�t j�||��}|�|�srtd| � ���d S )Nz.ZoneInfo keys may not be absolute paths, got: z6ZoneInfo keys must be normalized relative paths, got: z;ZoneInfo keys must refer to subdirectories of TZPATH, got: )r r r r �normpathr r Z
startswith)r Z_baseZnew_pathZresolvedr r r
r O s ��
�r c C sX ddl m} t� }zP| �dd��0}|D ]}|�� }|r&|�|� q&W d � n1 sV0 Y W n ttfyx Y n0 dd� }tD ]�}t j
�|�s�q�t �|�D ]�\}}}||kr�d|v r�|�
d� d |v r�|�
d � |D ]^} t j
�|| �}
t j
j|
|d
�}t jdk�r|�t jd�}|r�||v �r(q�||
�r�|�|� q�q�q�d|v �rT|�
d� |S )
a" Returns a set containing all available time zones.
.. caution::
This may attempt to open a large number of files, since the best way to
determine if a given file on the time zone search path is to open it
and check for the "magic string" at the beginning.
r )� resourcesZtzdataZzonesNc S sX z>t | d�� }|�d�dkW d � W S 1 s20 Y W n tyR Y dS 0 d S )NZrbi s TZifF)ZopenZreadZ Exception)�fpath�fr r r
� valid_key� s
2z&available_timezones.<locals>.valid_keyZrightZposix)Zstartz/Z
posixrules)Z importlibr ZsetZ open_textZstripZaddZImportErrorZFileNotFoundErrorr r r ZexistsZwalkZremover ZrelpathZsepZreplace)r Zvalid_zonesr Zzoner Ztz_rootZrootZdirnamesZfilesZfiler r r r r
�available_timezonesi s@ .
r c @ s e Zd ZdZdS )r z?Warning raised if an invalid path is specified in PYTHONTZPATH.N)Z__name__Z
__module__Z__qualname__Z__doc__r r r r
r � s r r r )r r r r r r r r r Z
_TEST_PATHr r ZRuntimeWarningr r r r r r
Z<module> s
A