clear_thread_local_info = None USING_FRAME_EVAL = False # "NO" means we should not use frame evaluation, 'YES' we should use it (and fail if not there) and unspecified uses if possible. use_frame_eval = os.environ.get('PYDEVD_USE_FRAME_EVAL', '').lower() if use_frame_eval in ENV_FALSE_LOWER_VALUES or USE_CYTHON_FLAG in ENV_FALSE_LOWER_VALUES or not USING_CYTHON: pass elif SUPPORT_GEVENT or (IS_PYTHON_STACKLESS and not IS_PY38_OR_GREATER): pass # i.e gevent and frame eval mode don't get along very well. # https://github.com/microsoft/debugpy/issues/189 # Same problem with Stackless. # https://github.com/stackless-dev/stackless/issues/240 elif use_frame_eval in ENV_TRUE_LOWER_VALUES: # Fail if unable to use from _pydevd_frame_eval.pydevd_frame_eval_cython_wrapper import frame_eval_func, stop_frame_eval, dummy_trace_dispatch, clear_thread_local_info USING_FRAME_EVAL = True else: # Try to use if possible if IS_PY36_OR_GREATER: try: from _pydevd_frame_eval.pydevd_frame_eval_cython_wrapper import frame_eval_func, stop_frame_eval, dummy_trace_dispatch, clear_thread_local_info USING_FRAME_EVAL = True except ImportError: pydev_log.show_compile_cython_command_line()
if use_cython == 'YES': # We must import the cython version if forcing cython from _pydevd_bundle.pydevd_cython_wrapper import trace_dispatch, global_cache_skips, global_cache_frame_skips, fix_top_level_trace_and_get_trace_func elif use_cython == 'NO': # Use the regular version if not forcing cython from _pydevd_bundle.pydevd_trace_dispatch_regular import trace_dispatch, global_cache_skips, global_cache_frame_skips, fix_top_level_trace_and_get_trace_func # @UnusedImport elif use_cython is None: # Regular: use fallback if not found and give message to user try: from _pydevd_bundle.pydevd_cython_wrapper import trace_dispatch, global_cache_skips, global_cache_frame_skips, fix_top_level_trace_and_get_trace_func # This version number is always available from _pydevd_bundle.pydevd_additional_thread_info_regular import version as regular_version # This version number from the already compiled cython extension from _pydevd_bundle.pydevd_cython_wrapper import version as cython_version if cython_version != regular_version: # delete_old_compiled_extensions() -- would be ok in dev mode but we don't want to erase # files from other python versions on release, so, just raise import error here. raise ImportError('Cython version of speedups does not match.') except ImportError: from _pydevd_bundle.pydevd_trace_dispatch_regular import trace_dispatch, global_cache_skips, global_cache_frame_skips, fix_top_level_trace_and_get_trace_func # @UnusedImport pydev_log.show_compile_cython_command_line() else: raise RuntimeError('Unexpected value for PYDEVD_USE_CYTHON: %s (accepted: YES, NO)' % (use_cython,))