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