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
|
@@ -59,7 +59,8 @@ def _get_code_line_info(code_obj):
|
|
|
59
59
|
last_line = None
|
|
60
60
|
|
|
61
61
|
for offset, line in dis.findlinestarts(code_obj):
|
|
62
|
-
|
|
62
|
+
if line is not None and offset is not None:
|
|
63
|
+
line_to_offset[line] = offset
|
|
63
64
|
|
|
64
65
|
if line_to_offset:
|
|
65
66
|
first_line = min(line_to_offset)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
Copyright (c) 2016 Red Hat.
|
|
3
|
+
|
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining a
|
|
5
|
+
copy of this software and associated documentation files (the
|
|
6
|
+
"Software"), to deal in the Software without restriction, including
|
|
7
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
8
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
9
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
10
|
+
the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included
|
|
13
|
+
in all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
16
|
+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
17
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
18
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
19
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
20
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
21
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pip
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: bytecode
|
|
3
|
+
Version: 0.13.0.dev0
|
|
4
|
+
Summary: Python module to generate and modify bytecode
|
|
5
|
+
Home-page: https://github.com/MatthieuDartiailh/bytecode
|
|
6
|
+
Author: Victor Stinner
|
|
7
|
+
Author-email: victor.stinner@gmail.com
|
|
8
|
+
Maintainer: Matthieu C. Dartiailh
|
|
9
|
+
Maintainer-email: m.dartiailh@gmail.com
|
|
10
|
+
License: MIT license
|
|
11
|
+
Platform: UNKNOWN
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Natural Language :: English
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.6
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.7
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
22
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
23
|
+
Requires-Python: >=3.6
|
|
24
|
+
|
|
25
|
+
********
|
|
26
|
+
bytecode
|
|
27
|
+
********
|
|
28
|
+
|
|
29
|
+
.. image:: https://img.shields.io/pypi/v/bytecode.svg
|
|
30
|
+
:alt: Latest release on the Python Cheeseshop (PyPI)
|
|
31
|
+
:target: https://pypi.python.org/pypi/bytecode
|
|
32
|
+
|
|
33
|
+
.. image:: https://github.com/MatthieuDartiailh/bytecode/workflows/Continuous%20Integration/badge.svg
|
|
34
|
+
:target: https://github.com/MatthieuDartiailh/bytecode/actions
|
|
35
|
+
:alt: Continuous integration
|
|
36
|
+
|
|
37
|
+
.. image:: https://github.com/MatthieuDartiailh/bytecode/workflows/Documentation%20building/badge.svg
|
|
38
|
+
:target: https://github.com/MatthieuDartiailh/bytecode/actions
|
|
39
|
+
:alt: Documentation building
|
|
40
|
+
|
|
41
|
+
.. image:: https://img.shields.io/codecov/c/github/MatthieuDartiailh/bytecode/master.svg
|
|
42
|
+
:alt: Code coverage of bytecode on codecov.io
|
|
43
|
+
:target: https://codecov.io/github/MatthieuDartiailh/bytecode
|
|
44
|
+
|
|
45
|
+
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
|
|
46
|
+
:alt: Code formatted using Black
|
|
47
|
+
:target: https://github.com/psf/black
|
|
48
|
+
|
|
49
|
+
``bytecode`` is a Python module to generate and modify bytecode.
|
|
50
|
+
|
|
51
|
+
* `bytecode project homepage at GitHub
|
|
52
|
+
<https://github.com/MatthieuDartiailh/bytecode>`_ (code, bugs)
|
|
53
|
+
* `bytecode documentation
|
|
54
|
+
<https://bytecode.readthedocs.io/>`_
|
|
55
|
+
* `Download latest bytecode release at the Python Cheeseshop (PyPI)
|
|
56
|
+
<https://pypi.python.org/pypi/bytecode>`_
|
|
57
|
+
|
|
58
|
+
Install bytecode: ``python3 -m pip install bytecode``. It requires Python 3.6
|
|
59
|
+
or newer. The latest release that supports Python 3.5 is 0.12.0. For Python 2.7
|
|
60
|
+
support, have a look at `dead-bytecode
|
|
61
|
+
<https://github.com/p403n1x87/dead-bytecode>`_ instead.
|
|
62
|
+
|
|
63
|
+
Example executing ``print('Hello World!')``:
|
|
64
|
+
|
|
65
|
+
.. code:: python
|
|
66
|
+
|
|
67
|
+
from bytecode import Instr, Bytecode
|
|
68
|
+
|
|
69
|
+
bytecode = Bytecode([Instr("LOAD_NAME", 'print'),
|
|
70
|
+
Instr("LOAD_CONST", 'Hello World!'),
|
|
71
|
+
Instr("CALL_FUNCTION", 1),
|
|
72
|
+
Instr("POP_TOP"),
|
|
73
|
+
Instr("LOAD_CONST", None),
|
|
74
|
+
Instr("RETURN_VALUE")])
|
|
75
|
+
code = bytecode.to_code()
|
|
76
|
+
exec(code)
|
|
77
|
+
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
bytecode-0.13.0.dev0.dist-info/COPYING,sha256=baWkm-Te2LLURwK7TL0zOkMSVjVCU_ezvObHBo298Tk,1074
|
|
2
|
+
bytecode-0.13.0.dev0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
|
3
|
+
bytecode-0.13.0.dev0.dist-info/METADATA,sha256=9XadDK6YTQ-FPowYI5DS4ieA7hRGnRP_fM5Z9ioPkEQ,2929
|
|
4
|
+
bytecode-0.13.0.dev0.dist-info/RECORD,,
|
|
5
|
+
bytecode-0.13.0.dev0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
+
bytecode-0.13.0.dev0.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92
|
|
7
|
+
bytecode-0.13.0.dev0.dist-info/direct_url.json,sha256=s58Rb4KXRlMKxk-mzpvr_tJRQ-Hx8-DHsU6NdohCnAg,93
|
|
8
|
+
bytecode-0.13.0.dev0.dist-info/top_level.txt,sha256=9BhdB7HqYZ-PvHNoWX6ilwLYWQqcgEOLwdb3aXm5Gys,9
|
|
9
|
+
bytecode/__init__.py,sha256=d-yk4Xh4SwOWq9NgoD2rmBLG6RhUFNljeqs-NjMNSYM,3885
|
|
10
|
+
bytecode/__pycache__/__init__.cpython-38.pyc,,
|
|
11
|
+
bytecode/__pycache__/bytecode.cpython-38.pyc,,
|
|
12
|
+
bytecode/__pycache__/cfg.cpython-38.pyc,,
|
|
13
|
+
bytecode/__pycache__/concrete.cpython-38.pyc,,
|
|
14
|
+
bytecode/__pycache__/flags.cpython-38.pyc,,
|
|
15
|
+
bytecode/__pycache__/instr.cpython-38.pyc,,
|
|
16
|
+
bytecode/__pycache__/peephole_opt.cpython-38.pyc,,
|
|
17
|
+
bytecode/bytecode.py,sha256=IMCcatHMtQ7M31nwj4r3drcvQuGVJAOP0d7C0O8P_SE,6894
|
|
18
|
+
bytecode/cfg.py,sha256=RmJGJqwCxR-XYaPH9YGY4wNDycdtLvIBJb1OGSmxcN0,15274
|
|
19
|
+
bytecode/concrete.py,sha256=0eb6Yh_NDLmzJNcMs2TFom0EqFVSM1cO3inMH90YE-s,21683
|
|
20
|
+
bytecode/flags.py,sha256=hAvM_B2yQKRw44leHP0oCae0aaJraAbDDTpqIf4I1CM,5987
|
|
21
|
+
bytecode/instr.py,sha256=HYc65LjNSOB3GCWkNkCSkee1rRzUyr89rgdjbKBaTpE,11616
|
|
22
|
+
bytecode/peephole_opt.py,sha256=W-cFVPOZN-JKfDV3aImsYenDSZkSNBDTVQqeMrGPU18,15712
|
|
23
|
+
bytecode/tests/__init__.py,sha256=BAdOXXNRdMVX4D8TuRYPlG9PHU7Cb0bzvyfA9s435kM,4968
|
|
24
|
+
bytecode/tests/__pycache__/__init__.cpython-38.pyc,,
|
|
25
|
+
bytecode/tests/__pycache__/test_bytecode.cpython-38.pyc,,
|
|
26
|
+
bytecode/tests/__pycache__/test_cfg.cpython-38.pyc,,
|
|
27
|
+
bytecode/tests/__pycache__/test_code.cpython-38.pyc,,
|
|
28
|
+
bytecode/tests/__pycache__/test_concrete.cpython-38.pyc,,
|
|
29
|
+
bytecode/tests/__pycache__/test_flags.cpython-38.pyc,,
|
|
30
|
+
bytecode/tests/__pycache__/test_instr.cpython-38.pyc,,
|
|
31
|
+
bytecode/tests/__pycache__/test_misc.cpython-38.pyc,,
|
|
32
|
+
bytecode/tests/__pycache__/test_peephole_opt.cpython-38.pyc,,
|
|
33
|
+
bytecode/tests/__pycache__/util_annotation.cpython-38.pyc,,
|
|
34
|
+
bytecode/tests/test_bytecode.py,sha256=buvtlDC0NwoQ3zuZ7OENIIDngSqtiO9WkAa2-UvxGkI,15584
|
|
35
|
+
bytecode/tests/test_cfg.py,sha256=c0xT8OfV-mDHu-DIDWr6LVlZQyK4GfgLSmT5AsodbMk,28194
|
|
36
|
+
bytecode/tests/test_code.py,sha256=XCOH29rOXSoQz130s-AIC62r23e9qNjk8Y2xDB2LmSc,2100
|
|
37
|
+
bytecode/tests/test_concrete.py,sha256=qT2qvabkF0yC7inniNx53cMSDN-2Qi0IE3pwBZSzF8g,49253
|
|
38
|
+
bytecode/tests/test_flags.py,sha256=DY9U3c6tJdxJFm0jEm_To1Cc0I99EidQv_0guud-4oE,5684
|
|
39
|
+
bytecode/tests/test_instr.py,sha256=rYeF8u-L0aW8bLPBxTUSy_T7KP6SaXyJKv9OhC8k6aA,11295
|
|
40
|
+
bytecode/tests/test_misc.py,sha256=wyK1wpVPHRfaXgo-EqUI-F1nyB9-UACerHsHbExAo1U,6758
|
|
41
|
+
bytecode/tests/test_peephole_opt.py,sha256=niUfhgEbiFR7IAmdQ_N9Qgh7D3wdRQ_zS0V8mKC4EzI,32640
|
|
42
|
+
bytecode/tests/util_annotation.py,sha256=wKq6yPWrzkNlholl5Y10b3VjuCkoiYVgvcIjk_8jzf8,485
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"archive_info": {}, "url": "https://github.com/MatthieuDartiailh/bytecode/archive/main.zip"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
bytecode
|
|
@@ -13,9 +13,9 @@ from typing import Dict, Optional, Tuple, Any
|
|
|
13
13
|
from os.path import basename, splitext
|
|
14
14
|
|
|
15
15
|
from _pydev_bundle import pydev_log
|
|
16
|
-
from _pydev_bundle.pydev_is_thread_alive import is_thread_alive
|
|
17
16
|
from _pydevd_bundle import pydevd_dont_trace
|
|
18
17
|
from _pydevd_bundle.pydevd_constants import (
|
|
18
|
+
IS_PY313_OR_GREATER,
|
|
19
19
|
GlobalDebuggerHolder,
|
|
20
20
|
ForkSafeLock,
|
|
21
21
|
PYDEVD_IPYTHON_CONTEXT,
|
|
@@ -23,7 +23,6 @@ from _pydevd_bundle.pydevd_constants import (
|
|
|
23
23
|
RETURN_VALUES_DICT,
|
|
24
24
|
PYTHON_SUSPEND,
|
|
25
25
|
)
|
|
26
|
-
from _pydevd_bundle.pydevd_frame_utils import short_tb, flag_as_unwinding, short_frame
|
|
27
26
|
from pydevd_file_utils import (
|
|
28
27
|
NORM_PATHS_AND_BASE_CONTAINER,
|
|
29
28
|
get_abs_path_real_path_and_base_from_file,
|
|
@@ -35,6 +34,7 @@ from _pydevd_bundle.pydevd_trace_dispatch import is_unhandled_exception
|
|
|
35
34
|
from _pydevd_bundle.pydevd_breakpoints import stop_on_unhandled_exception
|
|
36
35
|
from _pydevd_bundle.pydevd_utils import get_clsname_for_code
|
|
37
36
|
|
|
37
|
+
|
|
38
38
|
# fmt: off
|
|
39
39
|
# IFDEF CYTHON
|
|
40
40
|
# import cython
|
|
@@ -60,10 +60,8 @@ _thread_local_info = threading.local()
|
|
|
60
60
|
_get_ident = threading.get_ident
|
|
61
61
|
_thread_active = threading._active # noqa
|
|
62
62
|
|
|
63
|
-
STATE_SUSPEND: int = 2
|
|
64
63
|
CMD_STEP_INTO: int = 107
|
|
65
64
|
CMD_STEP_OVER: int = 108
|
|
66
|
-
CMD_STEP_OVER_MY_CODE: int = 159
|
|
67
65
|
CMD_STEP_INTO_MY_CODE: int = 144
|
|
68
66
|
CMD_STEP_INTO_COROUTINE: int = 206
|
|
69
67
|
CMD_SMART_STEP_INTO: int = 128
|
|
@@ -172,65 +170,62 @@ def _get_bootstrap_frame(depth: int) -> Tuple[Optional[FrameType], bool]:
|
|
|
172
170
|
|
|
173
171
|
# fmt: off
|
|
174
172
|
# IFDEF CYTHON
|
|
175
|
-
# cdef
|
|
173
|
+
# cdef _get_unhandled_exception_frame(exc, int depth):
|
|
176
174
|
# ELSE
|
|
177
|
-
def
|
|
175
|
+
def _get_unhandled_exception_frame(exc, depth: int) -> Optional[FrameType]:
|
|
178
176
|
# ENDIF
|
|
179
177
|
# fmt: on
|
|
180
|
-
|
|
181
|
-
|
|
178
|
+
try:
|
|
179
|
+
# Unhandled frame has to be from the same exception.
|
|
180
|
+
if _thread_local_info.f_unhandled_exc is exc:
|
|
181
|
+
return _thread_local_info.f_unhandled_frame
|
|
182
|
+
else:
|
|
183
|
+
del _thread_local_info.f_unhandled_frame
|
|
184
|
+
del _thread_local_info.f_unhandled_exc
|
|
185
|
+
raise AttributeError('Not the same exception')
|
|
186
|
+
except:
|
|
187
|
+
f_unhandled = _getframe(depth)
|
|
182
188
|
|
|
183
|
-
|
|
184
|
-
|
|
189
|
+
while f_unhandled is not None and f_unhandled.f_back is not None:
|
|
190
|
+
f_back = f_unhandled.f_back
|
|
191
|
+
filename = f_back.f_code.co_filename
|
|
192
|
+
name = splitext(basename(filename))[0]
|
|
185
193
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
194
|
+
# When the back frame is the bootstrap (or if we have no back
|
|
195
|
+
# frame) then use this frame as the one to track.
|
|
196
|
+
if name == "threading":
|
|
197
|
+
if f_back.f_code.co_name in ("__bootstrap", "_bootstrap", "__bootstrap_inner", "_bootstrap_inner", "run"):
|
|
198
|
+
break
|
|
190
199
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
200
|
+
elif name == "pydev_monkey":
|
|
201
|
+
if f_back.f_code.co_name == "__call__":
|
|
202
|
+
break
|
|
194
203
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
204
|
+
elif name == "pydevd":
|
|
205
|
+
if f_back.f_code.co_name in ("_exec", "run", "main"):
|
|
206
|
+
break
|
|
198
207
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
208
|
+
elif name == "pydevd_runpy":
|
|
209
|
+
if f_back.f_code.co_name.startswith(("run", "_run")):
|
|
210
|
+
break
|
|
202
211
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
212
|
+
elif name == "<frozen runpy>":
|
|
213
|
+
if f_back.f_code.co_name.startswith(("run", "_run")):
|
|
214
|
+
break
|
|
206
215
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
216
|
+
elif name == "runpy":
|
|
217
|
+
if f_back.f_code.co_name.startswith(("run", "_run")):
|
|
218
|
+
break
|
|
210
219
|
|
|
211
|
-
|
|
220
|
+
f_unhandled = f_back
|
|
221
|
+
|
|
222
|
+
if f_unhandled is not None:
|
|
223
|
+
_thread_local_info.f_unhandled_frame = f_unhandled
|
|
224
|
+
_thread_local_info.f_unhandled_exc = exc
|
|
225
|
+
return _thread_local_info.f_unhandled_frame
|
|
226
|
+
|
|
227
|
+
return f_unhandled
|
|
212
228
|
|
|
213
|
-
# fmt: off
|
|
214
|
-
# IFDEF CYTHON
|
|
215
|
-
# cdef _is_last_user_frame(frame: FrameType):
|
|
216
|
-
# ELSE
|
|
217
|
-
def _is_last_user_frame(frame: FrameType) -> bool:
|
|
218
|
-
# ENDIF
|
|
219
|
-
# fmt: on
|
|
220
|
-
# If this frame is not a user frame, then it can't be the last one
|
|
221
|
-
if not _is_user_frame(frame):
|
|
222
|
-
return False
|
|
223
|
-
|
|
224
|
-
# If this frame is the last frame, then it is the last one
|
|
225
|
-
if frame.f_back is None:
|
|
226
|
-
return True
|
|
227
|
-
|
|
228
|
-
# If the next frame is not a user frame, then this frame is the last one
|
|
229
|
-
if not _is_user_frame(frame.f_back):
|
|
230
|
-
return True
|
|
231
|
-
|
|
232
|
-
# Otherwise if the next frame is a user frame, then this frame is not the last one
|
|
233
|
-
return False
|
|
234
229
|
|
|
235
230
|
# fmt: off
|
|
236
231
|
# IFDEF CYTHON
|
|
@@ -239,6 +234,7 @@ def _is_last_user_frame(frame: FrameType) -> bool:
|
|
|
239
234
|
# cdef PyDBAdditionalThreadInfo additional_info
|
|
240
235
|
# thread: threading.Thread
|
|
241
236
|
# trace: bool
|
|
237
|
+
# _use_is_stopped: bool
|
|
242
238
|
# ELSE
|
|
243
239
|
class ThreadInfo:
|
|
244
240
|
additional_info: PyDBAdditionalThreadInfo
|
|
@@ -259,6 +255,19 @@ class ThreadInfo:
|
|
|
259
255
|
self.thread_ident = thread_ident
|
|
260
256
|
self.additional_info = additional_info
|
|
261
257
|
self.trace = trace
|
|
258
|
+
self._use_is_stopped = hasattr(thread, '_is_stopped')
|
|
259
|
+
|
|
260
|
+
# fmt: off
|
|
261
|
+
# IFDEF CYTHON
|
|
262
|
+
# cdef bint is_thread_alive(self):
|
|
263
|
+
# ELSE
|
|
264
|
+
def is_thread_alive(self):
|
|
265
|
+
# ENDIF
|
|
266
|
+
# fmt: on
|
|
267
|
+
if self._use_is_stopped:
|
|
268
|
+
return not self.thread._is_stopped
|
|
269
|
+
else:
|
|
270
|
+
return not self.thread._handle.is_done()
|
|
262
271
|
|
|
263
272
|
|
|
264
273
|
class _DeleteDummyThreadOnDel:
|
|
@@ -322,7 +331,7 @@ def _create_thread_info(depth):
|
|
|
322
331
|
if t is None:
|
|
323
332
|
t = _thread_active.get(thread_ident)
|
|
324
333
|
|
|
325
|
-
if isinstance(t, threading._DummyThread):
|
|
334
|
+
if isinstance(t, threading._DummyThread) and not IS_PY313_OR_GREATER:
|
|
326
335
|
_thread_local_info._ref = _DeleteDummyThreadOnDel(t)
|
|
327
336
|
|
|
328
337
|
if t is None:
|
|
@@ -409,8 +418,9 @@ class FuncCodeInfo:
|
|
|
409
418
|
|
|
410
419
|
def get_line_of_offset(self, offset):
|
|
411
420
|
for start, end, line in self.code_obj.co_lines():
|
|
412
|
-
if
|
|
413
|
-
|
|
421
|
+
if start is not None and end is not None and line is not None:
|
|
422
|
+
if offset >= start and offset <= end:
|
|
423
|
+
return line
|
|
414
424
|
return -1
|
|
415
425
|
|
|
416
426
|
|
|
@@ -441,15 +451,41 @@ def _get_thread_info(create: bool, depth: int) -> Optional[ThreadInfo]:
|
|
|
441
451
|
return _thread_local_info.thread_info
|
|
442
452
|
|
|
443
453
|
|
|
444
|
-
|
|
454
|
+
# fmt: off
|
|
455
|
+
# IFDEF CYTHON
|
|
456
|
+
# cdef class _CodeLineInfo:
|
|
457
|
+
# cdef dict line_to_offset
|
|
458
|
+
# cdef int first_line
|
|
459
|
+
# cdef int last_line
|
|
460
|
+
# ELSE
|
|
461
|
+
class _CodeLineInfo:
|
|
462
|
+
line_to_offset: Dict[int, Any]
|
|
463
|
+
first_line: int
|
|
464
|
+
last_line: int
|
|
465
|
+
# ENDIF
|
|
466
|
+
# fmt: on
|
|
467
|
+
|
|
468
|
+
# fmt: off
|
|
469
|
+
# IFDEF CYTHON
|
|
470
|
+
# def __init__(self, dict line_to_offset, int first_line, int last_line):
|
|
471
|
+
# self.line_to_offset = line_to_offset
|
|
472
|
+
# self.first_line = first_line
|
|
473
|
+
# self.last_line = last_line
|
|
474
|
+
# ELSE
|
|
475
|
+
def __init__(self, line_to_offset, first_line, last_line):
|
|
476
|
+
self.line_to_offset = line_to_offset
|
|
477
|
+
self.first_line = first_line
|
|
478
|
+
self.last_line = last_line
|
|
445
479
|
|
|
480
|
+
# ENDIF
|
|
481
|
+
# fmt: on
|
|
446
482
|
|
|
447
483
|
# Note: this method has a version in cython too
|
|
448
484
|
# fmt: off
|
|
449
485
|
# IFDEF CYTHON
|
|
450
|
-
# cdef _get_code_line_info(code_obj, _cache={}):
|
|
486
|
+
# cdef _CodeLineInfo _get_code_line_info(code_obj, _cache={}):
|
|
451
487
|
# ELSE
|
|
452
|
-
def _get_code_line_info(code_obj, _cache={}):
|
|
488
|
+
def _get_code_line_info(code_obj, _cache={}) -> _CodeLineInfo:
|
|
453
489
|
# ENDIF
|
|
454
490
|
# fmt: on
|
|
455
491
|
try:
|
|
@@ -832,23 +868,23 @@ def _unwind_event(code, instruction, exc):
|
|
|
832
868
|
if thread_info is None:
|
|
833
869
|
return
|
|
834
870
|
|
|
835
|
-
frame = _getframe(1)
|
|
836
|
-
arg = (type(exc), exc, exc.__traceback__)
|
|
837
871
|
|
|
838
872
|
py_db: object = GlobalDebuggerHolder.global_dbg
|
|
839
873
|
if py_db is None or py_db.pydb_disposed:
|
|
840
874
|
return
|
|
841
875
|
|
|
842
|
-
if not thread_info.trace or not is_thread_alive(
|
|
876
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
843
877
|
# For thread-related stuff we can't disable the code tracing because other
|
|
844
878
|
# threads may still want it...
|
|
845
879
|
return
|
|
846
|
-
|
|
880
|
+
|
|
847
881
|
func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
|
|
848
882
|
if func_code_info.always_skip_code:
|
|
849
883
|
return
|
|
850
|
-
|
|
884
|
+
|
|
851
885
|
# print('_unwind_event', code, exc)
|
|
886
|
+
frame = _getframe(1)
|
|
887
|
+
arg = (type(exc), exc, exc.__traceback__)
|
|
852
888
|
|
|
853
889
|
has_caught_exception_breakpoint_in_pydb = (
|
|
854
890
|
py_db.break_on_caught_exceptions or py_db.break_on_user_uncaught_exceptions or py_db.has_plugin_exception_breaks
|
|
@@ -857,7 +893,7 @@ def _unwind_event(code, instruction, exc):
|
|
|
857
893
|
|
|
858
894
|
if has_caught_exception_breakpoint_in_pydb:
|
|
859
895
|
_should_stop, frame, user_uncaught_exc_info = should_stop_on_exception(
|
|
860
|
-
py_db, thread_info.additional_info, frame, thread_info.thread, arg, None
|
|
896
|
+
py_db, thread_info.additional_info, frame, thread_info.thread, arg, None, is_unwind=True
|
|
861
897
|
)
|
|
862
898
|
if user_uncaught_exc_info:
|
|
863
899
|
# TODO: Check: this may no longer be needed as in the unwind we know it's
|
|
@@ -871,13 +907,14 @@ def _unwind_event(code, instruction, exc):
|
|
|
871
907
|
)
|
|
872
908
|
|
|
873
909
|
if is_unhandled:
|
|
874
|
-
# print('stop in user uncaught')
|
|
875
910
|
handle_exception(py_db, thread_info.thread, frame, user_uncaught_exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
|
|
876
911
|
return
|
|
877
912
|
|
|
878
913
|
break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions
|
|
879
|
-
if break_on_uncaught_exceptions
|
|
880
|
-
|
|
914
|
+
if break_on_uncaught_exceptions:
|
|
915
|
+
if frame is _get_unhandled_exception_frame(exc, 1):
|
|
916
|
+
stop_on_unhandled_exception(py_db, thread_info.thread, thread_info.additional_info, arg)
|
|
917
|
+
return
|
|
881
918
|
|
|
882
919
|
|
|
883
920
|
# fmt: off
|
|
@@ -905,15 +942,12 @@ def _raise_event(code, instruction, exc):
|
|
|
905
942
|
thread_info = _get_thread_info(True, 1)
|
|
906
943
|
if thread_info is None:
|
|
907
944
|
return
|
|
908
|
-
|
|
909
|
-
frame = _getframe(1)
|
|
910
|
-
arg = (type(exc), exc, exc.__traceback__)
|
|
911
|
-
|
|
945
|
+
|
|
912
946
|
py_db: object = GlobalDebuggerHolder.global_dbg
|
|
913
947
|
if py_db is None or py_db.pydb_disposed:
|
|
914
948
|
return
|
|
915
949
|
|
|
916
|
-
if not thread_info.trace or not is_thread_alive(
|
|
950
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
917
951
|
# For thread-related stuff we can't disable the code tracing because other
|
|
918
952
|
# threads may still want it...
|
|
919
953
|
return
|
|
@@ -922,7 +956,8 @@ def _raise_event(code, instruction, exc):
|
|
|
922
956
|
if func_code_info.always_skip_code:
|
|
923
957
|
return
|
|
924
958
|
|
|
925
|
-
|
|
959
|
+
frame = _getframe(1)
|
|
960
|
+
arg = (type(exc), exc, exc.__traceback__)
|
|
926
961
|
|
|
927
962
|
# Compute the previous exception info (if any). We use it to check if the exception
|
|
928
963
|
# should be stopped
|
|
@@ -938,10 +973,6 @@ def _raise_event(code, instruction, exc):
|
|
|
938
973
|
if should_stop:
|
|
939
974
|
handle_exception(py_db, thread_info.thread, frame, arg, EXCEPTION_TYPE_HANDLED)
|
|
940
975
|
|
|
941
|
-
# Once we leave the raise event, we are no longer in the state of 'just_raised', so
|
|
942
|
-
# indicate that this traceback is for an exception in the unwinding state
|
|
943
|
-
flag_as_unwinding(exc.__traceback__)
|
|
944
|
-
|
|
945
976
|
|
|
946
977
|
# fmt: off
|
|
947
978
|
# IFDEF CYTHON
|
|
@@ -1031,7 +1062,7 @@ def _return_event(code, instruction, retval):
|
|
|
1031
1062
|
if py_db is None or py_db.pydb_disposed:
|
|
1032
1063
|
return monitor.DISABLE
|
|
1033
1064
|
|
|
1034
|
-
if not thread_info.trace or not is_thread_alive(
|
|
1065
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
1035
1066
|
# For thread-related stuff we can't disable the code tracing because other
|
|
1036
1067
|
# threads may still want it...
|
|
1037
1068
|
return
|
|
@@ -1342,7 +1373,11 @@ def _jump_event(code, from_offset, to_offset):
|
|
|
1342
1373
|
if py_db is None or py_db.pydb_disposed:
|
|
1343
1374
|
return monitor.DISABLE
|
|
1344
1375
|
|
|
1345
|
-
|
|
1376
|
+
# If we get another jump event, remove the extra check for the line event
|
|
1377
|
+
if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
|
|
1378
|
+
del _thread_local_info.f_disable_next_line_if_match
|
|
1379
|
+
|
|
1380
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
1346
1381
|
# For thread-related stuff we can't disable the code tracing because other
|
|
1347
1382
|
# threads may still want it...
|
|
1348
1383
|
return
|
|
@@ -1358,9 +1393,8 @@ def _jump_event(code, from_offset, to_offset):
|
|
|
1358
1393
|
if to_offset > from_offset:
|
|
1359
1394
|
return monitor.DISABLE
|
|
1360
1395
|
|
|
1361
|
-
from_line = func_code_info.get_line_of_offset(from_offset)
|
|
1362
|
-
to_line = func_code_info.get_line_of_offset(to_offset)
|
|
1363
|
-
# print('jump event', code.co_name, 'from line', from_line, 'to line', to_line)
|
|
1396
|
+
from_line = func_code_info.get_line_of_offset(from_offset or 0)
|
|
1397
|
+
to_line = func_code_info.get_line_of_offset(to_offset or 0)
|
|
1364
1398
|
|
|
1365
1399
|
if from_line != to_line:
|
|
1366
1400
|
# I.e.: use case: "yield from [j for j in a if j % 2 == 0]"
|
|
@@ -1370,7 +1404,8 @@ def _jump_event(code, from_offset, to_offset):
|
|
|
1370
1404
|
frame = _getframe(1)
|
|
1371
1405
|
|
|
1372
1406
|
# Disable the next line event as we're jumping to a line. The line event will be redundant.
|
|
1373
|
-
_thread_local_info.f_disable_next_line_if_match = frame.f_lineno
|
|
1407
|
+
_thread_local_info.f_disable_next_line_if_match = (func_code_info.co_filename, frame.f_lineno)
|
|
1408
|
+
# pydev_log.debug('_jump_event', code.co_name, 'from line', from_line, 'to line', frame.f_lineno)
|
|
1374
1409
|
|
|
1375
1410
|
return _internal_line_event(func_code_info, frame, frame.f_lineno)
|
|
1376
1411
|
|
|
@@ -1399,24 +1434,26 @@ def _line_event(code, line):
|
|
|
1399
1434
|
if py_db is None or py_db.pydb_disposed:
|
|
1400
1435
|
return monitor.DISABLE
|
|
1401
1436
|
|
|
1402
|
-
|
|
1437
|
+
# If we get another line event, remove the extra check for the line event
|
|
1438
|
+
if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
|
|
1439
|
+
(co_filename, line_to_skip) = _thread_local_info.f_disable_next_line_if_match
|
|
1440
|
+
del _thread_local_info.f_disable_next_line_if_match
|
|
1441
|
+
if line_to_skip is line and co_filename == code.co_filename:
|
|
1442
|
+
# The last jump already jumped to this line and we haven't had any
|
|
1443
|
+
# line events or jumps since then. We don't want to consider this line twice
|
|
1444
|
+
# pydev_log.debug('_line_event skipped', line)
|
|
1445
|
+
return
|
|
1446
|
+
|
|
1447
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
1403
1448
|
# For thread-related stuff we can't disable the code tracing because other
|
|
1404
1449
|
# threads may still want it...
|
|
1405
1450
|
return
|
|
1406
1451
|
|
|
1407
|
-
if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
|
|
1408
|
-
if _thread_local_info.f_disable_next_line_if_match is line:
|
|
1409
|
-
# If we're in a jump, we should skip this line event. The jump would have
|
|
1410
|
-
# been considered a line event for this same line and we don't want to
|
|
1411
|
-
# stop twice.
|
|
1412
|
-
del _thread_local_info.f_disable_next_line_if_match
|
|
1413
|
-
return
|
|
1414
|
-
|
|
1415
1452
|
func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
|
|
1416
1453
|
if func_code_info.always_skip_code or func_code_info.always_filtered_out:
|
|
1417
1454
|
return monitor.DISABLE
|
|
1418
1455
|
|
|
1419
|
-
#
|
|
1456
|
+
# pydev_log.debug('_line_event', code.co_name, line)
|
|
1420
1457
|
|
|
1421
1458
|
# We know the frame depth.
|
|
1422
1459
|
frame = _getframe(1)
|
|
@@ -1646,7 +1683,7 @@ def _start_method_event(code, instruction_offset):
|
|
|
1646
1683
|
if py_db is None or py_db.pydb_disposed:
|
|
1647
1684
|
return monitor.DISABLE
|
|
1648
1685
|
|
|
1649
|
-
if not thread_info.trace or not is_thread_alive(
|
|
1686
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
1650
1687
|
# For thread-related stuff we can't disable the code tracing because other
|
|
1651
1688
|
# threads may still want it...
|
|
1652
1689
|
return
|
|
@@ -1843,7 +1880,10 @@ def update_monitor_events(suspend_requested: Optional[bool] = None) -> None:
|
|
|
1843
1880
|
monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, _start_method_event)
|
|
1844
1881
|
# monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, _resume_method_event)
|
|
1845
1882
|
monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, _line_event)
|
|
1846
|
-
|
|
1883
|
+
if not IS_PY313_OR_GREATER:
|
|
1884
|
+
# In Python 3.13+ jump_events aren't necessary as we have a line_event for every
|
|
1885
|
+
# jump location.
|
|
1886
|
+
monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, _jump_event)
|
|
1847
1887
|
monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, _return_event)
|
|
1848
1888
|
|
|
1849
1889
|
else:
|