f ddlZddlZddZddZdZdZdZejjejjddddZ e fd Z [ d Z Gd d e Zd aedy)Nc|}|wt|ttfrtddt |d|zt t tjj|stt||}nCtjjdd}|tjd}t!||}t#|ay)Nz!tzpaths must be a list or tuple, znot z: PYTHONTZPATHTZPATH) isinstancestrbytes TypeErrortypeallmapospathisabs ValueError_get_invalid_paths_messageenvironget sysconfigget_config_var_parse_python_tzpathtupler)to stackleveltzpaths base_tzpathenv_vars '/usr/lib/python3.12/zoneinfo/_tzpath.py _reset_tzpathrsG gU| ,3gr'56  3rww}}g./7@A A **..6 ?..x8G*7J? ; Fct|y)zReset global TZPATH.N)r)rs r reset_tzpathr!s "rc&|sy|jtj}tt tj j |}t|t|k7r*ddl}t|}|jd|zt||S)Nrz>Invalid paths specified in PYTHONTZPATH environment variable. r) splitr pathseprfilterrrlenwarningsrwarnInvalidTZPathWarning)rr raw_tzpath new_tzpathr)msgs rrr$s| rzz*JvbggmmZ89J :#j/)(4 L  !   rcJd|D}d}||j|z}d|zS)Nc3`K|]&}tjj|r#|(ywN)r rr).0rs r z-_get_invalid_paths_message..<sIdRWW]]45HTIs$..z z@Paths should be absolute but found the following relative paths:)join)r invalid_pathsprefix indented_strs rrr;s7IgIM FFKK 66L K  rct|tD]E}tjj ||}tjj |sC|cSy)z,Retrieve the path to a TZif file from a key.N)_validate_tzfile_pathrr rr4isfile)key search_pathfilepaths r find_tzfiler>GsG# 77<< S1 77>>( #O r_ctjj|rtd|tjj |}t |t |k7rtd|tjj tjj ||}|j|std|y)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 rrrnormpathr(r4 startswith)r_basenew_pathresolveds rr9r9Us ww}}TH   u %I$ P   &rcddlm}t} |jdj dj d5}|D]&}|j }|s|j|( dddd}tD] }tjj|s$tj|D]\}}}||k(r*d|vr|jdd |vr|jd |D]} tjj!|| } tjj#| | } tj$d k7r | j'tj$d } | r| |vr~|| s|j| d |vr|jd |S#1swY:xYw#ttf$rYOwxYw) 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) resourcestzdatazonesrNc t|d5}|jddk(cdddS#1swYyxYw#t$rYywxYw)NrbsTZifF)openread Exception)fpathfs r valid_keyz&available_timezones..valid_keysI eT" ,avvayG+ , , ,  s# 8, 8588 AArightposix)start/ posixrules) importlibrHsetfilesjoinpathrOstripadd ImportErrorFileNotFoundErrorrr rexistswalkremover4relpathsepreplace) rH valid_zonesrSzonerTtz_rootrootdirnamesr\filerRr;s ravailable_timezonesrnos$%K __X & / / 8 = =c B *a *zz|OOD) * *)ww~~g& %'WWW%5 ) !D(Ewh&OOG,h&OOG, ) T40ggooe7o;66S=++bffc2Cc[0U#OOC( ) ) )4{" <( ] * * * +   s//F3F&F&.F3&F0+F33GGceZdZdZy)r+z?Warning raised if an invalid path is specified in PYTHONTZPATH.N)__name__ __module__ __qualname____doc__r#rrr+r+sIrr+r#r$)NrNr1)r rrr!rrr>rrBr4 _TEST_PATHr9rnRuntimeWarningr+rr#rrrws  .. WW  bggll34 5cr : '1 .>BJ>J  r