blob: 3df529f8100eb8121179c31438727e079a12928b [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`sys` --- System-specific parameters and functions
2=======================================================
3
4.. module:: sys
5 :synopsis: Access system-specific parameters and functions.
6
Terry Jan Reedyfa089b92016-06-11 15:02:54 -04007--------------
Georg Brandl116aa622007-08-15 14:28:22 +00008
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
Barry Warsawa40453d2010-10-16 14:17:50 +000014.. data:: abiflags
15
Georg Brandldf48b972014-03-24 09:06:18 +010016 On POSIX systems where Python was built with the standard ``configure``
Barry Warsawa40453d2010-10-16 14:17:50 +000017 script, this contains the ABI flags as specified by :pep:`3149`.
18
Victor Stinner7efc5262019-06-15 03:24:41 +020019 .. versionchanged:: 3.8
20 Default flags became an empty string (``m`` flag for pymalloc has been
21 removed).
22
Barry Warsawa40453d2010-10-16 14:17:50 +000023 .. versionadded:: 3.2
24
Georg Brandldf48b972014-03-24 09:06:18 +010025
Steve Dowerb82e17e2019-05-23 08:45:22 -070026.. function:: addaudithook(hook)
27
Terry Jan Reedye563a152019-11-26 12:07:48 -050028 Append the callable *hook* to the list of active auditing hooks for the
Steve Dowerb82e17e2019-05-23 08:45:22 -070029 current 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
Andrew Kuchlingb948d132020-10-20 11:36:52 -040034 called first, followed by hooks added in the current interpreter. Hooks
35 can then log the event, raise an exception to abort the operation,
36 or terminate the process entirely.
Steve Dowerb82e17e2019-05-23 08:45:22 -070037
Steve Dower894e30c2019-10-26 13:02:30 -070038 .. audit-event:: sys.addaudithook "" sys.addaudithook
39
Andrew Kuchlingb948d132020-10-20 11:36:52 -040040 Calling :func:`sys.addaudithook` will itself raise an auditing event
41 named ``sys.addaudithook`` with no arguments. If any
Steve Dowerbea33f52019-11-28 08:46:11 -080042 existing hooks raise an exception derived from :class:`RuntimeError`, the
Steve Dower894e30c2019-10-26 13:02:30 -070043 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.
Steve Dowerb82e17e2019-05-23 08:45:22 -070046
Andrew Kuchlingb948d132020-10-20 11:36:52 -040047 See the :ref:`audit events table <audit-events>` for all events raised by
48 CPython, and :pep:`578` for the original design discussion.
49
Steve Dowerb82e17e2019-05-23 08:45:22 -070050 .. versionadded:: 3.8
51
Steve Dowerbea33f52019-11-28 08:46:11 -080052 .. versionchanged:: 3.8.1
53
54 Exceptions derived from :class:`Exception` but not :class:`RuntimeError`
55 are no longer suppressed.
56
Steve Dowerb82e17e2019-05-23 08:45:22 -070057 .. impl-detail::
58
Steve Dower894e30c2019-10-26 13:02:30 -070059 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.
Steve Dowerb82e17e2019-05-23 08:45:22 -070062
63
Georg Brandl116aa622007-08-15 14:28:22 +000064.. 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
Inada Naoki38f4e462019-03-30 14:32:08 +090075 .. note::
76 On Unix, command line arguments are passed by bytes from OS. Python decodes
77 them with filesystem encoding and "surrogateescape" error handler.
78 When you need original bytes, you can get it by
79 ``[os.fsencode(arg) for arg in sys.argv]``.
80
Georg Brandl116aa622007-08-15 14:28:22 +000081
Steve Dowerb82e17e2019-05-23 08:45:22 -070082.. _auditing:
83
84.. function:: audit(event, *args)
85
86 .. index:: single: auditing
87
Andrew Kuchlingb948d132020-10-20 11:36:52 -040088 Raise an auditing event and trigger any active auditing hooks.
89 *event* is a string identifying the event, and *args* may contain
90 optional arguments with more information about the event. The
91 number and types of arguments for a given event are considered a
92 public and stable API and should not be modified between releases.
Steve Dowerb82e17e2019-05-23 08:45:22 -070093
Andrew Kuchlingb948d132020-10-20 11:36:52 -040094 For example, one auditing event is named ``os.chdir``. This event has
95 one argument called *path* that will contain the requested new
96 working directory.
97
98 :func:`sys.audit` will call the existing auditing hooks, passing
99 the event name and arguments, and will re-raise the first exception
100 from any hook. In general, if an exception is raised, it should not
101 be handled and the process should be terminated as quickly as
102 possible. This allows hook implementations to decide how to respond
103 to particular events: they can merely log the event or abort the
104 operation by raising an exception.
Steve Dowerb82e17e2019-05-23 08:45:22 -0700105
106 Hooks are added using the :func:`sys.addaudithook` or
107 :c:func:`PySys_AddAuditHook` functions.
108
109 The native equivalent of this function is :c:func:`PySys_Audit`. Using the
110 native function is preferred when possible.
111
Steve Dower44f91c32019-06-27 10:47:59 -0700112 See the :ref:`audit events table <audit-events>` for all events raised by
Steve Dower894e30c2019-10-26 13:02:30 -0700113 CPython.
Steve Dower44f91c32019-06-27 10:47:59 -0700114
Steve Dowerb82e17e2019-05-23 08:45:22 -0700115 .. versionadded:: 3.8
116
117
Vinay Sajip7ded1f02012-05-26 03:45:29 +0100118.. data:: base_exec_prefix
119
120 Set during Python startup, before ``site.py`` is run, to the same value as
Vinay Sajipcd9b7462012-07-09 10:37:01 +0100121 :data:`exec_prefix`. If not running in a
122 :ref:`virtual environment <venv-def>`, the values will stay the same; if
123 ``site.py`` finds that a virtual environment is in use, the values of
124 :data:`prefix` and :data:`exec_prefix` will be changed to point to the
125 virtual environment, whereas :data:`base_prefix` and
Vinay Sajip7ded1f02012-05-26 03:45:29 +0100126 :data:`base_exec_prefix` will remain pointing to the base Python
127 installation (the one which the virtual environment was created from).
128
Georg Brandl039b01d2012-05-26 09:11:22 +0200129 .. versionadded:: 3.3
130
131
Vinay Sajip7ded1f02012-05-26 03:45:29 +0100132.. data:: base_prefix
133
134 Set during Python startup, before ``site.py`` is run, to the same value as
Vinay Sajipcd9b7462012-07-09 10:37:01 +0100135 :data:`prefix`. If not running in a :ref:`virtual environment <venv-def>`, the values
Vinay Sajip7ded1f02012-05-26 03:45:29 +0100136 will stay the same; if ``site.py`` finds that a virtual environment is in
137 use, the values of :data:`prefix` and :data:`exec_prefix` will be changed to
138 point to the virtual environment, whereas :data:`base_prefix` and
139 :data:`base_exec_prefix` will remain pointing to the base Python
140 installation (the one which the virtual environment was created from).
141
Georg Brandl039b01d2012-05-26 09:11:22 +0200142 .. versionadded:: 3.3
143
144
Georg Brandl116aa622007-08-15 14:28:22 +0000145.. data:: byteorder
146
147 An indicator of the native byte order. This will have the value ``'big'`` on
148 big-endian (most-significant byte first) platforms, and ``'little'`` on
149 little-endian (least-significant byte first) platforms.
150
Georg Brandl116aa622007-08-15 14:28:22 +0000151
Georg Brandl116aa622007-08-15 14:28:22 +0000152.. data:: builtin_module_names
153
154 A tuple of strings giving the names of all modules that are compiled into this
155 Python interpreter. (This information is not available in any other way ---
156 ``modules.keys()`` only lists the imported modules.)
157
158
Georg Brandl85271262010-10-17 11:06:14 +0000159.. function:: call_tracing(func, args)
160
161 Call ``func(*args)``, while tracing is enabled. The tracing state is saved,
162 and restored afterwards. This is intended to be called from a debugger from
163 a checkpoint, to recursively debug some other code.
164
165
Georg Brandl116aa622007-08-15 14:28:22 +0000166.. data:: copyright
167
168 A string containing the copyright pertaining to the Python interpreter.
169
170
Christian Heimes15ebc882008-02-04 18:48:49 +0000171.. function:: _clear_type_cache()
172
173 Clear the internal type cache. The type cache is used to speed up attribute
174 and method lookups. Use the function *only* to drop unnecessary references
175 during reference leak debugging.
176
177 This function should be used for internal and specialized purposes only.
Christian Heimes26855632008-01-27 23:50:43 +0000178
Christian Heimes26855632008-01-27 23:50:43 +0000179
Georg Brandl116aa622007-08-15 14:28:22 +0000180.. function:: _current_frames()
181
182 Return a dictionary mapping each thread's identifier to the topmost stack frame
183 currently active in that thread at the time the function is called. Note that
184 functions in the :mod:`traceback` module can build the call stack given such a
185 frame.
186
187 This is most useful for debugging deadlock: this function does not require the
188 deadlocked threads' cooperation, and such threads' call stacks are frozen for as
189 long as they remain deadlocked. The frame returned for a non-deadlocked thread
190 may bear no relationship to that thread's current activity by the time calling
191 code examines the frame.
192
193 This function should be used for internal and specialized purposes only.
194
Steve Dower44f91c32019-06-27 10:47:59 -0700195 .. audit-event:: sys._current_frames "" sys._current_frames
Steve Dowerb82e17e2019-05-23 08:45:22 -0700196
Georg Brandl116aa622007-08-15 14:28:22 +0000197
Barry Warsaw36c1d1f2017-10-05 12:11:18 -0400198.. function:: breakpointhook()
199
200 This hook function is called by built-in :func:`breakpoint`. By default,
201 it drops you into the :mod:`pdb` debugger, but it can be set to any other
202 function so that you can choose which debugger gets used.
203
204 The signature of this function is dependent on what it calls. For example,
205 the default binding (e.g. ``pdb.set_trace()``) expects no arguments, but
206 you might bind it to a function that expects additional arguments
207 (positional and/or keyword). The built-in ``breakpoint()`` function passes
208 its ``*args`` and ``**kws`` straight through. Whatever
209 ``breakpointhooks()`` returns is returned from ``breakpoint()``.
210
211 The default implementation first consults the environment variable
212 :envvar:`PYTHONBREAKPOINT`. If that is set to ``"0"`` then this function
213 returns immediately; i.e. it is a no-op. If the environment variable is
214 not set, or is set to the empty string, ``pdb.set_trace()`` is called.
215 Otherwise this variable should name a function to run, using Python's
216 dotted-import nomenclature, e.g. ``package.subpackage.module.function``.
217 In this case, ``package.subpackage.module`` would be imported and the
218 resulting module must have a callable named ``function()``. This is run,
219 passing in ``*args`` and ``**kws``, and whatever ``function()`` returns,
220 ``sys.breakpointhook()`` returns to the built-in :func:`breakpoint`
221 function.
222
223 Note that if anything goes wrong while importing the callable named by
224 :envvar:`PYTHONBREAKPOINT`, a :exc:`RuntimeWarning` is reported and the
225 breakpoint is ignored.
226
227 Also note that if ``sys.breakpointhook()`` is overridden programmatically,
228 :envvar:`PYTHONBREAKPOINT` is *not* consulted.
229
230 .. versionadded:: 3.7
231
David Malcolm49526f42012-06-22 14:55:41 -0400232.. function:: _debugmallocstats()
233
234 Print low-level information to stderr about the state of CPython's memory
235 allocator.
236
237 If Python is configured --with-pydebug, it also performs some expensive
238 internal consistency checks.
239
240 .. versionadded:: 3.3
241
242 .. impl-detail::
243
244 This function is specific to CPython. The exact output format is not
245 defined here, and may change.
246
247
Georg Brandl116aa622007-08-15 14:28:22 +0000248.. data:: dllhandle
249
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400250 Integer specifying the handle of the Python DLL.
251
252 .. availability:: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000253
254
255.. function:: displayhook(value)
256
Victor Stinner13d49ee2010-12-04 17:24:33 +0000257 If *value* is not ``None``, this function prints ``repr(value)`` to
258 ``sys.stdout``, and saves *value* in ``builtins._``. If ``repr(value)`` is
259 not encodable to ``sys.stdout.encoding`` with ``sys.stdout.errors`` error
260 handler (which is probably ``'strict'``), encode it to
261 ``sys.stdout.encoding`` with ``'backslashreplace'`` error handler.
Georg Brandl116aa622007-08-15 14:28:22 +0000262
Christian Heimesd8654cf2007-12-02 15:22:16 +0000263 ``sys.displayhook`` is called on the result of evaluating an :term:`expression`
264 entered in an interactive Python session. The display of these values can be
265 customized by assigning another one-argument function to ``sys.displayhook``.
Georg Brandl116aa622007-08-15 14:28:22 +0000266
Victor Stinner13d49ee2010-12-04 17:24:33 +0000267 Pseudo-code::
268
269 def displayhook(value):
270 if value is None:
271 return
272 # Set '_' to None to avoid recursion
273 builtins._ = None
274 text = repr(value)
275 try:
276 sys.stdout.write(text)
277 except UnicodeEncodeError:
278 bytes = text.encode(sys.stdout.encoding, 'backslashreplace')
279 if hasattr(sys.stdout, 'buffer'):
280 sys.stdout.buffer.write(bytes)
281 else:
282 text = bytes.decode(sys.stdout.encoding, 'strict')
283 sys.stdout.write(text)
284 sys.stdout.write("\n")
285 builtins._ = value
286
287 .. versionchanged:: 3.2
288 Use ``'backslashreplace'`` error handler on :exc:`UnicodeEncodeError`.
289
Georg Brandl116aa622007-08-15 14:28:22 +0000290
Éric Araujoda272632011-10-05 01:17:38 +0200291.. data:: dont_write_bytecode
292
Brett Cannonf299abd2015-04-13 14:21:02 -0400293 If this is true, Python won't try to write ``.pyc`` files on the
Éric Araujoda272632011-10-05 01:17:38 +0200294 import of source modules. This value is initially set to ``True`` or
295 ``False`` depending on the :option:`-B` command line option and the
296 :envvar:`PYTHONDONTWRITEBYTECODE` environment variable, but you can set it
297 yourself to control bytecode file generation.
298
299
Carl Meyerb193fa92018-06-15 22:40:56 -0600300.. data:: pycache_prefix
301
302 If this is set (not ``None``), Python will write bytecode-cache ``.pyc``
303 files to (and read them from) a parallel directory tree rooted at this
304 directory, rather than from ``__pycache__`` directories in the source code
305 tree. Any ``__pycache__`` directories in the source code tree will be ignored
306 and new `.pyc` files written within the pycache prefix. Thus if you use
307 :mod:`compileall` as a pre-build step, you must ensure you run it with the
308 same pycache prefix (if any) that you will use at runtime.
309
310 A relative path is interpreted relative to the current working directory.
311
312 This value is initially set based on the value of the :option:`-X`
313 ``pycache_prefix=PATH`` command-line option or the
314 :envvar:`PYTHONPYCACHEPREFIX` environment variable (command-line takes
315 precedence). If neither are set, it is ``None``.
316
317 .. versionadded:: 3.8
318
319
Georg Brandl116aa622007-08-15 14:28:22 +0000320.. function:: excepthook(type, value, traceback)
321
322 This function prints out a given traceback and exception to ``sys.stderr``.
323
324 When an exception is raised and uncaught, the interpreter calls
325 ``sys.excepthook`` with three arguments, the exception class, exception
326 instance, and a traceback object. In an interactive session this happens just
327 before control is returned to the prompt; in a Python program this happens just
328 before the program exits. The handling of such top-level exceptions can be
329 customized by assigning another three-argument function to ``sys.excepthook``.
330
Steve Dowerbea33f52019-11-28 08:46:11 -0800331 .. audit-event:: sys.excepthook hook,type,value,traceback sys.excepthook
332
333 Raise an auditing event ``sys.excepthook`` with arguments ``hook``,
334 ``type``, ``value``, ``traceback`` when an uncaught exception occurs.
335 If no hook has been set, ``hook`` may be ``None``. If any hook raises
336 an exception derived from :class:`RuntimeError` the call to the hook will
337 be suppressed. Otherwise, the audit hook exception will be reported as
338 unraisable and ``sys.excepthook`` will be called.
339
Victor Stinnercd590a72019-05-28 00:39:52 +0200340 .. seealso::
341
342 The :func:`sys.unraisablehook` function handles unraisable exceptions
343 and the :func:`threading.excepthook` function handles exception raised
344 by :func:`threading.Thread.run`.
Victor Stinneref9d9b62019-05-22 11:28:22 +0200345
Georg Brandl116aa622007-08-15 14:28:22 +0000346
Barry Warsaw36c1d1f2017-10-05 12:11:18 -0400347.. data:: __breakpointhook__
348 __displayhook__
Georg Brandl116aa622007-08-15 14:28:22 +0000349 __excepthook__
Victor Stinneref9d9b62019-05-22 11:28:22 +0200350 __unraisablehook__
Georg Brandl116aa622007-08-15 14:28:22 +0000351
Barry Warsaw36c1d1f2017-10-05 12:11:18 -0400352 These objects contain the original values of ``breakpointhook``,
Victor Stinneref9d9b62019-05-22 11:28:22 +0200353 ``displayhook``, ``excepthook``, and ``unraisablehook`` at the start of the
354 program. They are saved so that ``breakpointhook``, ``displayhook`` and
355 ``excepthook``, ``unraisablehook`` can be restored in case they happen to
356 get replaced with broken or alternative objects.
Georg Brandl116aa622007-08-15 14:28:22 +0000357
Barry Warsaw36c1d1f2017-10-05 12:11:18 -0400358 .. versionadded:: 3.7
359 __breakpointhook__
360
Saiyang Gou0edc2c72020-02-07 16:48:06 -0800361 .. versionadded:: 3.8
362 __unraisablehook__
Georg Brandl116aa622007-08-15 14:28:22 +0000363
364.. function:: exc_info()
365
366 This function returns a tuple of three values that give information about the
367 exception that is currently being handled. The information returned is specific
368 both to the current thread and to the current stack frame. If the current stack
369 frame is not handling an exception, the information is taken from the calling
370 stack frame, or its caller, and so on until a stack frame is found that is
371 handling an exception. Here, "handling an exception" is defined as "executing
Benjamin Petersoneec3d712008-06-11 15:59:43 +0000372 an except clause." For any stack frame, only information about the exception
373 being currently handled is accessible.
Georg Brandl116aa622007-08-15 14:28:22 +0000374
375 .. index:: object: traceback
376
Georg Brandl482b1512010-03-21 09:02:59 +0000377 If no exception is being handled anywhere on the stack, a tuple containing
378 three ``None`` values is returned. Otherwise, the values returned are
379 ``(type, value, traceback)``. Their meaning is: *type* gets the type of the
380 exception being handled (a subclass of :exc:`BaseException`); *value* gets
381 the exception instance (an instance of the exception type); *traceback* gets
Björn Meier99363712019-09-11 19:55:02 +0200382 a :ref:`traceback object <traceback-objects>` which encapsulates the call
Georg Brandl116aa622007-08-15 14:28:22 +0000383 stack at the point where the exception originally occurred.
384
Georg Brandl116aa622007-08-15 14:28:22 +0000385
386.. data:: exec_prefix
387
388 A string giving the site-specific directory prefix where the platform-dependent
389 Python files are installed; by default, this is also ``'/usr/local'``. This can
Éric Araujo713d3032010-11-18 16:38:46 +0000390 be set at build time with the ``--exec-prefix`` argument to the
Georg Brandl116aa622007-08-15 14:28:22 +0000391 :program:`configure` script. Specifically, all configuration files (e.g. the
Éric Araujo58a91532011-10-05 01:28:24 +0200392 :file:`pyconfig.h` header file) are installed in the directory
Georg Brandleb25fb72012-02-23 21:12:39 +0100393 :file:`{exec_prefix}/lib/python{X.Y}/config`, and shared library modules are
Éric Araujo58a91532011-10-05 01:28:24 +0200394 installed in :file:`{exec_prefix}/lib/python{X.Y}/lib-dynload`, where *X.Y*
395 is the version number of Python, for example ``3.2``.
Georg Brandl116aa622007-08-15 14:28:22 +0000396
Larry Hastings3732ed22014-03-15 21:13:56 -0700397 .. note::
398
399 If a :ref:`virtual environment <venv-def>` is in effect, this
Vinay Sajipcd9b7462012-07-09 10:37:01 +0100400 value will be changed in ``site.py`` to point to the virtual environment.
401 The value for the Python installation will still be available, via
402 :data:`base_exec_prefix`.
Vinay Sajip7ded1f02012-05-26 03:45:29 +0100403
Georg Brandl116aa622007-08-15 14:28:22 +0000404
405.. data:: executable
406
Petri Lehtinen97133212012-02-02 20:59:48 +0200407 A string giving the absolute path of the executable binary for the Python
408 interpreter, on systems where this makes sense. If Python is unable to retrieve
409 the real path to its executable, :data:`sys.executable` will be an empty string
410 or ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000411
412
413.. function:: exit([arg])
414
415 Exit from Python. This is implemented by raising the :exc:`SystemExit`
416 exception, so cleanup actions specified by finally clauses of :keyword:`try`
Georg Brandl6f4e68d2010-10-17 10:51:45 +0000417 statements are honored, and it is possible to intercept the exit attempt at
418 an outer level.
419
420 The optional argument *arg* can be an integer giving the exit status
421 (defaulting to zero), or another type of object. If it is an integer, zero
422 is considered "successful termination" and any nonzero value is considered
423 "abnormal termination" by shells and the like. Most systems require it to be
Martin Panterb4ce1fc2015-11-30 03:18:29 +0000424 in the range 0--127, and produce undefined results otherwise. Some systems
Georg Brandl6f4e68d2010-10-17 10:51:45 +0000425 have a convention for assigning specific meanings to specific exit codes, but
426 these are generally underdeveloped; Unix programs generally use 2 for command
427 line syntax errors and 1 for all other kind of errors. If another type of
428 object is passed, ``None`` is equivalent to passing zero, and any other
429 object is printed to :data:`stderr` and results in an exit code of 1. In
430 particular, ``sys.exit("some error message")`` is a quick way to exit a
431 program when an error occurs.
432
433 Since :func:`exit` ultimately "only" raises an exception, it will only exit
434 the process when called from the main thread, and the exception is not
435 intercepted.
Georg Brandl116aa622007-08-15 14:28:22 +0000436
Martin Panterb4ce1fc2015-11-30 03:18:29 +0000437 .. versionchanged:: 3.6
438 If an error occurs in the cleanup after the Python interpreter
439 has caught :exc:`SystemExit` (such as an error flushing buffered data
440 in the standard streams), the exit status is changed to 120.
441
Georg Brandl116aa622007-08-15 14:28:22 +0000442
Christian Heimesd32ed6f2008-01-14 18:49:24 +0000443.. data:: flags
444
Raymond Hettinger71170742019-09-11 07:17:32 -0700445 The :term:`named tuple` *flags* exposes the status of command line
Benjamin Peterson2b8ef2d2011-04-20 18:31:22 -0500446 flags. The attributes are read only.
Christian Heimesd32ed6f2008-01-14 18:49:24 +0000447
Victor Stinnerb9783d22020-01-24 10:22:18 +0100448 ============================= ================================================================
Éric Araujo5ab47762011-03-26 00:47:04 +0100449 attribute flag
Victor Stinnerb9783d22020-01-24 10:22:18 +0100450 ============================= ================================================================
Éric Araujo5ab47762011-03-26 00:47:04 +0100451 :const:`debug` :option:`-d`
Éric Araujo5ab47762011-03-26 00:47:04 +0100452 :const:`inspect` :option:`-i`
453 :const:`interactive` :option:`-i`
Danish Prakash656d52d2018-10-07 16:12:31 +0000454 :const:`isolated` :option:`-I`
Éric Araujo5ab47762011-03-26 00:47:04 +0100455 :const:`optimize` :option:`-O` or :option:`-OO`
456 :const:`dont_write_bytecode` :option:`-B`
457 :const:`no_user_site` :option:`-s`
458 :const:`no_site` :option:`-S`
459 :const:`ignore_environment` :option:`-E`
460 :const:`verbose` :option:`-v`
461 :const:`bytes_warning` :option:`-b`
Éric Araujo722bec42011-03-26 01:59:47 +0100462 :const:`quiet` :option:`-q`
Georg Brandl2daf6ae2012-02-20 19:54:16 +0100463 :const:`hash_randomization` :option:`-R`
Victor Stinnerb9783d22020-01-24 10:22:18 +0100464 :const:`dev_mode` :option:`-X dev <-X>` (:ref:`Python Development Mode <devmode>`)
465 :const:`utf8_mode` :option:`-X utf8 <-X>`
466 ============================= ================================================================
Georg Brandl8aa7e992010-12-28 18:30:18 +0000467
468 .. versionchanged:: 3.2
469 Added ``quiet`` attribute for the new :option:`-q` flag.
Christian Heimesd32ed6f2008-01-14 18:49:24 +0000470
Georg Brandl09a7c722012-02-20 21:31:46 +0100471 .. versionadded:: 3.2.3
Georg Brandl2daf6ae2012-02-20 19:54:16 +0100472 The ``hash_randomization`` attribute.
473
Éric Araujo3e898702011-04-24 04:37:00 +0200474 .. versionchanged:: 3.3
475 Removed obsolete ``division_warning`` attribute.
476
Danish Prakash656d52d2018-10-07 16:12:31 +0000477 .. versionchanged:: 3.4
478 Added ``isolated`` attribute for :option:`-I` ``isolated`` flag.
479
Victor Stinner5e3806f2017-11-30 11:40:24 +0100480 .. versionchanged:: 3.7
Victor Stinnerb9783d22020-01-24 10:22:18 +0100481 Added the ``dev_mode`` attribute for the new :ref:`Python Development
482 Mode <devmode>` and the ``utf8_mode`` attribute for the new :option:`-X`
483 ``utf8`` flag.
Victor Stinner5e3806f2017-11-30 11:40:24 +0100484
Christian Heimesd32ed6f2008-01-14 18:49:24 +0000485
Christian Heimes93852662007-12-01 12:22:32 +0000486.. data:: float_info
487
Raymond Hettinger71170742019-09-11 07:17:32 -0700488 A :term:`named tuple` holding information about the float type. It
Benjamin Peterson2b8ef2d2011-04-20 18:31:22 -0500489 contains low level information about the precision and internal
490 representation. The values correspond to the various floating-point
491 constants defined in the standard header file :file:`float.h` for the 'C'
492 programming language; see section 5.2.4.2.2 of the 1999 ISO/IEC C standard
493 [C99]_, 'Characteristics of floating types', for details.
Christian Heimes93852662007-12-01 12:22:32 +0000494
Georg Brandl44ea77b2013-03-28 13:28:44 +0100495 .. tabularcolumns:: |l|l|L|
496
Mark Dickinsonbe5846b2010-07-02 20:26:07 +0000497 +---------------------+----------------+--------------------------------------------------+
498 | attribute | float.h macro | explanation |
499 +=====================+================+==================================================+
Victor Stinner0b2ab212020-01-13 12:44:35 +0100500 | :const:`epsilon` | DBL_EPSILON | difference between 1.0 and the least value |
501 | | | greater than 1.0 that is representable as a float|
502 | | | |
503 | | | See also :func:`math.ulp`. |
Mark Dickinsonbe5846b2010-07-02 20:26:07 +0000504 +---------------------+----------------+--------------------------------------------------+
505 | :const:`dig` | DBL_DIG | maximum number of decimal digits that can be |
506 | | | faithfully represented in a float; see below |
507 +---------------------+----------------+--------------------------------------------------+
508 | :const:`mant_dig` | DBL_MANT_DIG | float precision: the number of base-``radix`` |
509 | | | digits in the significand of a float |
510 +---------------------+----------------+--------------------------------------------------+
Victor Stinner0b2ab212020-01-13 12:44:35 +0100511 | :const:`max` | DBL_MAX | maximum representable positive finite float |
Mark Dickinsonbe5846b2010-07-02 20:26:07 +0000512 +---------------------+----------------+--------------------------------------------------+
Victor Stinner0b2ab212020-01-13 12:44:35 +0100513 | :const:`max_exp` | DBL_MAX_EXP | maximum integer *e* such that ``radix**(e-1)`` is|
Mark Dickinsonbe5846b2010-07-02 20:26:07 +0000514 | | | a representable finite float |
515 +---------------------+----------------+--------------------------------------------------+
Victor Stinner0b2ab212020-01-13 12:44:35 +0100516 | :const:`max_10_exp` | DBL_MAX_10_EXP | maximum integer *e* such that ``10**e`` is in the|
Mark Dickinsonbe5846b2010-07-02 20:26:07 +0000517 | | | range of representable finite floats |
518 +---------------------+----------------+--------------------------------------------------+
Victor Stinner0b2ab212020-01-13 12:44:35 +0100519 | :const:`min` | DBL_MIN | minimum representable positive *normalized* float|
520 | | | |
521 | | | Use :func:`math.ulp(0.0) <math.ulp>` to get the |
522 | | | smallest positive *denormalized* representable |
523 | | | float. |
Mark Dickinsonbe5846b2010-07-02 20:26:07 +0000524 +---------------------+----------------+--------------------------------------------------+
Victor Stinner0b2ab212020-01-13 12:44:35 +0100525 | :const:`min_exp` | DBL_MIN_EXP | minimum integer *e* such that ``radix**(e-1)`` is|
Mark Dickinsonbe5846b2010-07-02 20:26:07 +0000526 | | | a normalized float |
527 +---------------------+----------------+--------------------------------------------------+
Victor Stinner0b2ab212020-01-13 12:44:35 +0100528 | :const:`min_10_exp` | DBL_MIN_10_EXP | minimum integer *e* such that ``10**e`` is a |
Mark Dickinsonbe5846b2010-07-02 20:26:07 +0000529 | | | normalized float |
530 +---------------------+----------------+--------------------------------------------------+
531 | :const:`radix` | FLT_RADIX | radix of exponent representation |
532 +---------------------+----------------+--------------------------------------------------+
Mark Dickinsonb1e58fe2011-11-19 16:26:45 +0000533 | :const:`rounds` | FLT_ROUNDS | integer constant representing the rounding mode |
534 | | | used for arithmetic operations. This reflects |
535 | | | the value of the system FLT_ROUNDS macro at |
536 | | | interpreter startup time. See section 5.2.4.2.2 |
537 | | | of the C99 standard for an explanation of the |
538 | | | possible values and their meanings. |
Mark Dickinsonbe5846b2010-07-02 20:26:07 +0000539 +---------------------+----------------+--------------------------------------------------+
Christian Heimes93852662007-12-01 12:22:32 +0000540
Mark Dickinsonbe5846b2010-07-02 20:26:07 +0000541 The attribute :attr:`sys.float_info.dig` needs further explanation. If
542 ``s`` is any string representing a decimal number with at most
543 :attr:`sys.float_info.dig` significant digits, then converting ``s`` to a
544 float and back again will recover a string representing the same decimal
545 value::
Christian Heimes93852662007-12-01 12:22:32 +0000546
Mark Dickinsonbe5846b2010-07-02 20:26:07 +0000547 >>> import sys
548 >>> sys.float_info.dig
549 15
550 >>> s = '3.14159265358979' # decimal string with 15 significant digits
551 >>> format(float(s), '.15g') # convert to float and back -> same value
552 '3.14159265358979'
Christian Heimes93852662007-12-01 12:22:32 +0000553
Mark Dickinsonbe5846b2010-07-02 20:26:07 +0000554 But for strings with more than :attr:`sys.float_info.dig` significant digits,
555 this isn't always true::
556
557 >>> s = '9876543211234567' # 16 significant digits is too many!
558 >>> format(float(s), '.16g') # conversion changes value
559 '9876543211234568'
Christian Heimes93852662007-12-01 12:22:32 +0000560
Mark Dickinsonb08a53a2009-04-16 19:52:09 +0000561.. data:: float_repr_style
562
563 A string indicating how the :func:`repr` function behaves for
564 floats. If the string has value ``'short'`` then for a finite
565 float ``x``, ``repr(x)`` aims to produce a short string with the
566 property that ``float(repr(x)) == x``. This is the usual behaviour
567 in Python 3.1 and later. Otherwise, ``float_repr_style`` has value
568 ``'legacy'`` and ``repr(x)`` behaves in the same way as it did in
569 versions of Python prior to 3.1.
570
571 .. versionadded:: 3.1
572
573
Antoine Pitrouf9d0b122012-12-09 14:28:26 +0100574.. function:: getallocatedblocks()
575
576 Return the number of memory blocks currently allocated by the interpreter,
Antoine Pitrou92840532012-12-17 23:05:59 +0100577 regardless of their size. This function is mainly useful for tracking
578 and debugging memory leaks. Because of the interpreter's internal
579 caches, the result can vary from call to call; you may have to call
580 :func:`_clear_type_cache()` and :func:`gc.collect()` to get more
581 predictable results.
582
583 If a Python build or implementation cannot reasonably compute this
584 information, :func:`getallocatedblocks()` is allowed to return 0 instead.
Antoine Pitrouf9d0b122012-12-09 14:28:26 +0100585
586 .. versionadded:: 3.4
587
Antoine Pitrouf9d0b122012-12-09 14:28:26 +0100588
Victor Stinnerd6958ac2016-12-02 01:13:46 +0100589.. function:: getandroidapilevel()
590
591 Return the build time API version of Android as an integer.
592
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400593 .. availability:: Android.
Victor Stinnerd6958ac2016-12-02 01:13:46 +0100594
595 .. versionadded:: 3.7
596
597
Georg Brandl116aa622007-08-15 14:28:22 +0000598.. function:: getdefaultencoding()
599
600 Return the name of the current default string encoding used by the Unicode
601 implementation.
602
Georg Brandl116aa622007-08-15 14:28:22 +0000603
604.. function:: getdlopenflags()
605
Andrew Kuchlingc61b9132013-06-21 10:58:41 -0400606 Return the current value of the flags that are used for
607 :c:func:`dlopen` calls. Symbolic names for the flag values can be
608 found in the :mod:`os` module (``RTLD_xxx`` constants, e.g.
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400609 :data:`os.RTLD_LAZY`).
610
611 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000612
Georg Brandl116aa622007-08-15 14:28:22 +0000613
614.. function:: getfilesystemencoding()
615
Steve Dowercc16be82016-09-08 10:35:16 -0700616 Return the name of the encoding used to convert between Unicode
617 filenames and bytes filenames. For best compatibility, str should be
618 used for filenames in all cases, although representing filenames as bytes
619 is also supported. Functions accepting or returning filenames should support
620 either str or bytes and internally convert to the system's preferred
621 representation.
622
623 This encoding is always ASCII-compatible.
624
625 :func:`os.fsencode` and :func:`os.fsdecode` should be used to ensure that
626 the correct encoding and errors mode are used.
Georg Brandl116aa622007-08-15 14:28:22 +0000627
Victor Stinner91106cd2017-12-13 12:29:09 +0100628 * In the UTF-8 mode, the encoding is ``utf-8`` on any platform.
629
pxinwrf4b0a1c2019-03-04 17:02:06 +0800630 * On macOS, the encoding is ``'utf-8'``.
Georg Brandl116aa622007-08-15 14:28:22 +0000631
Steve Dowercc16be82016-09-08 10:35:16 -0700632 * On Unix, the encoding is the locale encoding.
Georg Brandl116aa622007-08-15 14:28:22 +0000633
Steve Dowercc16be82016-09-08 10:35:16 -0700634 * On Windows, the encoding may be ``'utf-8'`` or ``'mbcs'``, depending
635 on user configuration.
Georg Brandl116aa622007-08-15 14:28:22 +0000636
pxinwrf4b0a1c2019-03-04 17:02:06 +0800637 * On Android, the encoding is ``'utf-8'``.
638
639 * On VxWorks, the encoding is ``'utf-8'``.
640
Victor Stinnerb744ba12010-05-15 12:27:16 +0000641 .. versionchanged:: 3.2
Victor Stinner22d04182013-12-02 12:16:46 +0100642 :func:`getfilesystemencoding` result cannot be ``None`` anymore.
Victor Stinnerb744ba12010-05-15 12:27:16 +0000643
Steve Dowercc16be82016-09-08 10:35:16 -0700644 .. versionchanged:: 3.6
645 Windows is no longer guaranteed to return ``'mbcs'``. See :pep:`529`
646 and :func:`_enablelegacywindowsfsencoding` for more information.
647
Victor Stinner91106cd2017-12-13 12:29:09 +0100648 .. versionchanged:: 3.7
649 Return 'utf-8' in the UTF-8 mode.
650
651
Steve Dowercc16be82016-09-08 10:35:16 -0700652.. function:: getfilesystemencodeerrors()
653
654 Return the name of the error mode used to convert between Unicode filenames
655 and bytes filenames. The encoding name is returned from
656 :func:`getfilesystemencoding`.
657
658 :func:`os.fsencode` and :func:`os.fsdecode` should be used to ensure that
659 the correct encoding and errors mode are used.
660
661 .. versionadded:: 3.6
Georg Brandl116aa622007-08-15 14:28:22 +0000662
663.. function:: getrefcount(object)
664
665 Return the reference count of the *object*. The count returned is generally one
666 higher than you might expect, because it includes the (temporary) reference as
667 an argument to :func:`getrefcount`.
668
669
670.. function:: getrecursionlimit()
671
672 Return the current value of the recursion limit, the maximum depth of the Python
673 interpreter stack. This limit prevents infinite recursion from causing an
674 overflow of the C stack and crashing Python. It can be set by
675 :func:`setrecursionlimit`.
676
677
Robert Schuppeniesfbe94c52008-07-14 10:13:31 +0000678.. function:: getsizeof(object[, default])
Martin v. Löwis00709aa2008-06-04 14:18:43 +0000679
680 Return the size of an object in bytes. The object can be any type of
681 object. All built-in objects will return correct results, but this
Robert Schuppeniesfbe94c52008-07-14 10:13:31 +0000682 does not have to hold true for third-party extensions as it is implementation
Martin v. Löwis00709aa2008-06-04 14:18:43 +0000683 specific.
684
Martin v. Löwis1e5d0ff2012-06-17 10:40:16 +0200685 Only the memory consumption directly attributed to the object is
686 accounted for, not the memory consumption of objects it refers to.
687
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +0000688 If given, *default* will be returned if the object does not provide means to
Georg Brandlef871f62010-03-12 10:06:40 +0000689 retrieve the size. Otherwise a :exc:`TypeError` will be raised.
Robert Schuppeniesfbe94c52008-07-14 10:13:31 +0000690
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +0000691 :func:`getsizeof` calls the object's ``__sizeof__`` method and adds an
692 additional garbage collector overhead if the object is managed by the garbage
693 collector.
Robert Schuppeniesfbe94c52008-07-14 10:13:31 +0000694
Serhiy Storchaka6dff0202016-05-07 10:49:07 +0300695 See `recursive sizeof recipe <https://code.activestate.com/recipes/577504>`_
Raymond Hettingerc539a2a2010-12-17 23:31:30 +0000696 for an example of using :func:`getsizeof` recursively to find the size of
697 containers and all their contents.
Martin v. Löwis00709aa2008-06-04 14:18:43 +0000698
Antoine Pitroud42bc512009-11-10 23:18:31 +0000699.. function:: getswitchinterval()
700
701 Return the interpreter's "thread switch interval"; see
702 :func:`setswitchinterval`.
703
Antoine Pitrou79707ca2009-11-11 22:03:32 +0000704 .. versionadded:: 3.2
705
Antoine Pitroud42bc512009-11-10 23:18:31 +0000706
Georg Brandl116aa622007-08-15 14:28:22 +0000707.. function:: _getframe([depth])
708
709 Return a frame object from the call stack. If optional integer *depth* is
710 given, return the frame object that many calls below the top of the stack. If
711 that is deeper than the call stack, :exc:`ValueError` is raised. The default
712 for *depth* is zero, returning the frame at the top of the call stack.
713
Steve Dower44f91c32019-06-27 10:47:59 -0700714 .. audit-event:: sys._getframe "" sys._getframe
Steve Dowerb82e17e2019-05-23 08:45:22 -0700715
Georg Brandl495f7b52009-10-27 15:28:25 +0000716 .. impl-detail::
717
718 This function should be used for internal and specialized purposes only.
719 It is not guaranteed to exist in all implementations of Python.
Georg Brandl116aa622007-08-15 14:28:22 +0000720
721
Christian Heimes9bd667a2008-01-20 15:14:11 +0000722.. function:: getprofile()
723
724 .. index::
725 single: profile function
726 single: profiler
727
728 Get the profiler function as set by :func:`setprofile`.
729
Christian Heimes9bd667a2008-01-20 15:14:11 +0000730
731.. function:: gettrace()
732
733 .. index::
734 single: trace function
735 single: debugger
736
737 Get the trace function as set by :func:`settrace`.
738
Georg Brandl495f7b52009-10-27 15:28:25 +0000739 .. impl-detail::
Christian Heimes9bd667a2008-01-20 15:14:11 +0000740
741 The :func:`gettrace` function is intended only for implementing debuggers,
Georg Brandl495f7b52009-10-27 15:28:25 +0000742 profilers, coverage tools and the like. Its behavior is part of the
743 implementation platform, rather than part of the language definition, and
744 thus may not be available in all Python implementations.
Christian Heimes9bd667a2008-01-20 15:14:11 +0000745
Christian Heimes9bd667a2008-01-20 15:14:11 +0000746
Georg Brandl116aa622007-08-15 14:28:22 +0000747.. function:: getwindowsversion()
748
Eric Smith7338a392010-01-27 00:56:30 +0000749 Return a named tuple describing the Windows version
Eric Smithf7bb5782010-01-27 00:44:57 +0000750 currently running. The named elements are *major*, *minor*,
751 *build*, *platform*, *service_pack*, *service_pack_minor*,
Steve Dower74f4af72016-09-17 17:27:48 -0700752 *service_pack_major*, *suite_mask*, *product_type* and
753 *platform_version*. *service_pack* contains a string,
754 *platform_version* a 3-tuple and all other values are
Eric Smithf7bb5782010-01-27 00:44:57 +0000755 integers. The components can also be accessed by name, so
756 ``sys.getwindowsversion()[0]`` is equivalent to
757 ``sys.getwindowsversion().major``. For compatibility with prior
758 versions, only the first 5 elements are retrievable by indexing.
Georg Brandl116aa622007-08-15 14:28:22 +0000759
Steve Dower74f4af72016-09-17 17:27:48 -0700760 *platform* will be :const:`2 (VER_PLATFORM_WIN32_NT)`.
Georg Brandl116aa622007-08-15 14:28:22 +0000761
Eric Smithf7bb5782010-01-27 00:44:57 +0000762 *product_type* may be one of the following values:
763
764 +---------------------------------------+---------------------------------+
765 | Constant | Meaning |
766 +=======================================+=================================+
767 | :const:`1 (VER_NT_WORKSTATION)` | The system is a workstation. |
768 +---------------------------------------+---------------------------------+
769 | :const:`2 (VER_NT_DOMAIN_CONTROLLER)` | The system is a domain |
770 | | controller. |
771 +---------------------------------------+---------------------------------+
772 | :const:`3 (VER_NT_SERVER)` | The system is a server, but not |
773 | | a domain controller. |
774 +---------------------------------------+---------------------------------+
775
Georg Brandl60203b42010-10-06 10:11:56 +0000776 This function wraps the Win32 :c:func:`GetVersionEx` function; see the
777 Microsoft documentation on :c:func:`OSVERSIONINFOEX` for more information
Eric Smithf7bb5782010-01-27 00:44:57 +0000778 about these fields.
Georg Brandl116aa622007-08-15 14:28:22 +0000779
Steve Dower74f4af72016-09-17 17:27:48 -0700780 *platform_version* returns the accurate major version, minor version and
781 build number of the current operating system, rather than the version that
782 is being emulated for the process. It is intended for use in logging rather
783 than for feature detection.
784
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400785 .. availability:: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000786
Ezio Melotti83fc6dd2010-01-27 22:44:03 +0000787 .. versionchanged:: 3.2
Eric Smithf7bb5782010-01-27 00:44:57 +0000788 Changed to a named tuple and added *service_pack_minor*,
789 *service_pack_major*, *suite_mask*, and *product_type*.
Georg Brandl116aa622007-08-15 14:28:22 +0000790
Steve Dower74f4af72016-09-17 17:27:48 -0700791 .. versionchanged:: 3.6
792 Added *platform_version*
Mark Dickinsondc787d22010-05-23 13:33:13 +0000793
Yury Selivanov03660042016-12-15 17:36:05 -0500794
795.. function:: get_asyncgen_hooks()
796
797 Returns an *asyncgen_hooks* object, which is similar to a
798 :class:`~collections.namedtuple` of the form `(firstiter, finalizer)`,
799 where *firstiter* and *finalizer* are expected to be either ``None`` or
800 functions which take an :term:`asynchronous generator iterator` as an
Ville Skyttä49b27342017-08-03 09:00:59 +0300801 argument, and are used to schedule finalization of an asynchronous
Yury Selivanov03660042016-12-15 17:36:05 -0500802 generator by an event loop.
803
804 .. versionadded:: 3.6
805 See :pep:`525` for more details.
806
807 .. note::
808 This function has been added on a provisional basis (see :pep:`411`
809 for details.)
810
811
Nathaniel J. Smithfc2f4072018-01-21 06:44:07 -0800812.. function:: get_coroutine_origin_tracking_depth()
813
814 Get the current coroutine origin tracking depth, as set by
Jules Lasne (jlasne)cb0f5e22018-12-14 12:28:44 +0100815 :func:`set_coroutine_origin_tracking_depth`.
Nathaniel J. Smithfc2f4072018-01-21 06:44:07 -0800816
817 .. versionadded:: 3.7
818
819 .. note::
820 This function has been added on a provisional basis (see :pep:`411`
821 for details.) Use it only for debugging purposes.
822
823
Mark Dickinsondc787d22010-05-23 13:33:13 +0000824.. data:: hash_info
825
Raymond Hettinger71170742019-09-11 07:17:32 -0700826 A :term:`named tuple` giving parameters of the numeric hash
Benjamin Peterson2b8ef2d2011-04-20 18:31:22 -0500827 implementation. For more details about hashing of numeric types, see
828 :ref:`numeric-hash`.
Mark Dickinsondc787d22010-05-23 13:33:13 +0000829
830 +---------------------+--------------------------------------------------+
831 | attribute | explanation |
832 +=====================+==================================================+
833 | :const:`width` | width in bits used for hash values |
834 +---------------------+--------------------------------------------------+
835 | :const:`modulus` | prime modulus P used for numeric hash scheme |
836 +---------------------+--------------------------------------------------+
837 | :const:`inf` | hash value returned for a positive infinity |
838 +---------------------+--------------------------------------------------+
839 | :const:`nan` | hash value returned for a nan |
840 +---------------------+--------------------------------------------------+
841 | :const:`imag` | multiplier used for the imaginary part of a |
842 | | complex number |
843 +---------------------+--------------------------------------------------+
Christian Heimes985ecdc2013-11-20 11:46:18 +0100844 | :const:`algorithm` | name of the algorithm for hashing of str, bytes, |
845 | | and memoryview |
846 +---------------------+--------------------------------------------------+
847 | :const:`hash_bits` | internal output size of the hash algorithm |
848 +---------------------+--------------------------------------------------+
849 | :const:`seed_bits` | size of the seed key of the hash algorithm |
850 +---------------------+--------------------------------------------------+
851
Mark Dickinsondc787d22010-05-23 13:33:13 +0000852
853 .. versionadded:: 3.2
854
R David Murrayf93d3df2014-03-17 11:20:29 -0400855 .. versionchanged:: 3.4
Christian Heimes985ecdc2013-11-20 11:46:18 +0100856 Added *algorithm*, *hash_bits* and *seed_bits*
857
Mark Dickinsondc787d22010-05-23 13:33:13 +0000858
Georg Brandl116aa622007-08-15 14:28:22 +0000859.. data:: hexversion
860
861 The version number encoded as a single integer. This is guaranteed to increase
862 with each version, including proper support for non-production releases. For
863 example, to test that the Python interpreter is at least version 1.5.2, use::
864
865 if sys.hexversion >= 0x010502F0:
866 # use some advanced feature
867 ...
868 else:
869 # use an alternative implementation or warn the user
870 ...
871
872 This is called ``hexversion`` since it only really looks meaningful when viewed
873 as the result of passing it to the built-in :func:`hex` function. The
Raymond Hettinger71170742019-09-11 07:17:32 -0700874 :term:`named tuple` :data:`sys.version_info` may be used for a more
Éric Araujo0abb8b72011-04-27 16:32:36 +0200875 human-friendly encoding of the same information.
Georg Brandl116aa622007-08-15 14:28:22 +0000876
Martin Panterd21e0b52015-10-10 10:36:22 +0000877 More details of ``hexversion`` can be found at :ref:`apiabiversion`.
Georg Brandl116aa622007-08-15 14:28:22 +0000878
Barry Warsaw409da152012-06-03 16:18:47 -0400879
880.. data:: implementation
881
Barry Warsaw9b10e1f2012-06-04 11:06:45 -0400882 An object containing information about the implementation of the
883 currently running Python interpreter. The following attributes are
884 required to exist in all Python implementations.
Barry Warsaw409da152012-06-03 16:18:47 -0400885
Barry Warsaw9b10e1f2012-06-04 11:06:45 -0400886 *name* is the implementation's identifier, e.g. ``'cpython'``. The actual
887 string is defined by the Python implementation, but it is guaranteed to be
888 lower case.
Barry Warsaw409da152012-06-03 16:18:47 -0400889
890 *version* is a named tuple, in the same format as
891 :data:`sys.version_info`. It represents the version of the Python
892 *implementation*. This has a distinct meaning from the specific
893 version of the Python *language* to which the currently running
894 interpreter conforms, which ``sys.version_info`` represents. For
895 example, for PyPy 1.8 ``sys.implementation.version`` might be
896 ``sys.version_info(1, 8, 0, 'final', 0)``, whereas ``sys.version_info``
Barry Warsaw9b10e1f2012-06-04 11:06:45 -0400897 would be ``sys.version_info(2, 7, 2, 'final', 0)``. For CPython they
Barry Warsaw409da152012-06-03 16:18:47 -0400898 are the same value, since it is the reference implementation.
899
900 *hexversion* is the implementation version in hexadecimal format, like
901 :data:`sys.hexversion`.
902
903 *cache_tag* is the tag used by the import machinery in the filenames of
904 cached modules. By convention, it would be a composite of the
905 implementation's name and version, like ``'cpython-33'``. However, a
906 Python implementation may use some other value if appropriate. If
907 ``cache_tag`` is set to ``None``, it indicates that module caching should
908 be disabled.
909
Barry Warsaw9b10e1f2012-06-04 11:06:45 -0400910 :data:`sys.implementation` may contain additional attributes specific to
911 the Python implementation. These non-standard attributes must start with
912 an underscore, and are not described here. Regardless of its contents,
913 :data:`sys.implementation` will not change during a run of the interpreter,
914 nor between implementation versions. (It may change between Python
Georg Brandl93a56cd2014-10-30 22:25:41 +0100915 language versions, however.) See :pep:`421` for more information.
Barry Warsaw409da152012-06-03 16:18:47 -0400916
917 .. versionadded:: 3.3
918
Giovanni Cappellotto52693c12019-07-15 10:37:09 -0400919 .. note::
920
921 The addition of new required attributes must go through the normal PEP
922 process. See :pep:`421` for more information.
Barry Warsaw409da152012-06-03 16:18:47 -0400923
Mark Dickinsonbd792642009-03-18 20:06:12 +0000924.. data:: int_info
925
Raymond Hettinger71170742019-09-11 07:17:32 -0700926 A :term:`named tuple` that holds information about Python's internal
Benjamin Peterson2b8ef2d2011-04-20 18:31:22 -0500927 representation of integers. The attributes are read only.
Mark Dickinsonbd792642009-03-18 20:06:12 +0000928
Georg Brandl44ea77b2013-03-28 13:28:44 +0100929 .. tabularcolumns:: |l|L|
930
Mark Dickinsonbd792642009-03-18 20:06:12 +0000931 +-------------------------+----------------------------------------------+
R David Murray9beb34e2011-04-30 16:35:29 -0400932 | Attribute | Explanation |
Mark Dickinsonbd792642009-03-18 20:06:12 +0000933 +=========================+==============================================+
934 | :const:`bits_per_digit` | number of bits held in each digit. Python |
935 | | integers are stored internally in base |
936 | | ``2**int_info.bits_per_digit`` |
937 +-------------------------+----------------------------------------------+
938 | :const:`sizeof_digit` | size in bytes of the C type used to |
939 | | represent a digit |
940 +-------------------------+----------------------------------------------+
941
Mark Dickinsond72c7b62009-03-20 16:00:49 +0000942 .. versionadded:: 3.1
943
Mark Dickinsonbd792642009-03-18 20:06:12 +0000944
Antoine Pitrou1a6cb302013-05-04 20:08:35 +0200945.. data:: __interactivehook__
946
Larry Hastings3732ed22014-03-15 21:13:56 -0700947 When this attribute exists, its value is automatically called (with no
948 arguments) when the interpreter is launched in :ref:`interactive mode
949 <tut-interactive>`. This is done after the :envvar:`PYTHONSTARTUP` file is
950 read, so that you can set this hook there. The :mod:`site` module
951 :ref:`sets this <rlcompleter-config>`.
Antoine Pitrou1a6cb302013-05-04 20:08:35 +0200952
Steve Dowere226e832019-07-01 16:03:53 -0700953 .. audit-event:: cpython.run_interactivehook hook sys.__interactivehook__
954
955 Raises an :ref:`auditing event <auditing>`
956 ``cpython.run_interactivehook`` with the hook object as the argument when
957 the hook is called on startup.
958
Antoine Pitrou1a6cb302013-05-04 20:08:35 +0200959 .. versionadded:: 3.4
960
961
Georg Brandl116aa622007-08-15 14:28:22 +0000962.. function:: intern(string)
963
964 Enter *string* in the table of "interned" strings and return the interned string
965 -- which is *string* itself or a copy. Interning strings is useful to gain a
966 little performance on dictionary lookup -- if the keys in a dictionary are
967 interned, and the lookup key is interned, the key comparisons (after hashing)
968 can be done by a pointer compare instead of a string compare. Normally, the
969 names used in Python programs are automatically interned, and the dictionaries
970 used to hold module, class or instance attributes have interned keys.
971
Georg Brandl55ac8f02007-09-01 13:51:09 +0000972 Interned strings are not immortal; you must keep a reference to the return
973 value of :func:`intern` around to benefit from it.
Georg Brandl116aa622007-08-15 14:28:22 +0000974
975
Antoine Pitrou5db1bb82014-12-07 01:28:27 +0100976.. function:: is_finalizing()
977
978 Return :const:`True` if the Python interpreter is
979 :term:`shutting down <interpreter shutdown>`, :const:`False` otherwise.
980
981 .. versionadded:: 3.5
982
983
Georg Brandl116aa622007-08-15 14:28:22 +0000984.. data:: last_type
985 last_value
986 last_traceback
987
988 These three variables are not always defined; they are set when an exception is
989 not handled and the interpreter prints an error message and a stack traceback.
990 Their intended use is to allow an interactive user to import a debugger module
991 and engage in post-mortem debugging without having to re-execute the command
992 that caused the error. (Typical use is ``import pdb; pdb.pm()`` to enter the
Alexander Belopolskyf0a0d142010-10-27 03:06:43 +0000993 post-mortem debugger; see :mod:`pdb` module for
Georg Brandl116aa622007-08-15 14:28:22 +0000994 more information.)
995
996 The meaning of the variables is the same as that of the return values from
Georg Brandl482b1512010-03-21 09:02:59 +0000997 :func:`exc_info` above.
Georg Brandl116aa622007-08-15 14:28:22 +0000998
999
Christian Heimesa37d4c62007-12-04 23:02:19 +00001000.. data:: maxsize
Georg Brandl116aa622007-08-15 14:28:22 +00001001
Georg Brandl60203b42010-10-06 10:11:56 +00001002 An integer giving the maximum value a variable of type :c:type:`Py_ssize_t` can
Georg Brandl33770552007-12-15 09:55:35 +00001003 take. It's usually ``2**31 - 1`` on a 32-bit platform and ``2**63 - 1`` on a
1004 64-bit platform.
Christian Heimesa37d4c62007-12-04 23:02:19 +00001005
Georg Brandl116aa622007-08-15 14:28:22 +00001006
1007.. data:: maxunicode
1008
Ezio Melotti48a2f8f2011-09-29 00:18:19 +03001009 An integer giving the value of the largest Unicode code point,
1010 i.e. ``1114111`` (``0x10FFFF`` in hexadecimal).
1011
1012 .. versionchanged:: 3.3
Éric Araujo525b1e92011-10-05 01:06:31 +02001013 Before :pep:`393`, ``sys.maxunicode`` used to be either ``0xFFFF``
Ezio Melotti48a2f8f2011-09-29 00:18:19 +03001014 or ``0x10FFFF``, depending on the configuration option that specified
1015 whether Unicode characters were stored as UCS-2 or UCS-4.
Georg Brandl116aa622007-08-15 14:28:22 +00001016
1017
Brett Cannone43b0602009-03-21 03:11:16 +00001018.. data:: meta_path
1019
Brett Cannonccddbb12015-12-04 15:46:21 -08001020 A list of :term:`meta path finder` objects that have their
1021 :meth:`~importlib.abc.MetaPathFinder.find_spec` methods called to see if one
1022 of the objects can find the module to be imported. The
1023 :meth:`~importlib.abc.MetaPathFinder.find_spec` method is called with at
1024 least the absolute name of the module being imported. If the module to be
1025 imported is contained in a package, then the parent package's :attr:`__path__`
1026 attribute is passed in as a second argument. The method returns a
1027 :term:`module spec`, or ``None`` if the module cannot be found.
Brett Cannone43b0602009-03-21 03:11:16 +00001028
Brett Cannonccddbb12015-12-04 15:46:21 -08001029 .. seealso::
Brett Cannone43b0602009-03-21 03:11:16 +00001030
Brett Cannonccddbb12015-12-04 15:46:21 -08001031 :class:`importlib.abc.MetaPathFinder`
1032 The abstract base class defining the interface of finder objects on
1033 :data:`meta_path`.
1034 :class:`importlib.machinery.ModuleSpec`
1035 The concrete class which
1036 :meth:`~importlib.abc.MetaPathFinder.find_spec` should return
1037 instances of.
Brett Cannone43b0602009-03-21 03:11:16 +00001038
Brett Cannonccddbb12015-12-04 15:46:21 -08001039 .. versionchanged:: 3.4
1040
1041 :term:`Module specs <module spec>` were introduced in Python 3.4, by
1042 :pep:`451`. Earlier versions of Python looked for a method called
1043 :meth:`~importlib.abc.MetaPathFinder.find_module`.
1044 This is still called as a fallback if a :data:`meta_path` entry doesn't
1045 have a :meth:`~importlib.abc.MetaPathFinder.find_spec` method.
Brett Cannone43b0602009-03-21 03:11:16 +00001046
Georg Brandl116aa622007-08-15 14:28:22 +00001047.. data:: modules
1048
1049 This is a dictionary that maps module names to modules which have already been
1050 loaded. This can be manipulated to force reloading of modules and other tricks.
Brett Cannonc3511c12013-05-24 08:05:07 -04001051 However, replacing the dictionary will not necessarily work as expected and
1052 deleting essential items from the dictionary may cause Python to fail.
Georg Brandl116aa622007-08-15 14:28:22 +00001053
1054
1055.. data:: path
1056
1057 .. index:: triple: module; search; path
1058
1059 A list of strings that specifies the search path for modules. Initialized from
1060 the environment variable :envvar:`PYTHONPATH`, plus an installation-dependent
1061 default.
1062
1063 As initialized upon program startup, the first item of this list, ``path[0]``,
1064 is the directory containing the script that was used to invoke the Python
1065 interpreter. If the script directory is not available (e.g. if the interpreter
1066 is invoked interactively or if the script is read from standard input),
1067 ``path[0]`` is the empty string, which directs Python to search modules in the
1068 current directory first. Notice that the script directory is inserted *before*
1069 the entries inserted as a result of :envvar:`PYTHONPATH`.
1070
Barry Warsaw82c1c782012-11-20 15:22:51 -05001071 A program is free to modify this list for its own purposes. Only strings
1072 and bytes should be added to :data:`sys.path`; all other data types are
1073 ignored during import.
Georg Brandl116aa622007-08-15 14:28:22 +00001074
Georg Brandl116aa622007-08-15 14:28:22 +00001075
Benjamin Peterson058e31e2009-01-16 03:54:08 +00001076 .. seealso::
1077 Module :mod:`site` This describes how to use .pth files to extend
1078 :data:`sys.path`.
1079
1080
Brett Cannone43b0602009-03-21 03:11:16 +00001081.. data:: path_hooks
1082
1083 A list of callables that take a path argument to try to create a
1084 :term:`finder` for the path. If a finder can be created, it is to be
1085 returned by the callable, else raise :exc:`ImportError`.
1086
1087 Originally specified in :pep:`302`.
1088
1089
1090.. data:: path_importer_cache
1091
1092 A dictionary acting as a cache for :term:`finder` objects. The keys are
1093 paths that have been passed to :data:`sys.path_hooks` and the values are
1094 the finders that are found. If a path is a valid file system path but no
Brett Cannon2514b482013-03-13 10:46:22 -07001095 finder is found on :data:`sys.path_hooks` then ``None`` is
1096 stored.
Brett Cannone43b0602009-03-21 03:11:16 +00001097
1098 Originally specified in :pep:`302`.
1099
Brett Cannon2514b482013-03-13 10:46:22 -07001100 .. versionchanged:: 3.3
1101 ``None`` is stored instead of :class:`imp.NullImporter` when no finder
1102 is found.
1103
Brett Cannone43b0602009-03-21 03:11:16 +00001104
Georg Brandl116aa622007-08-15 14:28:22 +00001105.. data:: platform
1106
Christian Heimes9bd667a2008-01-20 15:14:11 +00001107 This string contains a platform identifier that can be used to append
1108 platform-specific components to :data:`sys.path`, for instance.
1109
Michael Felt9d949f72019-04-12 16:15:32 +02001110 For Unix systems, except on Linux and AIX, this is the lowercased OS name as
Victor Stinner795eaeb2011-08-21 12:08:11 +02001111 returned by ``uname -s`` with the first part of the version as returned by
1112 ``uname -r`` appended, e.g. ``'sunos5'`` or ``'freebsd8'``, *at the time
1113 when Python was built*. Unless you want to test for a specific system
1114 version, it is therefore recommended to use the following idiom::
Antoine Pitroua83cdaa2011-07-09 15:54:23 +02001115
Victor Stinner795eaeb2011-08-21 12:08:11 +02001116 if sys.platform.startswith('freebsd'):
1117 # FreeBSD-specific code here...
Georg Brandla47e53e2011-09-03 09:26:09 +02001118 elif sys.platform.startswith('linux'):
Antoine Pitroua83cdaa2011-07-09 15:54:23 +02001119 # Linux-specific code here...
Michael Felt9d949f72019-04-12 16:15:32 +02001120 elif sys.platform.startswith('aix'):
1121 # AIX-specific code here...
Antoine Pitroua83cdaa2011-07-09 15:54:23 +02001122
Christian Heimes9bd667a2008-01-20 15:14:11 +00001123 For other systems, the values are:
1124
1125 ================ ===========================
Éric Araujo3f7c0e42012-12-08 22:53:43 -05001126 System ``platform`` value
Christian Heimes9bd667a2008-01-20 15:14:11 +00001127 ================ ===========================
Michael Felt9d949f72019-04-12 16:15:32 +02001128 AIX ``'aix'``
Victor Stinner795eaeb2011-08-21 12:08:11 +02001129 Linux ``'linux'``
Christian Heimes9bd667a2008-01-20 15:14:11 +00001130 Windows ``'win32'``
1131 Windows/Cygwin ``'cygwin'``
pxinwrf4b0a1c2019-03-04 17:02:06 +08001132 macOS ``'darwin'``
Christian Heimes9bd667a2008-01-20 15:14:11 +00001133 ================ ===========================
Georg Brandl116aa622007-08-15 14:28:22 +00001134
Victor Stinner795eaeb2011-08-21 12:08:11 +02001135 .. versionchanged:: 3.3
1136 On Linux, :attr:`sys.platform` doesn't contain the major version anymore.
Georg Brandlfbd1e042011-09-04 08:42:26 +02001137 It is always ``'linux'``, instead of ``'linux2'`` or ``'linux3'``. Since
1138 older Python versions include the version number, it is recommended to
1139 always use the ``startswith`` idiom presented above.
Victor Stinner795eaeb2011-08-21 12:08:11 +02001140
Michael Felt9d949f72019-04-12 16:15:32 +02001141 .. versionchanged:: 3.8
1142 On AIX, :attr:`sys.platform` doesn't contain the major version anymore.
1143 It is always ``'aix'``, instead of ``'aix5'`` or ``'aix7'``. Since
1144 older Python versions include the version number, it is recommended to
1145 always use the ``startswith`` idiom presented above.
1146
Antoine Pitroua83cdaa2011-07-09 15:54:23 +02001147 .. seealso::
Georg Brandleb25fb72012-02-23 21:12:39 +01001148
Antoine Pitroua83cdaa2011-07-09 15:54:23 +02001149 :attr:`os.name` has a coarser granularity. :func:`os.uname` gives
1150 system-dependent version information.
1151
1152 The :mod:`platform` module provides detailed checks for the
1153 system's identity.
Georg Brandl116aa622007-08-15 14:28:22 +00001154
Georg Brandlfbd1e042011-09-04 08:42:26 +02001155
Victor Stinner8510f432020-03-10 09:53:09 +01001156.. data:: platlibdir
1157
1158 Name of the platform-specific library directory. It is used to build the
Miss Islington (bot)a5936ad2020-05-28 09:41:31 -07001159 path of standard library and the paths of installed extension modules.
Victor Stinner8510f432020-03-10 09:53:09 +01001160
1161 It is equal to ``"lib"`` on most platforms. On Fedora and SuSE, it is equal
1162 to ``"lib64"`` on 64-bit platforms which gives the following ``sys.path``
1163 paths (where ``X.Y`` is the Python ``major.minor`` version):
1164
1165 * ``/usr/lib64/pythonX.Y/``:
1166 Standard library (like ``os.py`` of the :mod:`os` module)
1167 * ``/usr/lib64/pythonX.Y/lib-dynload/``:
1168 C extension modules of the standard library (like the :mod:`errno` module,
1169 the exact filename is platform specific)
Miss Islington (bot)a5936ad2020-05-28 09:41:31 -07001170 * ``/usr/lib/pythonX.Y/site-packages/`` (always use ``lib``, not
Victor Stinner8510f432020-03-10 09:53:09 +01001171 :data:`sys.platlibdir`): Third-party modules
Miss Islington (bot)a5936ad2020-05-28 09:41:31 -07001172 * ``/usr/lib64/pythonX.Y/site-packages/``:
1173 C extension modules of third-party packages
Victor Stinner8510f432020-03-10 09:53:09 +01001174
1175 .. versionadded:: 3.9
1176
1177
Georg Brandl116aa622007-08-15 14:28:22 +00001178.. data:: prefix
1179
1180 A string giving the site-specific directory prefix where the platform
1181 independent Python files are installed; by default, this is the string
Éric Araujo713d3032010-11-18 16:38:46 +00001182 ``'/usr/local'``. This can be set at build time with the ``--prefix``
Georg Brandl116aa622007-08-15 14:28:22 +00001183 argument to the :program:`configure` script. The main collection of Python
Georg Brandla673eb82012-03-04 16:17:05 +01001184 library modules is installed in the directory :file:`{prefix}/lib/python{X.Y}`
Georg Brandl116aa622007-08-15 14:28:22 +00001185 while the platform independent header files (all except :file:`pyconfig.h`) are
Georg Brandleb25fb72012-02-23 21:12:39 +01001186 stored in :file:`{prefix}/include/python{X.Y}`, where *X.Y* is the version
Éric Araujo58a91532011-10-05 01:28:24 +02001187 number of Python, for example ``3.2``.
Georg Brandl116aa622007-08-15 14:28:22 +00001188
Vinay Sajipcd9b7462012-07-09 10:37:01 +01001189 .. note:: If a :ref:`virtual environment <venv-def>` is in effect, this
1190 value will be changed in ``site.py`` to point to the virtual
1191 environment. The value for the Python installation will still be
1192 available, via :data:`base_prefix`.
Vinay Sajip7ded1f02012-05-26 03:45:29 +01001193
Georg Brandl116aa622007-08-15 14:28:22 +00001194
1195.. data:: ps1
1196 ps2
1197
1198 .. index::
1199 single: interpreter prompts
1200 single: prompts, interpreter
Serhiy Storchakaddb961d2018-10-26 09:00:49 +03001201 single: >>>; interpreter prompt
1202 single: ...; interpreter prompt
Georg Brandl116aa622007-08-15 14:28:22 +00001203
1204 Strings specifying the primary and secondary prompt of the interpreter. These
1205 are only defined if the interpreter is in interactive mode. Their initial
1206 values in this case are ``'>>> '`` and ``'... '``. If a non-string object is
1207 assigned to either variable, its :func:`str` is re-evaluated each time the
1208 interpreter prepares to read a new interactive command; this can be used to
1209 implement a dynamic prompt.
1210
1211
Georg Brandl116aa622007-08-15 14:28:22 +00001212.. function:: setdlopenflags(n)
1213
Georg Brandl60203b42010-10-06 10:11:56 +00001214 Set the flags used by the interpreter for :c:func:`dlopen` calls, such as when
Georg Brandl116aa622007-08-15 14:28:22 +00001215 the interpreter loads extension modules. Among other things, this will enable a
1216 lazy resolving of symbols when importing a module, if called as
1217 ``sys.setdlopenflags(0)``. To share symbols across extension modules, call as
Andrew Kuchlingc61b9132013-06-21 10:58:41 -04001218 ``sys.setdlopenflags(os.RTLD_GLOBAL)``. Symbolic names for the flag values
Victor Stinner8b905bd2011-10-25 13:34:04 +02001219 can be found in the :mod:`os` module (``RTLD_xxx`` constants, e.g.
1220 :data:`os.RTLD_LAZY`).
1221
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001222 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001223
Georg Brandl116aa622007-08-15 14:28:22 +00001224.. function:: setprofile(profilefunc)
1225
1226 .. index::
1227 single: profile function
1228 single: profiler
1229
1230 Set the system's profile function, which allows you to implement a Python source
1231 code profiler in Python. See chapter :ref:`profile` for more information on the
1232 Python profiler. The system's profile function is called similarly to the
Pablo Galindo131fd7f2018-01-24 12:57:49 +00001233 system's trace function (see :func:`settrace`), but it is called with different events,
1234 for example it isn't called for each executed line of code (only on call and return,
1235 but the return event is reported even when an exception has been set). The function is
1236 thread-specific, but there is no way for the profiler to know about context switches between
1237 threads, so it does not make sense to use this in the presence of multiple threads. Also,
Xiang Zhang60da99b2018-01-27 23:04:47 +08001238 its return value is not used, so it can simply return ``None``. Error in the profile
1239 function will cause itself unset.
Georg Brandl116aa622007-08-15 14:28:22 +00001240
Pablo Galindo131fd7f2018-01-24 12:57:49 +00001241 Profile functions should have three arguments: *frame*, *event*, and
1242 *arg*. *frame* is the current stack frame. *event* is a string: ``'call'``,
1243 ``'return'``, ``'c_call'``, ``'c_return'``, or ``'c_exception'``. *arg* depends
1244 on the event type.
1245
Steve Dower44f91c32019-06-27 10:47:59 -07001246 .. audit-event:: sys.setprofile "" sys.setprofile
Steve Dowerb82e17e2019-05-23 08:45:22 -07001247
Pablo Galindo131fd7f2018-01-24 12:57:49 +00001248 The events have the following meaning:
1249
1250 ``'call'``
1251 A function is called (or some other code block entered). The
1252 profile function is called; *arg* is ``None``.
1253
1254 ``'return'``
1255 A function (or other code block) is about to return. The profile
1256 function is called; *arg* is the value that will be returned, or ``None``
1257 if the event is caused by an exception being raised.
1258
1259 ``'c_call'``
1260 A C function is about to be called. This may be an extension function or
1261 a built-in. *arg* is the C function object.
1262
1263 ``'c_return'``
1264 A C function has returned. *arg* is the C function object.
1265
1266 ``'c_exception'``
1267 A C function has raised an exception. *arg* is the C function object.
Georg Brandl116aa622007-08-15 14:28:22 +00001268
1269.. function:: setrecursionlimit(limit)
1270
1271 Set the maximum depth of the Python interpreter stack to *limit*. This limit
1272 prevents infinite recursion from causing an overflow of the C stack and crashing
1273 Python.
1274
1275 The highest possible limit is platform-dependent. A user may need to set the
Georg Brandl51663752011-05-13 06:55:28 +02001276 limit higher when they have a program that requires deep recursion and a platform
Georg Brandl116aa622007-08-15 14:28:22 +00001277 that supports a higher limit. This should be done with care, because a too-high
1278 limit can lead to a crash.
1279
Victor Stinner50856d52015-10-13 00:11:21 +02001280 If the new limit is too low at the current recursion depth, a
1281 :exc:`RecursionError` exception is raised.
1282
1283 .. versionchanged:: 3.5.1
1284 A :exc:`RecursionError` exception is now raised if the new limit is too
1285 low at the current recursion depth.
1286
Georg Brandl116aa622007-08-15 14:28:22 +00001287
Antoine Pitroud42bc512009-11-10 23:18:31 +00001288.. function:: setswitchinterval(interval)
1289
1290 Set the interpreter's thread switch interval (in seconds). This floating-point
1291 value determines the ideal duration of the "timeslices" allocated to
1292 concurrently running Python threads. Please note that the actual value
1293 can be higher, especially if long-running internal functions or methods
1294 are used. Also, which thread becomes scheduled at the end of the interval
1295 is the operating system's decision. The interpreter doesn't have its
1296 own scheduler.
1297
Antoine Pitrou79707ca2009-11-11 22:03:32 +00001298 .. versionadded:: 3.2
1299
Antoine Pitroud42bc512009-11-10 23:18:31 +00001300
Georg Brandl116aa622007-08-15 14:28:22 +00001301.. function:: settrace(tracefunc)
1302
1303 .. index::
1304 single: trace function
1305 single: debugger
1306
1307 Set the system's trace function, which allows you to implement a Python
Amaury Forgeot d'Arcb0c29162008-11-22 22:18:04 +00001308 source code debugger in Python. The function is thread-specific; for a
Stefan Hoelzl245f5282019-05-17 10:50:03 +02001309 debugger to support multiple threads, it must register a trace function using
1310 :func:`settrace` for each thread being debugged or use :func:`threading.settrace`.
Georg Brandl116aa622007-08-15 14:28:22 +00001311
Amaury Forgeot d'Arcb0c29162008-11-22 22:18:04 +00001312 Trace functions should have three arguments: *frame*, *event*, and
1313 *arg*. *frame* is the current stack frame. *event* is a string: ``'call'``,
Pablo Galindo131fd7f2018-01-24 12:57:49 +00001314 ``'line'``, ``'return'``, ``'exception'`` or ``'opcode'``. *arg* depends on
1315 the event type.
Amaury Forgeot d'Arcb0c29162008-11-22 22:18:04 +00001316
1317 The trace function is invoked (with *event* set to ``'call'``) whenever a new
1318 local scope is entered; it should return a reference to a local trace
Andre Delfino3038e872019-09-05 08:10:37 -03001319 function to be used for the new scope, or ``None`` if the scope shouldn't be
1320 traced.
Amaury Forgeot d'Arcb0c29162008-11-22 22:18:04 +00001321
1322 The local trace function should return a reference to itself (or to another
1323 function for further tracing in that scope), or ``None`` to turn off tracing
1324 in that scope.
1325
Xiang Zhang60da99b2018-01-27 23:04:47 +08001326 If there is any error occurred in the trace function, it will be unset, just
1327 like ``settrace(None)`` is called.
1328
Amaury Forgeot d'Arcb0c29162008-11-22 22:18:04 +00001329 The events have the following meaning:
1330
Georg Brandl48310cd2009-01-03 21:18:54 +00001331 ``'call'``
Amaury Forgeot d'Arcb0c29162008-11-22 22:18:04 +00001332 A function is called (or some other code block entered). The
1333 global trace function is called; *arg* is ``None``; the return value
1334 specifies the local trace function.
1335
1336 ``'line'``
Alexandre Vassalotti7b82b402009-07-21 04:30:03 +00001337 The interpreter is about to execute a new line of code or re-execute the
1338 condition of a loop. The local trace function is called; *arg* is
1339 ``None``; the return value specifies the new local trace function. See
1340 :file:`Objects/lnotab_notes.txt` for a detailed explanation of how this
1341 works.
Nick Coghlan5a851672017-09-08 10:14:16 +10001342 Per-line events may be disabled for a frame by setting
1343 :attr:`f_trace_lines` to :const:`False` on that frame.
Amaury Forgeot d'Arcb0c29162008-11-22 22:18:04 +00001344
1345 ``'return'``
1346 A function (or other code block) is about to return. The local trace
Georg Brandld0b0e1d2010-10-15 16:42:37 +00001347 function is called; *arg* is the value that will be returned, or ``None``
1348 if the event is caused by an exception being raised. The trace function's
1349 return value is ignored.
Amaury Forgeot d'Arcb0c29162008-11-22 22:18:04 +00001350
1351 ``'exception'``
1352 An exception has occurred. The local trace function is called; *arg* is a
1353 tuple ``(exception, value, traceback)``; the return value specifies the
1354 new local trace function.
1355
Nick Coghlan5a851672017-09-08 10:14:16 +10001356 ``'opcode'``
1357 The interpreter is about to execute a new opcode (see :mod:`dis` for
1358 opcode details). The local trace function is called; *arg* is
1359 ``None``; the return value specifies the new local trace function.
1360 Per-opcode events are not emitted by default: they must be explicitly
1361 requested by setting :attr:`f_trace_opcodes` to :const:`True` on the
1362 frame.
1363
Amaury Forgeot d'Arcb0c29162008-11-22 22:18:04 +00001364 Note that as an exception is propagated down the chain of callers, an
1365 ``'exception'`` event is generated at each level.
1366
Ram Rachum9c2682e2019-09-20 18:19:02 +03001367 For more fine-grained usage, it's possible to set a trace function by
1368 assigning ``frame.f_trace = tracefunc`` explicitly, rather than relying on
1369 it being set indirectly via the return value from an already installed
1370 trace function. This is also required for activating the trace function on
1371 the current frame, which :func:`settrace` doesn't do. Note that in order
1372 for this to work, a global tracing function must have been installed
1373 with :func:`settrace` in order to enable the runtime tracing machinery,
1374 but it doesn't need to be the same tracing function (e.g. it could be a
1375 low overhead tracing function that simply returns ``None`` to disable
1376 itself immediately on each frame).
1377
Amaury Forgeot d'Arcb0c29162008-11-22 22:18:04 +00001378 For more information on code and frame objects, refer to :ref:`types`.
1379
Steve Dower44f91c32019-06-27 10:47:59 -07001380 .. audit-event:: sys.settrace "" sys.settrace
Steve Dowerb82e17e2019-05-23 08:45:22 -07001381
Georg Brandl495f7b52009-10-27 15:28:25 +00001382 .. impl-detail::
Georg Brandl116aa622007-08-15 14:28:22 +00001383
1384 The :func:`settrace` function is intended only for implementing debuggers,
Georg Brandl495f7b52009-10-27 15:28:25 +00001385 profilers, coverage tools and the like. Its behavior is part of the
1386 implementation platform, rather than part of the language definition, and
1387 thus may not be available in all Python implementations.
Georg Brandl116aa622007-08-15 14:28:22 +00001388
Nick Coghlan5a851672017-09-08 10:14:16 +10001389 .. versionchanged:: 3.7
1390
1391 ``'opcode'`` event type added; :attr:`f_trace_lines` and
1392 :attr:`f_trace_opcodes` attributes added to frames
1393
Yury Selivanov03660042016-12-15 17:36:05 -05001394.. function:: set_asyncgen_hooks(firstiter, finalizer)
1395
1396 Accepts two optional keyword arguments which are callables that accept an
1397 :term:`asynchronous generator iterator` as an argument. The *firstiter*
1398 callable will be called when an asynchronous generator is iterated for the
1399 first time. The *finalizer* will be called when an asynchronous generator
1400 is about to be garbage collected.
1401
Steve Dower44f91c32019-06-27 10:47:59 -07001402 .. audit-event:: sys.set_asyncgen_hooks_firstiter "" sys.set_asyncgen_hooks
Steve Dowerb82e17e2019-05-23 08:45:22 -07001403
Steve Dower44f91c32019-06-27 10:47:59 -07001404 .. audit-event:: sys.set_asyncgen_hooks_finalizer "" sys.set_asyncgen_hooks
Steve Dowerb82e17e2019-05-23 08:45:22 -07001405
1406 Two auditing events are raised because the underlying API consists of two
1407 calls, each of which must raise its own event.
1408
Yury Selivanov03660042016-12-15 17:36:05 -05001409 .. versionadded:: 3.6
1410 See :pep:`525` for more details, and for a reference example of a
1411 *finalizer* method see the implementation of
1412 ``asyncio.Loop.shutdown_asyncgens`` in
1413 :source:`Lib/asyncio/base_events.py`
1414
1415 .. note::
1416 This function has been added on a provisional basis (see :pep:`411`
1417 for details.)
1418
Nathaniel J. Smithfc2f4072018-01-21 06:44:07 -08001419.. function:: set_coroutine_origin_tracking_depth(depth)
1420
1421 Allows enabling or disabling coroutine origin tracking. When
1422 enabled, the ``cr_origin`` attribute on coroutine objects will
1423 contain a tuple of (filename, line number, function name) tuples
1424 describing the traceback where the coroutine object was created,
1425 with the most recent call first. When disabled, ``cr_origin`` will
1426 be None.
1427
1428 To enable, pass a *depth* value greater than zero; this sets the
1429 number of frames whose information will be captured. To disable,
1430 pass set *depth* to zero.
1431
1432 This setting is thread-specific.
1433
1434 .. versionadded:: 3.7
1435
1436 .. note::
1437 This function has been added on a provisional basis (see :pep:`411`
1438 for details.) Use it only for debugging purposes.
Georg Brandl116aa622007-08-15 14:28:22 +00001439
Steve Dowercc16be82016-09-08 10:35:16 -07001440.. function:: _enablelegacywindowsfsencoding()
1441
1442 Changes the default filesystem encoding and errors mode to 'mbcs' and
1443 'replace' respectively, for consistency with versions of Python prior to 3.6.
1444
1445 This is equivalent to defining the :envvar:`PYTHONLEGACYWINDOWSFSENCODING`
1446 environment variable before launching Python.
1447
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001448 .. availability:: Windows.
Steve Dowercc16be82016-09-08 10:35:16 -07001449
1450 .. versionadded:: 3.6
1451 See :pep:`529` for more details.
Yury Selivanovd4cbbeb2015-05-31 17:13:08 -04001452
Georg Brandl116aa622007-08-15 14:28:22 +00001453.. data:: stdin
1454 stdout
1455 stderr
1456
Antoine Pitrou7158e062011-12-15 16:25:34 +01001457 :term:`File objects <file object>` used by the interpreter for standard
1458 input, output and errors:
Georg Brandl116aa622007-08-15 14:28:22 +00001459
Antoine Pitrou7158e062011-12-15 16:25:34 +01001460 * ``stdin`` is used for all interactive input (including calls to
1461 :func:`input`);
1462 * ``stdout`` is used for the output of :func:`print` and :term:`expression`
1463 statements and for the prompts of :func:`input`;
1464 * The interpreter's own prompts and its error messages go to ``stderr``.
1465
Antoine Pitrou2d1ec062014-05-15 22:38:56 +02001466 These streams are regular :term:`text files <text file>` like those
1467 returned by the :func:`open` function. Their parameters are chosen as
1468 follows:
Antoine Pitrou7158e062011-12-15 16:25:34 +01001469
Lysandros Nikolaou57232632019-02-15 00:35:25 +01001470 * The character encoding is platform-dependent. Non-Windows
1471 platforms use the locale encoding (see
1472 :meth:`locale.getpreferredencoding()`).
Antoine Pitrou7158e062011-12-15 16:25:34 +01001473
Lysandros Nikolaou57232632019-02-15 00:35:25 +01001474 On Windows, UTF-8 is used for the console device. Non-character
1475 devices such as disk files and pipes use the system locale
1476 encoding (i.e. the ANSI codepage). Non-console character
Serhiy Storchaka138ccbb2019-11-12 16:57:03 +02001477 devices such as NUL (i.e. where ``isatty()`` returns ``True``) use the
Lysandros Nikolaou57232632019-02-15 00:35:25 +01001478 value of the console input and output codepages at startup,
1479 respectively for stdin and stdout/stderr. This defaults to the
1480 system locale encoding if the process is not initially attached
1481 to a console.
1482
1483 The special behaviour of the console can be overridden
1484 by setting the environment variable PYTHONLEGACYWINDOWSSTDIO
1485 before starting Python. In that case, the console codepages are
1486 used as for any other character device.
1487
1488 Under all platforms, you can override the character encoding by
1489 setting the :envvar:`PYTHONIOENCODING` environment variable before
1490 starting Python or by using the new :option:`-X` ``utf8`` command
1491 line option and :envvar:`PYTHONUTF8` environment variable. However,
1492 for the Windows console, this only applies when
1493 :envvar:`PYTHONLEGACYWINDOWSSTDIO` is also set.
Antoine Pitrou7158e062011-12-15 16:25:34 +01001494
Jendrik Seipp5b907712020-01-01 23:21:43 +01001495 * When interactive, the ``stdout`` stream is line-buffered. Otherwise,
1496 it is block-buffered like regular text files. The ``stderr`` stream
1497 is line-buffered in both cases. You can make both streams unbuffered
1498 by passing the :option:`-u` command-line option or setting the
1499 :envvar:`PYTHONUNBUFFERED` environment variable.
1500
1501 .. versionchanged:: 3.9
1502 Non-interactive ``stderr`` is now line-buffered instead of fully
1503 buffered.
Antoine Pitrou7158e062011-12-15 16:25:34 +01001504
Antoine Pitrou2d1ec062014-05-15 22:38:56 +02001505 .. note::
Benjamin Peterson4199d602009-05-12 20:47:57 +00001506
Antoine Pitrou2d1ec062014-05-15 22:38:56 +02001507 To write or read binary data from/to the standard streams, use the
1508 underlying binary :data:`~io.TextIOBase.buffer` object. For example, to
1509 write bytes to :data:`stdout`, use ``sys.stdout.buffer.write(b'abc')``.
Benjamin Peterson995bb472009-06-14 18:41:18 +00001510
Antoine Pitrou2d1ec062014-05-15 22:38:56 +02001511 However, if you are writing a library (and do not control in which
1512 context its code will be executed), be aware that the standard streams
1513 may be replaced with file-like objects like :class:`io.StringIO` which
1514 do not support the :attr:`~io.BufferedIOBase.buffer` attribute.
Benjamin Petersoneb9fc522008-12-07 14:58:03 +00001515
Georg Brandl116aa622007-08-15 14:28:22 +00001516
1517.. data:: __stdin__
1518 __stdout__
1519 __stderr__
1520
1521 These objects contain the original values of ``stdin``, ``stderr`` and
Benjamin Petersond23f8222009-04-05 19:13:16 +00001522 ``stdout`` at the start of the program. They are used during finalization,
1523 and could be useful to print to the actual standard stream no matter if the
1524 ``sys.std*`` object has been redirected.
Georg Brandl116aa622007-08-15 14:28:22 +00001525
Benjamin Petersond23f8222009-04-05 19:13:16 +00001526 It can also be used to restore the actual files to known working file objects
1527 in case they have been overwritten with a broken object. However, the
1528 preferred way to do this is to explicitly save the previous stream before
1529 replacing it, and restore the saved object.
Christian Heimes58cb1b82007-11-13 02:19:40 +00001530
Benjamin Petersond23f8222009-04-05 19:13:16 +00001531 .. note::
1532 Under some conditions ``stdin``, ``stdout`` and ``stderr`` as well as the
1533 original values ``__stdin__``, ``__stdout__`` and ``__stderr__`` can be
Serhiy Storchakaecf41da2016-10-19 16:29:26 +03001534 ``None``. It is usually the case for Windows GUI apps that aren't connected
Benjamin Petersond23f8222009-04-05 19:13:16 +00001535 to a console and Python apps started with :program:`pythonw`.
Christian Heimes58cb1b82007-11-13 02:19:40 +00001536
Georg Brandl116aa622007-08-15 14:28:22 +00001537
Victor Stinnerd5c355c2011-04-30 14:53:09 +02001538.. data:: thread_info
1539
Raymond Hettinger71170742019-09-11 07:17:32 -07001540 A :term:`named tuple` holding information about the thread
Victor Stinnerd5c355c2011-04-30 14:53:09 +02001541 implementation.
1542
Georg Brandl44ea77b2013-03-28 13:28:44 +01001543 .. tabularcolumns:: |l|p{0.7\linewidth}|
1544
Victor Stinnerd5c355c2011-04-30 14:53:09 +02001545 +------------------+---------------------------------------------------------+
1546 | Attribute | Explanation |
1547 +==================+=========================================================+
1548 | :const:`name` | Name of the thread implementation: |
1549 | | |
1550 | | * ``'nt'``: Windows threads |
Victor Stinnerd5c355c2011-04-30 14:53:09 +02001551 | | * ``'pthread'``: POSIX threads |
1552 | | * ``'solaris'``: Solaris threads |
1553 +------------------+---------------------------------------------------------+
1554 | :const:`lock` | Name of the lock implementation: |
1555 | | |
1556 | | * ``'semaphore'``: a lock uses a semaphore |
1557 | | * ``'mutex+cond'``: a lock uses a mutex |
1558 | | and a condition variable |
1559 | | * ``None`` if this information is unknown |
1560 +------------------+---------------------------------------------------------+
1561 | :const:`version` | Name and version of the thread library. It is a string, |
luzpaza5293b42017-11-05 07:37:50 -06001562 | | or ``None`` if this information is unknown. |
Victor Stinnerd5c355c2011-04-30 14:53:09 +02001563 +------------------+---------------------------------------------------------+
1564
1565 .. versionadded:: 3.3
1566
1567
Georg Brandl116aa622007-08-15 14:28:22 +00001568.. data:: tracebacklimit
1569
1570 When this variable is set to an integer value, it determines the maximum number
1571 of levels of traceback information printed when an unhandled exception occurs.
1572 The default is ``1000``. When set to ``0`` or less, all traceback information
1573 is suppressed and only the exception type and value are printed.
1574
1575
Victor Stinneref9d9b62019-05-22 11:28:22 +02001576.. function:: unraisablehook(unraisable, /)
1577
1578 Handle an unraisable exception.
1579
1580 Called when an exception has occurred but there is no way for Python to
1581 handle it. For example, when a destructor raises an exception or during
1582 garbage collection (:func:`gc.collect`).
1583
1584 The *unraisable* argument has the following attributes:
1585
1586 * *exc_type*: Exception type.
1587 * *exc_value*: Exception value, can be ``None``.
1588 * *exc_traceback*: Exception traceback, can be ``None``.
Victor Stinner71c52e32019-05-27 08:57:14 +02001589 * *err_msg*: Error message, can be ``None``.
Victor Stinneref9d9b62019-05-22 11:28:22 +02001590 * *object*: Object causing the exception, can be ``None``.
1591
Victor Stinner71c52e32019-05-27 08:57:14 +02001592 The default hook formats *err_msg* and *object* as:
1593 ``f'{err_msg}: {object!r}'``; use "Exception ignored in" error message
1594 if *err_msg* is ``None``.
1595
Victor Stinner212646c2019-06-14 18:03:22 +02001596 :func:`sys.unraisablehook` can be overridden to control how unraisable
1597 exceptions are handled.
1598
1599 Storing *exc_value* using a custom hook can create a reference cycle. It
1600 should be cleared explicitly to break the reference cycle when the
1601 exception is no longer needed.
1602
1603 Storing *object* using a custom hook can resurrect it if it is set to an
1604 object which is being finalized. Avoid storing *object* after the custom
1605 hook completes to avoid resurrecting objects.
1606
Victor Stinneref9d9b62019-05-22 11:28:22 +02001607 See also :func:`excepthook` which handles uncaught exceptions.
1608
Steve Dowerbea33f52019-11-28 08:46:11 -08001609 .. audit-event:: sys.unraisablehook hook,unraisable sys.unraisablehook
1610
1611 Raise an auditing event ``sys.unraisablehook`` with arguments
1612 ``hook``, ``unraisable`` when an exception that cannot be handled occurs.
1613 The ``unraisable`` object is the same as what will be passed to the hook.
1614 If no hook has been set, ``hook`` may be ``None``.
1615
Victor Stinneref9d9b62019-05-22 11:28:22 +02001616 .. versionadded:: 3.8
1617
Georg Brandl116aa622007-08-15 14:28:22 +00001618.. data:: version
1619
1620 A string containing the version number of the Python interpreter plus additional
Georg Brandle42a59d2010-07-31 20:05:31 +00001621 information on the build number and compiler used. This string is displayed
1622 when the interactive interpreter is started. Do not extract version information
1623 out of it, rather, use :data:`version_info` and the functions provided by the
1624 :mod:`platform` module.
Georg Brandl116aa622007-08-15 14:28:22 +00001625
1626
1627.. data:: api_version
1628
1629 The C API version for this interpreter. Programmers may find this useful when
1630 debugging version conflicts between Python and extension modules.
1631
Georg Brandl116aa622007-08-15 14:28:22 +00001632
1633.. data:: version_info
1634
1635 A tuple containing the five components of the version number: *major*, *minor*,
1636 *micro*, *releaselevel*, and *serial*. All values except *releaselevel* are
1637 integers; the release level is ``'alpha'``, ``'beta'``, ``'candidate'``, or
1638 ``'final'``. The ``version_info`` value corresponding to the Python version 2.0
Eric Smith0e5b5622009-02-06 01:32:42 +00001639 is ``(2, 0, 0, 'final', 0)``. The components can also be accessed by name,
1640 so ``sys.version_info[0]`` is equivalent to ``sys.version_info.major``
1641 and so on.
Georg Brandl116aa622007-08-15 14:28:22 +00001642
Raymond Hettinger35a88362009-04-09 00:08:24 +00001643 .. versionchanged:: 3.1
Georg Brandl67b21b72010-08-17 15:07:14 +00001644 Added named component attributes.
Georg Brandl116aa622007-08-15 14:28:22 +00001645
1646.. data:: warnoptions
1647
1648 This is an implementation detail of the warnings framework; do not modify this
1649 value. Refer to the :mod:`warnings` module for more information on the warnings
1650 framework.
1651
1652
1653.. data:: winver
1654
1655 The version number used to form registry keys on Windows platforms. This is
1656 stored as string resource 1000 in the Python DLL. The value is normally the
1657 first three characters of :const:`version`. It is provided in the :mod:`sys`
1658 module for informational purposes; modifying this value has no effect on the
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001659 registry keys used by Python.
1660
1661 .. availability:: Windows.
Mark Dickinsonbe5846b2010-07-02 20:26:07 +00001662
Antoine Pitrou9583cac2010-10-21 13:42:28 +00001663
1664.. data:: _xoptions
1665
1666 A dictionary of the various implementation-specific flags passed through
1667 the :option:`-X` command-line option. Option names are either mapped to
Martin Panter1050d2d2016-07-26 11:18:21 +02001668 their values, if given explicitly, or to :const:`True`. Example:
1669
1670 .. code-block:: shell-session
Antoine Pitrou9583cac2010-10-21 13:42:28 +00001671
1672 $ ./python -Xa=b -Xc
1673 Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50)
1674 [GCC 4.4.3] on linux2
1675 Type "help", "copyright", "credits" or "license" for more information.
1676 >>> import sys
1677 >>> sys._xoptions
1678 {'a': 'b', 'c': True}
1679
1680 .. impl-detail::
1681
1682 This is a CPython-specific way of accessing options passed through
1683 :option:`-X`. Other implementations may export them through other
1684 means, or not at all.
1685
1686 .. versionadded:: 3.2
1687
1688
Mark Dickinsonbe5846b2010-07-02 20:26:07 +00001689.. rubric:: Citations
1690
Serhiy Storchakaa4d170d2013-12-23 18:20:51 +02001691.. [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\ .