summaryrefslogtreecommitdiffstats
path: root/Lib/asyncio/coroutines.py
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2017-11-20 15:14:07 (GMT)
committerGitHub <noreply@github.com>2017-11-20 15:14:07 (GMT)
commit44862df2eeec62adea20672b0fe2a5d3e160569e (patch)
treee8f66bbbd2b7769ca42a292f553a7ecacb29da57 /Lib/asyncio/coroutines.py
parent04dee2720851ec39e831beaa3edc0c59f228f461 (diff)
downloadcpython-44862df2eeec62adea20672b0fe2a5d3e160569e.zip
cpython-44862df2eeec62adea20672b0fe2a5d3e160569e.tar.gz
cpython-44862df2eeec62adea20672b0fe2a5d3e160569e.tar.bz2
bpo-32047: -X dev enables asyncio debug mode (#4418)
The new -X dev command line option now also enables asyncio debug mode.
Diffstat (limited to 'Lib/asyncio/coroutines.py')
-rw-r--r--Lib/asyncio/coroutines.py30
1 files changed, 19 insertions, 11 deletions
diff --git a/Lib/asyncio/coroutines.py b/Lib/asyncio/coroutines.py
index 520a309..a87c9f9 100644
--- a/Lib/asyncio/coroutines.py
+++ b/Lib/asyncio/coroutines.py
@@ -19,17 +19,25 @@ from .log import logger
# Opcode of "yield from" instruction
_YIELD_FROM = opcode.opmap['YIELD_FROM']
-# If you set _DEBUG to true, @coroutine will wrap the resulting
-# generator objects in a CoroWrapper instance (defined below). That
-# instance will log a message when the generator is never iterated
-# over, which may happen when you forget to use "yield from" with a
-# coroutine call. Note that the value of the _DEBUG flag is taken
-# when the decorator is used, so to be of any use it must be set
-# before you define your coroutines. A downside of using this feature
-# is that tracebacks show entries for the CoroWrapper.__next__ method
-# when _DEBUG is true.
-_DEBUG = (not sys.flags.ignore_environment and
- bool(os.environ.get('PYTHONASYNCIODEBUG')))
+
+def _is_debug_mode():
+ # If you set _DEBUG to true, @coroutine will wrap the resulting
+ # generator objects in a CoroWrapper instance (defined below). That
+ # instance will log a message when the generator is never iterated
+ # over, which may happen when you forget to use "yield from" with a
+ # coroutine call. Note that the value of the _DEBUG flag is taken
+ # when the decorator is used, so to be of any use it must be set
+ # before you define your coroutines. A downside of using this feature
+ # is that tracebacks show entries for the CoroWrapper.__next__ method
+ # when _DEBUG is true.
+ debug = (not sys.flags.ignore_environment and
+ bool(os.environ.get('PYTHONASYNCIODEBUG')))
+ if hasattr(sys, '_xoptions') and 'dev' in sys._xoptions:
+ debug = True
+ return debug
+
+
+_DEBUG = _is_debug_mode()
try: