summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2021-08-06 11:11:12 (GMT)
committerGitHub <noreply@github.com>2021-08-06 11:11:12 (GMT)
commit4d77691172aae81bdcbb0ea75839d0e896c43781 (patch)
tree949ee8f8b183df1e23f5314eeeb8305475a321b1 /Python
parent938e84b4fa410f1a86f5e0708ebc3af6bb8efb0e (diff)
downloadcpython-4d77691172aae81bdcbb0ea75839d0e896c43781.zip
cpython-4d77691172aae81bdcbb0ea75839d0e896c43781.tar.gz
cpython-4d77691172aae81bdcbb0ea75839d0e896c43781.tar.bz2
bpo-44584: Deprecate PYTHONTHREADDEBUG env var (GH-27065)
The threading debug (PYTHONTHREADDEBUG environment variable) is deprecated in Python 3.10 and will be removed in Python 3.12. This feature requires a debug build of Python.
Diffstat (limited to 'Python')
-rw-r--r--Python/pylifecycle.c5
-rw-r--r--Python/thread.c19
2 files changed, 24 insertions, 0 deletions
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index d31a9c1..eeaf20b 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -1057,6 +1057,8 @@ pyinit_main_reconfigure(PyThreadState *tstate)
static PyStatus
init_interp_main(PyThreadState *tstate)
{
+ extern void _PyThread_debug_deprecation(void);
+
assert(!_PyErr_Occurred(tstate));
PyStatus status;
@@ -1158,6 +1160,9 @@ init_interp_main(PyThreadState *tstate)
#endif
}
+ // Warn about PYTHONTHREADDEBUG deprecation
+ _PyThread_debug_deprecation();
+
assert(!_PyErr_Occurred(tstate));
return _PyStatus_OK();
diff --git a/Python/thread.c b/Python/thread.c
index a10f572..dfe28b6 100644
--- a/Python/thread.c
+++ b/Python/thread.c
@@ -75,6 +75,25 @@ PyThread_init_thread(void)
PyThread__init_thread();
}
+void
+_PyThread_debug_deprecation(void)
+{
+#ifdef Py_DEBUG
+ if (thread_debug) {
+ // Flush previous dprintf() logs
+ fflush(stdout);
+ if (PyErr_WarnEx(PyExc_DeprecationWarning,
+ "The threading debug (PYTHONTHREADDEBUG environment "
+ "variable) is deprecated and will be removed "
+ "in Python 3.12",
+ 0))
+ {
+ _PyErr_WriteUnraisableMsg("at Python startup", NULL);
+ }
+ }
+#endif
+}
+
#if defined(_POSIX_THREADS)
# define PYTHREAD_NAME "pthread"
# include "thread_pthread.h"