debugpy 1.8.6__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.6/src/debugpy.egg-info → debugpy-1.8.8}/PKG-INFO +1 -1
- {debugpy-1.8.6 → debugpy-1.8.8}/pyproject.toml +5 -2
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py +8 -1
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py +58 -24
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +2 -1
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py +2 -1
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py +2 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py +12 -11
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py +12 -2
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +3999 -3952
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx +6 -5
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py +1 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py +4 -4
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py +28 -19
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +2 -2
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py +2 -1
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py +17 -2
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c +651 -631
- {debugpy-1.8.6 → 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.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py +137 -95
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c +7619 -5714
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx +137 -96
- debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py +1 -2
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py +1 -1
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt6.py +1 -1
- {debugpy-1.8.6 → 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.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd.py +19 -28
- {debugpy-1.8.6 → 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.6 → 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.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp +11 -11
- {debugpy-1.8.6 → 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.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.exe +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp +2 -4
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat +6 -8
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_file_utils.py +28 -40
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py +2 -1
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py +1 -1
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_tracing.py +4 -1
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_version.py +3 -3
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/adapter/servers.py +2 -2
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/__init__.py +2 -2
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/launcher/debuggee.py +2 -1
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/server/api.py +1 -1
- {debugpy-1.8.6 → debugpy-1.8.8/src/debugpy.egg-info}/PKG-INFO +1 -1
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy.egg-info/SOURCES.txt +8 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +0 -36
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/DESCRIPTION.md +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/LICENSE +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/MANIFEST.in +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/README.md +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/setup.cfg +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/setup.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/ThirdPartyNotices.txt +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/__main__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/_pydevd_packaging.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/_util.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/force_pydevd.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pyx +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py +0 -0
- /debugpy-1.8.6/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.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pxd +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/pydevd_sys_monitoring.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_coverage.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/README +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhook.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_pysrc.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_run_in_console.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevconsole.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_310.hpp +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_311.hpp +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_common.hpp +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/setup_pydevd_cython.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/adapter/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/adapter/__main__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/adapter/clients.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/adapter/components.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/adapter/launchers.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/adapter/sessions.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/json.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/log.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/messaging.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/singleton.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/sockets.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/stacks.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/timestamp.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/util.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/launcher/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/launcher/__main__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/launcher/handlers.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/launcher/output.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/launcher/winapi.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/public_api.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/server/__init__.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/server/attach_pid_injected.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/server/cli.py +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy.egg-info/dependency_links.txt +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy.egg-info/entry_points.txt +0 -0
- {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy.egg-info/top_level.txt +0 -0
- {debugpy-1.8.6 → 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
|
|
@@ -15,6 +15,7 @@ from os.path import basename, splitext
|
|
|
15
15
|
from _pydev_bundle import pydev_log
|
|
16
16
|
from _pydevd_bundle import pydevd_dont_trace
|
|
17
17
|
from _pydevd_bundle.pydevd_constants import (
|
|
18
|
+
IS_PY313_OR_GREATER,
|
|
18
19
|
GlobalDebuggerHolder,
|
|
19
20
|
ForkSafeLock,
|
|
20
21
|
PYDEVD_IPYTHON_CONTEXT,
|
|
@@ -22,7 +23,6 @@ from _pydevd_bundle.pydevd_constants import (
|
|
|
22
23
|
RETURN_VALUES_DICT,
|
|
23
24
|
PYTHON_SUSPEND,
|
|
24
25
|
)
|
|
25
|
-
from _pydevd_bundle.pydevd_frame_utils import short_tb, flag_as_unwinding, short_frame
|
|
26
26
|
from pydevd_file_utils import (
|
|
27
27
|
NORM_PATHS_AND_BASE_CONTAINER,
|
|
28
28
|
get_abs_path_real_path_and_base_from_file,
|
|
@@ -34,6 +34,7 @@ from _pydevd_bundle.pydevd_trace_dispatch import is_unhandled_exception
|
|
|
34
34
|
from _pydevd_bundle.pydevd_breakpoints import stop_on_unhandled_exception
|
|
35
35
|
from _pydevd_bundle.pydevd_utils import get_clsname_for_code
|
|
36
36
|
|
|
37
|
+
|
|
37
38
|
# fmt: off
|
|
38
39
|
# IFDEF CYTHON
|
|
39
40
|
# import cython
|
|
@@ -59,10 +60,8 @@ _thread_local_info = threading.local()
|
|
|
59
60
|
_get_ident = threading.get_ident
|
|
60
61
|
_thread_active = threading._active # noqa
|
|
61
62
|
|
|
62
|
-
STATE_SUSPEND: int = 2
|
|
63
63
|
CMD_STEP_INTO: int = 107
|
|
64
64
|
CMD_STEP_OVER: int = 108
|
|
65
|
-
CMD_STEP_OVER_MY_CODE: int = 159
|
|
66
65
|
CMD_STEP_INTO_MY_CODE: int = 144
|
|
67
66
|
CMD_STEP_INTO_COROUTINE: int = 206
|
|
68
67
|
CMD_SMART_STEP_INTO: int = 128
|
|
@@ -171,65 +170,62 @@ def _get_bootstrap_frame(depth: int) -> Tuple[Optional[FrameType], bool]:
|
|
|
171
170
|
|
|
172
171
|
# fmt: off
|
|
173
172
|
# IFDEF CYTHON
|
|
174
|
-
# cdef
|
|
173
|
+
# cdef _get_unhandled_exception_frame(exc, int depth):
|
|
175
174
|
# ELSE
|
|
176
|
-
def
|
|
175
|
+
def _get_unhandled_exception_frame(exc, depth: int) -> Optional[FrameType]:
|
|
177
176
|
# ENDIF
|
|
178
177
|
# fmt: on
|
|
179
|
-
|
|
180
|
-
|
|
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)
|
|
181
188
|
|
|
182
|
-
|
|
183
|
-
|
|
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]
|
|
184
193
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
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
|
|
189
199
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
200
|
+
elif name == "pydev_monkey":
|
|
201
|
+
if f_back.f_code.co_name == "__call__":
|
|
202
|
+
break
|
|
193
203
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
204
|
+
elif name == "pydevd":
|
|
205
|
+
if f_back.f_code.co_name in ("_exec", "run", "main"):
|
|
206
|
+
break
|
|
197
207
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
208
|
+
elif name == "pydevd_runpy":
|
|
209
|
+
if f_back.f_code.co_name.startswith(("run", "_run")):
|
|
210
|
+
break
|
|
201
211
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
212
|
+
elif name == "<frozen runpy>":
|
|
213
|
+
if f_back.f_code.co_name.startswith(("run", "_run")):
|
|
214
|
+
break
|
|
205
215
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
216
|
+
elif name == "runpy":
|
|
217
|
+
if f_back.f_code.co_name.startswith(("run", "_run")):
|
|
218
|
+
break
|
|
209
219
|
|
|
210
|
-
|
|
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
|
|
211
228
|
|
|
212
|
-
# fmt: off
|
|
213
|
-
# IFDEF CYTHON
|
|
214
|
-
# cdef _is_last_user_frame(frame: FrameType):
|
|
215
|
-
# ELSE
|
|
216
|
-
def _is_last_user_frame(frame: FrameType) -> bool:
|
|
217
|
-
# ENDIF
|
|
218
|
-
# fmt: on
|
|
219
|
-
# If this frame is not a user frame, then it can't be the last one
|
|
220
|
-
if not _is_user_frame(frame):
|
|
221
|
-
return False
|
|
222
|
-
|
|
223
|
-
# If this frame is the last frame, then it is the last one
|
|
224
|
-
if frame.f_back is None:
|
|
225
|
-
return True
|
|
226
|
-
|
|
227
|
-
# If the next frame is not a user frame, then this frame is the last one
|
|
228
|
-
if not _is_user_frame(frame.f_back):
|
|
229
|
-
return True
|
|
230
|
-
|
|
231
|
-
# Otherwise if the next frame is a user frame, then this frame is not the last one
|
|
232
|
-
return False
|
|
233
229
|
|
|
234
230
|
# fmt: off
|
|
235
231
|
# IFDEF CYTHON
|
|
@@ -238,6 +234,7 @@ def _is_last_user_frame(frame: FrameType) -> bool:
|
|
|
238
234
|
# cdef PyDBAdditionalThreadInfo additional_info
|
|
239
235
|
# thread: threading.Thread
|
|
240
236
|
# trace: bool
|
|
237
|
+
# _use_is_stopped: bool
|
|
241
238
|
# ELSE
|
|
242
239
|
class ThreadInfo:
|
|
243
240
|
additional_info: PyDBAdditionalThreadInfo
|
|
@@ -258,6 +255,19 @@ class ThreadInfo:
|
|
|
258
255
|
self.thread_ident = thread_ident
|
|
259
256
|
self.additional_info = additional_info
|
|
260
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()
|
|
261
271
|
|
|
262
272
|
|
|
263
273
|
class _DeleteDummyThreadOnDel:
|
|
@@ -321,7 +331,7 @@ def _create_thread_info(depth):
|
|
|
321
331
|
if t is None:
|
|
322
332
|
t = _thread_active.get(thread_ident)
|
|
323
333
|
|
|
324
|
-
if isinstance(t, threading._DummyThread):
|
|
334
|
+
if isinstance(t, threading._DummyThread) and not IS_PY313_OR_GREATER:
|
|
325
335
|
_thread_local_info._ref = _DeleteDummyThreadOnDel(t)
|
|
326
336
|
|
|
327
337
|
if t is None:
|
|
@@ -408,8 +418,9 @@ class FuncCodeInfo:
|
|
|
408
418
|
|
|
409
419
|
def get_line_of_offset(self, offset):
|
|
410
420
|
for start, end, line in self.code_obj.co_lines():
|
|
411
|
-
if
|
|
412
|
-
|
|
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
|
|
413
424
|
return -1
|
|
414
425
|
|
|
415
426
|
|
|
@@ -440,15 +451,41 @@ def _get_thread_info(create: bool, depth: int) -> Optional[ThreadInfo]:
|
|
|
440
451
|
return _thread_local_info.thread_info
|
|
441
452
|
|
|
442
453
|
|
|
443
|
-
|
|
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
|
|
444
479
|
|
|
480
|
+
# ENDIF
|
|
481
|
+
# fmt: on
|
|
445
482
|
|
|
446
483
|
# Note: this method has a version in cython too
|
|
447
484
|
# fmt: off
|
|
448
485
|
# IFDEF CYTHON
|
|
449
|
-
# cdef _get_code_line_info(code_obj, _cache={}):
|
|
486
|
+
# cdef _CodeLineInfo _get_code_line_info(code_obj, _cache={}):
|
|
450
487
|
# ELSE
|
|
451
|
-
def _get_code_line_info(code_obj, _cache={}):
|
|
488
|
+
def _get_code_line_info(code_obj, _cache={}) -> _CodeLineInfo:
|
|
452
489
|
# ENDIF
|
|
453
490
|
# fmt: on
|
|
454
491
|
try:
|
|
@@ -459,9 +496,10 @@ def _get_code_line_info(code_obj, _cache={}):
|
|
|
459
496
|
last_line = None
|
|
460
497
|
|
|
461
498
|
for offset, line in dis.findlinestarts(code_obj):
|
|
462
|
-
|
|
499
|
+
if offset is not None and line is not None:
|
|
500
|
+
line_to_offset[line] = offset
|
|
463
501
|
|
|
464
|
-
if line_to_offset:
|
|
502
|
+
if len(line_to_offset):
|
|
465
503
|
first_line = min(line_to_offset)
|
|
466
504
|
last_line = max(line_to_offset)
|
|
467
505
|
ret = _CodeLineInfo(line_to_offset, first_line, last_line)
|
|
@@ -830,23 +868,23 @@ def _unwind_event(code, instruction, exc):
|
|
|
830
868
|
if thread_info is None:
|
|
831
869
|
return
|
|
832
870
|
|
|
833
|
-
frame = _getframe(1)
|
|
834
|
-
arg = (type(exc), exc, exc.__traceback__)
|
|
835
871
|
|
|
836
872
|
py_db: object = GlobalDebuggerHolder.global_dbg
|
|
837
873
|
if py_db is None or py_db.pydb_disposed:
|
|
838
874
|
return
|
|
839
875
|
|
|
840
|
-
if not thread_info.trace or thread_info.
|
|
876
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
841
877
|
# For thread-related stuff we can't disable the code tracing because other
|
|
842
878
|
# threads may still want it...
|
|
843
879
|
return
|
|
844
|
-
|
|
880
|
+
|
|
845
881
|
func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
|
|
846
882
|
if func_code_info.always_skip_code:
|
|
847
883
|
return
|
|
848
|
-
|
|
884
|
+
|
|
849
885
|
# print('_unwind_event', code, exc)
|
|
886
|
+
frame = _getframe(1)
|
|
887
|
+
arg = (type(exc), exc, exc.__traceback__)
|
|
850
888
|
|
|
851
889
|
has_caught_exception_breakpoint_in_pydb = (
|
|
852
890
|
py_db.break_on_caught_exceptions or py_db.break_on_user_uncaught_exceptions or py_db.has_plugin_exception_breaks
|
|
@@ -855,7 +893,7 @@ def _unwind_event(code, instruction, exc):
|
|
|
855
893
|
|
|
856
894
|
if has_caught_exception_breakpoint_in_pydb:
|
|
857
895
|
_should_stop, frame, user_uncaught_exc_info = should_stop_on_exception(
|
|
858
|
-
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
|
|
859
897
|
)
|
|
860
898
|
if user_uncaught_exc_info:
|
|
861
899
|
# TODO: Check: this may no longer be needed as in the unwind we know it's
|
|
@@ -869,13 +907,14 @@ def _unwind_event(code, instruction, exc):
|
|
|
869
907
|
)
|
|
870
908
|
|
|
871
909
|
if is_unhandled:
|
|
872
|
-
# print('stop in user uncaught')
|
|
873
910
|
handle_exception(py_db, thread_info.thread, frame, user_uncaught_exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
|
|
874
911
|
return
|
|
875
912
|
|
|
876
913
|
break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions
|
|
877
|
-
if break_on_uncaught_exceptions
|
|
878
|
-
|
|
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
|
|
879
918
|
|
|
880
919
|
|
|
881
920
|
# fmt: off
|
|
@@ -903,15 +942,12 @@ def _raise_event(code, instruction, exc):
|
|
|
903
942
|
thread_info = _get_thread_info(True, 1)
|
|
904
943
|
if thread_info is None:
|
|
905
944
|
return
|
|
906
|
-
|
|
907
|
-
frame = _getframe(1)
|
|
908
|
-
arg = (type(exc), exc, exc.__traceback__)
|
|
909
|
-
|
|
945
|
+
|
|
910
946
|
py_db: object = GlobalDebuggerHolder.global_dbg
|
|
911
947
|
if py_db is None or py_db.pydb_disposed:
|
|
912
948
|
return
|
|
913
949
|
|
|
914
|
-
if not thread_info.trace or thread_info.
|
|
950
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
915
951
|
# For thread-related stuff we can't disable the code tracing because other
|
|
916
952
|
# threads may still want it...
|
|
917
953
|
return
|
|
@@ -920,7 +956,8 @@ def _raise_event(code, instruction, exc):
|
|
|
920
956
|
if func_code_info.always_skip_code:
|
|
921
957
|
return
|
|
922
958
|
|
|
923
|
-
|
|
959
|
+
frame = _getframe(1)
|
|
960
|
+
arg = (type(exc), exc, exc.__traceback__)
|
|
924
961
|
|
|
925
962
|
# Compute the previous exception info (if any). We use it to check if the exception
|
|
926
963
|
# should be stopped
|
|
@@ -936,10 +973,6 @@ def _raise_event(code, instruction, exc):
|
|
|
936
973
|
if should_stop:
|
|
937
974
|
handle_exception(py_db, thread_info.thread, frame, arg, EXCEPTION_TYPE_HANDLED)
|
|
938
975
|
|
|
939
|
-
# Once we leave the raise event, we are no longer in the state of 'just_raised', so
|
|
940
|
-
# indicate that this traceback is for an exception in the unwinding state
|
|
941
|
-
flag_as_unwinding(exc.__traceback__)
|
|
942
|
-
|
|
943
976
|
|
|
944
977
|
# fmt: off
|
|
945
978
|
# IFDEF CYTHON
|
|
@@ -1029,7 +1062,7 @@ def _return_event(code, instruction, retval):
|
|
|
1029
1062
|
if py_db is None or py_db.pydb_disposed:
|
|
1030
1063
|
return monitor.DISABLE
|
|
1031
1064
|
|
|
1032
|
-
if not thread_info.trace or thread_info.
|
|
1065
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
1033
1066
|
# For thread-related stuff we can't disable the code tracing because other
|
|
1034
1067
|
# threads may still want it...
|
|
1035
1068
|
return
|
|
@@ -1340,7 +1373,11 @@ def _jump_event(code, from_offset, to_offset):
|
|
|
1340
1373
|
if py_db is None or py_db.pydb_disposed:
|
|
1341
1374
|
return monitor.DISABLE
|
|
1342
1375
|
|
|
1343
|
-
|
|
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():
|
|
1344
1381
|
# For thread-related stuff we can't disable the code tracing because other
|
|
1345
1382
|
# threads may still want it...
|
|
1346
1383
|
return
|
|
@@ -1356,9 +1393,8 @@ def _jump_event(code, from_offset, to_offset):
|
|
|
1356
1393
|
if to_offset > from_offset:
|
|
1357
1394
|
return monitor.DISABLE
|
|
1358
1395
|
|
|
1359
|
-
from_line = func_code_info.get_line_of_offset(from_offset)
|
|
1360
|
-
to_line = func_code_info.get_line_of_offset(to_offset)
|
|
1361
|
-
# 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)
|
|
1362
1398
|
|
|
1363
1399
|
if from_line != to_line:
|
|
1364
1400
|
# I.e.: use case: "yield from [j for j in a if j % 2 == 0]"
|
|
@@ -1368,7 +1404,8 @@ def _jump_event(code, from_offset, to_offset):
|
|
|
1368
1404
|
frame = _getframe(1)
|
|
1369
1405
|
|
|
1370
1406
|
# Disable the next line event as we're jumping to a line. The line event will be redundant.
|
|
1371
|
-
_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)
|
|
1372
1409
|
|
|
1373
1410
|
return _internal_line_event(func_code_info, frame, frame.f_lineno)
|
|
1374
1411
|
|
|
@@ -1397,24 +1434,26 @@ def _line_event(code, line):
|
|
|
1397
1434
|
if py_db is None or py_db.pydb_disposed:
|
|
1398
1435
|
return monitor.DISABLE
|
|
1399
1436
|
|
|
1400
|
-
|
|
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():
|
|
1401
1448
|
# For thread-related stuff we can't disable the code tracing because other
|
|
1402
1449
|
# threads may still want it...
|
|
1403
1450
|
return
|
|
1404
1451
|
|
|
1405
|
-
if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
|
|
1406
|
-
if _thread_local_info.f_disable_next_line_if_match is line:
|
|
1407
|
-
# If we're in a jump, we should skip this line event. The jump would have
|
|
1408
|
-
# been considered a line event for this same line and we don't want to
|
|
1409
|
-
# stop twice.
|
|
1410
|
-
del _thread_local_info.f_disable_next_line_if_match
|
|
1411
|
-
return
|
|
1412
|
-
|
|
1413
1452
|
func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
|
|
1414
1453
|
if func_code_info.always_skip_code or func_code_info.always_filtered_out:
|
|
1415
1454
|
return monitor.DISABLE
|
|
1416
1455
|
|
|
1417
|
-
#
|
|
1456
|
+
# pydev_log.debug('_line_event', code.co_name, line)
|
|
1418
1457
|
|
|
1419
1458
|
# We know the frame depth.
|
|
1420
1459
|
frame = _getframe(1)
|
|
@@ -1644,7 +1683,7 @@ def _start_method_event(code, instruction_offset):
|
|
|
1644
1683
|
if py_db is None or py_db.pydb_disposed:
|
|
1645
1684
|
return monitor.DISABLE
|
|
1646
1685
|
|
|
1647
|
-
if not thread_info.trace or thread_info.
|
|
1686
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
1648
1687
|
# For thread-related stuff we can't disable the code tracing because other
|
|
1649
1688
|
# threads may still want it...
|
|
1650
1689
|
return
|
|
@@ -1841,7 +1880,10 @@ def update_monitor_events(suspend_requested: Optional[bool] = None) -> None:
|
|
|
1841
1880
|
monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, _start_method_event)
|
|
1842
1881
|
# monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, _resume_method_event)
|
|
1843
1882
|
monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, _line_event)
|
|
1844
|
-
|
|
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)
|
|
1845
1887
|
monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, _return_event)
|
|
1846
1888
|
|
|
1847
1889
|
else:
|