diff options
author | Victor Stinner <vstinner@python.org> | 2021-08-06 11:11:12 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-06 11:11:12 (GMT) |
commit | 4d77691172aae81bdcbb0ea75839d0e896c43781 (patch) | |
tree | 949ee8f8b183df1e23f5314eeeb8305475a321b1 /Python | |
parent | 938e84b4fa410f1a86f5e0708ebc3af6bb8efb0e (diff) | |
download | cpython-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.c | 5 | ||||
-rw-r--r-- | Python/thread.c | 19 |
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" |