Home | History | Annotate | Download | only in library
      1 :mod:`sys` --- System-specific parameters and functions
      2 =======================================================
      3 
      4 .. module:: sys
      5    :synopsis: Access system-specific parameters and functions.
      6 
      7 --------------
      8 
      9 This module provides access to some variables used or maintained by the
     10 interpreter and to functions that interact strongly with the interpreter. It is
     11 always available.
     12 
     13 
     14 .. data:: abiflags
     15 
     16    On POSIX systems where Python was built with the standard ``configure``
     17    script, this contains the ABI flags as specified by :pep:`3149`.
     18 
     19    .. versionadded:: 3.2
     20 
     21 
     22 .. data:: argv
     23 
     24    The list of command line arguments passed to a Python script. ``argv[0]`` is the
     25    script name (it is operating system dependent whether this is a full pathname or
     26    not).  If the command was executed using the :option:`-c` command line option to
     27    the interpreter, ``argv[0]`` is set to the string ``'-c'``.  If no script name
     28    was passed to the Python interpreter, ``argv[0]`` is the empty string.
     29 
     30    To loop over the standard input, or the list of files given on the
     31    command line, see the :mod:`fileinput` module.
     32 
     33 
     34 .. data:: base_exec_prefix
     35 
     36    Set during Python startup, before ``site.py`` is run, to the same value as
     37    :data:`exec_prefix`. If not running in a
     38    :ref:`virtual environment <venv-def>`, the values will stay the same; if
     39    ``site.py`` finds that a virtual environment is in use, the values of
     40    :data:`prefix` and :data:`exec_prefix` will be changed to point to the
     41    virtual environment, whereas :data:`base_prefix` and
     42    :data:`base_exec_prefix` will remain pointing to the base Python
     43    installation (the one which the virtual environment was created from).
     44 
     45    .. versionadded:: 3.3
     46 
     47 
     48 .. data:: base_prefix
     49 
     50    Set during Python startup, before ``site.py`` is run, to the same value as
     51    :data:`prefix`. If not running in a :ref:`virtual environment <venv-def>`, the values
     52    will stay the same; if ``site.py`` finds that a virtual environment is in
     53    use, the values of :data:`prefix` and :data:`exec_prefix` will be changed to
     54    point to the virtual environment, whereas :data:`base_prefix` and
     55    :data:`base_exec_prefix` will remain pointing to the base Python
     56    installation (the one which the virtual environment was created from).
     57 
     58    .. versionadded:: 3.3
     59 
     60 
     61 .. data:: byteorder
     62 
     63    An indicator of the native byte order.  This will have the value ``'big'`` on
     64    big-endian (most-significant byte first) platforms, and ``'little'`` on
     65    little-endian (least-significant byte first) platforms.
     66 
     67 
     68 .. data:: builtin_module_names
     69 
     70    A tuple of strings giving the names of all modules that are compiled into this
     71    Python interpreter.  (This information is not available in any other way ---
     72    ``modules.keys()`` only lists the imported modules.)
     73 
     74 
     75 .. function:: call_tracing(func, args)
     76 
     77    Call ``func(*args)``, while tracing is enabled.  The tracing state is saved,
     78    and restored afterwards.  This is intended to be called from a debugger from
     79    a checkpoint, to recursively debug some other code.
     80 
     81 
     82 .. data:: copyright
     83 
     84    A string containing the copyright pertaining to the Python interpreter.
     85 
     86 
     87 .. function:: _clear_type_cache()
     88 
     89    Clear the internal type cache. The type cache is used to speed up attribute
     90    and method lookups. Use the function *only* to drop unnecessary references
     91    during reference leak debugging.
     92 
     93    This function should be used for internal and specialized purposes only.
     94 
     95 
     96 .. function:: _current_frames()
     97 
     98    Return a dictionary mapping each thread's identifier to the topmost stack frame
     99    currently active in that thread at the time the function is called. Note that
    100    functions in the :mod:`traceback` module can build the call stack given such a
    101    frame.
    102 
    103    This is most useful for debugging deadlock:  this function does not require the
    104    deadlocked threads' cooperation, and such threads' call stacks are frozen for as
    105    long as they remain deadlocked.  The frame returned for a non-deadlocked thread
    106    may bear no relationship to that thread's current activity by the time calling
    107    code examines the frame.
    108 
    109    This function should be used for internal and specialized purposes only.
    110 
    111 
    112 .. function:: breakpointhook()
    113 
    114    This hook function is called by built-in :func:`breakpoint`.  By default,
    115    it drops you into the :mod:`pdb` debugger, but it can be set to any other
    116    function so that you can choose which debugger gets used.
    117 
    118    The signature of this function is dependent on what it calls.  For example,
    119    the default binding (e.g. ``pdb.set_trace()``) expects no arguments, but
    120    you might bind it to a function that expects additional arguments
    121    (positional and/or keyword).  The built-in ``breakpoint()`` function passes
    122    its ``*args`` and ``**kws`` straight through.  Whatever
    123    ``breakpointhooks()`` returns is returned from ``breakpoint()``.
    124 
    125    The default implementation first consults the environment variable
    126    :envvar:`PYTHONBREAKPOINT`.  If that is set to ``"0"`` then this function
    127    returns immediately; i.e. it is a no-op.  If the environment variable is
    128    not set, or is set to the empty string, ``pdb.set_trace()`` is called.
    129    Otherwise this variable should name a function to run, using Python's
    130    dotted-import nomenclature, e.g. ``package.subpackage.module.function``.
    131    In this case, ``package.subpackage.module`` would be imported and the
    132    resulting module must have a callable named ``function()``.  This is run,
    133    passing in ``*args`` and ``**kws``, and whatever ``function()`` returns,
    134    ``sys.breakpointhook()`` returns to the built-in :func:`breakpoint`
    135    function.
    136 
    137    Note that if anything goes wrong while importing the callable named by
    138    :envvar:`PYTHONBREAKPOINT`, a :exc:`RuntimeWarning` is reported and the
    139    breakpoint is ignored.
    140 
    141    Also note that if ``sys.breakpointhook()`` is overridden programmatically,
    142    :envvar:`PYTHONBREAKPOINT` is *not* consulted.
    143 
    144    .. versionadded:: 3.7
    145 
    146 .. function:: _debugmallocstats()
    147 
    148    Print low-level information to stderr about the state of CPython's memory
    149    allocator.
    150 
    151    If Python is configured --with-pydebug, it also performs some expensive
    152    internal consistency checks.
    153 
    154    .. versionadded:: 3.3
    155 
    156    .. impl-detail::
    157 
    158       This function is specific to CPython.  The exact output format is not
    159       defined here, and may change.
    160 
    161 
    162 .. data:: dllhandle
    163 
    164    Integer specifying the handle of the Python DLL.
    165 
    166    .. availability:: Windows.
    167 
    168 
    169 .. function:: displayhook(value)
    170 
    171    If *value* is not ``None``, this function prints ``repr(value)`` to
    172    ``sys.stdout``, and saves *value* in ``builtins._``. If ``repr(value)`` is
    173    not encodable to ``sys.stdout.encoding`` with ``sys.stdout.errors`` error
    174    handler (which is probably ``'strict'``), encode it to
    175    ``sys.stdout.encoding`` with ``'backslashreplace'`` error handler.
    176 
    177    ``sys.displayhook`` is called on the result of evaluating an :term:`expression`
    178    entered in an interactive Python session.  The display of these values can be
    179    customized by assigning another one-argument function to ``sys.displayhook``.
    180 
    181    Pseudo-code::
    182 
    183        def displayhook(value):
    184            if value is None:
    185                return
    186            # Set '_' to None to avoid recursion
    187            builtins._ = None
    188            text = repr(value)
    189            try:
    190                sys.stdout.write(text)
    191            except UnicodeEncodeError:
    192                bytes = text.encode(sys.stdout.encoding, 'backslashreplace')
    193                if hasattr(sys.stdout, 'buffer'):
    194                    sys.stdout.buffer.write(bytes)
    195                else:
    196                    text = bytes.decode(sys.stdout.encoding, 'strict')
    197                    sys.stdout.write(text)
    198            sys.stdout.write("\n")
    199            builtins._ = value
    200 
    201    .. versionchanged:: 3.2
    202       Use ``'backslashreplace'`` error handler on :exc:`UnicodeEncodeError`.
    203 
    204 
    205 .. data:: dont_write_bytecode
    206 
    207    If this is true, Python won't try to write ``.pyc`` files on the
    208    import of source modules.  This value is initially set to ``True`` or
    209    ``False`` depending on the :option:`-B` command line option and the
    210    :envvar:`PYTHONDONTWRITEBYTECODE` environment variable, but you can set it
    211    yourself to control bytecode file generation.
    212 
    213 
    214 .. function:: excepthook(type, value, traceback)
    215 
    216    This function prints out a given traceback and exception to ``sys.stderr``.
    217 
    218    When an exception is raised and uncaught, the interpreter calls
    219    ``sys.excepthook`` with three arguments, the exception class, exception
    220    instance, and a traceback object.  In an interactive session this happens just
    221    before control is returned to the prompt; in a Python program this happens just
    222    before the program exits.  The handling of such top-level exceptions can be
    223    customized by assigning another three-argument function to ``sys.excepthook``.
    224 
    225 
    226 .. data:: __breakpointhook__
    227           __displayhook__
    228           __excepthook__
    229 
    230    These objects contain the original values of ``breakpointhook``,
    231    ``displayhook``, and ``excepthook`` at the start of the program.  They are
    232    saved so that ``breakpointhook``, ``displayhook`` and ``excepthook`` can be
    233    restored in case they happen to get replaced with broken or alternative
    234    objects.
    235 
    236    .. versionadded:: 3.7
    237       __breakpointhook__
    238 
    239 
    240 .. function:: exc_info()
    241 
    242    This function returns a tuple of three values that give information about the
    243    exception that is currently being handled.  The information returned is specific
    244    both to the current thread and to the current stack frame.  If the current stack
    245    frame is not handling an exception, the information is taken from the calling
    246    stack frame, or its caller, and so on until a stack frame is found that is
    247    handling an exception.  Here, "handling an exception" is defined as "executing
    248    an except clause."  For any stack frame, only information about the exception
    249    being currently handled is accessible.
    250 
    251    .. index:: object: traceback
    252 
    253    If no exception is being handled anywhere on the stack, a tuple containing
    254    three ``None`` values is returned.  Otherwise, the values returned are
    255    ``(type, value, traceback)``.  Their meaning is: *type* gets the type of the
    256    exception being handled (a subclass of :exc:`BaseException`); *value* gets
    257    the exception instance (an instance of the exception type); *traceback* gets
    258    a traceback object (see the Reference Manual) which encapsulates the call
    259    stack at the point where the exception originally occurred.
    260 
    261 
    262 .. data:: exec_prefix
    263 
    264    A string giving the site-specific directory prefix where the platform-dependent
    265    Python files are installed; by default, this is also ``'/usr/local'``.  This can
    266    be set at build time with the ``--exec-prefix`` argument to the
    267    :program:`configure` script.  Specifically, all configuration files (e.g. the
    268    :file:`pyconfig.h` header file) are installed in the directory
    269    :file:`{exec_prefix}/lib/python{X.Y}/config`, and shared library modules are
    270    installed in :file:`{exec_prefix}/lib/python{X.Y}/lib-dynload`, where *X.Y*
    271    is the version number of Python, for example ``3.2``.
    272 
    273    .. note::
    274 
    275       If a :ref:`virtual environment <venv-def>` is in effect, this
    276       value will be changed in ``site.py`` to point to the virtual environment.
    277       The value for the Python installation will still be available, via
    278       :data:`base_exec_prefix`.
    279 
    280 
    281 .. data:: executable
    282 
    283    A string giving the absolute path of the executable binary for the Python
    284    interpreter, on systems where this makes sense. If Python is unable to retrieve
    285    the real path to its executable, :data:`sys.executable` will be an empty string
    286    or ``None``.
    287 
    288 
    289 .. function:: exit([arg])
    290 
    291    Exit from Python.  This is implemented by raising the :exc:`SystemExit`
    292    exception, so cleanup actions specified by finally clauses of :keyword:`try`
    293    statements are honored, and it is possible to intercept the exit attempt at
    294    an outer level.
    295 
    296    The optional argument *arg* can be an integer giving the exit status
    297    (defaulting to zero), or another type of object.  If it is an integer, zero
    298    is considered "successful termination" and any nonzero value is considered
    299    "abnormal termination" by shells and the like.  Most systems require it to be
    300    in the range 0--127, and produce undefined results otherwise.  Some systems
    301    have a convention for assigning specific meanings to specific exit codes, but
    302    these are generally underdeveloped; Unix programs generally use 2 for command
    303    line syntax errors and 1 for all other kind of errors.  If another type of
    304    object is passed, ``None`` is equivalent to passing zero, and any other
    305    object is printed to :data:`stderr` and results in an exit code of 1.  In
    306    particular, ``sys.exit("some error message")`` is a quick way to exit a
    307    program when an error occurs.
    308 
    309    Since :func:`exit` ultimately "only" raises an exception, it will only exit
    310    the process when called from the main thread, and the exception is not
    311    intercepted.
    312 
    313    .. versionchanged:: 3.6
    314       If an error occurs in the cleanup after the Python interpreter
    315       has caught :exc:`SystemExit` (such as an error flushing buffered data
    316       in the standard streams), the exit status is changed to 120.
    317 
    318 
    319 .. data:: flags
    320 
    321    The :term:`struct sequence` *flags* exposes the status of command line
    322    flags. The attributes are read only.
    323 
    324    ============================= =============================
    325    attribute                     flag
    326    ============================= =============================
    327    :const:`debug`                :option:`-d`
    328    :const:`inspect`              :option:`-i`
    329    :const:`interactive`          :option:`-i`
    330    :const:`isolated`             :option:`-I`
    331    :const:`optimize`             :option:`-O` or :option:`-OO`
    332    :const:`dont_write_bytecode`  :option:`-B`
    333    :const:`no_user_site`         :option:`-s`
    334    :const:`no_site`              :option:`-S`
    335    :const:`ignore_environment`   :option:`-E`
    336    :const:`verbose`              :option:`-v`
    337    :const:`bytes_warning`        :option:`-b`
    338    :const:`quiet`                :option:`-q`
    339    :const:`hash_randomization`   :option:`-R`
    340    :const:`dev_mode`             :option:`-X` ``dev``
    341    :const:`utf8_mode`            :option:`-X` ``utf8``
    342    ============================= =============================
    343 
    344    .. versionchanged:: 3.2
    345       Added ``quiet`` attribute for the new :option:`-q` flag.
    346 
    347    .. versionadded:: 3.2.3
    348       The ``hash_randomization`` attribute.
    349 
    350    .. versionchanged:: 3.3
    351       Removed obsolete ``division_warning`` attribute.
    352 
    353    .. versionchanged:: 3.4
    354       Added ``isolated`` attribute for :option:`-I` ``isolated`` flag.
    355 
    356    .. versionchanged:: 3.7
    357       Added ``dev_mode`` attribute for the new :option:`-X` ``dev`` flag
    358       and ``utf8_mode`` attribute for the new  :option:`-X` ``utf8`` flag.
    359 
    360 
    361 .. data:: float_info
    362 
    363    A :term:`struct sequence` holding information about the float type. It
    364    contains low level information about the precision and internal
    365    representation.  The values correspond to the various floating-point
    366    constants defined in the standard header file :file:`float.h` for the 'C'
    367    programming language; see section 5.2.4.2.2 of the 1999 ISO/IEC C standard
    368    [C99]_, 'Characteristics of floating types', for details.
    369 
    370    .. tabularcolumns:: |l|l|L|
    371 
    372    +---------------------+----------------+--------------------------------------------------+
    373    | attribute           | float.h macro  | explanation                                      |
    374    +=====================+================+==================================================+
    375    | :const:`epsilon`    | DBL_EPSILON    | difference between 1 and the least value greater |
    376    |                     |                | than 1 that is representable as a float          |
    377    +---------------------+----------------+--------------------------------------------------+
    378    | :const:`dig`        | DBL_DIG        | maximum number of decimal digits that can be     |
    379    |                     |                | faithfully represented in a float;  see below    |
    380    +---------------------+----------------+--------------------------------------------------+
    381    | :const:`mant_dig`   | DBL_MANT_DIG   | float precision: the number of base-``radix``    |
    382    |                     |                | digits in the significand of a float             |
    383    +---------------------+----------------+--------------------------------------------------+
    384    | :const:`max`        | DBL_MAX        | maximum representable finite float               |
    385    +---------------------+----------------+--------------------------------------------------+
    386    | :const:`max_exp`    | DBL_MAX_EXP    | maximum integer e such that ``radix**(e-1)`` is  |
    387    |                     |                | a representable finite float                     |
    388    +---------------------+----------------+--------------------------------------------------+
    389    | :const:`max_10_exp` | DBL_MAX_10_EXP | maximum integer e such that ``10**e`` is in the  |
    390    |                     |                | range of representable finite floats             |
    391    +---------------------+----------------+--------------------------------------------------+
    392    | :const:`min`        | DBL_MIN        | minimum positive normalized float                |
    393    +---------------------+----------------+--------------------------------------------------+
    394    | :const:`min_exp`    | DBL_MIN_EXP    | minimum integer e such that ``radix**(e-1)`` is  |
    395    |                     |                | a normalized float                               |
    396    +---------------------+----------------+--------------------------------------------------+
    397    | :const:`min_10_exp` | DBL_MIN_10_EXP | minimum integer e such that ``10**e`` is a       |
    398    |                     |                | normalized float                                 |
    399    +---------------------+----------------+--------------------------------------------------+
    400    | :const:`radix`      | FLT_RADIX      | radix of exponent representation                 |
    401    +---------------------+----------------+--------------------------------------------------+
    402    | :const:`rounds`     | FLT_ROUNDS     | integer constant representing the rounding mode  |
    403    |                     |                | used for arithmetic operations.  This reflects   |
    404    |                     |                | the value of the system FLT_ROUNDS macro at      |
    405    |                     |                | interpreter startup time.  See section 5.2.4.2.2 |
    406    |                     |                | of the C99 standard for an explanation of the    |
    407    |                     |                | possible values and their meanings.              |
    408    +---------------------+----------------+--------------------------------------------------+
    409 
    410    The attribute :attr:`sys.float_info.dig` needs further explanation.  If
    411    ``s`` is any string representing a decimal number with at most
    412    :attr:`sys.float_info.dig` significant digits, then converting ``s`` to a
    413    float and back again will recover a string representing the same decimal
    414    value::
    415 
    416       >>> import sys
    417       >>> sys.float_info.dig
    418       15
    419       >>> s = '3.14159265358979'    # decimal string with 15 significant digits
    420       >>> format(float(s), '.15g')  # convert to float and back -> same value
    421       '3.14159265358979'
    422 
    423    But for strings with more than :attr:`sys.float_info.dig` significant digits,
    424    this isn't always true::
    425 
    426       >>> s = '9876543211234567'    # 16 significant digits is too many!
    427       >>> format(float(s), '.16g')  # conversion changes value
    428       '9876543211234568'
    429 
    430 .. data:: float_repr_style
    431 
    432    A string indicating how the :func:`repr` function behaves for
    433    floats.  If the string has value ``'short'`` then for a finite
    434    float ``x``, ``repr(x)`` aims to produce a short string with the
    435    property that ``float(repr(x)) == x``.  This is the usual behaviour
    436    in Python 3.1 and later.  Otherwise, ``float_repr_style`` has value
    437    ``'legacy'`` and ``repr(x)`` behaves in the same way as it did in
    438    versions of Python prior to 3.1.
    439 
    440    .. versionadded:: 3.1
    441 
    442 
    443 .. function:: getallocatedblocks()
    444 
    445    Return the number of memory blocks currently allocated by the interpreter,
    446    regardless of their size.  This function is mainly useful for tracking
    447    and debugging memory leaks.  Because of the interpreter's internal
    448    caches, the result can vary from call to call; you may have to call
    449    :func:`_clear_type_cache()` and :func:`gc.collect()` to get more
    450    predictable results.
    451 
    452    If a Python build or implementation cannot reasonably compute this
    453    information, :func:`getallocatedblocks()` is allowed to return 0 instead.
    454 
    455    .. versionadded:: 3.4
    456 
    457 
    458 .. function:: getandroidapilevel()
    459 
    460    Return the build time API version of Android as an integer.
    461 
    462    .. availability:: Android.
    463 
    464    .. versionadded:: 3.7
    465 
    466 
    467 .. function:: getcheckinterval()
    468 
    469    Return the interpreter's "check interval"; see :func:`setcheckinterval`.
    470 
    471    .. deprecated:: 3.2
    472       Use :func:`getswitchinterval` instead.
    473 
    474 
    475 .. function:: getdefaultencoding()
    476 
    477    Return the name of the current default string encoding used by the Unicode
    478    implementation.
    479 
    480 
    481 .. function:: getdlopenflags()
    482 
    483    Return the current value of the flags that are used for
    484    :c:func:`dlopen` calls.  Symbolic names for the flag values can be
    485    found in the :mod:`os` module (``RTLD_xxx`` constants, e.g.
    486    :data:`os.RTLD_LAZY`).
    487 
    488    .. availability:: Unix.
    489 
    490 
    491 .. function:: getfilesystemencoding()
    492 
    493    Return the name of the encoding used to convert between Unicode
    494    filenames and bytes filenames. For best compatibility, str should be
    495    used for filenames in all cases, although representing filenames as bytes
    496    is also supported. Functions accepting or returning filenames should support
    497    either str or bytes and internally convert to the system's preferred
    498    representation.
    499 
    500    This encoding is always ASCII-compatible.
    501 
    502    :func:`os.fsencode` and :func:`os.fsdecode` should be used to ensure that
    503    the correct encoding and errors mode are used.
    504 
    505    * In the UTF-8 mode, the encoding is ``utf-8`` on any platform.
    506 
    507    * On Mac OS X, the encoding is ``'utf-8'``.
    508 
    509    * On Unix, the encoding is the locale encoding.
    510 
    511    * On Windows, the encoding may be ``'utf-8'`` or ``'mbcs'``, depending
    512      on user configuration.
    513 
    514    .. versionchanged:: 3.2
    515       :func:`getfilesystemencoding` result cannot be ``None`` anymore.
    516 
    517    .. versionchanged:: 3.6
    518       Windows is no longer guaranteed to return ``'mbcs'``. See :pep:`529`
    519       and :func:`_enablelegacywindowsfsencoding` for more information.
    520 
    521    .. versionchanged:: 3.7
    522       Return 'utf-8' in the UTF-8 mode.
    523 
    524 
    525 .. function:: getfilesystemencodeerrors()
    526 
    527    Return the name of the error mode used to convert between Unicode filenames
    528    and bytes filenames. The encoding name is returned from
    529    :func:`getfilesystemencoding`.
    530 
    531    :func:`os.fsencode` and :func:`os.fsdecode` should be used to ensure that
    532    the correct encoding and errors mode are used.
    533 
    534    .. versionadded:: 3.6
    535 
    536 .. function:: getrefcount(object)
    537 
    538    Return the reference count of the *object*.  The count returned is generally one
    539    higher than you might expect, because it includes the (temporary) reference as
    540    an argument to :func:`getrefcount`.
    541 
    542 
    543 .. function:: getrecursionlimit()
    544 
    545    Return the current value of the recursion limit, the maximum depth of the Python
    546    interpreter stack.  This limit prevents infinite recursion from causing an
    547    overflow of the C stack and crashing Python.  It can be set by
    548    :func:`setrecursionlimit`.
    549 
    550 
    551 .. function:: getsizeof(object[, default])
    552 
    553    Return the size of an object in bytes. The object can be any type of
    554    object. All built-in objects will return correct results, but this
    555    does not have to hold true for third-party extensions as it is implementation
    556    specific.
    557 
    558    Only the memory consumption directly attributed to the object is
    559    accounted for, not the memory consumption of objects it refers to.
    560 
    561    If given, *default* will be returned if the object does not provide means to
    562    retrieve the size.  Otherwise a :exc:`TypeError` will be raised.
    563 
    564    :func:`getsizeof` calls the object's ``__sizeof__`` method and adds an
    565    additional garbage collector overhead if the object is managed by the garbage
    566    collector.
    567 
    568    See `recursive sizeof recipe <https://code.activestate.com/recipes/577504>`_
    569    for an example of using :func:`getsizeof` recursively to find the size of
    570    containers and all their contents.
    571 
    572 .. function:: getswitchinterval()
    573 
    574    Return the interpreter's "thread switch interval"; see
    575    :func:`setswitchinterval`.
    576 
    577    .. versionadded:: 3.2
    578 
    579 
    580 .. function:: _getframe([depth])
    581 
    582    Return a frame object from the call stack.  If optional integer *depth* is
    583    given, return the frame object that many calls below the top of the stack.  If
    584    that is deeper than the call stack, :exc:`ValueError` is raised.  The default
    585    for *depth* is zero, returning the frame at the top of the call stack.
    586 
    587    .. impl-detail::
    588 
    589       This function should be used for internal and specialized purposes only.
    590       It is not guaranteed to exist in all implementations of Python.
    591 
    592 
    593 .. function:: getprofile()
    594 
    595    .. index::
    596       single: profile function
    597       single: profiler
    598 
    599    Get the profiler function as set by :func:`setprofile`.
    600 
    601 
    602 .. function:: gettrace()
    603 
    604    .. index::
    605       single: trace function
    606       single: debugger
    607 
    608    Get the trace function as set by :func:`settrace`.
    609 
    610    .. impl-detail::
    611 
    612       The :func:`gettrace` function is intended only for implementing debuggers,
    613       profilers, coverage tools and the like.  Its behavior is part of the
    614       implementation platform, rather than part of the language definition, and
    615       thus may not be available in all Python implementations.
    616 
    617 
    618 .. function:: getwindowsversion()
    619 
    620    Return a named tuple describing the Windows version
    621    currently running.  The named elements are *major*, *minor*,
    622    *build*, *platform*, *service_pack*, *service_pack_minor*,
    623    *service_pack_major*, *suite_mask*, *product_type* and
    624    *platform_version*. *service_pack* contains a string,
    625    *platform_version* a 3-tuple and all other values are
    626    integers. The components can also be accessed by name, so
    627    ``sys.getwindowsversion()[0]`` is equivalent to
    628    ``sys.getwindowsversion().major``. For compatibility with prior
    629    versions, only the first 5 elements are retrievable by indexing.
    630 
    631    *platform* will be :const:`2 (VER_PLATFORM_WIN32_NT)`.
    632 
    633    *product_type* may be one of the following values:
    634 
    635    +---------------------------------------+---------------------------------+
    636    | Constant                              | Meaning                         |
    637    +=======================================+=================================+
    638    | :const:`1 (VER_NT_WORKSTATION)`       | The system is a workstation.    |
    639    +---------------------------------------+---------------------------------+
    640    | :const:`2 (VER_NT_DOMAIN_CONTROLLER)` | The system is a domain          |
    641    |                                       | controller.                     |
    642    +---------------------------------------+---------------------------------+
    643    | :const:`3 (VER_NT_SERVER)`            | The system is a server, but not |
    644    |                                       | a domain controller.            |
    645    +---------------------------------------+---------------------------------+
    646 
    647    This function wraps the Win32 :c:func:`GetVersionEx` function; see the
    648    Microsoft documentation on :c:func:`OSVERSIONINFOEX` for more information
    649    about these fields.
    650 
    651    *platform_version* returns the accurate major version, minor version and
    652    build number of the current operating system, rather than the version that
    653    is being emulated for the process. It is intended for use in logging rather
    654    than for feature detection.
    655 
    656    .. availability:: Windows.
    657 
    658    .. versionchanged:: 3.2
    659       Changed to a named tuple and added *service_pack_minor*,
    660       *service_pack_major*, *suite_mask*, and *product_type*.
    661 
    662    .. versionchanged:: 3.6
    663       Added *platform_version*
    664 
    665 
    666 .. function:: get_asyncgen_hooks()
    667 
    668    Returns an *asyncgen_hooks* object, which is similar to a
    669    :class:`~collections.namedtuple` of the form `(firstiter, finalizer)`,
    670    where *firstiter* and *finalizer* are expected to be either ``None`` or
    671    functions which take an :term:`asynchronous generator iterator` as an
    672    argument, and are used to schedule finalization of an asynchronous
    673    generator by an event loop.
    674 
    675    .. versionadded:: 3.6
    676       See :pep:`525` for more details.
    677 
    678    .. note::
    679       This function has been added on a provisional basis (see :pep:`411`
    680       for details.)
    681 
    682 
    683 .. function:: get_coroutine_origin_tracking_depth()
    684 
    685    Get the current coroutine origin tracking depth, as set by
    686    :func:`set_coroutine_origin_tracking_depth`.
    687 
    688    .. versionadded:: 3.7
    689 
    690    .. note::
    691       This function has been added on a provisional basis (see :pep:`411`
    692       for details.)  Use it only for debugging purposes.
    693 
    694 
    695 .. function:: get_coroutine_wrapper()
    696 
    697    Returns ``None``, or a wrapper set by :func:`set_coroutine_wrapper`.
    698 
    699    .. versionadded:: 3.5
    700       See :pep:`492` for more details.
    701 
    702    .. note::
    703       This function has been added on a provisional basis (see :pep:`411`
    704       for details.)  Use it only for debugging purposes.
    705 
    706    .. deprecated:: 3.7
    707       The coroutine wrapper functionality has been deprecated, and
    708       will be removed in 3.8. See :issue:`32591` for details.
    709 
    710 
    711 .. data:: hash_info
    712 
    713    A :term:`struct sequence` giving parameters of the numeric hash
    714    implementation.  For more details about hashing of numeric types, see
    715    :ref:`numeric-hash`.
    716 
    717    +---------------------+--------------------------------------------------+
    718    | attribute           | explanation                                      |
    719    +=====================+==================================================+
    720    | :const:`width`      | width in bits used for hash values               |
    721    +---------------------+--------------------------------------------------+
    722    | :const:`modulus`    | prime modulus P used for numeric hash scheme     |
    723    +---------------------+--------------------------------------------------+
    724    | :const:`inf`        | hash value returned for a positive infinity      |
    725    +---------------------+--------------------------------------------------+
    726    | :const:`nan`        | hash value returned for a nan                    |
    727    +---------------------+--------------------------------------------------+
    728    | :const:`imag`       | multiplier used for the imaginary part of a      |
    729    |                     | complex number                                   |
    730    +---------------------+--------------------------------------------------+
    731    | :const:`algorithm`  | name of the algorithm for hashing of str, bytes, |
    732    |                     | and memoryview                                   |
    733    +---------------------+--------------------------------------------------+
    734    | :const:`hash_bits`  | internal output size of the hash algorithm       |
    735    +---------------------+--------------------------------------------------+
    736    | :const:`seed_bits`  | size of the seed key of the hash algorithm       |
    737    +---------------------+--------------------------------------------------+
    738 
    739 
    740    .. versionadded:: 3.2
    741 
    742    .. versionchanged:: 3.4
    743       Added *algorithm*, *hash_bits* and *seed_bits*
    744 
    745 
    746 .. data:: hexversion
    747 
    748    The version number encoded as a single integer.  This is guaranteed to increase
    749    with each version, including proper support for non-production releases.  For
    750    example, to test that the Python interpreter is at least version 1.5.2, use::
    751 
    752       if sys.hexversion >= 0x010502F0:
    753           # use some advanced feature
    754           ...
    755       else:
    756           # use an alternative implementation or warn the user
    757           ...
    758 
    759    This is called ``hexversion`` since it only really looks meaningful when viewed
    760    as the result of passing it to the built-in :func:`hex` function.  The
    761    :term:`struct sequence`  :data:`sys.version_info` may be used for a more
    762    human-friendly encoding of the same information.
    763 
    764    More details of ``hexversion`` can be found at :ref:`apiabiversion`.
    765 
    766 
    767 .. data:: implementation
    768 
    769    An object containing information about the implementation of the
    770    currently running Python interpreter.  The following attributes are
    771    required to exist in all Python implementations.
    772 
    773    *name* is the implementation's identifier, e.g. ``'cpython'``.  The actual
    774    string is defined by the Python implementation, but it is guaranteed to be
    775    lower case.
    776 
    777    *version* is a named tuple, in the same format as
    778    :data:`sys.version_info`.  It represents the version of the Python
    779    *implementation*.  This has a distinct meaning from the specific
    780    version of the Python *language* to which the currently running
    781    interpreter conforms, which ``sys.version_info`` represents.  For
    782    example, for PyPy 1.8 ``sys.implementation.version`` might be
    783    ``sys.version_info(1, 8, 0, 'final', 0)``, whereas ``sys.version_info``
    784    would be ``sys.version_info(2, 7, 2, 'final', 0)``.  For CPython they
    785    are the same value, since it is the reference implementation.
    786 
    787    *hexversion* is the implementation version in hexadecimal format, like
    788    :data:`sys.hexversion`.
    789 
    790    *cache_tag* is the tag used by the import machinery in the filenames of
    791    cached modules.  By convention, it would be a composite of the
    792    implementation's name and version, like ``'cpython-33'``.  However, a
    793    Python implementation may use some other value if appropriate.  If
    794    ``cache_tag`` is set to ``None``, it indicates that module caching should
    795    be disabled.
    796 
    797    :data:`sys.implementation` may contain additional attributes specific to
    798    the Python implementation.  These non-standard attributes must start with
    799    an underscore, and are not described here.  Regardless of its contents,
    800    :data:`sys.implementation` will not change during a run of the interpreter,
    801    nor between implementation versions.  (It may change between Python
    802    language versions, however.)  See :pep:`421` for more information.
    803 
    804    .. versionadded:: 3.3
    805 
    806 
    807 .. data:: int_info
    808 
    809    A :term:`struct sequence` that holds information about Python's internal
    810    representation of integers.  The attributes are read only.
    811 
    812    .. tabularcolumns:: |l|L|
    813 
    814    +-------------------------+----------------------------------------------+
    815    | Attribute               | Explanation                                  |
    816    +=========================+==============================================+
    817    | :const:`bits_per_digit` | number of bits held in each digit.  Python   |
    818    |                         | integers are stored internally in base       |
    819    |                         | ``2**int_info.bits_per_digit``               |
    820    +-------------------------+----------------------------------------------+
    821    | :const:`sizeof_digit`   | size in bytes of the C type used to          |
    822    |                         | represent a digit                            |
    823    +-------------------------+----------------------------------------------+
    824 
    825    .. versionadded:: 3.1
    826 
    827 
    828 .. data:: __interactivehook__
    829 
    830    When this attribute exists, its value is automatically called (with no
    831    arguments) when the interpreter is launched in :ref:`interactive mode
    832    <tut-interactive>`.  This is done after the :envvar:`PYTHONSTARTUP` file is
    833    read, so that you can set this hook there.  The :mod:`site` module
    834    :ref:`sets this <rlcompleter-config>`.
    835 
    836    .. versionadded:: 3.4
    837 
    838 
    839 .. function:: intern(string)
    840 
    841    Enter *string* in the table of "interned" strings and return the interned string
    842    -- which is *string* itself or a copy. Interning strings is useful to gain a
    843    little performance on dictionary lookup -- if the keys in a dictionary are
    844    interned, and the lookup key is interned, the key comparisons (after hashing)
    845    can be done by a pointer compare instead of a string compare.  Normally, the
    846    names used in Python programs are automatically interned, and the dictionaries
    847    used to hold module, class or instance attributes have interned keys.
    848 
    849    Interned strings are not immortal; you must keep a reference to the return
    850    value of :func:`intern` around to benefit from it.
    851 
    852 
    853 .. function:: is_finalizing()
    854 
    855    Return :const:`True` if the Python interpreter is
    856    :term:`shutting down <interpreter shutdown>`, :const:`False` otherwise.
    857 
    858    .. versionadded:: 3.5
    859 
    860 
    861 .. data:: last_type
    862           last_value
    863           last_traceback
    864 
    865    These three variables are not always defined; they are set when an exception is
    866    not handled and the interpreter prints an error message and a stack traceback.
    867    Their intended use is to allow an interactive user to import a debugger module
    868    and engage in post-mortem debugging without having to re-execute the command
    869    that caused the error.  (Typical use is ``import pdb; pdb.pm()`` to enter the
    870    post-mortem debugger; see :mod:`pdb` module for
    871    more information.)
    872 
    873    The meaning of the variables is the same as that of the return values from
    874    :func:`exc_info` above.
    875 
    876 
    877 .. data:: maxsize
    878 
    879    An integer giving the maximum value a variable of type :c:type:`Py_ssize_t` can
    880    take.  It's usually ``2**31 - 1`` on a 32-bit platform and ``2**63 - 1`` on a
    881    64-bit platform.
    882 
    883 
    884 .. data:: maxunicode
    885 
    886    An integer giving the value of the largest Unicode code point,
    887    i.e. ``1114111`` (``0x10FFFF`` in hexadecimal).
    888 
    889    .. versionchanged:: 3.3
    890       Before :pep:`393`, ``sys.maxunicode`` used to be either ``0xFFFF``
    891       or ``0x10FFFF``, depending on the configuration option that specified
    892       whether Unicode characters were stored as UCS-2 or UCS-4.
    893 
    894 
    895 .. data:: meta_path
    896 
    897     A list of :term:`meta path finder` objects that have their
    898     :meth:`~importlib.abc.MetaPathFinder.find_spec` methods called to see if one
    899     of the objects can find the module to be imported. The
    900     :meth:`~importlib.abc.MetaPathFinder.find_spec` method is called with at
    901     least the absolute name of the module being imported. If the module to be
    902     imported is contained in a package, then the parent package's :attr:`__path__`
    903     attribute is passed in as a second argument. The method returns a
    904     :term:`module spec`, or ``None`` if the module cannot be found.
    905 
    906     .. seealso::
    907 
    908         :class:`importlib.abc.MetaPathFinder`
    909           The abstract base class defining the interface of finder objects on
    910           :data:`meta_path`.
    911         :class:`importlib.machinery.ModuleSpec`
    912           The concrete class which
    913           :meth:`~importlib.abc.MetaPathFinder.find_spec` should return
    914           instances of.
    915 
    916     .. versionchanged:: 3.4
    917 
    918         :term:`Module specs <module spec>` were introduced in Python 3.4, by
    919         :pep:`451`. Earlier versions of Python looked for a method called
    920         :meth:`~importlib.abc.MetaPathFinder.find_module`.
    921         This is still called as a fallback if a :data:`meta_path` entry doesn't
    922         have a :meth:`~importlib.abc.MetaPathFinder.find_spec` method.
    923 
    924 .. data:: modules
    925 
    926    This is a dictionary that maps module names to modules which have already been
    927    loaded.  This can be manipulated to force reloading of modules and other tricks.
    928    However, replacing the dictionary will not necessarily work as expected and
    929    deleting essential items from the dictionary may cause Python to fail.
    930 
    931 
    932 .. data:: path
    933 
    934    .. index:: triple: module; search; path
    935 
    936    A list of strings that specifies the search path for modules. Initialized from
    937    the environment variable :envvar:`PYTHONPATH`, plus an installation-dependent
    938    default.
    939 
    940    As initialized upon program startup, the first item of this list, ``path[0]``,
    941    is the directory containing the script that was used to invoke the Python
    942    interpreter.  If the script directory is not available (e.g.  if the interpreter
    943    is invoked interactively or if the script is read from standard input),
    944    ``path[0]`` is the empty string, which directs Python to search modules in the
    945    current directory first.  Notice that the script directory is inserted *before*
    946    the entries inserted as a result of :envvar:`PYTHONPATH`.
    947 
    948    A program is free to modify this list for its own purposes.  Only strings
    949    and bytes should be added to :data:`sys.path`; all other data types are
    950    ignored during import.
    951 
    952 
    953    .. seealso::
    954       Module :mod:`site` This describes how to use .pth files to extend
    955       :data:`sys.path`.
    956 
    957 
    958 .. data:: path_hooks
    959 
    960     A list of callables that take a path argument to try to create a
    961     :term:`finder` for the path. If a finder can be created, it is to be
    962     returned by the callable, else raise :exc:`ImportError`.
    963 
    964     Originally specified in :pep:`302`.
    965 
    966 
    967 .. data:: path_importer_cache
    968 
    969     A dictionary acting as a cache for :term:`finder` objects. The keys are
    970     paths that have been passed to :data:`sys.path_hooks` and the values are
    971     the finders that are found. If a path is a valid file system path but no
    972     finder is found on :data:`sys.path_hooks` then ``None`` is
    973     stored.
    974 
    975     Originally specified in :pep:`302`.
    976 
    977     .. versionchanged:: 3.3
    978        ``None`` is stored instead of :class:`imp.NullImporter` when no finder
    979        is found.
    980 
    981 
    982 .. data:: platform
    983 
    984    This string contains a platform identifier that can be used to append
    985    platform-specific components to :data:`sys.path`, for instance.
    986 
    987    For Unix systems, except on Linux, this is the lowercased OS name as
    988    returned by ``uname -s`` with the first part of the version as returned by
    989    ``uname -r`` appended, e.g. ``'sunos5'`` or ``'freebsd8'``, *at the time
    990    when Python was built*.  Unless you want to test for a specific system
    991    version, it is therefore recommended to use the following idiom::
    992 
    993       if sys.platform.startswith('freebsd'):
    994           # FreeBSD-specific code here...
    995       elif sys.platform.startswith('linux'):
    996           # Linux-specific code here...
    997 
    998    For other systems, the values are:
    999 
   1000    ================ ===========================
   1001    System           ``platform`` value
   1002    ================ ===========================
   1003    Linux            ``'linux'``
   1004    Windows          ``'win32'``
   1005    Windows/Cygwin   ``'cygwin'``
   1006    Mac OS X         ``'darwin'``
   1007    ================ ===========================
   1008 
   1009    .. versionchanged:: 3.3
   1010       On Linux, :attr:`sys.platform` doesn't contain the major version anymore.
   1011       It is always ``'linux'``, instead of ``'linux2'`` or ``'linux3'``.  Since
   1012       older Python versions include the version number, it is recommended to
   1013       always use the ``startswith`` idiom presented above.
   1014 
   1015    .. seealso::
   1016 
   1017       :attr:`os.name` has a coarser granularity.  :func:`os.uname` gives
   1018       system-dependent version information.
   1019 
   1020       The :mod:`platform` module provides detailed checks for the
   1021       system's identity.
   1022 
   1023 
   1024 .. data:: prefix
   1025 
   1026    A string giving the site-specific directory prefix where the platform
   1027    independent Python files are installed; by default, this is the string
   1028    ``'/usr/local'``.  This can be set at build time with the ``--prefix``
   1029    argument to the :program:`configure` script.  The main collection of Python
   1030    library modules is installed in the directory :file:`{prefix}/lib/python{X.Y}`
   1031    while the platform independent header files (all except :file:`pyconfig.h`) are
   1032    stored in :file:`{prefix}/include/python{X.Y}`, where *X.Y* is the version
   1033    number of Python, for example ``3.2``.
   1034 
   1035    .. note:: If a :ref:`virtual environment <venv-def>` is in effect, this
   1036       value will be changed in ``site.py`` to point to the virtual
   1037       environment. The value for the Python installation will still be
   1038       available, via :data:`base_prefix`.
   1039 
   1040 
   1041 .. data:: ps1
   1042           ps2
   1043 
   1044    .. index::
   1045       single: interpreter prompts
   1046       single: prompts, interpreter
   1047       single: >>>; interpreter prompt
   1048       single: ...; interpreter prompt
   1049 
   1050    Strings specifying the primary and secondary prompt of the interpreter.  These
   1051    are only defined if the interpreter is in interactive mode.  Their initial
   1052    values in this case are ``'>>> '`` and ``'... '``.  If a non-string object is
   1053    assigned to either variable, its :func:`str` is re-evaluated each time the
   1054    interpreter prepares to read a new interactive command; this can be used to
   1055    implement a dynamic prompt.
   1056 
   1057 
   1058 .. function:: setcheckinterval(interval)
   1059 
   1060    Set the interpreter's "check interval".  This integer value determines how often
   1061    the interpreter checks for periodic things such as thread switches and signal
   1062    handlers.  The default is ``100``, meaning the check is performed every 100
   1063    Python virtual instructions. Setting it to a larger value may increase
   1064    performance for programs using threads.  Setting it to a value ``<=`` 0 checks
   1065    every virtual instruction, maximizing responsiveness as well as overhead.
   1066 
   1067    .. deprecated:: 3.2
   1068       This function doesn't have an effect anymore, as the internal logic for
   1069       thread switching and asynchronous tasks has been rewritten.  Use
   1070       :func:`setswitchinterval` instead.
   1071 
   1072 
   1073 .. function:: setdlopenflags(n)
   1074 
   1075    Set the flags used by the interpreter for :c:func:`dlopen` calls, such as when
   1076    the interpreter loads extension modules.  Among other things, this will enable a
   1077    lazy resolving of symbols when importing a module, if called as
   1078    ``sys.setdlopenflags(0)``.  To share symbols across extension modules, call as
   1079    ``sys.setdlopenflags(os.RTLD_GLOBAL)``.  Symbolic names for the flag values
   1080    can be found in the :mod:`os` module (``RTLD_xxx`` constants, e.g.
   1081    :data:`os.RTLD_LAZY`).
   1082 
   1083    .. availability:: Unix.
   1084 
   1085 .. function:: setprofile(profilefunc)
   1086 
   1087    .. index::
   1088       single: profile function
   1089       single: profiler
   1090 
   1091    Set the system's profile function, which allows you to implement a Python source
   1092    code profiler in Python.  See chapter :ref:`profile` for more information on the
   1093    Python profiler.  The system's profile function is called similarly to the
   1094    system's trace function (see :func:`settrace`), but it is called with different events,
   1095    for example it isn't called for each executed line of code (only on call and return,
   1096    but the return event is reported even when an exception has been set). The function is
   1097    thread-specific, but there is no way for the profiler to know about context switches between
   1098    threads, so it does not make sense to use this in the presence of multiple threads. Also,
   1099    its return value is not used, so it can simply return ``None``.  Error in the profile
   1100    function will cause itself unset.
   1101 
   1102    Profile functions should have three arguments: *frame*, *event*, and
   1103    *arg*. *frame* is the current stack frame.  *event* is a string: ``'call'``,
   1104    ``'return'``, ``'c_call'``, ``'c_return'``, or ``'c_exception'``. *arg* depends
   1105    on the event type.
   1106 
   1107    The events have the following meaning:
   1108 
   1109    ``'call'``
   1110       A function is called (or some other code block entered).  The
   1111       profile function is called; *arg* is ``None``.
   1112 
   1113    ``'return'``
   1114       A function (or other code block) is about to return.  The profile
   1115       function is called; *arg* is the value that will be returned, or ``None``
   1116       if the event is caused by an exception being raised.
   1117 
   1118    ``'c_call'``
   1119       A C function is about to be called.  This may be an extension function or
   1120       a built-in.  *arg* is the C function object.
   1121 
   1122    ``'c_return'``
   1123       A C function has returned. *arg* is the C function object.
   1124 
   1125    ``'c_exception'``
   1126       A C function has raised an exception.  *arg* is the C function object.
   1127 
   1128 .. function:: setrecursionlimit(limit)
   1129 
   1130    Set the maximum depth of the Python interpreter stack to *limit*.  This limit
   1131    prevents infinite recursion from causing an overflow of the C stack and crashing
   1132    Python.
   1133 
   1134    The highest possible limit is platform-dependent.  A user may need to set the
   1135    limit higher when they have a program that requires deep recursion and a platform
   1136    that supports a higher limit.  This should be done with care, because a too-high
   1137    limit can lead to a crash.
   1138 
   1139    If the new limit is too low at the current recursion depth, a
   1140    :exc:`RecursionError` exception is raised.
   1141 
   1142    .. versionchanged:: 3.5.1
   1143       A :exc:`RecursionError` exception is now raised if the new limit is too
   1144       low at the current recursion depth.
   1145 
   1146 
   1147 .. function:: setswitchinterval(interval)
   1148 
   1149    Set the interpreter's thread switch interval (in seconds).  This floating-point
   1150    value determines the ideal duration of the "timeslices" allocated to
   1151    concurrently running Python threads.  Please note that the actual value
   1152    can be higher, especially if long-running internal functions or methods
   1153    are used.  Also, which thread becomes scheduled at the end of the interval
   1154    is the operating system's decision.  The interpreter doesn't have its
   1155    own scheduler.
   1156 
   1157    .. versionadded:: 3.2
   1158 
   1159 
   1160 .. function:: settrace(tracefunc)
   1161 
   1162    .. index::
   1163       single: trace function
   1164       single: debugger
   1165 
   1166    Set the system's trace function, which allows you to implement a Python
   1167    source code debugger in Python.  The function is thread-specific; for a
   1168    debugger to support multiple threads, it must be registered using
   1169    :func:`settrace` for each thread being debugged.
   1170 
   1171    Trace functions should have three arguments: *frame*, *event*, and
   1172    *arg*. *frame* is the current stack frame.  *event* is a string: ``'call'``,
   1173    ``'line'``, ``'return'``, ``'exception'`` or ``'opcode'``.  *arg* depends on
   1174    the event type.
   1175 
   1176    The trace function is invoked (with *event* set to ``'call'``) whenever a new
   1177    local scope is entered; it should return a reference to a local trace
   1178    function to be used that scope, or ``None`` if the scope shouldn't be traced.
   1179 
   1180    The local trace function should return a reference to itself (or to another
   1181    function for further tracing in that scope), or ``None`` to turn off tracing
   1182    in that scope.
   1183 
   1184    If there is any error occurred in the trace function, it will be unset, just
   1185    like ``settrace(None)`` is called.
   1186 
   1187    The events have the following meaning:
   1188 
   1189    ``'call'``
   1190       A function is called (or some other code block entered).  The
   1191       global trace function is called; *arg* is ``None``; the return value
   1192       specifies the local trace function.
   1193 
   1194    ``'line'``
   1195       The interpreter is about to execute a new line of code or re-execute the
   1196       condition of a loop.  The local trace function is called; *arg* is
   1197       ``None``; the return value specifies the new local trace function.  See
   1198       :file:`Objects/lnotab_notes.txt` for a detailed explanation of how this
   1199       works.
   1200       Per-line events may be disabled for a frame by setting
   1201       :attr:`f_trace_lines` to :const:`False` on that frame.
   1202 
   1203    ``'return'``
   1204       A function (or other code block) is about to return.  The local trace
   1205       function is called; *arg* is the value that will be returned, or ``None``
   1206       if the event is caused by an exception being raised.  The trace function's
   1207       return value is ignored.
   1208 
   1209    ``'exception'``
   1210       An exception has occurred.  The local trace function is called; *arg* is a
   1211       tuple ``(exception, value, traceback)``; the return value specifies the
   1212       new local trace function.
   1213 
   1214    ``'opcode'``
   1215       The interpreter is about to execute a new opcode (see :mod:`dis` for
   1216       opcode details).  The local trace function is called; *arg* is
   1217       ``None``; the return value specifies the new local trace function.
   1218       Per-opcode events are not emitted by default: they must be explicitly
   1219       requested by setting :attr:`f_trace_opcodes` to :const:`True` on the
   1220       frame.
   1221 
   1222    Note that as an exception is propagated down the chain of callers, an
   1223    ``'exception'`` event is generated at each level.
   1224 
   1225    For more information on code and frame objects, refer to :ref:`types`.
   1226 
   1227    .. impl-detail::
   1228 
   1229       The :func:`settrace` function is intended only for implementing debuggers,
   1230       profilers, coverage tools and the like.  Its behavior is part of the
   1231       implementation platform, rather than part of the language definition, and
   1232       thus may not be available in all Python implementations.
   1233 
   1234    .. versionchanged:: 3.7
   1235 
   1236       ``'opcode'`` event type added; :attr:`f_trace_lines` and
   1237       :attr:`f_trace_opcodes` attributes added to frames
   1238 
   1239 .. function:: set_asyncgen_hooks(firstiter, finalizer)
   1240 
   1241    Accepts two optional keyword arguments which are callables that accept an
   1242    :term:`asynchronous generator iterator` as an argument. The *firstiter*
   1243    callable will be called when an asynchronous generator is iterated for the
   1244    first time. The *finalizer* will be called when an asynchronous generator
   1245    is about to be garbage collected.
   1246 
   1247    .. versionadded:: 3.6
   1248       See :pep:`525` for more details, and for a reference example of a
   1249       *finalizer* method see the implementation of
   1250       ``asyncio.Loop.shutdown_asyncgens`` in
   1251       :source:`Lib/asyncio/base_events.py`
   1252 
   1253    .. note::
   1254       This function has been added on a provisional basis (see :pep:`411`
   1255       for details.)
   1256 
   1257 .. function:: set_coroutine_origin_tracking_depth(depth)
   1258 
   1259    Allows enabling or disabling coroutine origin tracking. When
   1260    enabled, the ``cr_origin`` attribute on coroutine objects will
   1261    contain a tuple of (filename, line number, function name) tuples
   1262    describing the traceback where the coroutine object was created,
   1263    with the most recent call first. When disabled, ``cr_origin`` will
   1264    be None.
   1265 
   1266    To enable, pass a *depth* value greater than zero; this sets the
   1267    number of frames whose information will be captured. To disable,
   1268    pass set *depth* to zero.
   1269 
   1270    This setting is thread-specific.
   1271 
   1272    .. versionadded:: 3.7
   1273 
   1274    .. note::
   1275       This function has been added on a provisional basis (see :pep:`411`
   1276       for details.)  Use it only for debugging purposes.
   1277 
   1278 .. function:: set_coroutine_wrapper(wrapper)
   1279 
   1280    Allows intercepting creation of :term:`coroutine` objects (only ones that
   1281    are created by an :keyword:`async def` function; generators decorated with
   1282    :func:`types.coroutine` or :func:`asyncio.coroutine` will not be
   1283    intercepted).
   1284 
   1285    The *wrapper* argument must be either:
   1286 
   1287    * a callable that accepts one argument (a coroutine object);
   1288    * ``None``, to reset the wrapper.
   1289 
   1290    If called twice, the new wrapper replaces the previous one.  The function
   1291    is thread-specific.
   1292 
   1293    The *wrapper* callable cannot define new coroutines directly or indirectly::
   1294 
   1295         def wrapper(coro):
   1296             async def wrap(coro):
   1297                 return await coro
   1298             return wrap(coro)
   1299         sys.set_coroutine_wrapper(wrapper)
   1300 
   1301         async def foo():
   1302             pass
   1303 
   1304         # The following line will fail with a RuntimeError, because
   1305         # ``wrapper`` creates a ``wrap(coro)`` coroutine:
   1306         foo()
   1307 
   1308    See also :func:`get_coroutine_wrapper`.
   1309 
   1310    .. versionadded:: 3.5
   1311       See :pep:`492` for more details.
   1312 
   1313    .. note::
   1314       This function has been added on a provisional basis (see :pep:`411`
   1315       for details.)  Use it only for debugging purposes.
   1316 
   1317    .. deprecated:: 3.7
   1318       The coroutine wrapper functionality has been deprecated, and
   1319       will be removed in 3.8. See :issue:`32591` for details.
   1320 
   1321 .. function:: _enablelegacywindowsfsencoding()
   1322 
   1323    Changes the default filesystem encoding and errors mode to 'mbcs' and
   1324    'replace' respectively, for consistency with versions of Python prior to 3.6.
   1325 
   1326    This is equivalent to defining the :envvar:`PYTHONLEGACYWINDOWSFSENCODING`
   1327    environment variable before launching Python.
   1328 
   1329    .. availability:: Windows.
   1330 
   1331    .. versionadded:: 3.6
   1332       See :pep:`529` for more details.
   1333 
   1334 .. data:: stdin
   1335           stdout
   1336           stderr
   1337 
   1338    :term:`File objects <file object>` used by the interpreter for standard
   1339    input, output and errors:
   1340 
   1341    * ``stdin`` is used for all interactive input (including calls to
   1342      :func:`input`);
   1343    * ``stdout`` is used for the output of :func:`print` and :term:`expression`
   1344      statements and for the prompts of :func:`input`;
   1345    * The interpreter's own prompts and its error messages go to ``stderr``.
   1346 
   1347    These streams are regular :term:`text files <text file>` like those
   1348    returned by the :func:`open` function.  Their parameters are chosen as
   1349    follows:
   1350 
   1351    * The character encoding is platform-dependent.  Non-Windows
   1352      platforms use the locale encoding (see
   1353      :meth:`locale.getpreferredencoding()`).
   1354 
   1355      On Windows, UTF-8 is used for the console device.  Non-character
   1356      devices such as disk files and pipes use the system locale
   1357      encoding (i.e. the ANSI codepage).  Non-console character
   1358      devices such as NUL (i.e. where isatty() returns True) use the
   1359      value of the console input and output codepages at startup,
   1360      respectively for stdin and stdout/stderr. This defaults to the
   1361      system locale encoding if the process is not initially attached
   1362      to a console.
   1363 
   1364      The special behaviour of the console can be overridden
   1365      by setting the environment variable PYTHONLEGACYWINDOWSSTDIO
   1366      before starting Python. In that case, the console codepages are
   1367      used as for any other character device.
   1368 
   1369      Under all platforms, you can override the character encoding by
   1370      setting the :envvar:`PYTHONIOENCODING` environment variable before
   1371      starting Python or by using the new :option:`-X` ``utf8`` command
   1372      line option and :envvar:`PYTHONUTF8` environment variable.  However,
   1373      for the Windows console, this only applies when
   1374      :envvar:`PYTHONLEGACYWINDOWSSTDIO` is also set.
   1375 
   1376    * When interactive, ``stdout`` and ``stderr`` streams are line-buffered.
   1377      Otherwise, they are block-buffered like regular text files.  You can
   1378      override this value with the :option:`-u` command-line option.
   1379 
   1380    .. note::
   1381 
   1382       To write or read binary data from/to the standard streams, use the
   1383       underlying binary :data:`~io.TextIOBase.buffer` object.  For example, to
   1384       write bytes to :data:`stdout`, use ``sys.stdout.buffer.write(b'abc')``.
   1385 
   1386       However, if you are writing a library (and do not control in which
   1387       context its code will be executed), be aware that the standard streams
   1388       may be replaced with file-like objects like :class:`io.StringIO` which
   1389       do not support the :attr:`~io.BufferedIOBase.buffer` attribute.
   1390 
   1391 
   1392 .. data:: __stdin__
   1393           __stdout__
   1394           __stderr__
   1395 
   1396    These objects contain the original values of ``stdin``, ``stderr`` and
   1397    ``stdout`` at the start of the program.  They are used during finalization,
   1398    and could be useful to print to the actual standard stream no matter if the
   1399    ``sys.std*`` object has been redirected.
   1400 
   1401    It can also be used to restore the actual files to known working file objects
   1402    in case they have been overwritten with a broken object.  However, the
   1403    preferred way to do this is to explicitly save the previous stream before
   1404    replacing it, and restore the saved object.
   1405 
   1406    .. note::
   1407        Under some conditions ``stdin``, ``stdout`` and ``stderr`` as well as the
   1408        original values ``__stdin__``, ``__stdout__`` and ``__stderr__`` can be
   1409        ``None``. It is usually the case for Windows GUI apps that aren't connected
   1410        to a console and Python apps started with :program:`pythonw`.
   1411 
   1412 
   1413 .. data:: thread_info
   1414 
   1415    A :term:`struct sequence` holding information about the thread
   1416    implementation.
   1417 
   1418    .. tabularcolumns:: |l|p{0.7\linewidth}|
   1419 
   1420    +------------------+---------------------------------------------------------+
   1421    | Attribute        | Explanation                                             |
   1422    +==================+=========================================================+
   1423    | :const:`name`    | Name of the thread implementation:                      |
   1424    |                  |                                                         |
   1425    |                  |  * ``'nt'``: Windows threads                            |
   1426    |                  |  * ``'pthread'``: POSIX threads                         |
   1427    |                  |  * ``'solaris'``: Solaris threads                       |
   1428    +------------------+---------------------------------------------------------+
   1429    | :const:`lock`    | Name of the lock implementation:                        |
   1430    |                  |                                                         |
   1431    |                  |  * ``'semaphore'``: a lock uses a semaphore             |
   1432    |                  |  * ``'mutex+cond'``: a lock uses a mutex                |
   1433    |                  |    and a condition variable                             |
   1434    |                  |  * ``None`` if this information is unknown              |
   1435    +------------------+---------------------------------------------------------+
   1436    | :const:`version` | Name and version of the thread library. It is a string, |
   1437    |                  | or ``None`` if this information is unknown.             |
   1438    +------------------+---------------------------------------------------------+
   1439 
   1440    .. versionadded:: 3.3
   1441 
   1442 
   1443 .. data:: tracebacklimit
   1444 
   1445    When this variable is set to an integer value, it determines the maximum number
   1446    of levels of traceback information printed when an unhandled exception occurs.
   1447    The default is ``1000``.  When set to ``0`` or less, all traceback information
   1448    is suppressed and only the exception type and value are printed.
   1449 
   1450 
   1451 .. data:: version
   1452 
   1453    A string containing the version number of the Python interpreter plus additional
   1454    information on the build number and compiler used.  This string is displayed
   1455    when the interactive interpreter is started.  Do not extract version information
   1456    out of it, rather, use :data:`version_info` and the functions provided by the
   1457    :mod:`platform` module.
   1458 
   1459 
   1460 .. data:: api_version
   1461 
   1462    The C API version for this interpreter.  Programmers may find this useful when
   1463    debugging version conflicts between Python and extension modules.
   1464 
   1465 
   1466 .. data:: version_info
   1467 
   1468    A tuple containing the five components of the version number: *major*, *minor*,
   1469    *micro*, *releaselevel*, and *serial*.  All values except *releaselevel* are
   1470    integers; the release level is ``'alpha'``, ``'beta'``, ``'candidate'``, or
   1471    ``'final'``.  The ``version_info`` value corresponding to the Python version 2.0
   1472    is ``(2, 0, 0, 'final', 0)``.  The components can also be accessed by name,
   1473    so ``sys.version_info[0]`` is equivalent to ``sys.version_info.major``
   1474    and so on.
   1475 
   1476    .. versionchanged:: 3.1
   1477       Added named component attributes.
   1478 
   1479 .. data:: warnoptions
   1480 
   1481    This is an implementation detail of the warnings framework; do not modify this
   1482    value.  Refer to the :mod:`warnings` module for more information on the warnings
   1483    framework.
   1484 
   1485 
   1486 .. data:: winver
   1487 
   1488    The version number used to form registry keys on Windows platforms. This is
   1489    stored as string resource 1000 in the Python DLL.  The value is normally the
   1490    first three characters of :const:`version`.  It is provided in the :mod:`sys`
   1491    module for informational purposes; modifying this value has no effect on the
   1492    registry keys used by Python.
   1493 
   1494    .. availability:: Windows.
   1495 
   1496 
   1497 .. data:: _xoptions
   1498 
   1499    A dictionary of the various implementation-specific flags passed through
   1500    the :option:`-X` command-line option.  Option names are either mapped to
   1501    their values, if given explicitly, or to :const:`True`.  Example:
   1502 
   1503    .. code-block:: shell-session
   1504 
   1505       $ ./python -Xa=b -Xc
   1506       Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50)
   1507       [GCC 4.4.3] on linux2
   1508       Type "help", "copyright", "credits" or "license" for more information.
   1509       >>> import sys
   1510       >>> sys._xoptions
   1511       {'a': 'b', 'c': True}
   1512 
   1513    .. impl-detail::
   1514 
   1515       This is a CPython-specific way of accessing options passed through
   1516       :option:`-X`.  Other implementations may export them through other
   1517       means, or not at all.
   1518 
   1519    .. versionadded:: 3.2
   1520 
   1521 
   1522 .. rubric:: Citations
   1523 
   1524 .. [C99] ISO/IEC 9899:1999.  "Programming languages -- C."  A public draft of this standard is available at http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf\ .
   1525