library/sys.py (236 lines of code) (raw):

#!/usr/bin/env python3 # Copyright (c) Facebook, Inc. and its affiliates. (http://www.facebook.com) # $builtin-init-module$ from builtins import SimpleNamespace as _SimpleNamespace from _builtins import ( _builtin, _get_asyncgen_hooks, _int_check, _structseq_new_type, _Unbound, _unimplemented, ) from _builtins import maxunicode # noqa: F401 from _path import dirname as _dirname, join as _join # These values are all injected by our boot process. flake8 has no knowledge # about their definitions and will complain without these lines. _stderr_fd = _stderr_fd # noqa: F821 _stdin_fd = _stdin_fd # noqa: F821 _stdout_fd = _stdout_fd # noqa: F821 _version_releaselevel = _version_releaselevel # noqa: F821 hexversion = hexversion # noqa: F821 _Flags = _structseq_new_type( "sys.flags", ( "debug", "inspect", "interactive", "optimize", "dont_write_bytecode", "no_user_site", "no_site", "ignore_environment", "verbose", "bytes_warning", "quiet", "hash_randomization", "isolated", "dev_mode", "utf8_mode", ), is_heaptype=False, ) _FloatInfo = _structseq_new_type( "sys.float_info", ( "max", "max_exp", "max_10_exp", "min", "min_exp", "min_10_exp", "dig", "mant_dig", "epsilon", "radix", "rounds", ), is_heaptype=False, ) _HashInfo = _structseq_new_type( "sys.hash_info", ( "width", "modulus", "inf", "nan", "imag", "algorithm", "hash_bits", "seed_bits", "cutoff", ), is_heaptype=False, ) _AsyncGenHooks = _structseq_new_type( "sys.asyncgen_hooks", ("firstiter", "finalizer"), is_heaptype=False ) _VersionInfo = _structseq_new_type( "sys.version_info", ("major", "minor", "micro", "releaselevel", "serial"), is_heaptype=False, ) def _init( _executable, _python_path, _flags_data, _warnoptions, extend_python_path_with_stdlib, ): global executable executable = _executable global prefix prefix = _join(_dirname(executable), "..") global base_exec_prefix base_exec_prefix = prefix global base_prefix base_prefix = prefix global exec_prefix exec_prefix = prefix global path path = _python_path if extend_python_path_with_stdlib: stdlib_dir = _join( prefix, "lib", f"{implementation.name}{_version.major}.{_version.minor}" ) path.append(stdlib_dir) global flags flags = _Flags(_flags_data) global warnoptions warnoptions = _warnoptions __stderr__ = open(_stderr_fd, "w", buffering=True, closefd=False, encoding="utf-8") __stdin__ = open(_stdin_fd, "r", buffering=True, closefd=False, encoding="utf-8") __stdout__ = open(_stdout_fd, "w", buffering=True, closefd=False, encoding="utf-8") _framework = "" _version = _VersionInfo( ( (hexversion >> 24) & 0xFF, # major (hexversion >> 16) & 0xFF, # minor (hexversion >> 8) & 0xFF, # micro _version_releaselevel, # releaselevel hexversion & 0x0F, # serial ) ) def _getframe(depth=0): _builtin() abiflags = "" # TODO(T86943617): Add `addaudithook`. def audit(event, *args): pass # TODO(T86943617): implement base_exec_prefix = None # will be set by _init base_prefix = None # will be set by _init copyright = "" def displayhook(value): if value is None: return # Set '_' to None to avoid recursion import builtins builtins._ = None text = repr(value) try: stdout.write(text) except UnicodeEncodeError: bytes = text.encode(stdout.encoding, "backslashreplace") if hasattr(stdout, "buffer"): stdout.buffer.write(bytes) else: text = bytes.decode(stdout.encoding, "strict") stdout.write(text) stdout.write("\n") builtins._ = value __displayhook__ = displayhook dont_write_bytecode = False def exc_info(): _builtin() def excepthook(exc, value, tb): _builtin() __excepthook__ = excepthook exec_prefix = None # will be set by _init executable = None # will be set by _init def exit(code=_Unbound): if code is _Unbound: raise SystemExit() raise SystemExit(code) flags = None # will be set by _init float_info = _FloatInfo( ( 1.79769313486231570814527423731704357e308, 1024, 308, 2.22507385850720138309023271733240406e-308, -1021, -307, 15, 53, 2.22044604925031308084726333618164062e-16, 2, 1, ) ) def getdefaultencoding(): return "utf-8" def getfilesystemencodeerrors(): # TODO(T40363016): Allow arbitrary encodings and error handlings. return "surrogatepass" def getfilesystemencoding(): # TODO(T40363016): Allow arbitrary encodings instead of defaulting to utf-8. return "utf-8" # TODO(T62600497): Enforce the recursion limit def getrecursionlimit(): _builtin() def getsizeof(object, default=_Unbound): # It is possible (albeit difficult) to define a class without __sizeof__ try: cls = type(object) size = cls.__sizeof__ except AttributeError: if default is _Unbound: raise TypeError(f"Type {cls.__name__} doesn't define __sizeof__") return default result = size(object) if not _int_check(result): if default is _Unbound: raise TypeError("an integer is required") return default if result < 0: raise ValueError("__sizeof__() should return >= 0") return int(result) def gettrace(): return None implementation = _SimpleNamespace( cache_tag=f"pyro-{_version.major}{_version.minor}", name="pyro", version=_version ) def intern(string): _builtin() def is_finalizing(): _builtin() meta_path = [] path = None # will be set by _init path_hooks = [] path_importer_cache = {} platlibdir = "lib" prefix = None # will be set by _init ps1 = ">>> " ps2 = "... " pycache_prefix = None # TODO(T62600497): Enforce the recursion limit def setrecursionlimit(limit): _builtin() def settrace(function): if function is None: return _unimplemented() stderr = __stderr__ stdin = __stdin__ stdout = __stdout__ def unraisablehook(unraisable): _unimplemented() __unraisablehook__ = unraisablehook version_info = _version warnoptions = None # will be set by _init def _program_name(): _builtin() def _calculate_path(): """Returns a tuple representing (prefix, exec_prefix, module_search_path)""" # TODO(T61328507): Implement the path lookup algorithm. In the meantime, return # the compiled-in defaults that CPython returns when run out of a build directory. return "/usr/local", "/usr/local", "" def get_asyncgen_hooks(): return _AsyncGenHooks(_get_asyncgen_hooks()) def set_asyncgen_hooks(firstiter=_Unbound, finalizer=_Unbound): _builtin()