17db96d56Sopenharmony_ci:mod:`sys` --- System-specific parameters and functions 27db96d56Sopenharmony_ci======================================================= 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci.. module:: sys 57db96d56Sopenharmony_ci :synopsis: Access system-specific parameters and functions. 67db96d56Sopenharmony_ci 77db96d56Sopenharmony_ci-------------- 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ciThis module provides access to some variables used or maintained by the 107db96d56Sopenharmony_ciinterpreter and to functions that interact strongly with the interpreter. It is 117db96d56Sopenharmony_cialways available. 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_ci.. data:: abiflags 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_ci On POSIX systems where Python was built with the standard ``configure`` 177db96d56Sopenharmony_ci script, this contains the ABI flags as specified by :pep:`3149`. 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_ci .. versionchanged:: 3.8 207db96d56Sopenharmony_ci Default flags became an empty string (``m`` flag for pymalloc has been 217db96d56Sopenharmony_ci removed). 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_ci .. versionadded:: 3.2 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ci.. function:: addaudithook(hook) 277db96d56Sopenharmony_ci 287db96d56Sopenharmony_ci Append the callable *hook* to the list of active auditing hooks for the 297db96d56Sopenharmony_ci current (sub)interpreter. 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci When an auditing event is raised through the :func:`sys.audit` function, each 327db96d56Sopenharmony_ci hook will be called in the order it was added with the event name and the 337db96d56Sopenharmony_ci tuple of arguments. Native hooks added by :c:func:`PySys_AddAuditHook` are 347db96d56Sopenharmony_ci called first, followed by hooks added in the current (sub)interpreter. Hooks 357db96d56Sopenharmony_ci can then log the event, raise an exception to abort the operation, 367db96d56Sopenharmony_ci or terminate the process entirely. 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci Note that audit hooks are primarily for collecting information about internal 397db96d56Sopenharmony_ci or otherwise unobservable actions, whether by Python or libraries written in 407db96d56Sopenharmony_ci Python. They are not suitable for implementing a "sandbox". In particular, 417db96d56Sopenharmony_ci malicious code can trivially disable or bypass hooks added using this 427db96d56Sopenharmony_ci function. At a minimum, any security-sensitive hooks must be added using the 437db96d56Sopenharmony_ci C API :c:func:`PySys_AddAuditHook` before initialising the runtime, and any 447db96d56Sopenharmony_ci modules allowing arbitrary memory modification (such as :mod:`ctypes`) should 457db96d56Sopenharmony_ci be completely removed or closely monitored. 467db96d56Sopenharmony_ci 477db96d56Sopenharmony_ci .. audit-event:: sys.addaudithook "" sys.addaudithook 487db96d56Sopenharmony_ci 497db96d56Sopenharmony_ci Calling :func:`sys.addaudithook` will itself raise an auditing event 507db96d56Sopenharmony_ci named ``sys.addaudithook`` with no arguments. If any 517db96d56Sopenharmony_ci existing hooks raise an exception derived from :class:`RuntimeError`, the 527db96d56Sopenharmony_ci new hook will not be added and the exception suppressed. As a result, 537db96d56Sopenharmony_ci callers cannot assume that their hook has been added unless they control 547db96d56Sopenharmony_ci all existing hooks. 557db96d56Sopenharmony_ci 567db96d56Sopenharmony_ci See the :ref:`audit events table <audit-events>` for all events raised by 577db96d56Sopenharmony_ci CPython, and :pep:`578` for the original design discussion. 587db96d56Sopenharmony_ci 597db96d56Sopenharmony_ci .. versionadded:: 3.8 607db96d56Sopenharmony_ci 617db96d56Sopenharmony_ci .. versionchanged:: 3.8.1 627db96d56Sopenharmony_ci 637db96d56Sopenharmony_ci Exceptions derived from :class:`Exception` but not :class:`RuntimeError` 647db96d56Sopenharmony_ci are no longer suppressed. 657db96d56Sopenharmony_ci 667db96d56Sopenharmony_ci .. impl-detail:: 677db96d56Sopenharmony_ci 687db96d56Sopenharmony_ci When tracing is enabled (see :func:`settrace`), Python hooks are only 697db96d56Sopenharmony_ci traced if the callable has a ``__cantrace__`` member that is set to a 707db96d56Sopenharmony_ci true value. Otherwise, trace functions will skip the hook. 717db96d56Sopenharmony_ci 727db96d56Sopenharmony_ci 737db96d56Sopenharmony_ci.. data:: argv 747db96d56Sopenharmony_ci 757db96d56Sopenharmony_ci The list of command line arguments passed to a Python script. ``argv[0]`` is the 767db96d56Sopenharmony_ci script name (it is operating system dependent whether this is a full pathname or 777db96d56Sopenharmony_ci not). If the command was executed using the :option:`-c` command line option to 787db96d56Sopenharmony_ci the interpreter, ``argv[0]`` is set to the string ``'-c'``. If no script name 797db96d56Sopenharmony_ci was passed to the Python interpreter, ``argv[0]`` is the empty string. 807db96d56Sopenharmony_ci 817db96d56Sopenharmony_ci To loop over the standard input, or the list of files given on the 827db96d56Sopenharmony_ci command line, see the :mod:`fileinput` module. 837db96d56Sopenharmony_ci 847db96d56Sopenharmony_ci See also :data:`sys.orig_argv`. 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_ci .. note:: 877db96d56Sopenharmony_ci On Unix, command line arguments are passed by bytes from OS. Python decodes 887db96d56Sopenharmony_ci them with filesystem encoding and "surrogateescape" error handler. 897db96d56Sopenharmony_ci When you need original bytes, you can get it by 907db96d56Sopenharmony_ci ``[os.fsencode(arg) for arg in sys.argv]``. 917db96d56Sopenharmony_ci 927db96d56Sopenharmony_ci 937db96d56Sopenharmony_ci.. _auditing: 947db96d56Sopenharmony_ci 957db96d56Sopenharmony_ci.. function:: audit(event, *args) 967db96d56Sopenharmony_ci 977db96d56Sopenharmony_ci .. index:: single: auditing 987db96d56Sopenharmony_ci 997db96d56Sopenharmony_ci Raise an auditing event and trigger any active auditing hooks. 1007db96d56Sopenharmony_ci *event* is a string identifying the event, and *args* may contain 1017db96d56Sopenharmony_ci optional arguments with more information about the event. The 1027db96d56Sopenharmony_ci number and types of arguments for a given event are considered a 1037db96d56Sopenharmony_ci public and stable API and should not be modified between releases. 1047db96d56Sopenharmony_ci 1057db96d56Sopenharmony_ci For example, one auditing event is named ``os.chdir``. This event has 1067db96d56Sopenharmony_ci one argument called *path* that will contain the requested new 1077db96d56Sopenharmony_ci working directory. 1087db96d56Sopenharmony_ci 1097db96d56Sopenharmony_ci :func:`sys.audit` will call the existing auditing hooks, passing 1107db96d56Sopenharmony_ci the event name and arguments, and will re-raise the first exception 1117db96d56Sopenharmony_ci from any hook. In general, if an exception is raised, it should not 1127db96d56Sopenharmony_ci be handled and the process should be terminated as quickly as 1137db96d56Sopenharmony_ci possible. This allows hook implementations to decide how to respond 1147db96d56Sopenharmony_ci to particular events: they can merely log the event or abort the 1157db96d56Sopenharmony_ci operation by raising an exception. 1167db96d56Sopenharmony_ci 1177db96d56Sopenharmony_ci Hooks are added using the :func:`sys.addaudithook` or 1187db96d56Sopenharmony_ci :c:func:`PySys_AddAuditHook` functions. 1197db96d56Sopenharmony_ci 1207db96d56Sopenharmony_ci The native equivalent of this function is :c:func:`PySys_Audit`. Using the 1217db96d56Sopenharmony_ci native function is preferred when possible. 1227db96d56Sopenharmony_ci 1237db96d56Sopenharmony_ci See the :ref:`audit events table <audit-events>` for all events raised by 1247db96d56Sopenharmony_ci CPython. 1257db96d56Sopenharmony_ci 1267db96d56Sopenharmony_ci .. versionadded:: 3.8 1277db96d56Sopenharmony_ci 1287db96d56Sopenharmony_ci 1297db96d56Sopenharmony_ci.. data:: base_exec_prefix 1307db96d56Sopenharmony_ci 1317db96d56Sopenharmony_ci Set during Python startup, before ``site.py`` is run, to the same value as 1327db96d56Sopenharmony_ci :data:`exec_prefix`. If not running in a 1337db96d56Sopenharmony_ci :ref:`virtual environment <venv-def>`, the values will stay the same; if 1347db96d56Sopenharmony_ci ``site.py`` finds that a virtual environment is in use, the values of 1357db96d56Sopenharmony_ci :data:`prefix` and :data:`exec_prefix` will be changed to point to the 1367db96d56Sopenharmony_ci virtual environment, whereas :data:`base_prefix` and 1377db96d56Sopenharmony_ci :data:`base_exec_prefix` will remain pointing to the base Python 1387db96d56Sopenharmony_ci installation (the one which the virtual environment was created from). 1397db96d56Sopenharmony_ci 1407db96d56Sopenharmony_ci .. versionadded:: 3.3 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ci 1437db96d56Sopenharmony_ci.. data:: base_prefix 1447db96d56Sopenharmony_ci 1457db96d56Sopenharmony_ci Set during Python startup, before ``site.py`` is run, to the same value as 1467db96d56Sopenharmony_ci :data:`prefix`. If not running in a :ref:`virtual environment <venv-def>`, the values 1477db96d56Sopenharmony_ci will stay the same; if ``site.py`` finds that a virtual environment is in 1487db96d56Sopenharmony_ci use, the values of :data:`prefix` and :data:`exec_prefix` will be changed to 1497db96d56Sopenharmony_ci point to the virtual environment, whereas :data:`base_prefix` and 1507db96d56Sopenharmony_ci :data:`base_exec_prefix` will remain pointing to the base Python 1517db96d56Sopenharmony_ci installation (the one which the virtual environment was created from). 1527db96d56Sopenharmony_ci 1537db96d56Sopenharmony_ci .. versionadded:: 3.3 1547db96d56Sopenharmony_ci 1557db96d56Sopenharmony_ci 1567db96d56Sopenharmony_ci.. data:: byteorder 1577db96d56Sopenharmony_ci 1587db96d56Sopenharmony_ci An indicator of the native byte order. This will have the value ``'big'`` on 1597db96d56Sopenharmony_ci big-endian (most-significant byte first) platforms, and ``'little'`` on 1607db96d56Sopenharmony_ci little-endian (least-significant byte first) platforms. 1617db96d56Sopenharmony_ci 1627db96d56Sopenharmony_ci 1637db96d56Sopenharmony_ci.. data:: builtin_module_names 1647db96d56Sopenharmony_ci 1657db96d56Sopenharmony_ci A tuple of strings containing the names of all modules that are compiled into this 1667db96d56Sopenharmony_ci Python interpreter. (This information is not available in any other way --- 1677db96d56Sopenharmony_ci ``modules.keys()`` only lists the imported modules.) 1687db96d56Sopenharmony_ci 1697db96d56Sopenharmony_ci See also the :attr:`sys.stdlib_module_names` list. 1707db96d56Sopenharmony_ci 1717db96d56Sopenharmony_ci 1727db96d56Sopenharmony_ci.. function:: call_tracing(func, args) 1737db96d56Sopenharmony_ci 1747db96d56Sopenharmony_ci Call ``func(*args)``, while tracing is enabled. The tracing state is saved, 1757db96d56Sopenharmony_ci and restored afterwards. This is intended to be called from a debugger from 1767db96d56Sopenharmony_ci a checkpoint, to recursively debug some other code. 1777db96d56Sopenharmony_ci 1787db96d56Sopenharmony_ci 1797db96d56Sopenharmony_ci.. data:: copyright 1807db96d56Sopenharmony_ci 1817db96d56Sopenharmony_ci A string containing the copyright pertaining to the Python interpreter. 1827db96d56Sopenharmony_ci 1837db96d56Sopenharmony_ci 1847db96d56Sopenharmony_ci.. function:: _clear_type_cache() 1857db96d56Sopenharmony_ci 1867db96d56Sopenharmony_ci Clear the internal type cache. The type cache is used to speed up attribute 1877db96d56Sopenharmony_ci and method lookups. Use the function *only* to drop unnecessary references 1887db96d56Sopenharmony_ci during reference leak debugging. 1897db96d56Sopenharmony_ci 1907db96d56Sopenharmony_ci This function should be used for internal and specialized purposes only. 1917db96d56Sopenharmony_ci 1927db96d56Sopenharmony_ci 1937db96d56Sopenharmony_ci.. function:: _current_frames() 1947db96d56Sopenharmony_ci 1957db96d56Sopenharmony_ci Return a dictionary mapping each thread's identifier to the topmost stack frame 1967db96d56Sopenharmony_ci currently active in that thread at the time the function is called. Note that 1977db96d56Sopenharmony_ci functions in the :mod:`traceback` module can build the call stack given such a 1987db96d56Sopenharmony_ci frame. 1997db96d56Sopenharmony_ci 2007db96d56Sopenharmony_ci This is most useful for debugging deadlock: this function does not require the 2017db96d56Sopenharmony_ci deadlocked threads' cooperation, and such threads' call stacks are frozen for as 2027db96d56Sopenharmony_ci long as they remain deadlocked. The frame returned for a non-deadlocked thread 2037db96d56Sopenharmony_ci may bear no relationship to that thread's current activity by the time calling 2047db96d56Sopenharmony_ci code examines the frame. 2057db96d56Sopenharmony_ci 2067db96d56Sopenharmony_ci This function should be used for internal and specialized purposes only. 2077db96d56Sopenharmony_ci 2087db96d56Sopenharmony_ci .. audit-event:: sys._current_frames "" sys._current_frames 2097db96d56Sopenharmony_ci 2107db96d56Sopenharmony_ci.. function:: _current_exceptions() 2117db96d56Sopenharmony_ci 2127db96d56Sopenharmony_ci Return a dictionary mapping each thread's identifier to the topmost exception 2137db96d56Sopenharmony_ci currently active in that thread at the time the function is called. 2147db96d56Sopenharmony_ci If a thread is not currently handling an exception, it is not included in 2157db96d56Sopenharmony_ci the result dictionary. 2167db96d56Sopenharmony_ci 2177db96d56Sopenharmony_ci This is most useful for statistical profiling. 2187db96d56Sopenharmony_ci 2197db96d56Sopenharmony_ci This function should be used for internal and specialized purposes only. 2207db96d56Sopenharmony_ci 2217db96d56Sopenharmony_ci .. audit-event:: sys._current_exceptions "" sys._current_exceptions 2227db96d56Sopenharmony_ci 2237db96d56Sopenharmony_ci.. function:: breakpointhook() 2247db96d56Sopenharmony_ci 2257db96d56Sopenharmony_ci This hook function is called by built-in :func:`breakpoint`. By default, 2267db96d56Sopenharmony_ci it drops you into the :mod:`pdb` debugger, but it can be set to any other 2277db96d56Sopenharmony_ci function so that you can choose which debugger gets used. 2287db96d56Sopenharmony_ci 2297db96d56Sopenharmony_ci The signature of this function is dependent on what it calls. For example, 2307db96d56Sopenharmony_ci the default binding (e.g. ``pdb.set_trace()``) expects no arguments, but 2317db96d56Sopenharmony_ci you might bind it to a function that expects additional arguments 2327db96d56Sopenharmony_ci (positional and/or keyword). The built-in ``breakpoint()`` function passes 2337db96d56Sopenharmony_ci its ``*args`` and ``**kws`` straight through. Whatever 2347db96d56Sopenharmony_ci ``breakpointhooks()`` returns is returned from ``breakpoint()``. 2357db96d56Sopenharmony_ci 2367db96d56Sopenharmony_ci The default implementation first consults the environment variable 2377db96d56Sopenharmony_ci :envvar:`PYTHONBREAKPOINT`. If that is set to ``"0"`` then this function 2387db96d56Sopenharmony_ci returns immediately; i.e. it is a no-op. If the environment variable is 2397db96d56Sopenharmony_ci not set, or is set to the empty string, ``pdb.set_trace()`` is called. 2407db96d56Sopenharmony_ci Otherwise this variable should name a function to run, using Python's 2417db96d56Sopenharmony_ci dotted-import nomenclature, e.g. ``package.subpackage.module.function``. 2427db96d56Sopenharmony_ci In this case, ``package.subpackage.module`` would be imported and the 2437db96d56Sopenharmony_ci resulting module must have a callable named ``function()``. This is run, 2447db96d56Sopenharmony_ci passing in ``*args`` and ``**kws``, and whatever ``function()`` returns, 2457db96d56Sopenharmony_ci ``sys.breakpointhook()`` returns to the built-in :func:`breakpoint` 2467db96d56Sopenharmony_ci function. 2477db96d56Sopenharmony_ci 2487db96d56Sopenharmony_ci Note that if anything goes wrong while importing the callable named by 2497db96d56Sopenharmony_ci :envvar:`PYTHONBREAKPOINT`, a :exc:`RuntimeWarning` is reported and the 2507db96d56Sopenharmony_ci breakpoint is ignored. 2517db96d56Sopenharmony_ci 2527db96d56Sopenharmony_ci Also note that if ``sys.breakpointhook()`` is overridden programmatically, 2537db96d56Sopenharmony_ci :envvar:`PYTHONBREAKPOINT` is *not* consulted. 2547db96d56Sopenharmony_ci 2557db96d56Sopenharmony_ci .. versionadded:: 3.7 2567db96d56Sopenharmony_ci 2577db96d56Sopenharmony_ci.. function:: _debugmallocstats() 2587db96d56Sopenharmony_ci 2597db96d56Sopenharmony_ci Print low-level information to stderr about the state of CPython's memory 2607db96d56Sopenharmony_ci allocator. 2617db96d56Sopenharmony_ci 2627db96d56Sopenharmony_ci If Python is :ref:`built in debug mode <debug-build>` (:option:`configure 2637db96d56Sopenharmony_ci --with-pydebug option <--with-pydebug>`), it also performs some expensive 2647db96d56Sopenharmony_ci internal consistency checks. 2657db96d56Sopenharmony_ci 2667db96d56Sopenharmony_ci .. versionadded:: 3.3 2677db96d56Sopenharmony_ci 2687db96d56Sopenharmony_ci .. impl-detail:: 2697db96d56Sopenharmony_ci 2707db96d56Sopenharmony_ci This function is specific to CPython. The exact output format is not 2717db96d56Sopenharmony_ci defined here, and may change. 2727db96d56Sopenharmony_ci 2737db96d56Sopenharmony_ci 2747db96d56Sopenharmony_ci.. data:: dllhandle 2757db96d56Sopenharmony_ci 2767db96d56Sopenharmony_ci Integer specifying the handle of the Python DLL. 2777db96d56Sopenharmony_ci 2787db96d56Sopenharmony_ci .. availability:: Windows. 2797db96d56Sopenharmony_ci 2807db96d56Sopenharmony_ci 2817db96d56Sopenharmony_ci.. function:: displayhook(value) 2827db96d56Sopenharmony_ci 2837db96d56Sopenharmony_ci If *value* is not ``None``, this function prints ``repr(value)`` to 2847db96d56Sopenharmony_ci ``sys.stdout``, and saves *value* in ``builtins._``. If ``repr(value)`` is 2857db96d56Sopenharmony_ci not encodable to ``sys.stdout.encoding`` with ``sys.stdout.errors`` error 2867db96d56Sopenharmony_ci handler (which is probably ``'strict'``), encode it to 2877db96d56Sopenharmony_ci ``sys.stdout.encoding`` with ``'backslashreplace'`` error handler. 2887db96d56Sopenharmony_ci 2897db96d56Sopenharmony_ci ``sys.displayhook`` is called on the result of evaluating an :term:`expression` 2907db96d56Sopenharmony_ci entered in an interactive Python session. The display of these values can be 2917db96d56Sopenharmony_ci customized by assigning another one-argument function to ``sys.displayhook``. 2927db96d56Sopenharmony_ci 2937db96d56Sopenharmony_ci Pseudo-code:: 2947db96d56Sopenharmony_ci 2957db96d56Sopenharmony_ci def displayhook(value): 2967db96d56Sopenharmony_ci if value is None: 2977db96d56Sopenharmony_ci return 2987db96d56Sopenharmony_ci # Set '_' to None to avoid recursion 2997db96d56Sopenharmony_ci builtins._ = None 3007db96d56Sopenharmony_ci text = repr(value) 3017db96d56Sopenharmony_ci try: 3027db96d56Sopenharmony_ci sys.stdout.write(text) 3037db96d56Sopenharmony_ci except UnicodeEncodeError: 3047db96d56Sopenharmony_ci bytes = text.encode(sys.stdout.encoding, 'backslashreplace') 3057db96d56Sopenharmony_ci if hasattr(sys.stdout, 'buffer'): 3067db96d56Sopenharmony_ci sys.stdout.buffer.write(bytes) 3077db96d56Sopenharmony_ci else: 3087db96d56Sopenharmony_ci text = bytes.decode(sys.stdout.encoding, 'strict') 3097db96d56Sopenharmony_ci sys.stdout.write(text) 3107db96d56Sopenharmony_ci sys.stdout.write("\n") 3117db96d56Sopenharmony_ci builtins._ = value 3127db96d56Sopenharmony_ci 3137db96d56Sopenharmony_ci .. versionchanged:: 3.2 3147db96d56Sopenharmony_ci Use ``'backslashreplace'`` error handler on :exc:`UnicodeEncodeError`. 3157db96d56Sopenharmony_ci 3167db96d56Sopenharmony_ci 3177db96d56Sopenharmony_ci.. data:: dont_write_bytecode 3187db96d56Sopenharmony_ci 3197db96d56Sopenharmony_ci If this is true, Python won't try to write ``.pyc`` files on the 3207db96d56Sopenharmony_ci import of source modules. This value is initially set to ``True`` or 3217db96d56Sopenharmony_ci ``False`` depending on the :option:`-B` command line option and the 3227db96d56Sopenharmony_ci :envvar:`PYTHONDONTWRITEBYTECODE` environment variable, but you can set it 3237db96d56Sopenharmony_ci yourself to control bytecode file generation. 3247db96d56Sopenharmony_ci 3257db96d56Sopenharmony_ci 3267db96d56Sopenharmony_ci.. data:: _emscripten_info 3277db96d56Sopenharmony_ci 3287db96d56Sopenharmony_ci A :term:`named tuple` holding information about the environment on the 3297db96d56Sopenharmony_ci *wasm32-emscripten* platform. The named tuple is provisional and may change 3307db96d56Sopenharmony_ci in the future. 3317db96d56Sopenharmony_ci 3327db96d56Sopenharmony_ci .. tabularcolumns:: |l|L| 3337db96d56Sopenharmony_ci 3347db96d56Sopenharmony_ci +-----------------------------+----------------------------------------------+ 3357db96d56Sopenharmony_ci | Attribute | Explanation | 3367db96d56Sopenharmony_ci +=============================+==============================================+ 3377db96d56Sopenharmony_ci | :const:`emscripten_version` | Emscripten version as tuple of ints | 3387db96d56Sopenharmony_ci | | (major, minor, micro), e.g. ``(3, 1, 8)``. | 3397db96d56Sopenharmony_ci +-----------------------------+----------------------------------------------+ 3407db96d56Sopenharmony_ci | :const:`runtime` | Runtime string, e.g. browser user agent, | 3417db96d56Sopenharmony_ci | | ``'Node.js v14.18.2'``, or ``'UNKNOWN'``. | 3427db96d56Sopenharmony_ci +-----------------------------+----------------------------------------------+ 3437db96d56Sopenharmony_ci | :const:`pthreads` | ``True`` if Python is compiled with | 3447db96d56Sopenharmony_ci | | Emscripten pthreads support. | 3457db96d56Sopenharmony_ci +-----------------------------+----------------------------------------------+ 3467db96d56Sopenharmony_ci | :const:`shared_memory` | ``True`` if Python is compiled with shared | 3477db96d56Sopenharmony_ci | | memory support. | 3487db96d56Sopenharmony_ci +-----------------------------+----------------------------------------------+ 3497db96d56Sopenharmony_ci 3507db96d56Sopenharmony_ci .. availability:: Emscripten. 3517db96d56Sopenharmony_ci 3527db96d56Sopenharmony_ci .. versionadded:: 3.11 3537db96d56Sopenharmony_ci 3547db96d56Sopenharmony_ci 3557db96d56Sopenharmony_ci.. data:: pycache_prefix 3567db96d56Sopenharmony_ci 3577db96d56Sopenharmony_ci If this is set (not ``None``), Python will write bytecode-cache ``.pyc`` 3587db96d56Sopenharmony_ci files to (and read them from) a parallel directory tree rooted at this 3597db96d56Sopenharmony_ci directory, rather than from ``__pycache__`` directories in the source code 3607db96d56Sopenharmony_ci tree. Any ``__pycache__`` directories in the source code tree will be ignored 3617db96d56Sopenharmony_ci and new ``.pyc`` files written within the pycache prefix. Thus if you use 3627db96d56Sopenharmony_ci :mod:`compileall` as a pre-build step, you must ensure you run it with the 3637db96d56Sopenharmony_ci same pycache prefix (if any) that you will use at runtime. 3647db96d56Sopenharmony_ci 3657db96d56Sopenharmony_ci A relative path is interpreted relative to the current working directory. 3667db96d56Sopenharmony_ci 3677db96d56Sopenharmony_ci This value is initially set based on the value of the :option:`-X` 3687db96d56Sopenharmony_ci ``pycache_prefix=PATH`` command-line option or the 3697db96d56Sopenharmony_ci :envvar:`PYTHONPYCACHEPREFIX` environment variable (command-line takes 3707db96d56Sopenharmony_ci precedence). If neither are set, it is ``None``. 3717db96d56Sopenharmony_ci 3727db96d56Sopenharmony_ci .. versionadded:: 3.8 3737db96d56Sopenharmony_ci 3747db96d56Sopenharmony_ci 3757db96d56Sopenharmony_ci.. function:: excepthook(type, value, traceback) 3767db96d56Sopenharmony_ci 3777db96d56Sopenharmony_ci This function prints out a given traceback and exception to ``sys.stderr``. 3787db96d56Sopenharmony_ci 3797db96d56Sopenharmony_ci When an exception is raised and uncaught, the interpreter calls 3807db96d56Sopenharmony_ci ``sys.excepthook`` with three arguments, the exception class, exception 3817db96d56Sopenharmony_ci instance, and a traceback object. In an interactive session this happens just 3827db96d56Sopenharmony_ci before control is returned to the prompt; in a Python program this happens just 3837db96d56Sopenharmony_ci before the program exits. The handling of such top-level exceptions can be 3847db96d56Sopenharmony_ci customized by assigning another three-argument function to ``sys.excepthook``. 3857db96d56Sopenharmony_ci 3867db96d56Sopenharmony_ci .. audit-event:: sys.excepthook hook,type,value,traceback sys.excepthook 3877db96d56Sopenharmony_ci 3887db96d56Sopenharmony_ci Raise an auditing event ``sys.excepthook`` with arguments ``hook``, 3897db96d56Sopenharmony_ci ``type``, ``value``, ``traceback`` when an uncaught exception occurs. 3907db96d56Sopenharmony_ci If no hook has been set, ``hook`` may be ``None``. If any hook raises 3917db96d56Sopenharmony_ci an exception derived from :class:`RuntimeError` the call to the hook will 3927db96d56Sopenharmony_ci be suppressed. Otherwise, the audit hook exception will be reported as 3937db96d56Sopenharmony_ci unraisable and ``sys.excepthook`` will be called. 3947db96d56Sopenharmony_ci 3957db96d56Sopenharmony_ci .. seealso:: 3967db96d56Sopenharmony_ci 3977db96d56Sopenharmony_ci The :func:`sys.unraisablehook` function handles unraisable exceptions 3987db96d56Sopenharmony_ci and the :func:`threading.excepthook` function handles exception raised 3997db96d56Sopenharmony_ci by :func:`threading.Thread.run`. 4007db96d56Sopenharmony_ci 4017db96d56Sopenharmony_ci 4027db96d56Sopenharmony_ci.. data:: __breakpointhook__ 4037db96d56Sopenharmony_ci __displayhook__ 4047db96d56Sopenharmony_ci __excepthook__ 4057db96d56Sopenharmony_ci __unraisablehook__ 4067db96d56Sopenharmony_ci 4077db96d56Sopenharmony_ci These objects contain the original values of ``breakpointhook``, 4087db96d56Sopenharmony_ci ``displayhook``, ``excepthook``, and ``unraisablehook`` at the start of the 4097db96d56Sopenharmony_ci program. They are saved so that ``breakpointhook``, ``displayhook`` and 4107db96d56Sopenharmony_ci ``excepthook``, ``unraisablehook`` can be restored in case they happen to 4117db96d56Sopenharmony_ci get replaced with broken or alternative objects. 4127db96d56Sopenharmony_ci 4137db96d56Sopenharmony_ci .. versionadded:: 3.7 4147db96d56Sopenharmony_ci __breakpointhook__ 4157db96d56Sopenharmony_ci 4167db96d56Sopenharmony_ci .. versionadded:: 3.8 4177db96d56Sopenharmony_ci __unraisablehook__ 4187db96d56Sopenharmony_ci 4197db96d56Sopenharmony_ci 4207db96d56Sopenharmony_ci.. function:: exception() 4217db96d56Sopenharmony_ci 4227db96d56Sopenharmony_ci This function, when called while an exception handler is executing (such as 4237db96d56Sopenharmony_ci an ``except`` or ``except*`` clause), returns the exception instance that 4247db96d56Sopenharmony_ci was caught by this handler. When exception handlers are nested within one 4257db96d56Sopenharmony_ci another, only the exception handled by the innermost handler is accessible. 4267db96d56Sopenharmony_ci 4277db96d56Sopenharmony_ci If no exception handler is executing, this function returns ``None``. 4287db96d56Sopenharmony_ci 4297db96d56Sopenharmony_ci .. versionadded:: 3.11 4307db96d56Sopenharmony_ci 4317db96d56Sopenharmony_ci 4327db96d56Sopenharmony_ci.. function:: exc_info() 4337db96d56Sopenharmony_ci 4347db96d56Sopenharmony_ci This function returns the old-style representation of the handled 4357db96d56Sopenharmony_ci exception. If an exception ``e`` is currently handled (so 4367db96d56Sopenharmony_ci :func:`exception` would return ``e``), :func:`exc_info` returns the 4377db96d56Sopenharmony_ci tuple ``(type(e), e, e.__traceback__)``. 4387db96d56Sopenharmony_ci That is, a tuple containing the type of the exception (a subclass of 4397db96d56Sopenharmony_ci :exc:`BaseException`), the exception itself, and a :ref:`traceback 4407db96d56Sopenharmony_ci object <traceback-objects>` which typically encapsulates the call 4417db96d56Sopenharmony_ci stack at the point where the exception last occurred. 4427db96d56Sopenharmony_ci 4437db96d56Sopenharmony_ci .. index:: pair: object; traceback 4447db96d56Sopenharmony_ci 4457db96d56Sopenharmony_ci If no exception is being handled anywhere on the stack, this function 4467db96d56Sopenharmony_ci return a tuple containing three ``None`` values. 4477db96d56Sopenharmony_ci 4487db96d56Sopenharmony_ci .. versionchanged:: 3.11 4497db96d56Sopenharmony_ci The ``type`` and ``traceback`` fields are now derived from the ``value`` 4507db96d56Sopenharmony_ci (the exception instance), so when an exception is modified while it is 4517db96d56Sopenharmony_ci being handled, the changes are reflected in the results of subsequent 4527db96d56Sopenharmony_ci calls to :func:`exc_info`. 4537db96d56Sopenharmony_ci 4547db96d56Sopenharmony_ci.. data:: exec_prefix 4557db96d56Sopenharmony_ci 4567db96d56Sopenharmony_ci A string giving the site-specific directory prefix where the platform-dependent 4577db96d56Sopenharmony_ci Python files are installed; by default, this is also ``'/usr/local'``. This can 4587db96d56Sopenharmony_ci be set at build time with the ``--exec-prefix`` argument to the 4597db96d56Sopenharmony_ci :program:`configure` script. Specifically, all configuration files (e.g. the 4607db96d56Sopenharmony_ci :file:`pyconfig.h` header file) are installed in the directory 4617db96d56Sopenharmony_ci :file:`{exec_prefix}/lib/python{X.Y}/config`, and shared library modules are 4627db96d56Sopenharmony_ci installed in :file:`{exec_prefix}/lib/python{X.Y}/lib-dynload`, where *X.Y* 4637db96d56Sopenharmony_ci is the version number of Python, for example ``3.2``. 4647db96d56Sopenharmony_ci 4657db96d56Sopenharmony_ci .. note:: 4667db96d56Sopenharmony_ci 4677db96d56Sopenharmony_ci If a :ref:`virtual environment <venv-def>` is in effect, this 4687db96d56Sopenharmony_ci value will be changed in ``site.py`` to point to the virtual environment. 4697db96d56Sopenharmony_ci The value for the Python installation will still be available, via 4707db96d56Sopenharmony_ci :data:`base_exec_prefix`. 4717db96d56Sopenharmony_ci 4727db96d56Sopenharmony_ci 4737db96d56Sopenharmony_ci.. data:: executable 4747db96d56Sopenharmony_ci 4757db96d56Sopenharmony_ci A string giving the absolute path of the executable binary for the Python 4767db96d56Sopenharmony_ci interpreter, on systems where this makes sense. If Python is unable to retrieve 4777db96d56Sopenharmony_ci the real path to its executable, :data:`sys.executable` will be an empty string 4787db96d56Sopenharmony_ci or ``None``. 4797db96d56Sopenharmony_ci 4807db96d56Sopenharmony_ci 4817db96d56Sopenharmony_ci.. function:: exit([arg]) 4827db96d56Sopenharmony_ci 4837db96d56Sopenharmony_ci Raise a :exc:`SystemExit` exception, signaling an intention to exit the interpreter. 4847db96d56Sopenharmony_ci 4857db96d56Sopenharmony_ci The optional argument *arg* can be an integer giving the exit status 4867db96d56Sopenharmony_ci (defaulting to zero), or another type of object. If it is an integer, zero 4877db96d56Sopenharmony_ci is considered "successful termination" and any nonzero value is considered 4887db96d56Sopenharmony_ci "abnormal termination" by shells and the like. Most systems require it to be 4897db96d56Sopenharmony_ci in the range 0--127, and produce undefined results otherwise. Some systems 4907db96d56Sopenharmony_ci have a convention for assigning specific meanings to specific exit codes, but 4917db96d56Sopenharmony_ci these are generally underdeveloped; Unix programs generally use 2 for command 4927db96d56Sopenharmony_ci line syntax errors and 1 for all other kind of errors. If another type of 4937db96d56Sopenharmony_ci object is passed, ``None`` is equivalent to passing zero, and any other 4947db96d56Sopenharmony_ci object is printed to :data:`stderr` and results in an exit code of 1. In 4957db96d56Sopenharmony_ci particular, ``sys.exit("some error message")`` is a quick way to exit a 4967db96d56Sopenharmony_ci program when an error occurs. 4977db96d56Sopenharmony_ci 4987db96d56Sopenharmony_ci Since :func:`exit` ultimately "only" raises an exception, it will only exit 4997db96d56Sopenharmony_ci the process when called from the main thread, and the exception is not 5007db96d56Sopenharmony_ci intercepted. Cleanup actions specified by finally clauses of :keyword:`try` statements 5017db96d56Sopenharmony_ci are honored, and it is possible to intercept the exit attempt at an outer level. 5027db96d56Sopenharmony_ci 5037db96d56Sopenharmony_ci .. versionchanged:: 3.6 5047db96d56Sopenharmony_ci If an error occurs in the cleanup after the Python interpreter 5057db96d56Sopenharmony_ci has caught :exc:`SystemExit` (such as an error flushing buffered data 5067db96d56Sopenharmony_ci in the standard streams), the exit status is changed to 120. 5077db96d56Sopenharmony_ci 5087db96d56Sopenharmony_ci 5097db96d56Sopenharmony_ci.. data:: flags 5107db96d56Sopenharmony_ci 5117db96d56Sopenharmony_ci The :term:`named tuple` *flags* exposes the status of command line 5127db96d56Sopenharmony_ci flags. The attributes are read only. 5137db96d56Sopenharmony_ci 5147db96d56Sopenharmony_ci ============================= ============================================================================================================== 5157db96d56Sopenharmony_ci attribute flag 5167db96d56Sopenharmony_ci ============================= ============================================================================================================== 5177db96d56Sopenharmony_ci :const:`debug` :option:`-d` 5187db96d56Sopenharmony_ci :const:`inspect` :option:`-i` 5197db96d56Sopenharmony_ci :const:`interactive` :option:`-i` 5207db96d56Sopenharmony_ci :const:`isolated` :option:`-I` 5217db96d56Sopenharmony_ci :const:`optimize` :option:`-O` or :option:`-OO` 5227db96d56Sopenharmony_ci :const:`dont_write_bytecode` :option:`-B` 5237db96d56Sopenharmony_ci :const:`no_user_site` :option:`-s` 5247db96d56Sopenharmony_ci :const:`no_site` :option:`-S` 5257db96d56Sopenharmony_ci :const:`ignore_environment` :option:`-E` 5267db96d56Sopenharmony_ci :const:`verbose` :option:`-v` 5277db96d56Sopenharmony_ci :const:`bytes_warning` :option:`-b` 5287db96d56Sopenharmony_ci :const:`quiet` :option:`-q` 5297db96d56Sopenharmony_ci :const:`hash_randomization` :option:`-R` 5307db96d56Sopenharmony_ci :const:`dev_mode` :option:`-X dev <-X>` (:ref:`Python Development Mode <devmode>`) 5317db96d56Sopenharmony_ci :const:`utf8_mode` :option:`-X utf8 <-X>` 5327db96d56Sopenharmony_ci :const:`safe_path` :option:`-P` 5337db96d56Sopenharmony_ci :const:`int_max_str_digits` :option:`-X int_max_str_digits <-X>` (:ref:`integer string conversion length limitation <int_max_str_digits>`) 5347db96d56Sopenharmony_ci ============================= ============================================================================================================== 5357db96d56Sopenharmony_ci 5367db96d56Sopenharmony_ci .. versionchanged:: 3.2 5377db96d56Sopenharmony_ci Added ``quiet`` attribute for the new :option:`-q` flag. 5387db96d56Sopenharmony_ci 5397db96d56Sopenharmony_ci .. versionadded:: 3.2.3 5407db96d56Sopenharmony_ci The ``hash_randomization`` attribute. 5417db96d56Sopenharmony_ci 5427db96d56Sopenharmony_ci .. versionchanged:: 3.3 5437db96d56Sopenharmony_ci Removed obsolete ``division_warning`` attribute. 5447db96d56Sopenharmony_ci 5457db96d56Sopenharmony_ci .. versionchanged:: 3.4 5467db96d56Sopenharmony_ci Added ``isolated`` attribute for :option:`-I` ``isolated`` flag. 5477db96d56Sopenharmony_ci 5487db96d56Sopenharmony_ci .. versionchanged:: 3.7 5497db96d56Sopenharmony_ci Added the ``dev_mode`` attribute for the new :ref:`Python Development 5507db96d56Sopenharmony_ci Mode <devmode>` and the ``utf8_mode`` attribute for the new :option:`-X` 5517db96d56Sopenharmony_ci ``utf8`` flag. 5527db96d56Sopenharmony_ci 5537db96d56Sopenharmony_ci .. versionchanged:: 3.11 5547db96d56Sopenharmony_ci Added the ``safe_path`` attribute for :option:`-P` option. 5557db96d56Sopenharmony_ci 5567db96d56Sopenharmony_ci .. versionchanged:: 3.11 5577db96d56Sopenharmony_ci Added the ``int_max_str_digits`` attribute. 5587db96d56Sopenharmony_ci 5597db96d56Sopenharmony_ci 5607db96d56Sopenharmony_ci.. data:: float_info 5617db96d56Sopenharmony_ci 5627db96d56Sopenharmony_ci A :term:`named tuple` holding information about the float type. It 5637db96d56Sopenharmony_ci contains low level information about the precision and internal 5647db96d56Sopenharmony_ci representation. The values correspond to the various floating-point 5657db96d56Sopenharmony_ci constants defined in the standard header file :file:`float.h` for the 'C' 5667db96d56Sopenharmony_ci programming language; see section 5.2.4.2.2 of the 1999 ISO/IEC C standard 5677db96d56Sopenharmony_ci [C99]_, 'Characteristics of floating types', for details. 5687db96d56Sopenharmony_ci 5697db96d56Sopenharmony_ci .. tabularcolumns:: |l|l|L| 5707db96d56Sopenharmony_ci 5717db96d56Sopenharmony_ci +---------------------+---------------------+--------------------------------------------------+ 5727db96d56Sopenharmony_ci | attribute | float.h macro | explanation | 5737db96d56Sopenharmony_ci +=====================+=====================+==================================================+ 5747db96d56Sopenharmony_ci | ``epsilon`` | ``DBL_EPSILON`` | difference between 1.0 and the least value | 5757db96d56Sopenharmony_ci | | | greater than 1.0 that is representable as a float| 5767db96d56Sopenharmony_ci | | | | 5777db96d56Sopenharmony_ci | | | See also :func:`math.ulp`. | 5787db96d56Sopenharmony_ci +---------------------+---------------------+--------------------------------------------------+ 5797db96d56Sopenharmony_ci | ``dig`` | ``DBL_DIG`` | maximum number of decimal digits that can be | 5807db96d56Sopenharmony_ci | | | faithfully represented in a float; see below | 5817db96d56Sopenharmony_ci +---------------------+---------------------+--------------------------------------------------+ 5827db96d56Sopenharmony_ci | ``mant_dig`` | ``DBL_MANT_DIG`` | float precision: the number of base-``radix`` | 5837db96d56Sopenharmony_ci | | | digits in the significand of a float | 5847db96d56Sopenharmony_ci +---------------------+---------------------+--------------------------------------------------+ 5857db96d56Sopenharmony_ci | ``max`` | ``DBL_MAX`` | maximum representable positive finite float | 5867db96d56Sopenharmony_ci +---------------------+---------------------+--------------------------------------------------+ 5877db96d56Sopenharmony_ci | ``max_exp`` | ``DBL_MAX_EXP`` | maximum integer *e* such that ``radix**(e-1)`` is| 5887db96d56Sopenharmony_ci | | | a representable finite float | 5897db96d56Sopenharmony_ci +---------------------+---------------------+--------------------------------------------------+ 5907db96d56Sopenharmony_ci | ``max_10_exp`` | ``DBL_MAX_10_EXP`` | maximum integer *e* such that ``10**e`` is in the| 5917db96d56Sopenharmony_ci | | | range of representable finite floats | 5927db96d56Sopenharmony_ci +---------------------+---------------------+--------------------------------------------------+ 5937db96d56Sopenharmony_ci | ``min`` | ``DBL_MIN`` | minimum representable positive *normalized* float| 5947db96d56Sopenharmony_ci | | | | 5957db96d56Sopenharmony_ci | | | Use :func:`math.ulp(0.0) <math.ulp>` to get the | 5967db96d56Sopenharmony_ci | | | smallest positive *denormalized* representable | 5977db96d56Sopenharmony_ci | | | float. | 5987db96d56Sopenharmony_ci +---------------------+---------------------+--------------------------------------------------+ 5997db96d56Sopenharmony_ci | ``min_exp`` | ``DBL_MIN_EXP`` | minimum integer *e* such that ``radix**(e-1)`` is| 6007db96d56Sopenharmony_ci | | | a normalized float | 6017db96d56Sopenharmony_ci +---------------------+---------------------+--------------------------------------------------+ 6027db96d56Sopenharmony_ci | ``min_10_exp`` | ``DBL_MIN_10_EXP`` | minimum integer *e* such that ``10**e`` is a | 6037db96d56Sopenharmony_ci | | | normalized float | 6047db96d56Sopenharmony_ci +---------------------+---------------------+--------------------------------------------------+ 6057db96d56Sopenharmony_ci | ``radix`` | ``FLT_RADIX`` | radix of exponent representation | 6067db96d56Sopenharmony_ci +---------------------+---------------------+--------------------------------------------------+ 6077db96d56Sopenharmony_ci | ``rounds`` | ``FLT_ROUNDS`` | integer representing the rounding mode for | 6087db96d56Sopenharmony_ci | | | floating-point arithmetic. This reflects the | 6097db96d56Sopenharmony_ci | | | value of the system ``FLT_ROUNDS`` macro at | 6107db96d56Sopenharmony_ci | | | interpreter startup time: | 6117db96d56Sopenharmony_ci | | | ``-1`` indeterminable, | 6127db96d56Sopenharmony_ci | | | ``0`` toward zero, | 6137db96d56Sopenharmony_ci | | | ``1`` to nearest, | 6147db96d56Sopenharmony_ci | | | ``2`` toward positive infinity, | 6157db96d56Sopenharmony_ci | | | ``3`` toward negative infinity | 6167db96d56Sopenharmony_ci | | | | 6177db96d56Sopenharmony_ci | | | All other values for ``FLT_ROUNDS`` characterize | 6187db96d56Sopenharmony_ci | | | implementation-defined rounding behavior. | 6197db96d56Sopenharmony_ci +---------------------+---------------------+--------------------------------------------------+ 6207db96d56Sopenharmony_ci 6217db96d56Sopenharmony_ci The attribute :attr:`sys.float_info.dig` needs further explanation. If 6227db96d56Sopenharmony_ci ``s`` is any string representing a decimal number with at most 6237db96d56Sopenharmony_ci :attr:`sys.float_info.dig` significant digits, then converting ``s`` to a 6247db96d56Sopenharmony_ci float and back again will recover a string representing the same decimal 6257db96d56Sopenharmony_ci value:: 6267db96d56Sopenharmony_ci 6277db96d56Sopenharmony_ci >>> import sys 6287db96d56Sopenharmony_ci >>> sys.float_info.dig 6297db96d56Sopenharmony_ci 15 6307db96d56Sopenharmony_ci >>> s = '3.14159265358979' # decimal string with 15 significant digits 6317db96d56Sopenharmony_ci >>> format(float(s), '.15g') # convert to float and back -> same value 6327db96d56Sopenharmony_ci '3.14159265358979' 6337db96d56Sopenharmony_ci 6347db96d56Sopenharmony_ci But for strings with more than :attr:`sys.float_info.dig` significant digits, 6357db96d56Sopenharmony_ci this isn't always true:: 6367db96d56Sopenharmony_ci 6377db96d56Sopenharmony_ci >>> s = '9876543211234567' # 16 significant digits is too many! 6387db96d56Sopenharmony_ci >>> format(float(s), '.16g') # conversion changes value 6397db96d56Sopenharmony_ci '9876543211234568' 6407db96d56Sopenharmony_ci 6417db96d56Sopenharmony_ci.. data:: float_repr_style 6427db96d56Sopenharmony_ci 6437db96d56Sopenharmony_ci A string indicating how the :func:`repr` function behaves for 6447db96d56Sopenharmony_ci floats. If the string has value ``'short'`` then for a finite 6457db96d56Sopenharmony_ci float ``x``, ``repr(x)`` aims to produce a short string with the 6467db96d56Sopenharmony_ci property that ``float(repr(x)) == x``. This is the usual behaviour 6477db96d56Sopenharmony_ci in Python 3.1 and later. Otherwise, ``float_repr_style`` has value 6487db96d56Sopenharmony_ci ``'legacy'`` and ``repr(x)`` behaves in the same way as it did in 6497db96d56Sopenharmony_ci versions of Python prior to 3.1. 6507db96d56Sopenharmony_ci 6517db96d56Sopenharmony_ci .. versionadded:: 3.1 6527db96d56Sopenharmony_ci 6537db96d56Sopenharmony_ci 6547db96d56Sopenharmony_ci.. function:: getallocatedblocks() 6557db96d56Sopenharmony_ci 6567db96d56Sopenharmony_ci Return the number of memory blocks currently allocated by the interpreter, 6577db96d56Sopenharmony_ci regardless of their size. This function is mainly useful for tracking 6587db96d56Sopenharmony_ci and debugging memory leaks. Because of the interpreter's internal 6597db96d56Sopenharmony_ci caches, the result can vary from call to call; you may have to call 6607db96d56Sopenharmony_ci :func:`_clear_type_cache()` and :func:`gc.collect()` to get more 6617db96d56Sopenharmony_ci predictable results. 6627db96d56Sopenharmony_ci 6637db96d56Sopenharmony_ci If a Python build or implementation cannot reasonably compute this 6647db96d56Sopenharmony_ci information, :func:`getallocatedblocks()` is allowed to return 0 instead. 6657db96d56Sopenharmony_ci 6667db96d56Sopenharmony_ci .. versionadded:: 3.4 6677db96d56Sopenharmony_ci 6687db96d56Sopenharmony_ci 6697db96d56Sopenharmony_ci.. function:: getandroidapilevel() 6707db96d56Sopenharmony_ci 6717db96d56Sopenharmony_ci Return the build time API version of Android as an integer. 6727db96d56Sopenharmony_ci 6737db96d56Sopenharmony_ci .. availability:: Android. 6747db96d56Sopenharmony_ci 6757db96d56Sopenharmony_ci .. versionadded:: 3.7 6767db96d56Sopenharmony_ci 6777db96d56Sopenharmony_ci 6787db96d56Sopenharmony_ci.. function:: getdefaultencoding() 6797db96d56Sopenharmony_ci 6807db96d56Sopenharmony_ci Return the name of the current default string encoding used by the Unicode 6817db96d56Sopenharmony_ci implementation. 6827db96d56Sopenharmony_ci 6837db96d56Sopenharmony_ci 6847db96d56Sopenharmony_ci.. function:: getdlopenflags() 6857db96d56Sopenharmony_ci 6867db96d56Sopenharmony_ci Return the current value of the flags that are used for 6877db96d56Sopenharmony_ci :c:func:`dlopen` calls. Symbolic names for the flag values can be 6887db96d56Sopenharmony_ci found in the :mod:`os` module (``RTLD_xxx`` constants, e.g. 6897db96d56Sopenharmony_ci :data:`os.RTLD_LAZY`). 6907db96d56Sopenharmony_ci 6917db96d56Sopenharmony_ci .. availability:: Unix. 6927db96d56Sopenharmony_ci 6937db96d56Sopenharmony_ci 6947db96d56Sopenharmony_ci.. function:: getfilesystemencoding() 6957db96d56Sopenharmony_ci 6967db96d56Sopenharmony_ci Get the :term:`filesystem encoding <filesystem encoding and error handler>`: 6977db96d56Sopenharmony_ci the encoding used with the :term:`filesystem error handler <filesystem 6987db96d56Sopenharmony_ci encoding and error handler>` to convert between Unicode filenames and bytes 6997db96d56Sopenharmony_ci filenames. The filesystem error handler is returned from 7007db96d56Sopenharmony_ci :func:`getfilesystemencodeerrors`. 7017db96d56Sopenharmony_ci 7027db96d56Sopenharmony_ci For best compatibility, str should be used for filenames in all cases, 7037db96d56Sopenharmony_ci although representing filenames as bytes is also supported. Functions 7047db96d56Sopenharmony_ci accepting or returning filenames should support either str or bytes and 7057db96d56Sopenharmony_ci internally convert to the system's preferred representation. 7067db96d56Sopenharmony_ci 7077db96d56Sopenharmony_ci :func:`os.fsencode` and :func:`os.fsdecode` should be used to ensure that 7087db96d56Sopenharmony_ci the correct encoding and errors mode are used. 7097db96d56Sopenharmony_ci 7107db96d56Sopenharmony_ci The :term:`filesystem encoding and error handler` are configured at Python 7117db96d56Sopenharmony_ci startup by the :c:func:`PyConfig_Read` function: see 7127db96d56Sopenharmony_ci :c:member:`~PyConfig.filesystem_encoding` and 7137db96d56Sopenharmony_ci :c:member:`~PyConfig.filesystem_errors` members of :c:type:`PyConfig`. 7147db96d56Sopenharmony_ci 7157db96d56Sopenharmony_ci .. versionchanged:: 3.2 7167db96d56Sopenharmony_ci :func:`getfilesystemencoding` result cannot be ``None`` anymore. 7177db96d56Sopenharmony_ci 7187db96d56Sopenharmony_ci .. versionchanged:: 3.6 7197db96d56Sopenharmony_ci Windows is no longer guaranteed to return ``'mbcs'``. See :pep:`529` 7207db96d56Sopenharmony_ci and :func:`_enablelegacywindowsfsencoding` for more information. 7217db96d56Sopenharmony_ci 7227db96d56Sopenharmony_ci .. versionchanged:: 3.7 7237db96d56Sopenharmony_ci Return ``'utf-8'`` if the :ref:`Python UTF-8 Mode <utf8-mode>` is 7247db96d56Sopenharmony_ci enabled. 7257db96d56Sopenharmony_ci 7267db96d56Sopenharmony_ci 7277db96d56Sopenharmony_ci.. function:: getfilesystemencodeerrors() 7287db96d56Sopenharmony_ci 7297db96d56Sopenharmony_ci Get the :term:`filesystem error handler <filesystem encoding and error 7307db96d56Sopenharmony_ci handler>`: the error handler used with the :term:`filesystem encoding 7317db96d56Sopenharmony_ci <filesystem encoding and error handler>` to convert between Unicode 7327db96d56Sopenharmony_ci filenames and bytes filenames. The filesystem encoding is returned from 7337db96d56Sopenharmony_ci :func:`getfilesystemencoding`. 7347db96d56Sopenharmony_ci 7357db96d56Sopenharmony_ci :func:`os.fsencode` and :func:`os.fsdecode` should be used to ensure that 7367db96d56Sopenharmony_ci the correct encoding and errors mode are used. 7377db96d56Sopenharmony_ci 7387db96d56Sopenharmony_ci The :term:`filesystem encoding and error handler` are configured at Python 7397db96d56Sopenharmony_ci startup by the :c:func:`PyConfig_Read` function: see 7407db96d56Sopenharmony_ci :c:member:`~PyConfig.filesystem_encoding` and 7417db96d56Sopenharmony_ci :c:member:`~PyConfig.filesystem_errors` members of :c:type:`PyConfig`. 7427db96d56Sopenharmony_ci 7437db96d56Sopenharmony_ci .. versionadded:: 3.6 7447db96d56Sopenharmony_ci 7457db96d56Sopenharmony_ci.. function:: get_int_max_str_digits() 7467db96d56Sopenharmony_ci 7477db96d56Sopenharmony_ci Returns the current value for the :ref:`integer string conversion length 7487db96d56Sopenharmony_ci limitation <int_max_str_digits>`. See also :func:`set_int_max_str_digits`. 7497db96d56Sopenharmony_ci 7507db96d56Sopenharmony_ci .. versionadded:: 3.11 7517db96d56Sopenharmony_ci 7527db96d56Sopenharmony_ci.. function:: getrefcount(object) 7537db96d56Sopenharmony_ci 7547db96d56Sopenharmony_ci Return the reference count of the *object*. The count returned is generally one 7557db96d56Sopenharmony_ci higher than you might expect, because it includes the (temporary) reference as 7567db96d56Sopenharmony_ci an argument to :func:`getrefcount`. 7577db96d56Sopenharmony_ci 7587db96d56Sopenharmony_ci 7597db96d56Sopenharmony_ci.. function:: getrecursionlimit() 7607db96d56Sopenharmony_ci 7617db96d56Sopenharmony_ci Return the current value of the recursion limit, the maximum depth of the Python 7627db96d56Sopenharmony_ci interpreter stack. This limit prevents infinite recursion from causing an 7637db96d56Sopenharmony_ci overflow of the C stack and crashing Python. It can be set by 7647db96d56Sopenharmony_ci :func:`setrecursionlimit`. 7657db96d56Sopenharmony_ci 7667db96d56Sopenharmony_ci 7677db96d56Sopenharmony_ci.. function:: getsizeof(object[, default]) 7687db96d56Sopenharmony_ci 7697db96d56Sopenharmony_ci Return the size of an object in bytes. The object can be any type of 7707db96d56Sopenharmony_ci object. All built-in objects will return correct results, but this 7717db96d56Sopenharmony_ci does not have to hold true for third-party extensions as it is implementation 7727db96d56Sopenharmony_ci specific. 7737db96d56Sopenharmony_ci 7747db96d56Sopenharmony_ci Only the memory consumption directly attributed to the object is 7757db96d56Sopenharmony_ci accounted for, not the memory consumption of objects it refers to. 7767db96d56Sopenharmony_ci 7777db96d56Sopenharmony_ci If given, *default* will be returned if the object does not provide means to 7787db96d56Sopenharmony_ci retrieve the size. Otherwise a :exc:`TypeError` will be raised. 7797db96d56Sopenharmony_ci 7807db96d56Sopenharmony_ci :func:`getsizeof` calls the object's ``__sizeof__`` method and adds an 7817db96d56Sopenharmony_ci additional garbage collector overhead if the object is managed by the garbage 7827db96d56Sopenharmony_ci collector. 7837db96d56Sopenharmony_ci 7847db96d56Sopenharmony_ci See `recursive sizeof recipe <https://code.activestate.com/recipes/577504/>`_ 7857db96d56Sopenharmony_ci for an example of using :func:`getsizeof` recursively to find the size of 7867db96d56Sopenharmony_ci containers and all their contents. 7877db96d56Sopenharmony_ci 7887db96d56Sopenharmony_ci.. function:: getswitchinterval() 7897db96d56Sopenharmony_ci 7907db96d56Sopenharmony_ci Return the interpreter's "thread switch interval"; see 7917db96d56Sopenharmony_ci :func:`setswitchinterval`. 7927db96d56Sopenharmony_ci 7937db96d56Sopenharmony_ci .. versionadded:: 3.2 7947db96d56Sopenharmony_ci 7957db96d56Sopenharmony_ci 7967db96d56Sopenharmony_ci.. function:: _getframe([depth]) 7977db96d56Sopenharmony_ci 7987db96d56Sopenharmony_ci Return a frame object from the call stack. If optional integer *depth* is 7997db96d56Sopenharmony_ci given, return the frame object that many calls below the top of the stack. If 8007db96d56Sopenharmony_ci that is deeper than the call stack, :exc:`ValueError` is raised. The default 8017db96d56Sopenharmony_ci for *depth* is zero, returning the frame at the top of the call stack. 8027db96d56Sopenharmony_ci 8037db96d56Sopenharmony_ci .. audit-event:: sys._getframe frame sys._getframe 8047db96d56Sopenharmony_ci 8057db96d56Sopenharmony_ci .. impl-detail:: 8067db96d56Sopenharmony_ci 8077db96d56Sopenharmony_ci This function should be used for internal and specialized purposes only. 8087db96d56Sopenharmony_ci It is not guaranteed to exist in all implementations of Python. 8097db96d56Sopenharmony_ci 8107db96d56Sopenharmony_ci 8117db96d56Sopenharmony_ci.. function:: getprofile() 8127db96d56Sopenharmony_ci 8137db96d56Sopenharmony_ci .. index:: 8147db96d56Sopenharmony_ci single: profile function 8157db96d56Sopenharmony_ci single: profiler 8167db96d56Sopenharmony_ci 8177db96d56Sopenharmony_ci Get the profiler function as set by :func:`setprofile`. 8187db96d56Sopenharmony_ci 8197db96d56Sopenharmony_ci 8207db96d56Sopenharmony_ci.. function:: gettrace() 8217db96d56Sopenharmony_ci 8227db96d56Sopenharmony_ci .. index:: 8237db96d56Sopenharmony_ci single: trace function 8247db96d56Sopenharmony_ci single: debugger 8257db96d56Sopenharmony_ci 8267db96d56Sopenharmony_ci Get the trace function as set by :func:`settrace`. 8277db96d56Sopenharmony_ci 8287db96d56Sopenharmony_ci .. impl-detail:: 8297db96d56Sopenharmony_ci 8307db96d56Sopenharmony_ci The :func:`gettrace` function is intended only for implementing debuggers, 8317db96d56Sopenharmony_ci profilers, coverage tools and the like. Its behavior is part of the 8327db96d56Sopenharmony_ci implementation platform, rather than part of the language definition, and 8337db96d56Sopenharmony_ci thus may not be available in all Python implementations. 8347db96d56Sopenharmony_ci 8357db96d56Sopenharmony_ci 8367db96d56Sopenharmony_ci.. function:: getwindowsversion() 8377db96d56Sopenharmony_ci 8387db96d56Sopenharmony_ci Return a named tuple describing the Windows version 8397db96d56Sopenharmony_ci currently running. The named elements are *major*, *minor*, 8407db96d56Sopenharmony_ci *build*, *platform*, *service_pack*, *service_pack_minor*, 8417db96d56Sopenharmony_ci *service_pack_major*, *suite_mask*, *product_type* and 8427db96d56Sopenharmony_ci *platform_version*. *service_pack* contains a string, 8437db96d56Sopenharmony_ci *platform_version* a 3-tuple and all other values are 8447db96d56Sopenharmony_ci integers. The components can also be accessed by name, so 8457db96d56Sopenharmony_ci ``sys.getwindowsversion()[0]`` is equivalent to 8467db96d56Sopenharmony_ci ``sys.getwindowsversion().major``. For compatibility with prior 8477db96d56Sopenharmony_ci versions, only the first 5 elements are retrievable by indexing. 8487db96d56Sopenharmony_ci 8497db96d56Sopenharmony_ci *platform* will be :const:`2 (VER_PLATFORM_WIN32_NT)`. 8507db96d56Sopenharmony_ci 8517db96d56Sopenharmony_ci *product_type* may be one of the following values: 8527db96d56Sopenharmony_ci 8537db96d56Sopenharmony_ci +---------------------------------------+---------------------------------+ 8547db96d56Sopenharmony_ci | Constant | Meaning | 8557db96d56Sopenharmony_ci +=======================================+=================================+ 8567db96d56Sopenharmony_ci | :const:`1 (VER_NT_WORKSTATION)` | The system is a workstation. | 8577db96d56Sopenharmony_ci +---------------------------------------+---------------------------------+ 8587db96d56Sopenharmony_ci | :const:`2 (VER_NT_DOMAIN_CONTROLLER)` | The system is a domain | 8597db96d56Sopenharmony_ci | | controller. | 8607db96d56Sopenharmony_ci +---------------------------------------+---------------------------------+ 8617db96d56Sopenharmony_ci | :const:`3 (VER_NT_SERVER)` | The system is a server, but not | 8627db96d56Sopenharmony_ci | | a domain controller. | 8637db96d56Sopenharmony_ci +---------------------------------------+---------------------------------+ 8647db96d56Sopenharmony_ci 8657db96d56Sopenharmony_ci This function wraps the Win32 :c:func:`GetVersionEx` function; see the 8667db96d56Sopenharmony_ci Microsoft documentation on :c:func:`OSVERSIONINFOEX` for more information 8677db96d56Sopenharmony_ci about these fields. 8687db96d56Sopenharmony_ci 8697db96d56Sopenharmony_ci *platform_version* returns the major version, minor version and 8707db96d56Sopenharmony_ci build number of the current operating system, rather than the version that 8717db96d56Sopenharmony_ci is being emulated for the process. It is intended for use in logging rather 8727db96d56Sopenharmony_ci than for feature detection. 8737db96d56Sopenharmony_ci 8747db96d56Sopenharmony_ci .. note:: 8757db96d56Sopenharmony_ci *platform_version* derives the version from kernel32.dll which can be of a different 8767db96d56Sopenharmony_ci version than the OS version. Please use :mod:`platform` module for achieving accurate 8777db96d56Sopenharmony_ci OS version. 8787db96d56Sopenharmony_ci 8797db96d56Sopenharmony_ci .. availability:: Windows. 8807db96d56Sopenharmony_ci 8817db96d56Sopenharmony_ci .. versionchanged:: 3.2 8827db96d56Sopenharmony_ci Changed to a named tuple and added *service_pack_minor*, 8837db96d56Sopenharmony_ci *service_pack_major*, *suite_mask*, and *product_type*. 8847db96d56Sopenharmony_ci 8857db96d56Sopenharmony_ci .. versionchanged:: 3.6 8867db96d56Sopenharmony_ci Added *platform_version* 8877db96d56Sopenharmony_ci 8887db96d56Sopenharmony_ci 8897db96d56Sopenharmony_ci.. function:: get_asyncgen_hooks() 8907db96d56Sopenharmony_ci 8917db96d56Sopenharmony_ci Returns an *asyncgen_hooks* object, which is similar to a 8927db96d56Sopenharmony_ci :class:`~collections.namedtuple` of the form ``(firstiter, finalizer)``, 8937db96d56Sopenharmony_ci where *firstiter* and *finalizer* are expected to be either ``None`` or 8947db96d56Sopenharmony_ci functions which take an :term:`asynchronous generator iterator` as an 8957db96d56Sopenharmony_ci argument, and are used to schedule finalization of an asynchronous 8967db96d56Sopenharmony_ci generator by an event loop. 8977db96d56Sopenharmony_ci 8987db96d56Sopenharmony_ci .. versionadded:: 3.6 8997db96d56Sopenharmony_ci See :pep:`525` for more details. 9007db96d56Sopenharmony_ci 9017db96d56Sopenharmony_ci .. note:: 9027db96d56Sopenharmony_ci This function has been added on a provisional basis (see :pep:`411` 9037db96d56Sopenharmony_ci for details.) 9047db96d56Sopenharmony_ci 9057db96d56Sopenharmony_ci 9067db96d56Sopenharmony_ci.. function:: get_coroutine_origin_tracking_depth() 9077db96d56Sopenharmony_ci 9087db96d56Sopenharmony_ci Get the current coroutine origin tracking depth, as set by 9097db96d56Sopenharmony_ci :func:`set_coroutine_origin_tracking_depth`. 9107db96d56Sopenharmony_ci 9117db96d56Sopenharmony_ci .. versionadded:: 3.7 9127db96d56Sopenharmony_ci 9137db96d56Sopenharmony_ci .. note:: 9147db96d56Sopenharmony_ci This function has been added on a provisional basis (see :pep:`411` 9157db96d56Sopenharmony_ci for details.) Use it only for debugging purposes. 9167db96d56Sopenharmony_ci 9177db96d56Sopenharmony_ci 9187db96d56Sopenharmony_ci.. data:: hash_info 9197db96d56Sopenharmony_ci 9207db96d56Sopenharmony_ci A :term:`named tuple` giving parameters of the numeric hash 9217db96d56Sopenharmony_ci implementation. For more details about hashing of numeric types, see 9227db96d56Sopenharmony_ci :ref:`numeric-hash`. 9237db96d56Sopenharmony_ci 9247db96d56Sopenharmony_ci +---------------------+--------------------------------------------------+ 9257db96d56Sopenharmony_ci | attribute | explanation | 9267db96d56Sopenharmony_ci +=====================+==================================================+ 9277db96d56Sopenharmony_ci | :const:`width` | width in bits used for hash values | 9287db96d56Sopenharmony_ci +---------------------+--------------------------------------------------+ 9297db96d56Sopenharmony_ci | :const:`modulus` | prime modulus P used for numeric hash scheme | 9307db96d56Sopenharmony_ci +---------------------+--------------------------------------------------+ 9317db96d56Sopenharmony_ci | :const:`inf` | hash value returned for a positive infinity | 9327db96d56Sopenharmony_ci +---------------------+--------------------------------------------------+ 9337db96d56Sopenharmony_ci | :const:`nan` | (this attribute is no longer used) | 9347db96d56Sopenharmony_ci +---------------------+--------------------------------------------------+ 9357db96d56Sopenharmony_ci | :const:`imag` | multiplier used for the imaginary part of a | 9367db96d56Sopenharmony_ci | | complex number | 9377db96d56Sopenharmony_ci +---------------------+--------------------------------------------------+ 9387db96d56Sopenharmony_ci | :const:`algorithm` | name of the algorithm for hashing of str, bytes, | 9397db96d56Sopenharmony_ci | | and memoryview | 9407db96d56Sopenharmony_ci +---------------------+--------------------------------------------------+ 9417db96d56Sopenharmony_ci | :const:`hash_bits` | internal output size of the hash algorithm | 9427db96d56Sopenharmony_ci +---------------------+--------------------------------------------------+ 9437db96d56Sopenharmony_ci | :const:`seed_bits` | size of the seed key of the hash algorithm | 9447db96d56Sopenharmony_ci +---------------------+--------------------------------------------------+ 9457db96d56Sopenharmony_ci 9467db96d56Sopenharmony_ci 9477db96d56Sopenharmony_ci .. versionadded:: 3.2 9487db96d56Sopenharmony_ci 9497db96d56Sopenharmony_ci .. versionchanged:: 3.4 9507db96d56Sopenharmony_ci Added *algorithm*, *hash_bits* and *seed_bits* 9517db96d56Sopenharmony_ci 9527db96d56Sopenharmony_ci 9537db96d56Sopenharmony_ci.. data:: hexversion 9547db96d56Sopenharmony_ci 9557db96d56Sopenharmony_ci The version number encoded as a single integer. This is guaranteed to increase 9567db96d56Sopenharmony_ci with each version, including proper support for non-production releases. For 9577db96d56Sopenharmony_ci example, to test that the Python interpreter is at least version 1.5.2, use:: 9587db96d56Sopenharmony_ci 9597db96d56Sopenharmony_ci if sys.hexversion >= 0x010502F0: 9607db96d56Sopenharmony_ci # use some advanced feature 9617db96d56Sopenharmony_ci ... 9627db96d56Sopenharmony_ci else: 9637db96d56Sopenharmony_ci # use an alternative implementation or warn the user 9647db96d56Sopenharmony_ci ... 9657db96d56Sopenharmony_ci 9667db96d56Sopenharmony_ci This is called ``hexversion`` since it only really looks meaningful when viewed 9677db96d56Sopenharmony_ci as the result of passing it to the built-in :func:`hex` function. The 9687db96d56Sopenharmony_ci :term:`named tuple` :data:`sys.version_info` may be used for a more 9697db96d56Sopenharmony_ci human-friendly encoding of the same information. 9707db96d56Sopenharmony_ci 9717db96d56Sopenharmony_ci More details of ``hexversion`` can be found at :ref:`apiabiversion`. 9727db96d56Sopenharmony_ci 9737db96d56Sopenharmony_ci 9747db96d56Sopenharmony_ci.. data:: implementation 9757db96d56Sopenharmony_ci 9767db96d56Sopenharmony_ci An object containing information about the implementation of the 9777db96d56Sopenharmony_ci currently running Python interpreter. The following attributes are 9787db96d56Sopenharmony_ci required to exist in all Python implementations. 9797db96d56Sopenharmony_ci 9807db96d56Sopenharmony_ci *name* is the implementation's identifier, e.g. ``'cpython'``. The actual 9817db96d56Sopenharmony_ci string is defined by the Python implementation, but it is guaranteed to be 9827db96d56Sopenharmony_ci lower case. 9837db96d56Sopenharmony_ci 9847db96d56Sopenharmony_ci *version* is a named tuple, in the same format as 9857db96d56Sopenharmony_ci :data:`sys.version_info`. It represents the version of the Python 9867db96d56Sopenharmony_ci *implementation*. This has a distinct meaning from the specific 9877db96d56Sopenharmony_ci version of the Python *language* to which the currently running 9887db96d56Sopenharmony_ci interpreter conforms, which ``sys.version_info`` represents. For 9897db96d56Sopenharmony_ci example, for PyPy 1.8 ``sys.implementation.version`` might be 9907db96d56Sopenharmony_ci ``sys.version_info(1, 8, 0, 'final', 0)``, whereas ``sys.version_info`` 9917db96d56Sopenharmony_ci would be ``sys.version_info(2, 7, 2, 'final', 0)``. For CPython they 9927db96d56Sopenharmony_ci are the same value, since it is the reference implementation. 9937db96d56Sopenharmony_ci 9947db96d56Sopenharmony_ci *hexversion* is the implementation version in hexadecimal format, like 9957db96d56Sopenharmony_ci :data:`sys.hexversion`. 9967db96d56Sopenharmony_ci 9977db96d56Sopenharmony_ci *cache_tag* is the tag used by the import machinery in the filenames of 9987db96d56Sopenharmony_ci cached modules. By convention, it would be a composite of the 9997db96d56Sopenharmony_ci implementation's name and version, like ``'cpython-33'``. However, a 10007db96d56Sopenharmony_ci Python implementation may use some other value if appropriate. If 10017db96d56Sopenharmony_ci ``cache_tag`` is set to ``None``, it indicates that module caching should 10027db96d56Sopenharmony_ci be disabled. 10037db96d56Sopenharmony_ci 10047db96d56Sopenharmony_ci :data:`sys.implementation` may contain additional attributes specific to 10057db96d56Sopenharmony_ci the Python implementation. These non-standard attributes must start with 10067db96d56Sopenharmony_ci an underscore, and are not described here. Regardless of its contents, 10077db96d56Sopenharmony_ci :data:`sys.implementation` will not change during a run of the interpreter, 10087db96d56Sopenharmony_ci nor between implementation versions. (It may change between Python 10097db96d56Sopenharmony_ci language versions, however.) See :pep:`421` for more information. 10107db96d56Sopenharmony_ci 10117db96d56Sopenharmony_ci .. versionadded:: 3.3 10127db96d56Sopenharmony_ci 10137db96d56Sopenharmony_ci .. note:: 10147db96d56Sopenharmony_ci 10157db96d56Sopenharmony_ci The addition of new required attributes must go through the normal PEP 10167db96d56Sopenharmony_ci process. See :pep:`421` for more information. 10177db96d56Sopenharmony_ci 10187db96d56Sopenharmony_ci.. data:: int_info 10197db96d56Sopenharmony_ci 10207db96d56Sopenharmony_ci A :term:`named tuple` that holds information about Python's internal 10217db96d56Sopenharmony_ci representation of integers. The attributes are read only. 10227db96d56Sopenharmony_ci 10237db96d56Sopenharmony_ci .. tabularcolumns:: |l|L| 10247db96d56Sopenharmony_ci 10257db96d56Sopenharmony_ci +----------------------------------------+-----------------------------------------------+ 10267db96d56Sopenharmony_ci | Attribute | Explanation | 10277db96d56Sopenharmony_ci +========================================+===============================================+ 10287db96d56Sopenharmony_ci | :const:`bits_per_digit` | number of bits held in each digit. Python | 10297db96d56Sopenharmony_ci | | integers are stored internally in base | 10307db96d56Sopenharmony_ci | | ``2**int_info.bits_per_digit`` | 10317db96d56Sopenharmony_ci +----------------------------------------+-----------------------------------------------+ 10327db96d56Sopenharmony_ci | :const:`sizeof_digit` | size in bytes of the C type used to | 10337db96d56Sopenharmony_ci | | represent a digit | 10347db96d56Sopenharmony_ci +----------------------------------------+-----------------------------------------------+ 10357db96d56Sopenharmony_ci | :const:`default_max_str_digits` | default value for | 10367db96d56Sopenharmony_ci | | :func:`sys.get_int_max_str_digits` when it | 10377db96d56Sopenharmony_ci | | is not otherwise explicitly configured. | 10387db96d56Sopenharmony_ci +----------------------------------------+-----------------------------------------------+ 10397db96d56Sopenharmony_ci | :const:`str_digits_check_threshold` | minimum non-zero value for | 10407db96d56Sopenharmony_ci | | :func:`sys.set_int_max_str_digits`, | 10417db96d56Sopenharmony_ci | | :envvar:`PYTHONINTMAXSTRDIGITS`, or | 10427db96d56Sopenharmony_ci | | :option:`-X int_max_str_digits <-X>`. | 10437db96d56Sopenharmony_ci +----------------------------------------+-----------------------------------------------+ 10447db96d56Sopenharmony_ci 10457db96d56Sopenharmony_ci .. versionadded:: 3.1 10467db96d56Sopenharmony_ci 10477db96d56Sopenharmony_ci .. versionchanged:: 3.11 10487db96d56Sopenharmony_ci Added ``default_max_str_digits`` and ``str_digits_check_threshold``. 10497db96d56Sopenharmony_ci 10507db96d56Sopenharmony_ci 10517db96d56Sopenharmony_ci.. data:: __interactivehook__ 10527db96d56Sopenharmony_ci 10537db96d56Sopenharmony_ci When this attribute exists, its value is automatically called (with no 10547db96d56Sopenharmony_ci arguments) when the interpreter is launched in :ref:`interactive mode 10557db96d56Sopenharmony_ci <tut-interactive>`. This is done after the :envvar:`PYTHONSTARTUP` file is 10567db96d56Sopenharmony_ci read, so that you can set this hook there. The :mod:`site` module 10577db96d56Sopenharmony_ci :ref:`sets this <rlcompleter-config>`. 10587db96d56Sopenharmony_ci 10597db96d56Sopenharmony_ci .. audit-event:: cpython.run_interactivehook hook sys.__interactivehook__ 10607db96d56Sopenharmony_ci 10617db96d56Sopenharmony_ci Raises an :ref:`auditing event <auditing>` 10627db96d56Sopenharmony_ci ``cpython.run_interactivehook`` with the hook object as the argument when 10637db96d56Sopenharmony_ci the hook is called on startup. 10647db96d56Sopenharmony_ci 10657db96d56Sopenharmony_ci .. versionadded:: 3.4 10667db96d56Sopenharmony_ci 10677db96d56Sopenharmony_ci 10687db96d56Sopenharmony_ci.. function:: intern(string) 10697db96d56Sopenharmony_ci 10707db96d56Sopenharmony_ci Enter *string* in the table of "interned" strings and return the interned string 10717db96d56Sopenharmony_ci -- which is *string* itself or a copy. Interning strings is useful to gain a 10727db96d56Sopenharmony_ci little performance on dictionary lookup -- if the keys in a dictionary are 10737db96d56Sopenharmony_ci interned, and the lookup key is interned, the key comparisons (after hashing) 10747db96d56Sopenharmony_ci can be done by a pointer compare instead of a string compare. Normally, the 10757db96d56Sopenharmony_ci names used in Python programs are automatically interned, and the dictionaries 10767db96d56Sopenharmony_ci used to hold module, class or instance attributes have interned keys. 10777db96d56Sopenharmony_ci 10787db96d56Sopenharmony_ci Interned strings are not immortal; you must keep a reference to the return 10797db96d56Sopenharmony_ci value of :func:`intern` around to benefit from it. 10807db96d56Sopenharmony_ci 10817db96d56Sopenharmony_ci 10827db96d56Sopenharmony_ci.. function:: is_finalizing() 10837db96d56Sopenharmony_ci 10847db96d56Sopenharmony_ci Return :const:`True` if the Python interpreter is 10857db96d56Sopenharmony_ci :term:`shutting down <interpreter shutdown>`, :const:`False` otherwise. 10867db96d56Sopenharmony_ci 10877db96d56Sopenharmony_ci .. versionadded:: 3.5 10887db96d56Sopenharmony_ci 10897db96d56Sopenharmony_ci 10907db96d56Sopenharmony_ci.. data:: last_type 10917db96d56Sopenharmony_ci last_value 10927db96d56Sopenharmony_ci last_traceback 10937db96d56Sopenharmony_ci 10947db96d56Sopenharmony_ci These three variables are not always defined; they are set when an exception is 10957db96d56Sopenharmony_ci not handled and the interpreter prints an error message and a stack traceback. 10967db96d56Sopenharmony_ci Their intended use is to allow an interactive user to import a debugger module 10977db96d56Sopenharmony_ci and engage in post-mortem debugging without having to re-execute the command 10987db96d56Sopenharmony_ci that caused the error. (Typical use is ``import pdb; pdb.pm()`` to enter the 10997db96d56Sopenharmony_ci post-mortem debugger; see :mod:`pdb` module for 11007db96d56Sopenharmony_ci more information.) 11017db96d56Sopenharmony_ci 11027db96d56Sopenharmony_ci The meaning of the variables is the same as that of the return values from 11037db96d56Sopenharmony_ci :func:`exc_info` above. 11047db96d56Sopenharmony_ci 11057db96d56Sopenharmony_ci 11067db96d56Sopenharmony_ci.. data:: maxsize 11077db96d56Sopenharmony_ci 11087db96d56Sopenharmony_ci An integer giving the maximum value a variable of type :c:type:`Py_ssize_t` can 11097db96d56Sopenharmony_ci take. It's usually ``2**31 - 1`` on a 32-bit platform and ``2**63 - 1`` on a 11107db96d56Sopenharmony_ci 64-bit platform. 11117db96d56Sopenharmony_ci 11127db96d56Sopenharmony_ci 11137db96d56Sopenharmony_ci.. data:: maxunicode 11147db96d56Sopenharmony_ci 11157db96d56Sopenharmony_ci An integer giving the value of the largest Unicode code point, 11167db96d56Sopenharmony_ci i.e. ``1114111`` (``0x10FFFF`` in hexadecimal). 11177db96d56Sopenharmony_ci 11187db96d56Sopenharmony_ci .. versionchanged:: 3.3 11197db96d56Sopenharmony_ci Before :pep:`393`, ``sys.maxunicode`` used to be either ``0xFFFF`` 11207db96d56Sopenharmony_ci or ``0x10FFFF``, depending on the configuration option that specified 11217db96d56Sopenharmony_ci whether Unicode characters were stored as UCS-2 or UCS-4. 11227db96d56Sopenharmony_ci 11237db96d56Sopenharmony_ci 11247db96d56Sopenharmony_ci.. data:: meta_path 11257db96d56Sopenharmony_ci 11267db96d56Sopenharmony_ci A list of :term:`meta path finder` objects that have their 11277db96d56Sopenharmony_ci :meth:`~importlib.abc.MetaPathFinder.find_spec` methods called to see if one 11287db96d56Sopenharmony_ci of the objects can find the module to be imported. By default, it holds entries 11297db96d56Sopenharmony_ci that implement Python's default import semantics. The 11307db96d56Sopenharmony_ci :meth:`~importlib.abc.MetaPathFinder.find_spec` method is called with at 11317db96d56Sopenharmony_ci least the absolute name of the module being imported. If the module to be 11327db96d56Sopenharmony_ci imported is contained in a package, then the parent package's :attr:`__path__` 11337db96d56Sopenharmony_ci attribute is passed in as a second argument. The method returns a 11347db96d56Sopenharmony_ci :term:`module spec`, or ``None`` if the module cannot be found. 11357db96d56Sopenharmony_ci 11367db96d56Sopenharmony_ci .. seealso:: 11377db96d56Sopenharmony_ci 11387db96d56Sopenharmony_ci :class:`importlib.abc.MetaPathFinder` 11397db96d56Sopenharmony_ci The abstract base class defining the interface of finder objects on 11407db96d56Sopenharmony_ci :data:`meta_path`. 11417db96d56Sopenharmony_ci :class:`importlib.machinery.ModuleSpec` 11427db96d56Sopenharmony_ci The concrete class which 11437db96d56Sopenharmony_ci :meth:`~importlib.abc.MetaPathFinder.find_spec` should return 11447db96d56Sopenharmony_ci instances of. 11457db96d56Sopenharmony_ci 11467db96d56Sopenharmony_ci .. versionchanged:: 3.4 11477db96d56Sopenharmony_ci 11487db96d56Sopenharmony_ci :term:`Module specs <module spec>` were introduced in Python 3.4, by 11497db96d56Sopenharmony_ci :pep:`451`. Earlier versions of Python looked for a method called 11507db96d56Sopenharmony_ci :meth:`~importlib.abc.MetaPathFinder.find_module`. 11517db96d56Sopenharmony_ci This is still called as a fallback if a :data:`meta_path` entry doesn't 11527db96d56Sopenharmony_ci have a :meth:`~importlib.abc.MetaPathFinder.find_spec` method. 11537db96d56Sopenharmony_ci 11547db96d56Sopenharmony_ci.. data:: modules 11557db96d56Sopenharmony_ci 11567db96d56Sopenharmony_ci This is a dictionary that maps module names to modules which have already been 11577db96d56Sopenharmony_ci loaded. This can be manipulated to force reloading of modules and other tricks. 11587db96d56Sopenharmony_ci However, replacing the dictionary will not necessarily work as expected and 11597db96d56Sopenharmony_ci deleting essential items from the dictionary may cause Python to fail. If 11607db96d56Sopenharmony_ci you want to iterate over this global dictionary always use 11617db96d56Sopenharmony_ci ``sys.modules.copy()`` or ``tuple(sys.modules)`` to avoid exceptions as its 11627db96d56Sopenharmony_ci size may change during iteration as a side effect of code or activity in 11637db96d56Sopenharmony_ci other threads. 11647db96d56Sopenharmony_ci 11657db96d56Sopenharmony_ci 11667db96d56Sopenharmony_ci.. data:: orig_argv 11677db96d56Sopenharmony_ci 11687db96d56Sopenharmony_ci The list of the original command line arguments passed to the Python 11697db96d56Sopenharmony_ci executable. 11707db96d56Sopenharmony_ci 11717db96d56Sopenharmony_ci See also :data:`sys.argv`. 11727db96d56Sopenharmony_ci 11737db96d56Sopenharmony_ci .. versionadded:: 3.10 11747db96d56Sopenharmony_ci 11757db96d56Sopenharmony_ci 11767db96d56Sopenharmony_ci.. data:: path 11777db96d56Sopenharmony_ci 11787db96d56Sopenharmony_ci .. index:: triple: module; search; path 11797db96d56Sopenharmony_ci 11807db96d56Sopenharmony_ci A list of strings that specifies the search path for modules. Initialized from 11817db96d56Sopenharmony_ci the environment variable :envvar:`PYTHONPATH`, plus an installation-dependent 11827db96d56Sopenharmony_ci default. 11837db96d56Sopenharmony_ci 11847db96d56Sopenharmony_ci By default, as initialized upon program startup, a potentially unsafe path 11857db96d56Sopenharmony_ci is prepended to :data:`sys.path` (*before* the entries inserted as a result 11867db96d56Sopenharmony_ci of :envvar:`PYTHONPATH`): 11877db96d56Sopenharmony_ci 11887db96d56Sopenharmony_ci * ``python -m module`` command line: prepend the current working 11897db96d56Sopenharmony_ci directory. 11907db96d56Sopenharmony_ci * ``python script.py`` command line: prepend the script's directory. 11917db96d56Sopenharmony_ci If it's a symbolic link, resolve symbolic links. 11927db96d56Sopenharmony_ci * ``python -c code`` and ``python`` (REPL) command lines: prepend an empty 11937db96d56Sopenharmony_ci string, which means the current working directory. 11947db96d56Sopenharmony_ci 11957db96d56Sopenharmony_ci To not prepend this potentially unsafe path, use the :option:`-P` command 11967db96d56Sopenharmony_ci line option or the :envvar:`PYTHONSAFEPATH` environment variable. 11977db96d56Sopenharmony_ci 11987db96d56Sopenharmony_ci A program is free to modify this list for its own purposes. Only strings 11997db96d56Sopenharmony_ci should be added to :data:`sys.path`; all other data types are 12007db96d56Sopenharmony_ci ignored during import. 12017db96d56Sopenharmony_ci 12027db96d56Sopenharmony_ci 12037db96d56Sopenharmony_ci .. seealso:: 12047db96d56Sopenharmony_ci * Module :mod:`site` This describes how to use .pth files to 12057db96d56Sopenharmony_ci extend :data:`sys.path`. 12067db96d56Sopenharmony_ci 12077db96d56Sopenharmony_ci.. data:: path_hooks 12087db96d56Sopenharmony_ci 12097db96d56Sopenharmony_ci A list of callables that take a path argument to try to create a 12107db96d56Sopenharmony_ci :term:`finder` for the path. If a finder can be created, it is to be 12117db96d56Sopenharmony_ci returned by the callable, else raise :exc:`ImportError`. 12127db96d56Sopenharmony_ci 12137db96d56Sopenharmony_ci Originally specified in :pep:`302`. 12147db96d56Sopenharmony_ci 12157db96d56Sopenharmony_ci 12167db96d56Sopenharmony_ci.. data:: path_importer_cache 12177db96d56Sopenharmony_ci 12187db96d56Sopenharmony_ci A dictionary acting as a cache for :term:`finder` objects. The keys are 12197db96d56Sopenharmony_ci paths that have been passed to :data:`sys.path_hooks` and the values are 12207db96d56Sopenharmony_ci the finders that are found. If a path is a valid file system path but no 12217db96d56Sopenharmony_ci finder is found on :data:`sys.path_hooks` then ``None`` is 12227db96d56Sopenharmony_ci stored. 12237db96d56Sopenharmony_ci 12247db96d56Sopenharmony_ci Originally specified in :pep:`302`. 12257db96d56Sopenharmony_ci 12267db96d56Sopenharmony_ci .. versionchanged:: 3.3 12277db96d56Sopenharmony_ci ``None`` is stored instead of :class:`imp.NullImporter` when no finder 12287db96d56Sopenharmony_ci is found. 12297db96d56Sopenharmony_ci 12307db96d56Sopenharmony_ci 12317db96d56Sopenharmony_ci.. data:: platform 12327db96d56Sopenharmony_ci 12337db96d56Sopenharmony_ci This string contains a platform identifier that can be used to append 12347db96d56Sopenharmony_ci platform-specific components to :data:`sys.path`, for instance. 12357db96d56Sopenharmony_ci 12367db96d56Sopenharmony_ci For Unix systems, except on Linux and AIX, this is the lowercased OS name as 12377db96d56Sopenharmony_ci returned by ``uname -s`` with the first part of the version as returned by 12387db96d56Sopenharmony_ci ``uname -r`` appended, e.g. ``'sunos5'`` or ``'freebsd8'``, *at the time 12397db96d56Sopenharmony_ci when Python was built*. Unless you want to test for a specific system 12407db96d56Sopenharmony_ci version, it is therefore recommended to use the following idiom:: 12417db96d56Sopenharmony_ci 12427db96d56Sopenharmony_ci if sys.platform.startswith('freebsd'): 12437db96d56Sopenharmony_ci # FreeBSD-specific code here... 12447db96d56Sopenharmony_ci elif sys.platform.startswith('linux'): 12457db96d56Sopenharmony_ci # Linux-specific code here... 12467db96d56Sopenharmony_ci elif sys.platform.startswith('aix'): 12477db96d56Sopenharmony_ci # AIX-specific code here... 12487db96d56Sopenharmony_ci 12497db96d56Sopenharmony_ci For other systems, the values are: 12507db96d56Sopenharmony_ci 12517db96d56Sopenharmony_ci ================ =========================== 12527db96d56Sopenharmony_ci System ``platform`` value 12537db96d56Sopenharmony_ci ================ =========================== 12547db96d56Sopenharmony_ci AIX ``'aix'`` 12557db96d56Sopenharmony_ci Emscripten ``'emscripten'`` 12567db96d56Sopenharmony_ci Linux ``'linux'`` 12577db96d56Sopenharmony_ci WASI ``'wasi'`` 12587db96d56Sopenharmony_ci Windows ``'win32'`` 12597db96d56Sopenharmony_ci Windows/Cygwin ``'cygwin'`` 12607db96d56Sopenharmony_ci macOS ``'darwin'`` 12617db96d56Sopenharmony_ci ================ =========================== 12627db96d56Sopenharmony_ci 12637db96d56Sopenharmony_ci .. versionchanged:: 3.3 12647db96d56Sopenharmony_ci On Linux, :attr:`sys.platform` doesn't contain the major version anymore. 12657db96d56Sopenharmony_ci It is always ``'linux'``, instead of ``'linux2'`` or ``'linux3'``. Since 12667db96d56Sopenharmony_ci older Python versions include the version number, it is recommended to 12677db96d56Sopenharmony_ci always use the ``startswith`` idiom presented above. 12687db96d56Sopenharmony_ci 12697db96d56Sopenharmony_ci .. versionchanged:: 3.8 12707db96d56Sopenharmony_ci On AIX, :attr:`sys.platform` doesn't contain the major version anymore. 12717db96d56Sopenharmony_ci It is always ``'aix'``, instead of ``'aix5'`` or ``'aix7'``. Since 12727db96d56Sopenharmony_ci older Python versions include the version number, it is recommended to 12737db96d56Sopenharmony_ci always use the ``startswith`` idiom presented above. 12747db96d56Sopenharmony_ci 12757db96d56Sopenharmony_ci .. seealso:: 12767db96d56Sopenharmony_ci 12777db96d56Sopenharmony_ci :attr:`os.name` has a coarser granularity. :func:`os.uname` gives 12787db96d56Sopenharmony_ci system-dependent version information. 12797db96d56Sopenharmony_ci 12807db96d56Sopenharmony_ci The :mod:`platform` module provides detailed checks for the 12817db96d56Sopenharmony_ci system's identity. 12827db96d56Sopenharmony_ci 12837db96d56Sopenharmony_ci 12847db96d56Sopenharmony_ci.. data:: platlibdir 12857db96d56Sopenharmony_ci 12867db96d56Sopenharmony_ci Name of the platform-specific library directory. It is used to build the 12877db96d56Sopenharmony_ci path of standard library and the paths of installed extension modules. 12887db96d56Sopenharmony_ci 12897db96d56Sopenharmony_ci It is equal to ``"lib"`` on most platforms. On Fedora and SuSE, it is equal 12907db96d56Sopenharmony_ci to ``"lib64"`` on 64-bit platforms which gives the following ``sys.path`` 12917db96d56Sopenharmony_ci paths (where ``X.Y`` is the Python ``major.minor`` version): 12927db96d56Sopenharmony_ci 12937db96d56Sopenharmony_ci * ``/usr/lib64/pythonX.Y/``: 12947db96d56Sopenharmony_ci Standard library (like ``os.py`` of the :mod:`os` module) 12957db96d56Sopenharmony_ci * ``/usr/lib64/pythonX.Y/lib-dynload/``: 12967db96d56Sopenharmony_ci C extension modules of the standard library (like the :mod:`errno` module, 12977db96d56Sopenharmony_ci the exact filename is platform specific) 12987db96d56Sopenharmony_ci * ``/usr/lib/pythonX.Y/site-packages/`` (always use ``lib``, not 12997db96d56Sopenharmony_ci :data:`sys.platlibdir`): Third-party modules 13007db96d56Sopenharmony_ci * ``/usr/lib64/pythonX.Y/site-packages/``: 13017db96d56Sopenharmony_ci C extension modules of third-party packages 13027db96d56Sopenharmony_ci 13037db96d56Sopenharmony_ci .. versionadded:: 3.9 13047db96d56Sopenharmony_ci 13057db96d56Sopenharmony_ci 13067db96d56Sopenharmony_ci.. data:: prefix 13077db96d56Sopenharmony_ci 13087db96d56Sopenharmony_ci A string giving the site-specific directory prefix where the platform 13097db96d56Sopenharmony_ci independent Python files are installed; on Unix, the default is 13107db96d56Sopenharmony_ci :file:`/usr/local`. This can be set at build time with the :option:`--prefix` 13117db96d56Sopenharmony_ci argument to the :program:`configure` script. See 13127db96d56Sopenharmony_ci :ref:`installation_paths` for derived paths. 13137db96d56Sopenharmony_ci 13147db96d56Sopenharmony_ci .. note:: If a :ref:`virtual environment <venv-def>` is in effect, this 13157db96d56Sopenharmony_ci value will be changed in ``site.py`` to point to the virtual 13167db96d56Sopenharmony_ci environment. The value for the Python installation will still be 13177db96d56Sopenharmony_ci available, via :data:`base_prefix`. 13187db96d56Sopenharmony_ci 13197db96d56Sopenharmony_ci 13207db96d56Sopenharmony_ci.. data:: ps1 13217db96d56Sopenharmony_ci ps2 13227db96d56Sopenharmony_ci 13237db96d56Sopenharmony_ci .. index:: 13247db96d56Sopenharmony_ci single: interpreter prompts 13257db96d56Sopenharmony_ci single: prompts, interpreter 13267db96d56Sopenharmony_ci single: >>>; interpreter prompt 13277db96d56Sopenharmony_ci single: ...; interpreter prompt 13287db96d56Sopenharmony_ci 13297db96d56Sopenharmony_ci Strings specifying the primary and secondary prompt of the interpreter. These 13307db96d56Sopenharmony_ci are only defined if the interpreter is in interactive mode. Their initial 13317db96d56Sopenharmony_ci values in this case are ``'>>> '`` and ``'... '``. If a non-string object is 13327db96d56Sopenharmony_ci assigned to either variable, its :func:`str` is re-evaluated each time the 13337db96d56Sopenharmony_ci interpreter prepares to read a new interactive command; this can be used to 13347db96d56Sopenharmony_ci implement a dynamic prompt. 13357db96d56Sopenharmony_ci 13367db96d56Sopenharmony_ci 13377db96d56Sopenharmony_ci.. function:: setdlopenflags(n) 13387db96d56Sopenharmony_ci 13397db96d56Sopenharmony_ci Set the flags used by the interpreter for :c:func:`dlopen` calls, such as when 13407db96d56Sopenharmony_ci the interpreter loads extension modules. Among other things, this will enable a 13417db96d56Sopenharmony_ci lazy resolving of symbols when importing a module, if called as 13427db96d56Sopenharmony_ci ``sys.setdlopenflags(0)``. To share symbols across extension modules, call as 13437db96d56Sopenharmony_ci ``sys.setdlopenflags(os.RTLD_GLOBAL)``. Symbolic names for the flag values 13447db96d56Sopenharmony_ci can be found in the :mod:`os` module (``RTLD_xxx`` constants, e.g. 13457db96d56Sopenharmony_ci :data:`os.RTLD_LAZY`). 13467db96d56Sopenharmony_ci 13477db96d56Sopenharmony_ci .. availability:: Unix. 13487db96d56Sopenharmony_ci 13497db96d56Sopenharmony_ci.. function:: set_int_max_str_digits(maxdigits) 13507db96d56Sopenharmony_ci 13517db96d56Sopenharmony_ci Set the :ref:`integer string conversion length limitation 13527db96d56Sopenharmony_ci <int_max_str_digits>` used by this interpreter. See also 13537db96d56Sopenharmony_ci :func:`get_int_max_str_digits`. 13547db96d56Sopenharmony_ci 13557db96d56Sopenharmony_ci .. versionadded:: 3.11 13567db96d56Sopenharmony_ci 13577db96d56Sopenharmony_ci.. function:: setprofile(profilefunc) 13587db96d56Sopenharmony_ci 13597db96d56Sopenharmony_ci .. index:: 13607db96d56Sopenharmony_ci single: profile function 13617db96d56Sopenharmony_ci single: profiler 13627db96d56Sopenharmony_ci 13637db96d56Sopenharmony_ci Set the system's profile function, which allows you to implement a Python source 13647db96d56Sopenharmony_ci code profiler in Python. See chapter :ref:`profile` for more information on the 13657db96d56Sopenharmony_ci Python profiler. The system's profile function is called similarly to the 13667db96d56Sopenharmony_ci system's trace function (see :func:`settrace`), but it is called with different events, 13677db96d56Sopenharmony_ci for example it isn't called for each executed line of code (only on call and return, 13687db96d56Sopenharmony_ci but the return event is reported even when an exception has been set). The function is 13697db96d56Sopenharmony_ci thread-specific, but there is no way for the profiler to know about context switches between 13707db96d56Sopenharmony_ci threads, so it does not make sense to use this in the presence of multiple threads. Also, 13717db96d56Sopenharmony_ci its return value is not used, so it can simply return ``None``. Error in the profile 13727db96d56Sopenharmony_ci function will cause itself unset. 13737db96d56Sopenharmony_ci 13747db96d56Sopenharmony_ci Profile functions should have three arguments: *frame*, *event*, and 13757db96d56Sopenharmony_ci *arg*. *frame* is the current stack frame. *event* is a string: ``'call'``, 13767db96d56Sopenharmony_ci ``'return'``, ``'c_call'``, ``'c_return'``, or ``'c_exception'``. *arg* depends 13777db96d56Sopenharmony_ci on the event type. 13787db96d56Sopenharmony_ci 13797db96d56Sopenharmony_ci .. audit-event:: sys.setprofile "" sys.setprofile 13807db96d56Sopenharmony_ci 13817db96d56Sopenharmony_ci The events have the following meaning: 13827db96d56Sopenharmony_ci 13837db96d56Sopenharmony_ci ``'call'`` 13847db96d56Sopenharmony_ci A function is called (or some other code block entered). The 13857db96d56Sopenharmony_ci profile function is called; *arg* is ``None``. 13867db96d56Sopenharmony_ci 13877db96d56Sopenharmony_ci ``'return'`` 13887db96d56Sopenharmony_ci A function (or other code block) is about to return. The profile 13897db96d56Sopenharmony_ci function is called; *arg* is the value that will be returned, or ``None`` 13907db96d56Sopenharmony_ci if the event is caused by an exception being raised. 13917db96d56Sopenharmony_ci 13927db96d56Sopenharmony_ci ``'c_call'`` 13937db96d56Sopenharmony_ci A C function is about to be called. This may be an extension function or 13947db96d56Sopenharmony_ci a built-in. *arg* is the C function object. 13957db96d56Sopenharmony_ci 13967db96d56Sopenharmony_ci ``'c_return'`` 13977db96d56Sopenharmony_ci A C function has returned. *arg* is the C function object. 13987db96d56Sopenharmony_ci 13997db96d56Sopenharmony_ci ``'c_exception'`` 14007db96d56Sopenharmony_ci A C function has raised an exception. *arg* is the C function object. 14017db96d56Sopenharmony_ci 14027db96d56Sopenharmony_ci.. function:: setrecursionlimit(limit) 14037db96d56Sopenharmony_ci 14047db96d56Sopenharmony_ci Set the maximum depth of the Python interpreter stack to *limit*. This limit 14057db96d56Sopenharmony_ci prevents infinite recursion from causing an overflow of the C stack and crashing 14067db96d56Sopenharmony_ci Python. 14077db96d56Sopenharmony_ci 14087db96d56Sopenharmony_ci The highest possible limit is platform-dependent. A user may need to set the 14097db96d56Sopenharmony_ci limit higher when they have a program that requires deep recursion and a platform 14107db96d56Sopenharmony_ci that supports a higher limit. This should be done with care, because a too-high 14117db96d56Sopenharmony_ci limit can lead to a crash. 14127db96d56Sopenharmony_ci 14137db96d56Sopenharmony_ci If the new limit is too low at the current recursion depth, a 14147db96d56Sopenharmony_ci :exc:`RecursionError` exception is raised. 14157db96d56Sopenharmony_ci 14167db96d56Sopenharmony_ci .. versionchanged:: 3.5.1 14177db96d56Sopenharmony_ci A :exc:`RecursionError` exception is now raised if the new limit is too 14187db96d56Sopenharmony_ci low at the current recursion depth. 14197db96d56Sopenharmony_ci 14207db96d56Sopenharmony_ci 14217db96d56Sopenharmony_ci.. function:: setswitchinterval(interval) 14227db96d56Sopenharmony_ci 14237db96d56Sopenharmony_ci Set the interpreter's thread switch interval (in seconds). This floating-point 14247db96d56Sopenharmony_ci value determines the ideal duration of the "timeslices" allocated to 14257db96d56Sopenharmony_ci concurrently running Python threads. Please note that the actual value 14267db96d56Sopenharmony_ci can be higher, especially if long-running internal functions or methods 14277db96d56Sopenharmony_ci are used. Also, which thread becomes scheduled at the end of the interval 14287db96d56Sopenharmony_ci is the operating system's decision. The interpreter doesn't have its 14297db96d56Sopenharmony_ci own scheduler. 14307db96d56Sopenharmony_ci 14317db96d56Sopenharmony_ci .. versionadded:: 3.2 14327db96d56Sopenharmony_ci 14337db96d56Sopenharmony_ci 14347db96d56Sopenharmony_ci.. function:: settrace(tracefunc) 14357db96d56Sopenharmony_ci 14367db96d56Sopenharmony_ci .. index:: 14377db96d56Sopenharmony_ci single: trace function 14387db96d56Sopenharmony_ci single: debugger 14397db96d56Sopenharmony_ci 14407db96d56Sopenharmony_ci Set the system's trace function, which allows you to implement a Python 14417db96d56Sopenharmony_ci source code debugger in Python. The function is thread-specific; for a 14427db96d56Sopenharmony_ci debugger to support multiple threads, it must register a trace function using 14437db96d56Sopenharmony_ci :func:`settrace` for each thread being debugged or use :func:`threading.settrace`. 14447db96d56Sopenharmony_ci 14457db96d56Sopenharmony_ci Trace functions should have three arguments: *frame*, *event*, and 14467db96d56Sopenharmony_ci *arg*. *frame* is the current stack frame. *event* is a string: ``'call'``, 14477db96d56Sopenharmony_ci ``'line'``, ``'return'``, ``'exception'`` or ``'opcode'``. *arg* depends on 14487db96d56Sopenharmony_ci the event type. 14497db96d56Sopenharmony_ci 14507db96d56Sopenharmony_ci The trace function is invoked (with *event* set to ``'call'``) whenever a new 14517db96d56Sopenharmony_ci local scope is entered; it should return a reference to a local trace 14527db96d56Sopenharmony_ci function to be used for the new scope, or ``None`` if the scope shouldn't be 14537db96d56Sopenharmony_ci traced. 14547db96d56Sopenharmony_ci 14557db96d56Sopenharmony_ci The local trace function should return a reference to itself (or to another 14567db96d56Sopenharmony_ci function for further tracing in that scope), or ``None`` to turn off tracing 14577db96d56Sopenharmony_ci in that scope. 14587db96d56Sopenharmony_ci 14597db96d56Sopenharmony_ci If there is any error occurred in the trace function, it will be unset, just 14607db96d56Sopenharmony_ci like ``settrace(None)`` is called. 14617db96d56Sopenharmony_ci 14627db96d56Sopenharmony_ci The events have the following meaning: 14637db96d56Sopenharmony_ci 14647db96d56Sopenharmony_ci ``'call'`` 14657db96d56Sopenharmony_ci A function is called (or some other code block entered). The 14667db96d56Sopenharmony_ci global trace function is called; *arg* is ``None``; the return value 14677db96d56Sopenharmony_ci specifies the local trace function. 14687db96d56Sopenharmony_ci 14697db96d56Sopenharmony_ci ``'line'`` 14707db96d56Sopenharmony_ci The interpreter is about to execute a new line of code or re-execute the 14717db96d56Sopenharmony_ci condition of a loop. The local trace function is called; *arg* is 14727db96d56Sopenharmony_ci ``None``; the return value specifies the new local trace function. See 14737db96d56Sopenharmony_ci :file:`Objects/lnotab_notes.txt` for a detailed explanation of how this 14747db96d56Sopenharmony_ci works. 14757db96d56Sopenharmony_ci Per-line events may be disabled for a frame by setting 14767db96d56Sopenharmony_ci :attr:`f_trace_lines` to :const:`False` on that frame. 14777db96d56Sopenharmony_ci 14787db96d56Sopenharmony_ci ``'return'`` 14797db96d56Sopenharmony_ci A function (or other code block) is about to return. The local trace 14807db96d56Sopenharmony_ci function is called; *arg* is the value that will be returned, or ``None`` 14817db96d56Sopenharmony_ci if the event is caused by an exception being raised. The trace function's 14827db96d56Sopenharmony_ci return value is ignored. 14837db96d56Sopenharmony_ci 14847db96d56Sopenharmony_ci ``'exception'`` 14857db96d56Sopenharmony_ci An exception has occurred. The local trace function is called; *arg* is a 14867db96d56Sopenharmony_ci tuple ``(exception, value, traceback)``; the return value specifies the 14877db96d56Sopenharmony_ci new local trace function. 14887db96d56Sopenharmony_ci 14897db96d56Sopenharmony_ci ``'opcode'`` 14907db96d56Sopenharmony_ci The interpreter is about to execute a new opcode (see :mod:`dis` for 14917db96d56Sopenharmony_ci opcode details). The local trace function is called; *arg* is 14927db96d56Sopenharmony_ci ``None``; the return value specifies the new local trace function. 14937db96d56Sopenharmony_ci Per-opcode events are not emitted by default: they must be explicitly 14947db96d56Sopenharmony_ci requested by setting :attr:`f_trace_opcodes` to :const:`True` on the 14957db96d56Sopenharmony_ci frame. 14967db96d56Sopenharmony_ci 14977db96d56Sopenharmony_ci Note that as an exception is propagated down the chain of callers, an 14987db96d56Sopenharmony_ci ``'exception'`` event is generated at each level. 14997db96d56Sopenharmony_ci 15007db96d56Sopenharmony_ci For more fine-grained usage, it's possible to set a trace function by 15017db96d56Sopenharmony_ci assigning ``frame.f_trace = tracefunc`` explicitly, rather than relying on 15027db96d56Sopenharmony_ci it being set indirectly via the return value from an already installed 15037db96d56Sopenharmony_ci trace function. This is also required for activating the trace function on 15047db96d56Sopenharmony_ci the current frame, which :func:`settrace` doesn't do. Note that in order 15057db96d56Sopenharmony_ci for this to work, a global tracing function must have been installed 15067db96d56Sopenharmony_ci with :func:`settrace` in order to enable the runtime tracing machinery, 15077db96d56Sopenharmony_ci but it doesn't need to be the same tracing function (e.g. it could be a 15087db96d56Sopenharmony_ci low overhead tracing function that simply returns ``None`` to disable 15097db96d56Sopenharmony_ci itself immediately on each frame). 15107db96d56Sopenharmony_ci 15117db96d56Sopenharmony_ci For more information on code and frame objects, refer to :ref:`types`. 15127db96d56Sopenharmony_ci 15137db96d56Sopenharmony_ci .. audit-event:: sys.settrace "" sys.settrace 15147db96d56Sopenharmony_ci 15157db96d56Sopenharmony_ci .. impl-detail:: 15167db96d56Sopenharmony_ci 15177db96d56Sopenharmony_ci The :func:`settrace` function is intended only for implementing debuggers, 15187db96d56Sopenharmony_ci profilers, coverage tools and the like. Its behavior is part of the 15197db96d56Sopenharmony_ci implementation platform, rather than part of the language definition, and 15207db96d56Sopenharmony_ci thus may not be available in all Python implementations. 15217db96d56Sopenharmony_ci 15227db96d56Sopenharmony_ci .. versionchanged:: 3.7 15237db96d56Sopenharmony_ci 15247db96d56Sopenharmony_ci ``'opcode'`` event type added; :attr:`f_trace_lines` and 15257db96d56Sopenharmony_ci :attr:`f_trace_opcodes` attributes added to frames 15267db96d56Sopenharmony_ci 15277db96d56Sopenharmony_ci.. function:: set_asyncgen_hooks(firstiter, finalizer) 15287db96d56Sopenharmony_ci 15297db96d56Sopenharmony_ci Accepts two optional keyword arguments which are callables that accept an 15307db96d56Sopenharmony_ci :term:`asynchronous generator iterator` as an argument. The *firstiter* 15317db96d56Sopenharmony_ci callable will be called when an asynchronous generator is iterated for the 15327db96d56Sopenharmony_ci first time. The *finalizer* will be called when an asynchronous generator 15337db96d56Sopenharmony_ci is about to be garbage collected. 15347db96d56Sopenharmony_ci 15357db96d56Sopenharmony_ci .. audit-event:: sys.set_asyncgen_hooks_firstiter "" sys.set_asyncgen_hooks 15367db96d56Sopenharmony_ci 15377db96d56Sopenharmony_ci .. audit-event:: sys.set_asyncgen_hooks_finalizer "" sys.set_asyncgen_hooks 15387db96d56Sopenharmony_ci 15397db96d56Sopenharmony_ci Two auditing events are raised because the underlying API consists of two 15407db96d56Sopenharmony_ci calls, each of which must raise its own event. 15417db96d56Sopenharmony_ci 15427db96d56Sopenharmony_ci .. versionadded:: 3.6 15437db96d56Sopenharmony_ci See :pep:`525` for more details, and for a reference example of a 15447db96d56Sopenharmony_ci *finalizer* method see the implementation of 15457db96d56Sopenharmony_ci ``asyncio.Loop.shutdown_asyncgens`` in 15467db96d56Sopenharmony_ci :source:`Lib/asyncio/base_events.py` 15477db96d56Sopenharmony_ci 15487db96d56Sopenharmony_ci .. note:: 15497db96d56Sopenharmony_ci This function has been added on a provisional basis (see :pep:`411` 15507db96d56Sopenharmony_ci for details.) 15517db96d56Sopenharmony_ci 15527db96d56Sopenharmony_ci.. function:: set_coroutine_origin_tracking_depth(depth) 15537db96d56Sopenharmony_ci 15547db96d56Sopenharmony_ci Allows enabling or disabling coroutine origin tracking. When 15557db96d56Sopenharmony_ci enabled, the ``cr_origin`` attribute on coroutine objects will 15567db96d56Sopenharmony_ci contain a tuple of (filename, line number, function name) tuples 15577db96d56Sopenharmony_ci describing the traceback where the coroutine object was created, 15587db96d56Sopenharmony_ci with the most recent call first. When disabled, ``cr_origin`` will 15597db96d56Sopenharmony_ci be None. 15607db96d56Sopenharmony_ci 15617db96d56Sopenharmony_ci To enable, pass a *depth* value greater than zero; this sets the 15627db96d56Sopenharmony_ci number of frames whose information will be captured. To disable, 15637db96d56Sopenharmony_ci pass set *depth* to zero. 15647db96d56Sopenharmony_ci 15657db96d56Sopenharmony_ci This setting is thread-specific. 15667db96d56Sopenharmony_ci 15677db96d56Sopenharmony_ci .. versionadded:: 3.7 15687db96d56Sopenharmony_ci 15697db96d56Sopenharmony_ci .. note:: 15707db96d56Sopenharmony_ci This function has been added on a provisional basis (see :pep:`411` 15717db96d56Sopenharmony_ci for details.) Use it only for debugging purposes. 15727db96d56Sopenharmony_ci 15737db96d56Sopenharmony_ci.. function:: _enablelegacywindowsfsencoding() 15747db96d56Sopenharmony_ci 15757db96d56Sopenharmony_ci Changes the :term:`filesystem encoding and error handler` to 'mbcs' and 15767db96d56Sopenharmony_ci 'replace' respectively, for consistency with versions of Python prior to 15777db96d56Sopenharmony_ci 3.6. 15787db96d56Sopenharmony_ci 15797db96d56Sopenharmony_ci This is equivalent to defining the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` 15807db96d56Sopenharmony_ci environment variable before launching Python. 15817db96d56Sopenharmony_ci 15827db96d56Sopenharmony_ci See also :func:`sys.getfilesystemencoding` and 15837db96d56Sopenharmony_ci :func:`sys.getfilesystemencodeerrors`. 15847db96d56Sopenharmony_ci 15857db96d56Sopenharmony_ci .. availability:: Windows. 15867db96d56Sopenharmony_ci 15877db96d56Sopenharmony_ci .. versionadded:: 3.6 15887db96d56Sopenharmony_ci See :pep:`529` for more details. 15897db96d56Sopenharmony_ci 15907db96d56Sopenharmony_ci.. data:: stdin 15917db96d56Sopenharmony_ci stdout 15927db96d56Sopenharmony_ci stderr 15937db96d56Sopenharmony_ci 15947db96d56Sopenharmony_ci :term:`File objects <file object>` used by the interpreter for standard 15957db96d56Sopenharmony_ci input, output and errors: 15967db96d56Sopenharmony_ci 15977db96d56Sopenharmony_ci * ``stdin`` is used for all interactive input (including calls to 15987db96d56Sopenharmony_ci :func:`input`); 15997db96d56Sopenharmony_ci * ``stdout`` is used for the output of :func:`print` and :term:`expression` 16007db96d56Sopenharmony_ci statements and for the prompts of :func:`input`; 16017db96d56Sopenharmony_ci * The interpreter's own prompts and its error messages go to ``stderr``. 16027db96d56Sopenharmony_ci 16037db96d56Sopenharmony_ci These streams are regular :term:`text files <text file>` like those 16047db96d56Sopenharmony_ci returned by the :func:`open` function. Their parameters are chosen as 16057db96d56Sopenharmony_ci follows: 16067db96d56Sopenharmony_ci 16077db96d56Sopenharmony_ci * The encoding and error handling are is initialized from 16087db96d56Sopenharmony_ci :c:member:`PyConfig.stdio_encoding` and :c:member:`PyConfig.stdio_errors`. 16097db96d56Sopenharmony_ci 16107db96d56Sopenharmony_ci On Windows, UTF-8 is used for the console device. Non-character 16117db96d56Sopenharmony_ci devices such as disk files and pipes use the system locale 16127db96d56Sopenharmony_ci encoding (i.e. the ANSI codepage). Non-console character 16137db96d56Sopenharmony_ci devices such as NUL (i.e. where ``isatty()`` returns ``True``) use the 16147db96d56Sopenharmony_ci value of the console input and output codepages at startup, 16157db96d56Sopenharmony_ci respectively for stdin and stdout/stderr. This defaults to the 16167db96d56Sopenharmony_ci system :term:`locale encoding` if the process is not initially attached 16177db96d56Sopenharmony_ci to a console. 16187db96d56Sopenharmony_ci 16197db96d56Sopenharmony_ci The special behaviour of the console can be overridden 16207db96d56Sopenharmony_ci by setting the environment variable PYTHONLEGACYWINDOWSSTDIO 16217db96d56Sopenharmony_ci before starting Python. In that case, the console codepages are 16227db96d56Sopenharmony_ci used as for any other character device. 16237db96d56Sopenharmony_ci 16247db96d56Sopenharmony_ci Under all platforms, you can override the character encoding by 16257db96d56Sopenharmony_ci setting the :envvar:`PYTHONIOENCODING` environment variable before 16267db96d56Sopenharmony_ci starting Python or by using the new :option:`-X` ``utf8`` command 16277db96d56Sopenharmony_ci line option and :envvar:`PYTHONUTF8` environment variable. However, 16287db96d56Sopenharmony_ci for the Windows console, this only applies when 16297db96d56Sopenharmony_ci :envvar:`PYTHONLEGACYWINDOWSSTDIO` is also set. 16307db96d56Sopenharmony_ci 16317db96d56Sopenharmony_ci * When interactive, the ``stdout`` stream is line-buffered. Otherwise, 16327db96d56Sopenharmony_ci it is block-buffered like regular text files. The ``stderr`` stream 16337db96d56Sopenharmony_ci is line-buffered in both cases. You can make both streams unbuffered 16347db96d56Sopenharmony_ci by passing the :option:`-u` command-line option or setting the 16357db96d56Sopenharmony_ci :envvar:`PYTHONUNBUFFERED` environment variable. 16367db96d56Sopenharmony_ci 16377db96d56Sopenharmony_ci .. versionchanged:: 3.9 16387db96d56Sopenharmony_ci Non-interactive ``stderr`` is now line-buffered instead of fully 16397db96d56Sopenharmony_ci buffered. 16407db96d56Sopenharmony_ci 16417db96d56Sopenharmony_ci .. note:: 16427db96d56Sopenharmony_ci 16437db96d56Sopenharmony_ci To write or read binary data from/to the standard streams, use the 16447db96d56Sopenharmony_ci underlying binary :data:`~io.TextIOBase.buffer` object. For example, to 16457db96d56Sopenharmony_ci write bytes to :data:`stdout`, use ``sys.stdout.buffer.write(b'abc')``. 16467db96d56Sopenharmony_ci 16477db96d56Sopenharmony_ci However, if you are writing a library (and do not control in which 16487db96d56Sopenharmony_ci context its code will be executed), be aware that the standard streams 16497db96d56Sopenharmony_ci may be replaced with file-like objects like :class:`io.StringIO` which 16507db96d56Sopenharmony_ci do not support the :attr:`~io.BufferedIOBase.buffer` attribute. 16517db96d56Sopenharmony_ci 16527db96d56Sopenharmony_ci 16537db96d56Sopenharmony_ci.. data:: __stdin__ 16547db96d56Sopenharmony_ci __stdout__ 16557db96d56Sopenharmony_ci __stderr__ 16567db96d56Sopenharmony_ci 16577db96d56Sopenharmony_ci These objects contain the original values of ``stdin``, ``stderr`` and 16587db96d56Sopenharmony_ci ``stdout`` at the start of the program. They are used during finalization, 16597db96d56Sopenharmony_ci and could be useful to print to the actual standard stream no matter if the 16607db96d56Sopenharmony_ci ``sys.std*`` object has been redirected. 16617db96d56Sopenharmony_ci 16627db96d56Sopenharmony_ci It can also be used to restore the actual files to known working file objects 16637db96d56Sopenharmony_ci in case they have been overwritten with a broken object. However, the 16647db96d56Sopenharmony_ci preferred way to do this is to explicitly save the previous stream before 16657db96d56Sopenharmony_ci replacing it, and restore the saved object. 16667db96d56Sopenharmony_ci 16677db96d56Sopenharmony_ci .. note:: 16687db96d56Sopenharmony_ci Under some conditions ``stdin``, ``stdout`` and ``stderr`` as well as the 16697db96d56Sopenharmony_ci original values ``__stdin__``, ``__stdout__`` and ``__stderr__`` can be 16707db96d56Sopenharmony_ci ``None``. It is usually the case for Windows GUI apps that aren't connected 16717db96d56Sopenharmony_ci to a console and Python apps started with :program:`pythonw`. 16727db96d56Sopenharmony_ci 16737db96d56Sopenharmony_ci 16747db96d56Sopenharmony_ci.. data:: stdlib_module_names 16757db96d56Sopenharmony_ci 16767db96d56Sopenharmony_ci A frozenset of strings containing the names of standard library modules. 16777db96d56Sopenharmony_ci 16787db96d56Sopenharmony_ci It is the same on all platforms. Modules which are not available on 16797db96d56Sopenharmony_ci some platforms and modules disabled at Python build are also listed. 16807db96d56Sopenharmony_ci All module kinds are listed: pure Python, built-in, frozen and extension 16817db96d56Sopenharmony_ci modules. Test modules are excluded. 16827db96d56Sopenharmony_ci 16837db96d56Sopenharmony_ci For packages, only the main package is listed: sub-packages and sub-modules 16847db96d56Sopenharmony_ci are not listed. For example, the ``email`` package is listed, but the 16857db96d56Sopenharmony_ci ``email.mime`` sub-package and the ``email.message`` sub-module are not 16867db96d56Sopenharmony_ci listed. 16877db96d56Sopenharmony_ci 16887db96d56Sopenharmony_ci See also the :attr:`sys.builtin_module_names` list. 16897db96d56Sopenharmony_ci 16907db96d56Sopenharmony_ci .. versionadded:: 3.10 16917db96d56Sopenharmony_ci 16927db96d56Sopenharmony_ci 16937db96d56Sopenharmony_ci.. data:: thread_info 16947db96d56Sopenharmony_ci 16957db96d56Sopenharmony_ci A :term:`named tuple` holding information about the thread 16967db96d56Sopenharmony_ci implementation. 16977db96d56Sopenharmony_ci 16987db96d56Sopenharmony_ci .. tabularcolumns:: |l|p{0.7\linewidth}| 16997db96d56Sopenharmony_ci 17007db96d56Sopenharmony_ci +------------------+---------------------------------------------------------+ 17017db96d56Sopenharmony_ci | Attribute | Explanation | 17027db96d56Sopenharmony_ci +==================+=========================================================+ 17037db96d56Sopenharmony_ci | :const:`name` | Name of the thread implementation: | 17047db96d56Sopenharmony_ci | | | 17057db96d56Sopenharmony_ci | | * ``'nt'``: Windows threads | 17067db96d56Sopenharmony_ci | | * ``'pthread'``: POSIX threads | 17077db96d56Sopenharmony_ci | | * ``'pthread-stubs'``: stub POSIX threads | 17087db96d56Sopenharmony_ci | | (on WebAssembly platforms without threading support) | 17097db96d56Sopenharmony_ci | | * ``'solaris'``: Solaris threads | 17107db96d56Sopenharmony_ci +------------------+---------------------------------------------------------+ 17117db96d56Sopenharmony_ci | :const:`lock` | Name of the lock implementation: | 17127db96d56Sopenharmony_ci | | | 17137db96d56Sopenharmony_ci | | * ``'semaphore'``: a lock uses a semaphore | 17147db96d56Sopenharmony_ci | | * ``'mutex+cond'``: a lock uses a mutex | 17157db96d56Sopenharmony_ci | | and a condition variable | 17167db96d56Sopenharmony_ci | | * ``None`` if this information is unknown | 17177db96d56Sopenharmony_ci +------------------+---------------------------------------------------------+ 17187db96d56Sopenharmony_ci | :const:`version` | Name and version of the thread library. It is a string, | 17197db96d56Sopenharmony_ci | | or ``None`` if this information is unknown. | 17207db96d56Sopenharmony_ci +------------------+---------------------------------------------------------+ 17217db96d56Sopenharmony_ci 17227db96d56Sopenharmony_ci .. versionadded:: 3.3 17237db96d56Sopenharmony_ci 17247db96d56Sopenharmony_ci 17257db96d56Sopenharmony_ci.. data:: tracebacklimit 17267db96d56Sopenharmony_ci 17277db96d56Sopenharmony_ci When this variable is set to an integer value, it determines the maximum number 17287db96d56Sopenharmony_ci of levels of traceback information printed when an unhandled exception occurs. 17297db96d56Sopenharmony_ci The default is ``1000``. When set to ``0`` or less, all traceback information 17307db96d56Sopenharmony_ci is suppressed and only the exception type and value are printed. 17317db96d56Sopenharmony_ci 17327db96d56Sopenharmony_ci 17337db96d56Sopenharmony_ci.. function:: unraisablehook(unraisable, /) 17347db96d56Sopenharmony_ci 17357db96d56Sopenharmony_ci Handle an unraisable exception. 17367db96d56Sopenharmony_ci 17377db96d56Sopenharmony_ci Called when an exception has occurred but there is no way for Python to 17387db96d56Sopenharmony_ci handle it. For example, when a destructor raises an exception or during 17397db96d56Sopenharmony_ci garbage collection (:func:`gc.collect`). 17407db96d56Sopenharmony_ci 17417db96d56Sopenharmony_ci The *unraisable* argument has the following attributes: 17427db96d56Sopenharmony_ci 17437db96d56Sopenharmony_ci * *exc_type*: Exception type. 17447db96d56Sopenharmony_ci * *exc_value*: Exception value, can be ``None``. 17457db96d56Sopenharmony_ci * *exc_traceback*: Exception traceback, can be ``None``. 17467db96d56Sopenharmony_ci * *err_msg*: Error message, can be ``None``. 17477db96d56Sopenharmony_ci * *object*: Object causing the exception, can be ``None``. 17487db96d56Sopenharmony_ci 17497db96d56Sopenharmony_ci The default hook formats *err_msg* and *object* as: 17507db96d56Sopenharmony_ci ``f'{err_msg}: {object!r}'``; use "Exception ignored in" error message 17517db96d56Sopenharmony_ci if *err_msg* is ``None``. 17527db96d56Sopenharmony_ci 17537db96d56Sopenharmony_ci :func:`sys.unraisablehook` can be overridden to control how unraisable 17547db96d56Sopenharmony_ci exceptions are handled. 17557db96d56Sopenharmony_ci 17567db96d56Sopenharmony_ci Storing *exc_value* using a custom hook can create a reference cycle. It 17577db96d56Sopenharmony_ci should be cleared explicitly to break the reference cycle when the 17587db96d56Sopenharmony_ci exception is no longer needed. 17597db96d56Sopenharmony_ci 17607db96d56Sopenharmony_ci Storing *object* using a custom hook can resurrect it if it is set to an 17617db96d56Sopenharmony_ci object which is being finalized. Avoid storing *object* after the custom 17627db96d56Sopenharmony_ci hook completes to avoid resurrecting objects. 17637db96d56Sopenharmony_ci 17647db96d56Sopenharmony_ci See also :func:`excepthook` which handles uncaught exceptions. 17657db96d56Sopenharmony_ci 17667db96d56Sopenharmony_ci .. audit-event:: sys.unraisablehook hook,unraisable sys.unraisablehook 17677db96d56Sopenharmony_ci 17687db96d56Sopenharmony_ci Raise an auditing event ``sys.unraisablehook`` with arguments 17697db96d56Sopenharmony_ci ``hook``, ``unraisable`` when an exception that cannot be handled occurs. 17707db96d56Sopenharmony_ci The ``unraisable`` object is the same as what will be passed to the hook. 17717db96d56Sopenharmony_ci If no hook has been set, ``hook`` may be ``None``. 17727db96d56Sopenharmony_ci 17737db96d56Sopenharmony_ci .. versionadded:: 3.8 17747db96d56Sopenharmony_ci 17757db96d56Sopenharmony_ci.. data:: version 17767db96d56Sopenharmony_ci 17777db96d56Sopenharmony_ci A string containing the version number of the Python interpreter plus additional 17787db96d56Sopenharmony_ci information on the build number and compiler used. This string is displayed 17797db96d56Sopenharmony_ci when the interactive interpreter is started. Do not extract version information 17807db96d56Sopenharmony_ci out of it, rather, use :data:`version_info` and the functions provided by the 17817db96d56Sopenharmony_ci :mod:`platform` module. 17827db96d56Sopenharmony_ci 17837db96d56Sopenharmony_ci 17847db96d56Sopenharmony_ci.. data:: api_version 17857db96d56Sopenharmony_ci 17867db96d56Sopenharmony_ci The C API version for this interpreter. Programmers may find this useful when 17877db96d56Sopenharmony_ci debugging version conflicts between Python and extension modules. 17887db96d56Sopenharmony_ci 17897db96d56Sopenharmony_ci 17907db96d56Sopenharmony_ci.. data:: version_info 17917db96d56Sopenharmony_ci 17927db96d56Sopenharmony_ci A tuple containing the five components of the version number: *major*, *minor*, 17937db96d56Sopenharmony_ci *micro*, *releaselevel*, and *serial*. All values except *releaselevel* are 17947db96d56Sopenharmony_ci integers; the release level is ``'alpha'``, ``'beta'``, ``'candidate'``, or 17957db96d56Sopenharmony_ci ``'final'``. The ``version_info`` value corresponding to the Python version 2.0 17967db96d56Sopenharmony_ci is ``(2, 0, 0, 'final', 0)``. The components can also be accessed by name, 17977db96d56Sopenharmony_ci so ``sys.version_info[0]`` is equivalent to ``sys.version_info.major`` 17987db96d56Sopenharmony_ci and so on. 17997db96d56Sopenharmony_ci 18007db96d56Sopenharmony_ci .. versionchanged:: 3.1 18017db96d56Sopenharmony_ci Added named component attributes. 18027db96d56Sopenharmony_ci 18037db96d56Sopenharmony_ci.. data:: warnoptions 18047db96d56Sopenharmony_ci 18057db96d56Sopenharmony_ci This is an implementation detail of the warnings framework; do not modify this 18067db96d56Sopenharmony_ci value. Refer to the :mod:`warnings` module for more information on the warnings 18077db96d56Sopenharmony_ci framework. 18087db96d56Sopenharmony_ci 18097db96d56Sopenharmony_ci 18107db96d56Sopenharmony_ci.. data:: winver 18117db96d56Sopenharmony_ci 18127db96d56Sopenharmony_ci The version number used to form registry keys on Windows platforms. This is 18137db96d56Sopenharmony_ci stored as string resource 1000 in the Python DLL. The value is normally the 18147db96d56Sopenharmony_ci major and minor versions of the running Python interpreter. It is provided in the :mod:`sys` 18157db96d56Sopenharmony_ci module for informational purposes; modifying this value has no effect on the 18167db96d56Sopenharmony_ci registry keys used by Python. 18177db96d56Sopenharmony_ci 18187db96d56Sopenharmony_ci .. availability:: Windows. 18197db96d56Sopenharmony_ci 18207db96d56Sopenharmony_ci 18217db96d56Sopenharmony_ci.. data:: _xoptions 18227db96d56Sopenharmony_ci 18237db96d56Sopenharmony_ci A dictionary of the various implementation-specific flags passed through 18247db96d56Sopenharmony_ci the :option:`-X` command-line option. Option names are either mapped to 18257db96d56Sopenharmony_ci their values, if given explicitly, or to :const:`True`. Example: 18267db96d56Sopenharmony_ci 18277db96d56Sopenharmony_ci .. code-block:: shell-session 18287db96d56Sopenharmony_ci 18297db96d56Sopenharmony_ci $ ./python -Xa=b -Xc 18307db96d56Sopenharmony_ci Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50) 18317db96d56Sopenharmony_ci [GCC 4.4.3] on linux2 18327db96d56Sopenharmony_ci Type "help", "copyright", "credits" or "license" for more information. 18337db96d56Sopenharmony_ci >>> import sys 18347db96d56Sopenharmony_ci >>> sys._xoptions 18357db96d56Sopenharmony_ci {'a': 'b', 'c': True} 18367db96d56Sopenharmony_ci 18377db96d56Sopenharmony_ci .. impl-detail:: 18387db96d56Sopenharmony_ci 18397db96d56Sopenharmony_ci This is a CPython-specific way of accessing options passed through 18407db96d56Sopenharmony_ci :option:`-X`. Other implementations may export them through other 18417db96d56Sopenharmony_ci means, or not at all. 18427db96d56Sopenharmony_ci 18437db96d56Sopenharmony_ci .. versionadded:: 3.2 18447db96d56Sopenharmony_ci 18457db96d56Sopenharmony_ci 18467db96d56Sopenharmony_ci.. rubric:: Citations 18477db96d56Sopenharmony_ci 18487db96d56Sopenharmony_ci.. [C99] ISO/IEC 9899:1999. "Programming languages -- C." A public draft of this standard is available at https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf\ . 1849