+
    i]  c                   s    ^ RI t ^ RItRR ltRR ltR tR tR t] P                  P                  ] P                  P                  RR4      4      RR t
]
3R ltA
R	 t ! R
 R]4      tRs]! ^R7       R# )    Nc                 s   T pVe   \        V\        \        34      '       d#   \        RR\	        V4       RV: 2,           4      hV Uu. uF  p\
        P                  ! V4      NK  	  pp\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   \        R4      h\        \        \
        P                  P                  V4      4      '       g   \        \        V4      4      hTpME\
        P                  P                  RR 4      pVf   \        P                   ! R	4      p\#        WQ4      p\%        V4      sR # u upi )
Nz!tzpaths must be a list or tuple, znot z: c              3   sB   "   T F  p\        V\        4      x  K  	  R # 5iN)
isinstancestr).0p   & )/usr/lib64/python3.14/zoneinfo/_tzpath.py	<genexpr>Z _reset_tzpath.<locals>.<genexpr>   s     7w!:a%%ws   FTzbAll elements of a tzpath sequence must be strings or os.PathLike objects which convert to strings.ZPYTHONTZPATHTZPATH)r   r   ZbytesZ	TypeErrorZtypeosZfspathZallZmappathisabs
ValueError_get_invalid_paths_messageZenvironZget	sysconfigZget_config_var_parse_python_tzpathtupler	   )to
stackleveltzpathsr   Zbase_tzpathenv_var   &&    r   _reset_tzpathr      s    GgU|,,3gr'56 
 *11A299Q<1s7w7sss7w777@ 
 3rww}}g.//7@AA**..6?..x8G*7?;F! 2s   	Ec                s    \        V 4       R# )zReset global TZPATH.N)r   )r   s   &r   reset_tzpathr   #   s    
 "    c                 s@   V '       g   R# V P                  \        P                  4      p\        \	        \        P
                  P                  V4      4      p\        V4      \        V4      8w  d/   ^ RIp\        V4      pVP                  RV,           \        VR7       V# )r    Nz>Invalid paths specified in PYTHONTZPATH environment variable. r    )Zsplitr
   Zpathsepr   Zfilterr   r   lenwarningsr   ZwarnInvalidTZPathWarning)r   r   Z
raw_tzpathZ
new_tzpathr   Zmsgr   r   r   r   +   s~    	rzz*JvbggmmZ89J :#j/)(4L !	 	 	
 r   c                 sX    R  V  4       pRpW"P                  V4      ,           pRV,           # )c              3   st   "   T F.  p\         P                  P                  V4      '       d   K*  Vx  K0  	  R # 5ir   )r
   r   r   )r   r   r   r   r   Z-_get_invalid_paths_message.<locals>.<genexpr>C   s!     IgdRWW]]45HTTgs   '8
8z
    z@Paths should be absolute but found the following relative paths:)join)r   Zinvalid_pathsZprefixZindented_strs   &   r   r   r   B   s5    IgIMFKK66L 	K
	r   c                s    \        V 4       \         FK  p\        P                  P	                  W4      p\        P                  P                  V4      '       g   KI  Vu # 	  R# )z,Retrieve the path to a TZif file from a key.N)_validate_tzfile_pathr	   r
   r   r   Zisfile)keyZsearch_pathZfilepaths   &  r   find_tzfiler"   N   sC    #77<<177>>(##O 
 r   Z_c                 s   \         P                  P                  V 4      '       d   \        R V  24      h\         P                  P	                  V 4      p\        V4      \        V 4      8w  d   \        RV  24      h\         P                  P	                  \         P                  P                  W4      4      pVP                  V4      '       g   \        RV  24      hR# )z.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: N)r
   r   r   r   normpathr   r   Z
startswith)r   Z_baseZnew_pathZresolveds   &&  r   r    r    \   s    	ww}}T<TFC
 	
 ww%H
8}D	!DTFK
 	
 wwU =>Hu%%I$P
 	
 &r   c                 s   ^ RI Hp  \        4       p V P                  R4      P	                  R4      pVP                  RRR7      ;_uu_ 4       pV F.  pVP                  4       pV'       g   K  VP                  V4       K0  	  RRR4       R p\         EF/  p\        P                  P                  T4      '       g   K+  \        P                  ! T4       F  w  rxp	Yv8X  d1   R	T9   d   TP                  R	4       R
T9   d   TP                  R
4       T	 F  p
\        P                  P!                  Yz4      p\        P                  P#                  YR7      p\        P$                  R8w  d!   TP'                  \        P$                  R4      pT'       d   Y9   d   K  T! T4      '       g   K  TP                  T4       K  	  K  	  EK2  	  RT9   d   TP                  R4       T#   + '       g   i     ELh; i  \        \        3 d     ELi ; i)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.
)	resourcesZtzdataZzonesZrzutf-8)ZencodingNc                 s     \        V R 4      ;_uu_ 4       pVP                  ^4      R8H  uuRRR4       #   + '       g   i     R# ; i  \         d     R# i ; i)Zrbs   TZifNF)openZreadZ	Exception)fpathfr   r   	valid_keyZ&available_timezones.<locals>.valid_key   sF    	eT""avvayG+ #""" 		s+   A	 5
A	 A	 A	 A	 	AAZrightZposix)ZstartZ/Z
posixrules)Z	importlibr$   ZsetfilesZjoinpathr%   ZstripZaddZImportErrorZFileNotFoundErrorr	   r
   r   ZexistsZwalkZremover   ZrelpathZsepZreplace)r$   Zvalid_zonesZ
zones_filer'   Zzoner(   Ztz_rootZrootZdirnamesr)   Zfiler&   r!   s                r   available_timezonesr*   v   s    $%K__X.77@
__S7_33qzz|4OOD)  4 6ww~~g&&%'WWW%5!DE h&OOG,h&OOG,T0ggooeo;66S=++bffc2Cc0U##OOC(  &6	 4 {" 	<(] 433
 *+ s5   ;G5 G!-G!G5 !G2	,G5 2G5 5H
	H
c                   s    ] tR t^tRtRtR# )r   z?Warning raised if an invalid path is specified in PYTHONTZPATH.r   N)Z__name__Z
__module__Z__qualname__Z__firstlineno__Z__doc__Z__static_attributes__r   r   r   r   r      s    Ir   r   r   )Ni   r   ir   )r
   r   r   r   r   r   r"   r   r#   r   Z
_TEST_PATHr    r*   ZRuntimeWarningr   r	   r   r   r   <module>r+      s    	  <.	 WWbggll345cr:
 '1 
. ?DJ> J 
  r   