mirror of
https://github.com/python/cpython.git
synced 2025-09-08 01:41:19 +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
|
@ -48,7 +48,7 @@ API_ISOLATED = 3
|
|||
INIT_LOOPS = 4
|
||||
MAX_HASH_SEED = 4294967295
|
||||
|
||||
ABI_THREAD = 't' if sysconfig.get_config_var('Py_GIL_DISABLED') else ''
|
||||
ABI_THREAD = 't' if support.Py_GIL_DISABLED else ''
|
||||
# PLATSTDLIB_LANDMARK copied from Modules/getpath.py
|
||||
if os.name == 'nt':
|
||||
PLATSTDLIB_LANDMARK = f'{sys.platlibdir}'
|
||||
|
@ -58,6 +58,8 @@ else:
|
|||
PLATSTDLIB_LANDMARK = (f'{sys.platlibdir}/python{VERSION_MAJOR}.'
|
||||
f'{VERSION_MINOR}{ABI_THREAD}/lib-dynload')
|
||||
|
||||
DEFAULT_THREAD_INHERIT_CONTEXT = 1 if support.Py_GIL_DISABLED else 0
|
||||
DEFAULT_CONTEXT_AWARE_WARNINGS = 1 if support.Py_GIL_DISABLED else 0
|
||||
|
||||
# If we are running from a build dir, but the stdlib has been installed,
|
||||
# some tests need to expect different results.
|
||||
|
@ -584,6 +586,8 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
|
|||
'tracemalloc': 0,
|
||||
'perf_profiling': 0,
|
||||
'import_time': False,
|
||||
'thread_inherit_context': DEFAULT_THREAD_INHERIT_CONTEXT,
|
||||
'context_aware_warnings': DEFAULT_CONTEXT_AWARE_WARNINGS,
|
||||
'code_debug_ranges': True,
|
||||
'show_ref_count': False,
|
||||
'dump_refs': False,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue