Server IP : 103.119.228.120 / Your IP : 3.136.19.203 Web Server : Apache System : Linux v8.techscape8.com 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64 User : nobody ( 99) PHP Version : 5.6.40 Disable Function : shell_exec,symlink,system,exec,proc_get_status,proc_nice,proc_terminate,define_syslog_variables,syslog,openlog,closelog,escapeshellcmd,passthru,ocinum cols,ini_alter,leak,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dl,dll,myshellexec,proc_open,socket_bind,proc_close,escapeshellarg,parse_ini_filepopen,fpassthru,exec,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice,proc_terminate,proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,dl,symlink,shell_exec,system,dl,passthru,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,fpassthru,getdisfunc,fx29exec,fx29exec2,is_windows,disp_freespace,fx29sh_getupdate,fx29_buff_prepare,fx29_sess_put,fx29shexit,fx29fsearch,fx29ftpbrutecheck,fx29sh_tools,fx29sh_about,milw0rm,imagez,sh_name,myshellexec,checkproxyhost,dosyayicek,c99_buff_prepare,c99_sess_put,c99getsource,c99sh_getupdate,c99fsearch,c99shexit,view_perms,posix_getpwuid,posix_getgrgid,posix_kill,parse_perms,parsesort,view_perms_color,set_encoder_input,ls_setcheckboxall,ls_reverse_all,rsg_read,rsg_glob,selfURL,dispsecinfo,unix2DosTime,addFile,system,get_users,view_size,DirFiles,DirFilesWide,DirPrintHTMLHeaders,GetFilesTotal,GetTitles,GetTimeTotal,GetMatchesCount,GetFileMatchesCount,GetResultFiles,fs_copy_dir,fs_copy_obj,fs_move_dir,fs_move_obj,fs_rmdir,SearchText,getmicrotime MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/lib/mysqlsh/lib/python3.9/zoneinfo/ |
Upload File : |
import os import sysconfig def reset_tzpath(to=None): global TZPATH tzpaths = to if tzpaths is not None: if isinstance(tzpaths, (str, bytes)): raise TypeError( f"tzpaths must be a list or tuple, " + f"not {type(tzpaths)}: {tzpaths!r}" ) if not all(map(os.path.isabs, tzpaths)): raise ValueError(_get_invalid_paths_message(tzpaths)) base_tzpath = tzpaths else: env_var = os.environ.get("PYTHONTZPATH", None) if env_var is not None: base_tzpath = _parse_python_tzpath(env_var) else: base_tzpath = _parse_python_tzpath( sysconfig.get_config_var("TZPATH") ) TZPATH = tuple(base_tzpath) def _parse_python_tzpath(env_var): if not env_var: return () raw_tzpath = env_var.split(os.pathsep) new_tzpath = tuple(filter(os.path.isabs, raw_tzpath)) # If anything has been filtered out, we will warn about it if len(new_tzpath) != len(raw_tzpath): import warnings msg = _get_invalid_paths_message(raw_tzpath) warnings.warn( "Invalid paths specified in PYTHONTZPATH environment variable. " + msg, InvalidTZPathWarning, ) return new_tzpath def _get_invalid_paths_message(tzpaths): invalid_paths = (path for path in tzpaths if not os.path.isabs(path)) prefix = "\n " indented_str = prefix + prefix.join(invalid_paths) return ( "Paths should be absolute but found the following relative paths:" + indented_str ) def find_tzfile(key): """Retrieve the path to a TZif file from a key.""" _validate_tzfile_path(key) for search_path in TZPATH: filepath = os.path.join(search_path, key) if os.path.isfile(filepath): return filepath return None _TEST_PATH = os.path.normpath(os.path.join("_", "_"))[:-1] def _validate_tzfile_path(path, _base=_TEST_PATH): if os.path.isabs(path): raise ValueError( f"ZoneInfo keys may not be absolute paths, got: {path}" ) # We only care about the kinds of path normalizations that would change the # length of the key - e.g. a/../b -> a/b, or a/b/ -> a/b. On Windows, # normpath will also change from a/b to a\b, but that would still preserve # the length. new_path = os.path.normpath(path) if len(new_path) != len(path): raise ValueError( f"ZoneInfo keys must be normalized relative paths, got: {path}" ) resolved = os.path.normpath(os.path.join(_base, new_path)) if not resolved.startswith(_base): raise ValueError( f"ZoneInfo keys must refer to subdirectories of TZPATH, got: {path}" ) del _TEST_PATH def available_timezones(): """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. """ from importlib import resources valid_zones = set() # Start with loading from the tzdata package if it exists: this has a # pre-assembled list of zones that only requires opening one file. try: with resources.open_text("tzdata", "zones") as f: for zone in f: zone = zone.strip() if zone: valid_zones.add(zone) except (ImportError, FileNotFoundError): pass def valid_key(fpath): try: with open(fpath, "rb") as f: return f.read(4) == b"TZif" except Exception: # pragma: nocover return False for tz_root in TZPATH: if not os.path.exists(tz_root): continue for root, dirnames, files in os.walk(tz_root): if root == tz_root: # right/ and posix/ are special directories and shouldn't be # included in the output of available zones if "right" in dirnames: dirnames.remove("right") if "posix" in dirnames: dirnames.remove("posix") for file in files: fpath = os.path.join(root, file) key = os.path.relpath(fpath, start=tz_root) if os.sep != "/": # pragma: nocover key = key.replace(os.sep, "/") if not key or key in valid_zones: continue if valid_key(fpath): valid_zones.add(key) if "posixrules" in valid_zones: # posixrules is a special symlink-only time zone where it exists, it # should not be included in the output valid_zones.remove("posixrules") return valid_zones class InvalidTZPathWarning(RuntimeWarning): """Warning raised if an invalid path is specified in PYTHONTZPATH.""" TZPATH = () reset_tzpath()