
    /hh+                         S SK r S SKrSS jrSS jrS rS rS r\ R                  R                  \ R                  R                  SS5      5      SS r
\
4S	 jrC
S
 r " S S\5      rSq\" SS9  g)    Nc                 J   U nUb  [        U[        [        45      (       a  [        SS[	        U5       SU< 3-   5      eU Vs/ s H  n[
        R                  " U5      PM     nn[        S U 5       5      (       d  [        S5      e[        [        [
        R                  R                  U5      5      (       d  [        [        U5      5      eUnOD[
        R                  R                  SS 5      nUc  [        R                   " S5      n[#        XQ5      n[%        U5      qg s  snf )Nz!tzpaths must be a list or tuple, znot z: c              3   B   #    U  H  n[        U[        5      v   M     g 7fN)
isinstancestr).0ps     9/opt/python-3.13.8/usr/lib/python3.13/zoneinfo/_tzpath.py	<genexpr> _reset_tzpath.<locals>.<genexpr>   s     7w!:a%%ws   zbAll elements of a tzpath sequence must be strings or os.PathLike objects which convert to strings.PYTHONTZPATHTZPATH)r   r   bytes	TypeErrortypeosfspathallmappathisabs
ValueError_get_invalid_paths_messageenvironget	sysconfigget_config_var_parse_python_tzpathtupler   )to
stackleveltzpathsr	   base_tzpathenv_vars         r
   _reset_tzpathr%      s     GgU|,,3gr'56 
 *11A299Q<17w777@ 
 3rww}}g.//7@AA**..6?..x8G*7?;F! 2s    D c                     [        U 5        g)zReset global TZPATH.N)r%   )r    s    r
   reset_tzpathr'   #   s    
 "    c                 ,   U (       d  gU R                  [        R                  5      n[        [	        [        R
                  R                  U5      5      n[        U5      [        U5      :w  a'  SS Kn[        U5      nUR                  SU-   [        US9  U$ )N r   z>Invalid paths specified in PYTHONTZPATH environment variable. r!   )splitr   pathsepr   filterr   r   lenwarningsr   warnInvalidTZPathWarning)r$   r!   
raw_tzpath
new_tzpathr0   msgs         r
   r   r   +   s|    rzz*JvbggmmZ89J :#j/)(4L !	 	 	
 r(   c                 H    S U  5       nSnX"R                  U5      -   nSU-   $ )Nc              3   r   #    U  H-  n[         R                  R                  U5      (       a  M)  Uv   M/     g 7fr   )r   r   r   )r   r   s     r
   r   -_get_invalid_paths_message.<locals>.<genexpr>C   s!     IgdRWW]]45HTTgs   (7	7z
    z@Paths should be absolute but found the following relative paths:)join)r"   invalid_pathsprefixindented_strs       r
   r   r   B   s5    IgIMFKK66L 	K
	r(   c                     [        U 5        [         HJ  n[        R                  R	                  X5      n[        R                  R                  U5      (       d  MH  Us  $    g)z,Retrieve the path to a TZif file from a key.N)_validate_tzfile_pathr   r   r   r9   isfile)keysearch_pathfilepaths      r
   find_tzfilerC   N   sC    #77<<177>>(##O 
 r(   _c                    [         R                  R                  U 5      (       a  [        SU  35      e[         R                  R	                  U 5      n[        U5      [        U 5      :w  a  [        SU  35      e[         R                  R	                  [         R                  R                  X5      5      nUR                  U5      (       d  [        SU  35      eg )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/   r9   
startswith)r   _basenew_pathresolveds       r
   r>   r>   \   s    	ww}}T<TFC
 	
 ww%H
8}D	!DTFK
 	
 wwU =>Hu%%I$P
 	
 &r(   c                     SSK Jn   [        5       n U R                  S5      R	                  S5      R                  S5       nU H-  nUR                  5       nU(       d  M  UR                  U5        M/     SSS5        S n[         GH$  n[        R                  R                  U5      (       d  M*  [        R                  " U5       H  u  pgnXe:X  a.  SU;   a  UR                  S5        S	U;   a  UR                  S	5        U H  n	[        R                  R!                  Xi5      n
[        R                  R#                  XS
9n[        R$                  S:w  a   UR'                  [        R$                  S5      nU(       a  X;   a  M  U" U
5      (       d  M  UR                  U5        M     M     GM'     SU;   a  UR                  S5        U$ ! , (       d  f       GNZ= f! [        [        4 a     GNpf = f)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   )	resourcestzdatazonesrNc                      [        U S5       nUR                  S5      S:H  sS S S 5        $ ! , (       d  f       g = f! [         a     gf = f)Nrb   s   TZifF)openread	Exception)fpathfs     r
   	valid_key&available_timezones.<locals>.valid_key   s@    	eT"avvayG+ #"" 		s#   = ,	= 
:= = 
A
	A
rightposix)start/
posixrules)	importlibrM   setfilesjoinpathrT   stripaddImportErrorFileNotFoundErrorr   r   r   existswalkremover9   relpathsepreplace)rM   valid_zonesrX   zonerY   tz_rootrootdirnamesrb   filerW   r@   s               r
   available_timezonesrt   v   s    $%K__X&//8==cBazz|4OOD)  C 6ww~~g&&%'WWW%5!DE h&OOG,h&OOG,T0ggooeo;66S=++bffc2Cc0U##OOC(  &6	 4 {" 	<(] CB
 *+ s5   /G G G5G 
GG G G.-G.c                       \ rS rSrSrSrg)r2      z?Warning raised if an invalid path is specified in PYTHONTZPATH.r*   N)__name__
__module____qualname____firstlineno____doc____static_attributes__r*   r(   r
   r2   r2      s    Ir(   r2   r*      r+   )NrS   r   )r   r   r%   r'   r   r   rC   r   rG   r9   
_TEST_PATHr>   rt   RuntimeWarningr2   r   r*   r(   r
   <module>r      s    	  <.	 WWbggll345cr:
 '1 
. >BJ> J 
  r(   