mirror of
https://github.com/python/cpython.git
synced 2025-12-31 04:23:37 +00:00
gh-128384: Use a context variable for warnings.catch_warnings (gh-130010)
Make `warnings.catch_warnings()` use a context variable for holding the warning filtering state if the `sys.flags.context_aware_warnings` flag is set to true. This makes using the context manager thread-safe in multi-threaded programs. Add the `sys.flags.thread_inherit_context` flag. If true, starting a new thread with `threading.Thread` will use a copy of the context from the caller of `Thread.start()`. Both these flags are set to true by default for the free-threaded build and false for the default build. Move the Python implementation of warnings.py into _py_warnings.py. Make _contextvars a builtin module. Co-authored-by: Kumar Aditya <kumaraditya@python.org>
This commit is contained in:
parent
e5237541a0
commit
d687900f98
41 changed files with 1851 additions and 960 deletions
21
Python/clinic/_contextvars.c.h
generated
Normal file
21
Python/clinic/_contextvars.c.h
generated
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/*[clinic input]
|
||||
preserve
|
||||
[clinic start generated code]*/
|
||||
|
||||
PyDoc_STRVAR(_contextvars_copy_context__doc__,
|
||||
"copy_context($module, /)\n"
|
||||
"--\n"
|
||||
"\n");
|
||||
|
||||
#define _CONTEXTVARS_COPY_CONTEXT_METHODDEF \
|
||||
{"copy_context", (PyCFunction)_contextvars_copy_context, METH_NOARGS, _contextvars_copy_context__doc__},
|
||||
|
||||
static PyObject *
|
||||
_contextvars_copy_context_impl(PyObject *module);
|
||||
|
||||
static PyObject *
|
||||
_contextvars_copy_context(PyObject *module, PyObject *Py_UNUSED(ignored))
|
||||
{
|
||||
return _contextvars_copy_context_impl(module);
|
||||
}
|
||||
/*[clinic end generated code: output=26e07024451baf52 input=a9049054013a1b77]*/
|
||||
Loading…
Add table
Add a link
Reference in a new issue