@@ -173,7 +173,23 @@ def version_str(v):
173173except AttributeError :
174174 PY_IMPL_NAME = ''
175175
176- SUPPORT_GEVENT = os .getenv ('GEVENT_SUPPORT' , 'False' ) in ('True' , 'true' , '1' )
176+ ENV_TRUE_LOWER_VALUES = ('yes' , 'true' , '1' )
177+ ENV_FALSE_LOWER_VALUES = ('no' , 'false' , '0' )
178+
179+
180+ def is_true_in_env (env_key ):
181+ if isinstance (env_key , tuple ):
182+ # If a tuple, return True if any of those ends up being true.
183+ for v in env_key :
184+ if is_true_in_env (v ):
185+ return True
186+ return False
187+ else :
188+ return os .getenv (env_key , '' ).lower () in ENV_TRUE_LOWER_VALUES
189+
190+
191+ # If true in env, use gevent mode.
192+ SUPPORT_GEVENT = is_true_in_env ('GEVENT_SUPPORT' )
177193
178194GEVENT_SUPPORT_NOT_SET_MSG = os .getenv (
179195 'GEVENT_SUPPORT_NOT_SET_MSG' ,
@@ -187,14 +203,32 @@ def version_str(v):
187203
188204INTERACTIVE_MODE_AVAILABLE = sys .platform in ('darwin' , 'win32' ) or os .getenv ('DISPLAY' ) is not None
189205
190- SHOW_COMPILE_CYTHON_COMMAND_LINE = os .getenv ('PYDEVD_SHOW_COMPILE_CYTHON_COMMAND_LINE' , 'False' ) == 'True'
206+ # If true in env, forces cython to be used (raises error if not available).
207+ # If false in env, disables it.
208+ # If not specified, uses default heuristic to determine if it should be loaded.
209+ USE_CYTHON_FLAG = os .getenv ('PYDEVD_USE_CYTHON' )
210+
211+ # Use to disable loading the lib to set tracing to all threads (default is using heuristics based on where we're running).
212+ LOAD_NATIVE_LIB_FLAG = os .getenv ('PYDEVD_LOAD_NATIVE_LIB' , '' ).lower ()
213+
214+ if USE_CYTHON_FLAG is not None :
215+ USE_CYTHON_FLAG = USE_CYTHON_FLAG .lower ()
216+ if USE_CYTHON_FLAG not in ENV_TRUE_LOWER_VALUES and USE_CYTHON_FLAG not in ENV_FALSE_LOWER_VALUES :
217+ raise RuntimeError ('Unexpected value for PYDEVD_USE_CYTHON: %s (enable with one of: %s, disable with one of: %s)' % (
218+ USE_CYTHON_FLAG , ENV_TRUE_LOWER_VALUES , ENV_FALSE_LOWER_VALUES ))
219+
220+ else :
221+ if not CYTHON_SUPPORTED :
222+ USE_CYTHON_FLAG = 'no'
223+
224+ SHOW_COMPILE_CYTHON_COMMAND_LINE = is_true_in_env ('PYDEVD_SHOW_COMPILE_CYTHON_COMMAND_LINE' )
191225
192- LOAD_VALUES_ASYNC = os . getenv ('PYDEVD_LOAD_VALUES_ASYNC' , 'False' ) == 'True'
226+ LOAD_VALUES_ASYNC = is_true_in_env ('PYDEVD_LOAD_VALUES_ASYNC' )
193227DEFAULT_VALUE = "__pydevd_value_async"
194228ASYNC_EVAL_TIMEOUT_SEC = 60
195229NEXT_VALUE_SEPARATOR = "__pydev_val__"
196230BUILTINS_MODULE_NAME = '__builtin__' if IS_PY2 else 'builtins'
197- SHOW_DEBUG_INFO_ENV = os . getenv ( 'PYCHARM_DEBUG' ) == 'True' or os . getenv ( ' PYDEV_DEBUG') == 'True' or os . getenv ( ' PYDEVD_DEBUG' ) == 'True'
231+ SHOW_DEBUG_INFO_ENV = is_true_in_env (( 'PYCHARM_DEBUG' , ' PYDEV_DEBUG', ' PYDEVD_DEBUG' ))
198232
199233if SHOW_DEBUG_INFO_ENV :
200234 # show debug info before the debugger start
0 commit comments