debugpy 1.8.7__zip → 1.8.8__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {debugpy-1.8.7/src/debugpy.egg-info → debugpy-1.8.8}/PKG-INFO +1 -1
- {debugpy-1.8.7 → debugpy-1.8.8}/pyproject.toml +5 -2
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py +8 -1
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py +58 -24
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py +2 -1
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py +2 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py +12 -11
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py +8 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +195 -187
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx +4 -4
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py +1 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py +4 -4
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py +27 -24
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +2 -2
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py +2 -1
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py +17 -2
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c +651 -631
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py +2 -1
- debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/COPYING +21 -0
- debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/INSTALLER +1 -0
- debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/METADATA +77 -0
- debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/RECORD +42 -0
- debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/WHEEL +5 -0
- debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/direct_url.json +1 -0
- debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/top_level.txt +1 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py +134 -94
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c +7483 -5773
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx +134 -94
- debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py +1 -2
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py +1 -1
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt6.py +1 -1
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_loaders.py +27 -4
- debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +50 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd.py +19 -28
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/add_code_to_python_process.py +1 -1
- debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
- debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_script.py +4 -0
- debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
- debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp +11 -11
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
- debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.exe +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp +2 -4
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat +6 -8
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_file_utils.py +28 -40
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py +2 -1
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py +1 -1
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_tracing.py +4 -1
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_version.py +3 -3
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/adapter/servers.py +2 -2
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/__init__.py +2 -2
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/launcher/debuggee.py +2 -1
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/server/api.py +1 -1
- {debugpy-1.8.7 → debugpy-1.8.8/src/debugpy.egg-info}/PKG-INFO +1 -1
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy.egg-info/SOURCES.txt +8 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +0 -36
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/DESCRIPTION.md +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/LICENSE +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/MANIFEST.in +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/README.md +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/setup.cfg +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/setup.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/ThirdPartyNotices.txt +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/__main__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/_pydevd_packaging.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/_util.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/force_pydevd.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pyx +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py +0 -0
- /debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py → /debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/REQUESTED +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pxd +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/pydevd_sys_monitoring.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_coverage.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/README +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhook.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_pysrc.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_run_in_console.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevconsole.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_310.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_311.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_common.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/setup_pydevd_cython.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/adapter/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/adapter/__main__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/adapter/clients.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/adapter/components.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/adapter/launchers.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/adapter/sessions.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/json.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/log.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/messaging.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/singleton.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/sockets.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/stacks.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/timestamp.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/util.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/launcher/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/launcher/__main__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/launcher/handlers.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/launcher/output.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/launcher/winapi.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/public_api.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/server/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/server/attach_pid_injected.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/server/cli.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy.egg-info/dependency_links.txt +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy.egg-info/entry_points.txt +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy.egg-info/top_level.txt +0 -0
- {debugpy-1.8.7 → debugpy-1.8.8}/versioneer.py +0 -0
|
@@ -19,9 +19,9 @@ from typing import Dict, Optional, Tuple, Any
|
|
|
19
19
|
from os.path import basename, splitext
|
|
20
20
|
|
|
21
21
|
from _pydev_bundle import pydev_log
|
|
22
|
-
from _pydev_bundle.pydev_is_thread_alive import is_thread_alive
|
|
23
22
|
from _pydevd_bundle import pydevd_dont_trace
|
|
24
23
|
from _pydevd_bundle.pydevd_constants import (
|
|
24
|
+
IS_PY313_OR_GREATER,
|
|
25
25
|
GlobalDebuggerHolder,
|
|
26
26
|
ForkSafeLock,
|
|
27
27
|
PYDEVD_IPYTHON_CONTEXT,
|
|
@@ -29,7 +29,6 @@ from _pydevd_bundle.pydevd_constants import (
|
|
|
29
29
|
RETURN_VALUES_DICT,
|
|
30
30
|
PYTHON_SUSPEND,
|
|
31
31
|
)
|
|
32
|
-
from _pydevd_bundle.pydevd_frame_utils import short_tb, flag_as_unwinding, short_frame
|
|
33
32
|
from pydevd_file_utils import (
|
|
34
33
|
NORM_PATHS_AND_BASE_CONTAINER,
|
|
35
34
|
get_abs_path_real_path_and_base_from_file,
|
|
@@ -41,6 +40,7 @@ from _pydevd_bundle.pydevd_trace_dispatch import is_unhandled_exception
|
|
|
41
40
|
from _pydevd_bundle.pydevd_breakpoints import stop_on_unhandled_exception
|
|
42
41
|
from _pydevd_bundle.pydevd_utils import get_clsname_for_code
|
|
43
42
|
|
|
43
|
+
|
|
44
44
|
# fmt: off
|
|
45
45
|
# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
|
|
46
46
|
import cython
|
|
@@ -66,10 +66,8 @@ _thread_local_info = threading.local()
|
|
|
66
66
|
_get_ident = threading.get_ident
|
|
67
67
|
_thread_active = threading._active # noqa
|
|
68
68
|
|
|
69
|
-
STATE_SUSPEND: int = 2
|
|
70
69
|
CMD_STEP_INTO: int = 107
|
|
71
70
|
CMD_STEP_OVER: int = 108
|
|
72
|
-
CMD_STEP_OVER_MY_CODE: int = 159
|
|
73
71
|
CMD_STEP_INTO_MY_CODE: int = 144
|
|
74
72
|
CMD_STEP_INTO_COROUTINE: int = 206
|
|
75
73
|
CMD_SMART_STEP_INTO: int = 128
|
|
@@ -178,65 +176,62 @@ cdef _get_bootstrap_frame(depth):
|
|
|
178
176
|
|
|
179
177
|
# fmt: off
|
|
180
178
|
# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
|
|
181
|
-
cdef
|
|
179
|
+
cdef _get_unhandled_exception_frame(exc, int depth):
|
|
182
180
|
# ELSE
|
|
183
|
-
# def
|
|
181
|
+
# def _get_unhandled_exception_frame(exc, depth: int) -> Optional[FrameType]:
|
|
184
182
|
# ENDIF
|
|
185
183
|
# fmt: on
|
|
186
|
-
|
|
187
|
-
|
|
184
|
+
try:
|
|
185
|
+
# Unhandled frame has to be from the same exception.
|
|
186
|
+
if _thread_local_info.f_unhandled_exc is exc:
|
|
187
|
+
return _thread_local_info.f_unhandled_frame
|
|
188
|
+
else:
|
|
189
|
+
del _thread_local_info.f_unhandled_frame
|
|
190
|
+
del _thread_local_info.f_unhandled_exc
|
|
191
|
+
raise AttributeError('Not the same exception')
|
|
192
|
+
except:
|
|
193
|
+
f_unhandled = _getframe(depth)
|
|
188
194
|
|
|
189
|
-
|
|
190
|
-
|
|
195
|
+
while f_unhandled is not None and f_unhandled.f_back is not None:
|
|
196
|
+
f_back = f_unhandled.f_back
|
|
197
|
+
filename = f_back.f_code.co_filename
|
|
198
|
+
name = splitext(basename(filename))[0]
|
|
191
199
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
200
|
+
# When the back frame is the bootstrap (or if we have no back
|
|
201
|
+
# frame) then use this frame as the one to track.
|
|
202
|
+
if name == "threading":
|
|
203
|
+
if f_back.f_code.co_name in ("__bootstrap", "_bootstrap", "__bootstrap_inner", "_bootstrap_inner", "run"):
|
|
204
|
+
break
|
|
196
205
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
206
|
+
elif name == "pydev_monkey":
|
|
207
|
+
if f_back.f_code.co_name == "__call__":
|
|
208
|
+
break
|
|
200
209
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
210
|
+
elif name == "pydevd":
|
|
211
|
+
if f_back.f_code.co_name in ("_exec", "run", "main"):
|
|
212
|
+
break
|
|
204
213
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
214
|
+
elif name == "pydevd_runpy":
|
|
215
|
+
if f_back.f_code.co_name.startswith(("run", "_run")):
|
|
216
|
+
break
|
|
208
217
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
218
|
+
elif name == "<frozen runpy>":
|
|
219
|
+
if f_back.f_code.co_name.startswith(("run", "_run")):
|
|
220
|
+
break
|
|
212
221
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
222
|
+
elif name == "runpy":
|
|
223
|
+
if f_back.f_code.co_name.startswith(("run", "_run")):
|
|
224
|
+
break
|
|
216
225
|
|
|
217
|
-
|
|
226
|
+
f_unhandled = f_back
|
|
227
|
+
|
|
228
|
+
if f_unhandled is not None:
|
|
229
|
+
_thread_local_info.f_unhandled_frame = f_unhandled
|
|
230
|
+
_thread_local_info.f_unhandled_exc = exc
|
|
231
|
+
return _thread_local_info.f_unhandled_frame
|
|
232
|
+
|
|
233
|
+
return f_unhandled
|
|
218
234
|
|
|
219
|
-
# fmt: off
|
|
220
|
-
# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
|
|
221
|
-
cdef _is_last_user_frame(frame: FrameType):
|
|
222
|
-
# ELSE
|
|
223
|
-
# def _is_last_user_frame(frame: FrameType) -> bool:
|
|
224
|
-
# ENDIF
|
|
225
|
-
# fmt: on
|
|
226
|
-
# If this frame is not a user frame, then it can't be the last one
|
|
227
|
-
if not _is_user_frame(frame):
|
|
228
|
-
return False
|
|
229
|
-
|
|
230
|
-
# If this frame is the last frame, then it is the last one
|
|
231
|
-
if frame.f_back is None:
|
|
232
|
-
return True
|
|
233
|
-
|
|
234
|
-
# If the next frame is not a user frame, then this frame is the last one
|
|
235
|
-
if not _is_user_frame(frame.f_back):
|
|
236
|
-
return True
|
|
237
|
-
|
|
238
|
-
# Otherwise if the next frame is a user frame, then this frame is not the last one
|
|
239
|
-
return False
|
|
240
235
|
|
|
241
236
|
# fmt: off
|
|
242
237
|
# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
|
|
@@ -245,6 +240,7 @@ cdef class ThreadInfo:
|
|
|
245
240
|
cdef PyDBAdditionalThreadInfo additional_info
|
|
246
241
|
thread: threading.Thread
|
|
247
242
|
trace: bool
|
|
243
|
+
_use_is_stopped: bool
|
|
248
244
|
# ELSE
|
|
249
245
|
# class ThreadInfo:
|
|
250
246
|
# additional_info: PyDBAdditionalThreadInfo
|
|
@@ -265,6 +261,19 @@ cdef class ThreadInfo:
|
|
|
265
261
|
self.thread_ident = thread_ident
|
|
266
262
|
self.additional_info = additional_info
|
|
267
263
|
self.trace = trace
|
|
264
|
+
self._use_is_stopped = hasattr(thread, '_is_stopped')
|
|
265
|
+
|
|
266
|
+
# fmt: off
|
|
267
|
+
# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
|
|
268
|
+
cdef bint is_thread_alive(self):
|
|
269
|
+
# ELSE
|
|
270
|
+
# def is_thread_alive(self):
|
|
271
|
+
# ENDIF
|
|
272
|
+
# fmt: on
|
|
273
|
+
if self._use_is_stopped:
|
|
274
|
+
return not self.thread._is_stopped
|
|
275
|
+
else:
|
|
276
|
+
return not self.thread._handle.is_done()
|
|
268
277
|
|
|
269
278
|
|
|
270
279
|
class _DeleteDummyThreadOnDel:
|
|
@@ -328,7 +337,7 @@ cdef _create_thread_info(depth):
|
|
|
328
337
|
if t is None:
|
|
329
338
|
t = _thread_active.get(thread_ident)
|
|
330
339
|
|
|
331
|
-
if isinstance(t, threading._DummyThread):
|
|
340
|
+
if isinstance(t, threading._DummyThread) and not IS_PY313_OR_GREATER:
|
|
332
341
|
_thread_local_info._ref = _DeleteDummyThreadOnDel(t)
|
|
333
342
|
|
|
334
343
|
if t is None:
|
|
@@ -415,8 +424,9 @@ cdef class FuncCodeInfo:
|
|
|
415
424
|
|
|
416
425
|
def get_line_of_offset(self, offset):
|
|
417
426
|
for start, end, line in self.code_obj.co_lines():
|
|
418
|
-
if
|
|
419
|
-
|
|
427
|
+
if start is not None and end is not None and line is not None:
|
|
428
|
+
if offset >= start and offset <= end:
|
|
429
|
+
return line
|
|
420
430
|
return -1
|
|
421
431
|
|
|
422
432
|
|
|
@@ -447,15 +457,41 @@ cdef _get_thread_info(bint create, int depth):
|
|
|
447
457
|
return _thread_local_info.thread_info
|
|
448
458
|
|
|
449
459
|
|
|
450
|
-
|
|
460
|
+
# fmt: off
|
|
461
|
+
# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
|
|
462
|
+
cdef class _CodeLineInfo:
|
|
463
|
+
cdef dict line_to_offset
|
|
464
|
+
cdef int first_line
|
|
465
|
+
cdef int last_line
|
|
466
|
+
# ELSE
|
|
467
|
+
# class _CodeLineInfo:
|
|
468
|
+
# line_to_offset: Dict[int, Any]
|
|
469
|
+
# first_line: int
|
|
470
|
+
# last_line: int
|
|
471
|
+
# ENDIF
|
|
472
|
+
# fmt: on
|
|
451
473
|
|
|
474
|
+
# fmt: off
|
|
475
|
+
# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
|
|
476
|
+
def __init__(self, dict line_to_offset, int first_line, int last_line):
|
|
477
|
+
self.line_to_offset = line_to_offset
|
|
478
|
+
self.first_line = first_line
|
|
479
|
+
self.last_line = last_line
|
|
480
|
+
# ELSE
|
|
481
|
+
# def __init__(self, line_to_offset, first_line, last_line):
|
|
482
|
+
# self.line_to_offset = line_to_offset
|
|
483
|
+
# self.first_line = first_line
|
|
484
|
+
# self.last_line = last_line
|
|
485
|
+
#
|
|
486
|
+
# ENDIF
|
|
487
|
+
# fmt: on
|
|
452
488
|
|
|
453
489
|
# Note: this method has a version in cython too
|
|
454
490
|
# fmt: off
|
|
455
491
|
# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
|
|
456
|
-
cdef _get_code_line_info(code_obj, _cache={}):
|
|
492
|
+
cdef _CodeLineInfo _get_code_line_info(code_obj, _cache={}):
|
|
457
493
|
# ELSE
|
|
458
|
-
# def _get_code_line_info(code_obj, _cache={}):
|
|
494
|
+
# def _get_code_line_info(code_obj, _cache={}) -> _CodeLineInfo:
|
|
459
495
|
# ENDIF
|
|
460
496
|
# fmt: on
|
|
461
497
|
try:
|
|
@@ -838,23 +874,23 @@ cdef _unwind_event(code, instruction, exc):
|
|
|
838
874
|
if thread_info is None:
|
|
839
875
|
return
|
|
840
876
|
|
|
841
|
-
frame = _getframe(1)
|
|
842
|
-
arg = (type(exc), exc, exc.__traceback__)
|
|
843
877
|
|
|
844
878
|
py_db: object = GlobalDebuggerHolder.global_dbg
|
|
845
879
|
if py_db is None or py_db.pydb_disposed:
|
|
846
880
|
return
|
|
847
881
|
|
|
848
|
-
if not thread_info.trace or not is_thread_alive(
|
|
882
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
849
883
|
# For thread-related stuff we can't disable the code tracing because other
|
|
850
884
|
# threads may still want it...
|
|
851
885
|
return
|
|
852
|
-
|
|
886
|
+
|
|
853
887
|
func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
|
|
854
888
|
if func_code_info.always_skip_code:
|
|
855
889
|
return
|
|
856
|
-
|
|
890
|
+
|
|
857
891
|
# print('_unwind_event', code, exc)
|
|
892
|
+
frame = _getframe(1)
|
|
893
|
+
arg = (type(exc), exc, exc.__traceback__)
|
|
858
894
|
|
|
859
895
|
has_caught_exception_breakpoint_in_pydb = (
|
|
860
896
|
py_db.break_on_caught_exceptions or py_db.break_on_user_uncaught_exceptions or py_db.has_plugin_exception_breaks
|
|
@@ -863,7 +899,7 @@ cdef _unwind_event(code, instruction, exc):
|
|
|
863
899
|
|
|
864
900
|
if has_caught_exception_breakpoint_in_pydb:
|
|
865
901
|
_should_stop, frame, user_uncaught_exc_info = should_stop_on_exception(
|
|
866
|
-
py_db, thread_info.additional_info, frame, thread_info.thread, arg, None
|
|
902
|
+
py_db, thread_info.additional_info, frame, thread_info.thread, arg, None, is_unwind=True
|
|
867
903
|
)
|
|
868
904
|
if user_uncaught_exc_info:
|
|
869
905
|
# TODO: Check: this may no longer be needed as in the unwind we know it's
|
|
@@ -877,13 +913,14 @@ cdef _unwind_event(code, instruction, exc):
|
|
|
877
913
|
)
|
|
878
914
|
|
|
879
915
|
if is_unhandled:
|
|
880
|
-
# print('stop in user uncaught')
|
|
881
916
|
handle_exception(py_db, thread_info.thread, frame, user_uncaught_exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
|
|
882
917
|
return
|
|
883
918
|
|
|
884
919
|
break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions
|
|
885
|
-
if break_on_uncaught_exceptions
|
|
886
|
-
|
|
920
|
+
if break_on_uncaught_exceptions:
|
|
921
|
+
if frame is _get_unhandled_exception_frame(exc, 1):
|
|
922
|
+
stop_on_unhandled_exception(py_db, thread_info.thread, thread_info.additional_info, arg)
|
|
923
|
+
return
|
|
887
924
|
|
|
888
925
|
|
|
889
926
|
# fmt: off
|
|
@@ -911,15 +948,12 @@ cdef _raise_event(code, instruction, exc):
|
|
|
911
948
|
thread_info = _get_thread_info(True, 1)
|
|
912
949
|
if thread_info is None:
|
|
913
950
|
return
|
|
914
|
-
|
|
915
|
-
frame = _getframe(1)
|
|
916
|
-
arg = (type(exc), exc, exc.__traceback__)
|
|
917
|
-
|
|
951
|
+
|
|
918
952
|
py_db: object = GlobalDebuggerHolder.global_dbg
|
|
919
953
|
if py_db is None or py_db.pydb_disposed:
|
|
920
954
|
return
|
|
921
955
|
|
|
922
|
-
if not thread_info.trace or not is_thread_alive(
|
|
956
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
923
957
|
# For thread-related stuff we can't disable the code tracing because other
|
|
924
958
|
# threads may still want it...
|
|
925
959
|
return
|
|
@@ -928,7 +962,8 @@ cdef _raise_event(code, instruction, exc):
|
|
|
928
962
|
if func_code_info.always_skip_code:
|
|
929
963
|
return
|
|
930
964
|
|
|
931
|
-
|
|
965
|
+
frame = _getframe(1)
|
|
966
|
+
arg = (type(exc), exc, exc.__traceback__)
|
|
932
967
|
|
|
933
968
|
# Compute the previous exception info (if any). We use it to check if the exception
|
|
934
969
|
# should be stopped
|
|
@@ -944,10 +979,6 @@ cdef _raise_event(code, instruction, exc):
|
|
|
944
979
|
if should_stop:
|
|
945
980
|
handle_exception(py_db, thread_info.thread, frame, arg, EXCEPTION_TYPE_HANDLED)
|
|
946
981
|
|
|
947
|
-
# Once we leave the raise event, we are no longer in the state of 'just_raised', so
|
|
948
|
-
# indicate that this traceback is for an exception in the unwinding state
|
|
949
|
-
flag_as_unwinding(exc.__traceback__)
|
|
950
|
-
|
|
951
982
|
|
|
952
983
|
# fmt: off
|
|
953
984
|
# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
|
|
@@ -1037,7 +1068,7 @@ cdef _return_event(code, instruction, retval):
|
|
|
1037
1068
|
if py_db is None or py_db.pydb_disposed:
|
|
1038
1069
|
return monitor.DISABLE
|
|
1039
1070
|
|
|
1040
|
-
if not thread_info.trace or not is_thread_alive(
|
|
1071
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
1041
1072
|
# For thread-related stuff we can't disable the code tracing because other
|
|
1042
1073
|
# threads may still want it...
|
|
1043
1074
|
return
|
|
@@ -1348,7 +1379,11 @@ cdef _jump_event(code, int from_offset, int to_offset):
|
|
|
1348
1379
|
if py_db is None or py_db.pydb_disposed:
|
|
1349
1380
|
return monitor.DISABLE
|
|
1350
1381
|
|
|
1351
|
-
|
|
1382
|
+
# If we get another jump event, remove the extra check for the line event
|
|
1383
|
+
if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
|
|
1384
|
+
del _thread_local_info.f_disable_next_line_if_match
|
|
1385
|
+
|
|
1386
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
1352
1387
|
# For thread-related stuff we can't disable the code tracing because other
|
|
1353
1388
|
# threads may still want it...
|
|
1354
1389
|
return
|
|
@@ -1364,9 +1399,8 @@ cdef _jump_event(code, int from_offset, int to_offset):
|
|
|
1364
1399
|
if to_offset > from_offset:
|
|
1365
1400
|
return monitor.DISABLE
|
|
1366
1401
|
|
|
1367
|
-
from_line = func_code_info.get_line_of_offset(from_offset)
|
|
1368
|
-
to_line = func_code_info.get_line_of_offset(to_offset)
|
|
1369
|
-
# print('jump event', code.co_name, 'from line', from_line, 'to line', to_line)
|
|
1402
|
+
from_line = func_code_info.get_line_of_offset(from_offset or 0)
|
|
1403
|
+
to_line = func_code_info.get_line_of_offset(to_offset or 0)
|
|
1370
1404
|
|
|
1371
1405
|
if from_line != to_line:
|
|
1372
1406
|
# I.e.: use case: "yield from [j for j in a if j % 2 == 0]"
|
|
@@ -1376,7 +1410,8 @@ cdef _jump_event(code, int from_offset, int to_offset):
|
|
|
1376
1410
|
frame = _getframe(1)
|
|
1377
1411
|
|
|
1378
1412
|
# Disable the next line event as we're jumping to a line. The line event will be redundant.
|
|
1379
|
-
_thread_local_info.f_disable_next_line_if_match = frame.f_lineno
|
|
1413
|
+
_thread_local_info.f_disable_next_line_if_match = (func_code_info.co_filename, frame.f_lineno)
|
|
1414
|
+
# pydev_log.debug('_jump_event', code.co_name, 'from line', from_line, 'to line', frame.f_lineno)
|
|
1380
1415
|
|
|
1381
1416
|
return _internal_line_event(func_code_info, frame, frame.f_lineno)
|
|
1382
1417
|
|
|
@@ -1405,24 +1440,26 @@ cdef _line_event(code, int line):
|
|
|
1405
1440
|
if py_db is None or py_db.pydb_disposed:
|
|
1406
1441
|
return monitor.DISABLE
|
|
1407
1442
|
|
|
1408
|
-
|
|
1443
|
+
# If we get another line event, remove the extra check for the line event
|
|
1444
|
+
if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
|
|
1445
|
+
(co_filename, line_to_skip) = _thread_local_info.f_disable_next_line_if_match
|
|
1446
|
+
del _thread_local_info.f_disable_next_line_if_match
|
|
1447
|
+
if line_to_skip is line and co_filename == code.co_filename:
|
|
1448
|
+
# The last jump already jumped to this line and we haven't had any
|
|
1449
|
+
# line events or jumps since then. We don't want to consider this line twice
|
|
1450
|
+
# pydev_log.debug('_line_event skipped', line)
|
|
1451
|
+
return
|
|
1452
|
+
|
|
1453
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
1409
1454
|
# For thread-related stuff we can't disable the code tracing because other
|
|
1410
1455
|
# threads may still want it...
|
|
1411
1456
|
return
|
|
1412
1457
|
|
|
1413
|
-
if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
|
|
1414
|
-
if _thread_local_info.f_disable_next_line_if_match is line:
|
|
1415
|
-
# If we're in a jump, we should skip this line event. The jump would have
|
|
1416
|
-
# been considered a line event for this same line and we don't want to
|
|
1417
|
-
# stop twice.
|
|
1418
|
-
del _thread_local_info.f_disable_next_line_if_match
|
|
1419
|
-
return
|
|
1420
|
-
|
|
1421
1458
|
func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
|
|
1422
1459
|
if func_code_info.always_skip_code or func_code_info.always_filtered_out:
|
|
1423
1460
|
return monitor.DISABLE
|
|
1424
1461
|
|
|
1425
|
-
#
|
|
1462
|
+
# pydev_log.debug('_line_event', code.co_name, line)
|
|
1426
1463
|
|
|
1427
1464
|
# We know the frame depth.
|
|
1428
1465
|
frame = _getframe(1)
|
|
@@ -1652,7 +1689,7 @@ cdef _start_method_event(code, instruction_offset):
|
|
|
1652
1689
|
if py_db is None or py_db.pydb_disposed:
|
|
1653
1690
|
return monitor.DISABLE
|
|
1654
1691
|
|
|
1655
|
-
if not thread_info.trace or not is_thread_alive(
|
|
1692
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
1656
1693
|
# For thread-related stuff we can't disable the code tracing because other
|
|
1657
1694
|
# threads may still want it...
|
|
1658
1695
|
return
|
|
@@ -1849,7 +1886,10 @@ def update_monitor_events(suspend_requested: Optional[bool] = None) -> None:
|
|
|
1849
1886
|
monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, _start_method_event)
|
|
1850
1887
|
# monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, _resume_method_event)
|
|
1851
1888
|
monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, _line_event)
|
|
1852
|
-
|
|
1889
|
+
if not IS_PY313_OR_GREATER:
|
|
1890
|
+
# In Python 3.13+ jump_events aren't necessary as we have a line_event for every
|
|
1891
|
+
# jump location.
|
|
1892
|
+
monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, _jump_event)
|
|
1853
1893
|
monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, _return_event)
|
|
1854
1894
|
|
|
1855
1895
|
else:
|
|
File without changes
|
|
@@ -19,8 +19,7 @@ Author: Christian Boos
|
|
|
19
19
|
import os
|
|
20
20
|
import signal
|
|
21
21
|
|
|
22
|
-
import threading
|
|
23
|
-
|
|
22
|
+
from _pydev_bundle._pydev_saved_modules import threading
|
|
24
23
|
|
|
25
24
|
from pydev_ipython.qt_for_kernel import QtCore, QtGui
|
|
26
25
|
from pydev_ipython.inputhook import allow_CTRL_C, ignore_CTRL_C, stdin_ready
|
|
@@ -19,7 +19,7 @@ Author: Christian Boos
|
|
|
19
19
|
import os
|
|
20
20
|
import signal
|
|
21
21
|
|
|
22
|
-
import threading
|
|
22
|
+
from _pydev_bundle._pydev_saved_modules import threading
|
|
23
23
|
|
|
24
24
|
from pydev_ipython.qt_for_kernel import QtCore, QtGui
|
|
25
25
|
from pydev_ipython.inputhook import allow_CTRL_C, ignore_CTRL_C, stdin_ready
|
|
@@ -19,7 +19,7 @@ Author: Christian Boos, Marijn van Vliet
|
|
|
19
19
|
import os
|
|
20
20
|
import signal
|
|
21
21
|
|
|
22
|
-
import threading
|
|
22
|
+
from _pydev_bundle._pydev_saved_modules import threading
|
|
23
23
|
|
|
24
24
|
from pydev_ipython.qt_for_kernel import QtCore, QtGui
|
|
25
25
|
from pydev_ipython.inputhook import allow_CTRL_C, ignore_CTRL_C, stdin_ready
|
|
@@ -127,21 +127,44 @@ def has_binding(api):
|
|
|
127
127
|
}
|
|
128
128
|
module_name = module_name[api]
|
|
129
129
|
|
|
130
|
-
import
|
|
130
|
+
import importlib
|
|
131
131
|
|
|
132
132
|
try:
|
|
133
133
|
# importing top level PyQt4/PySide module is ok...
|
|
134
134
|
mod = __import__(module_name)
|
|
135
135
|
# ...importing submodules is not
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
136
|
+
|
|
137
|
+
for check in ("QtCore", "QtGui", "QtSvg"):
|
|
138
|
+
if importlib.util.find_spec("%s.%s" % (module_name, check)) is None:
|
|
139
|
+
return False
|
|
139
140
|
|
|
140
141
|
# we can also safely check PySide version
|
|
141
142
|
if api == QT_API_PYSIDE:
|
|
142
143
|
return check_version(mod.__version__, "1.0.3")
|
|
143
144
|
else:
|
|
144
145
|
return True
|
|
146
|
+
|
|
147
|
+
except ModuleNotFoundError:
|
|
148
|
+
from importlib import machinery
|
|
149
|
+
|
|
150
|
+
# importing top level PyQt4/PySide module is ok...
|
|
151
|
+
mod = __import__(module_name)
|
|
152
|
+
|
|
153
|
+
# ...importing submodules is not
|
|
154
|
+
loader_details = (machinery.ExtensionFileLoader, machinery.EXTENSION_SUFFIXES)
|
|
155
|
+
submod_finder = machinery.FileFinder(mod.__path__[0], loader_details)
|
|
156
|
+
submod_check = (
|
|
157
|
+
submod_finder.find_spec("QtCore") is not None
|
|
158
|
+
and submod_finder.find_spec("QtGui") is not None
|
|
159
|
+
and submod_finder.find_spec("QtSvg") is not None
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
# we can also safely check PySide version
|
|
163
|
+
if api == QT_API_PYSIDE:
|
|
164
|
+
return check_version(mod.__version__, '1.0.3') and submod_check
|
|
165
|
+
else:
|
|
166
|
+
return submod_check
|
|
167
|
+
|
|
145
168
|
except ImportError:
|
|
146
169
|
return False
|
|
147
170
|
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Utility for version comparison
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class _Version:
|
|
7
|
+
def __init__(self, s):
|
|
8
|
+
parts = s.split(".")
|
|
9
|
+
version_parts = []
|
|
10
|
+
for p in parts:
|
|
11
|
+
try:
|
|
12
|
+
version_parts.append(int(p))
|
|
13
|
+
except ValueError:
|
|
14
|
+
version_parts.append(p)
|
|
15
|
+
|
|
16
|
+
self._version_parts = tuple(version_parts)
|
|
17
|
+
|
|
18
|
+
def __ge__(self, v):
|
|
19
|
+
this_parts = self._version_parts
|
|
20
|
+
other_parts = v._version_parts
|
|
21
|
+
|
|
22
|
+
while len(this_parts) < len(other_parts):
|
|
23
|
+
this_parts = this_parts + (0,)
|
|
24
|
+
|
|
25
|
+
return this_parts >= other_parts
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def check_version(found_version, expected_min_or_eq_to_version):
|
|
29
|
+
"""check version string found_version >= expected_min_or_eq_to_version
|
|
30
|
+
|
|
31
|
+
If dev/prerelease tags result in TypeError for string-number comparison,
|
|
32
|
+
it is assumed that the dependency is satisfied.
|
|
33
|
+
Users on dev branches are responsible for keeping their own packages up to date.
|
|
34
|
+
"""
|
|
35
|
+
try:
|
|
36
|
+
return _Version(found_version) >= _Version(expected_min_or_eq_to_version)
|
|
37
|
+
except TypeError:
|
|
38
|
+
return True
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
if __name__ == "__main__":
|
|
42
|
+
assert check_version("1.2.3", "1.2.3")
|
|
43
|
+
assert check_version("1.2.4", "1.2.3")
|
|
44
|
+
assert check_version("1.2", "1.2.bar")
|
|
45
|
+
assert check_version("1.3", "1.2.bar")
|
|
46
|
+
assert check_version("1.3", "1.2b")
|
|
47
|
+
assert not check_version("1.2", "1.3")
|
|
48
|
+
assert not check_version("1.2.0", "1.2.1")
|
|
49
|
+
assert not check_version("1.2", "1.2.1")
|
|
50
|
+
print("Ok, checks passed")
|
|
@@ -3,6 +3,7 @@ Entry point module (keep at root):
|
|
|
3
3
|
|
|
4
4
|
This module starts the debugger.
|
|
5
5
|
"""
|
|
6
|
+
|
|
6
7
|
import sys # @NoMove
|
|
7
8
|
|
|
8
9
|
if sys.version_info[:2] < (3, 6):
|
|
@@ -11,14 +12,11 @@ if sys.version_info[:2] < (3, 6):
|
|
|
11
12
|
)
|
|
12
13
|
import os
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
# if its dependencies cannot be imported.
|
|
20
|
-
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
|
21
|
-
import _pydev_bundle
|
|
15
|
+
# On the first import of a pydevd module, add pydevd itself to the PYTHONPATH
|
|
16
|
+
this_dir = os.path.dirname(os.path.abspath(__file__))
|
|
17
|
+
sys.path.insert(0, this_dir)
|
|
18
|
+
|
|
19
|
+
import _pydev_bundle
|
|
22
20
|
|
|
23
21
|
# Import this first as it'll check for shadowed modules and will make sure that we import
|
|
24
22
|
# things as needed for gevent.
|
|
@@ -100,7 +98,7 @@ from _pydevd_bundle.pydevd_defaults import PydevdCustomization # Note: import a
|
|
|
100
98
|
from _pydevd_bundle.pydevd_custom_frames import CustomFramesContainer, custom_frames_container_init
|
|
101
99
|
from _pydevd_bundle.pydevd_dont_trace_files import DONT_TRACE, PYDEV_FILE, LIB_FILE, DONT_TRACE_DIRS
|
|
102
100
|
from _pydevd_bundle.pydevd_extension_api import DebuggerEventHandler
|
|
103
|
-
from _pydevd_bundle.pydevd_frame_utils import add_exception_to_frame, remove_exception_from_frame
|
|
101
|
+
from _pydevd_bundle.pydevd_frame_utils import add_exception_to_frame, remove_exception_from_frame, short_stack
|
|
104
102
|
from _pydevd_bundle.pydevd_net_command_factory_xml import NetCommandFactory
|
|
105
103
|
from _pydevd_bundle.pydevd_trace_dispatch import (
|
|
106
104
|
trace_dispatch as _trace_dispatch,
|
|
@@ -175,7 +173,7 @@ if SUPPORT_GEVENT:
|
|
|
175
173
|
if USE_CUSTOM_SYS_CURRENT_FRAMES_MAP:
|
|
176
174
|
from _pydevd_bundle.pydevd_constants import constructed_tid_to_last_frame
|
|
177
175
|
|
|
178
|
-
__version_info__ = (3,
|
|
176
|
+
__version_info__ = (3, 2, 2)
|
|
179
177
|
__version_info_str__ = []
|
|
180
178
|
for v in __version_info__:
|
|
181
179
|
__version_info_str__.append(str(v))
|
|
@@ -793,10 +791,10 @@ class PyDB(object):
|
|
|
793
791
|
max_line = -1
|
|
794
792
|
min_line = sys.maxsize
|
|
795
793
|
for _, line in dis.findlinestarts(code_obj):
|
|
796
|
-
if line > max_line:
|
|
794
|
+
if line is not None and line > max_line:
|
|
797
795
|
max_line = line
|
|
798
796
|
|
|
799
|
-
if line < min_line:
|
|
797
|
+
if line is not None and line < min_line:
|
|
800
798
|
min_line = line
|
|
801
799
|
|
|
802
800
|
try_except_infos = [x for x in try_except_infos if min_line <= x.try_line <= max_line]
|
|
@@ -1075,20 +1073,7 @@ class PyDB(object):
|
|
|
1075
1073
|
return _cache_file_type[cache_key]
|
|
1076
1074
|
except:
|
|
1077
1075
|
if abs_real_path_and_basename[0] == "<string>":
|
|
1078
|
-
# Consider it an untraceable file unless there's no back frame (ignoring
|
|
1079
|
-
# internal files and runpy.py).
|
|
1080
|
-
if frame.f_back is None:
|
|
1081
|
-
_cache_file_type[cache_key] = None
|
|
1082
|
-
return None
|
|
1083
|
-
|
|
1084
|
-
back_basename = pydevd_file_utils.basename(frame.f_back.f_code.co_filename)
|
|
1085
|
-
if "sys_monitoring" in back_basename or "pydevd" in back_basename:
|
|
1086
|
-
# Special case, this is a string coming from pydevd itself
|
|
1087
|
-
_cache_file_type[cache_key] = PYDEV_FILE
|
|
1088
|
-
return PYDEV_FILE
|
|
1089
|
-
|
|
1090
1076
|
f = frame.f_back
|
|
1091
|
-
back_frames = ""
|
|
1092
1077
|
while f is not None:
|
|
1093
1078
|
if self.get_file_type(f) != self.PYDEV_FILE and pydevd_file_utils.basename(f.f_code.co_filename) not in (
|
|
1094
1079
|
"runpy.py",
|
|
@@ -1105,8 +1090,7 @@ class PyDB(object):
|
|
|
1105
1090
|
# to show it in the stack.
|
|
1106
1091
|
_cache_file_type[cache_key] = LIB_FILE
|
|
1107
1092
|
return LIB_FILE
|
|
1108
|
-
|
|
1109
|
-
back_frames += " -> %s" % (pydevd_file_utils.basename(f.f_code.co_filename))
|
|
1093
|
+
|
|
1110
1094
|
f = f.f_back
|
|
1111
1095
|
else:
|
|
1112
1096
|
# This is a top-level file (used in python -c), so, trace it as usual... we
|
|
@@ -2399,7 +2383,6 @@ class PyDB(object):
|
|
|
2399
2383
|
while frame is not None:
|
|
2400
2384
|
if not isinstance(frame, FrameType):
|
|
2401
2385
|
# This is the case for django/jinja frames.
|
|
2402
|
-
pydev_log.debug("Not a frame: %s", frame)
|
|
2403
2386
|
frame = frame.f_back
|
|
2404
2387
|
continue
|
|
2405
2388
|
|
|
@@ -3709,5 +3692,13 @@ def main():
|
|
|
3709
3692
|
debugger.wait_for_commands(globals)
|
|
3710
3693
|
|
|
3711
3694
|
|
|
3695
|
+
try:
|
|
3696
|
+
# Remove the entry we added: it should no longer be needed as
|
|
3697
|
+
# what we need should've been imported already
|
|
3698
|
+
if sys.path[:1] == [this_dir]:
|
|
3699
|
+
sys.path.remove(this_dir)
|
|
3700
|
+
except Exception:
|
|
3701
|
+
pass
|
|
3702
|
+
|
|
3712
3703
|
if __name__ == "__main__":
|
|
3713
3704
|
main()
|