+
    f4j]                         ^ 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                    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   B   "   T F  p\        V\        4      x  K  	  R # 5iN)
isinstancestr).0ps   & "lib/python3.14/zoneinfo/_tzpath.py	<genexpr> _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.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s7w7sss7w777@ 
 3rww}}g.//7@AA**..6?..x8G*7?;F! 2s   	Ec                    \        V 4       R# )zReset global TZPATH.N)r%   )r    s   &r
   reset_tzpathr'   #   s    
 "    c                 @   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!    )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                 X    R  V  4       pRpW"P                  V4      ,           pRV,           # )c              3   t   "   T F.  p\         P                  P                  V4      '       d   K*  Vx  K0  	  R # 5ir   )r   r   r   )r   r   s   & r
   r   -_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"   invalid_pathsprefixindented_strs   &   r
   r   r   B   s5    IgIMFKK66L 	K
	r(   c                    \        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   r9   isfile)keysearch_pathfilepaths   &  r
   find_tzfilerC   N   sC    #77<<177>>(##O 
 r(   _c                    \         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/   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                    ^ 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.
)	resourcestzdatazonesrzutf-8)encodingNc                      \        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)rbs   TZifNF)openread	Exception)fpathfs   & r
   	valid_key&available_timezones.<locals>.valid_key   sF    	eT""avvayG+ #""" 		s+   A	 5
A	 A	 A	 A	 	AArightposix)start/
posixrules)	importlibrL   setfilesjoinpathrS   stripaddImportErrorFileNotFoundErrorr   r   r   existswalkremover9   relpathsepreplace)rL   valid_zones
zones_filerW   zonerX   tz_rootrootdirnamesra   filerV   r@   s                r
   available_timezonesrt   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                       ] tR t^tRtRtR# )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*   )N   r   r+   )r   r   r%   r'   r   r   rC   r   rF   r9   
_TEST_PATHr>   rt   RuntimeWarningr2   r   r+   r(   r
   <module>r      s    	  <.	 WWbggll345cr:
 '1 
. ?DJ> J 
  r(   