debugpy 1.8.7__zip → 1.8.9__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.9}/PKG-INFO +1 -1
- {debugpy-1.8.7 → debugpy-1.8.9}/pyproject.toml +5 -2
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py +8 -1
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py +58 -24
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py +1 -1
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +3 -1
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py +2 -1
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py +1 -2
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py +6 -121
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py +9 -9
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py +8 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +3395 -3365
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx +7 -10
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py +1 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py +6 -7
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py +27 -24
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +2 -2
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py +2 -1
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py +17 -2
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py +1 -3
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c +651 -631
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py +2 -1
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py +1 -2
- debugpy-1.8.9/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/COPYING +21 -0
- debugpy-1.8.9/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/INSTALLER +1 -0
- debugpy-1.8.9/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/METADATA +77 -0
- debugpy-1.8.9/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/RECORD +42 -0
- debugpy-1.8.9/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/WHEEL +5 -0
- debugpy-1.8.9/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/direct_url.json +1 -0
- debugpy-1.8.9/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.9}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py +138 -100
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c +7539 -5838
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx +138 -100
- debugpy-1.8.9/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py +1 -2
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py +1 -1
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt6.py +1 -1
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_loaders.py +27 -4
- debugpy-1.8.9/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +50 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd.py +35 -38
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/add_code_to_python_process.py +1 -1
- debugpy-1.8.9/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
- debugpy-1.8.9/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_script.py +4 -0
- debugpy-1.8.9/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
- debugpy-1.8.9/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp +11 -11
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.exe +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp +2 -4
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat +6 -8
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_file_utils.py +28 -40
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py +2 -1
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py +1 -1
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_tracing.py +4 -1
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_version.py +3 -3
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/adapter/servers.py +2 -2
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/__init__.py +2 -2
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/launcher/debuggee.py +2 -1
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/server/api.py +1 -1
- {debugpy-1.8.7 → debugpy-1.8.9/src/debugpy.egg-info}/PKG-INFO +1 -1
- {debugpy-1.8.7 → debugpy-1.8.9}/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 → debugpy-1.8.9}/DESCRIPTION.md +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/LICENSE +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/MANIFEST.in +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/README.md +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/setup.cfg +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/setup.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/ThirdPartyNotices.txt +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/__main__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/_pydevd_packaging.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/_util.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/force_pydevd.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pyx +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/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.9/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.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pxd +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/pydevd_sys_monitoring.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_coverage.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/README +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhook.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_pysrc.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_run_in_console.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevconsole.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_310.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_311.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_common.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/setup_pydevd_cython.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/adapter/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/adapter/__main__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/adapter/clients.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/adapter/components.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/adapter/launchers.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/adapter/sessions.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/json.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/log.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/messaging.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/singleton.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/sockets.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/stacks.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/timestamp.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/util.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/launcher/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/launcher/__main__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/launcher/handlers.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/launcher/output.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/launcher/winapi.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/public_api.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/server/__init__.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/server/attach_pid_injected.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/server/cli.py +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy.egg-info/dependency_links.txt +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy.egg-info/entry_points.txt +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy.egg-info/top_level.txt +0 -0
- {debugpy-1.8.7 → debugpy-1.8.9}/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:
|
|
63
|
+
line_to_offset[line] = offset
|
|
63
64
|
|
|
64
65
|
if line_to_offset:
|
|
65
66
|
first_line = min(line_to_offset)
|
|
@@ -19,7 +19,6 @@ from _pydevd_frame_eval.vendored.bytecode.instr import (
|
|
|
19
19
|
_check_arg_int,
|
|
20
20
|
)
|
|
21
21
|
|
|
22
|
-
|
|
23
22
|
# - jumps use instruction
|
|
24
23
|
# - lineno use bytes (dis.findlinestarts(code))
|
|
25
24
|
# - dis displays bytes
|
|
@@ -169,7 +168,7 @@ class ConcreteBytecode(_bytecode._BaseBytecodeList):
|
|
|
169
168
|
|
|
170
169
|
@staticmethod
|
|
171
170
|
def from_code(code, *, extended_arg=False):
|
|
172
|
-
line_starts = dict(dis.findlinestarts(code))
|
|
171
|
+
line_starts = dict(entry for entry in dis.findlinestarts(code) if entry[1] is not None)
|
|
173
172
|
|
|
174
173
|
# find block starts
|
|
175
174
|
instructions = []
|
|
@@ -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,
|
|
@@ -60,10 +59,8 @@ _thread_local_info = threading.local()
|
|
|
60
59
|
_get_ident = threading.get_ident
|
|
61
60
|
_thread_active = threading._active # noqa
|
|
62
61
|
|
|
63
|
-
STATE_SUSPEND: int = 2
|
|
64
62
|
CMD_STEP_INTO: int = 107
|
|
65
63
|
CMD_STEP_OVER: int = 108
|
|
66
|
-
CMD_STEP_OVER_MY_CODE: int = 159
|
|
67
64
|
CMD_STEP_INTO_MY_CODE: int = 144
|
|
68
65
|
CMD_STEP_INTO_COROUTINE: int = 206
|
|
69
66
|
CMD_SMART_STEP_INTO: int = 128
|
|
@@ -170,67 +167,65 @@ def _get_bootstrap_frame(depth: int) -> Tuple[Optional[FrameType], bool]:
|
|
|
170
167
|
|
|
171
168
|
return f_bootstrap, is_bootstrap_frame_internal
|
|
172
169
|
|
|
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:
|
|
@@ -364,6 +373,7 @@ def _create_thread_info(depth):
|
|
|
364
373
|
# cdef str co_name
|
|
365
374
|
# ELSE
|
|
366
375
|
class FuncCodeInfo:
|
|
376
|
+
|
|
367
377
|
# ENDIF
|
|
368
378
|
# fmt: on
|
|
369
379
|
def __init__(self):
|
|
@@ -409,8 +419,9 @@ class FuncCodeInfo:
|
|
|
409
419
|
|
|
410
420
|
def get_line_of_offset(self, offset):
|
|
411
421
|
for start, end, line in self.code_obj.co_lines():
|
|
412
|
-
if
|
|
413
|
-
|
|
422
|
+
if start is not None and end is not None and line is not None:
|
|
423
|
+
if offset >= start and offset <= end:
|
|
424
|
+
return line
|
|
414
425
|
return -1
|
|
415
426
|
|
|
416
427
|
|
|
@@ -441,15 +452,41 @@ def _get_thread_info(create: bool, depth: int) -> Optional[ThreadInfo]:
|
|
|
441
452
|
return _thread_local_info.thread_info
|
|
442
453
|
|
|
443
454
|
|
|
444
|
-
|
|
455
|
+
# fmt: off
|
|
456
|
+
# IFDEF CYTHON
|
|
457
|
+
# cdef class _CodeLineInfo:
|
|
458
|
+
# cdef dict line_to_offset
|
|
459
|
+
# cdef int first_line
|
|
460
|
+
# cdef int last_line
|
|
461
|
+
# ELSE
|
|
462
|
+
class _CodeLineInfo:
|
|
463
|
+
line_to_offset: Dict[int, Any]
|
|
464
|
+
first_line: int
|
|
465
|
+
last_line: int
|
|
466
|
+
# ENDIF
|
|
467
|
+
# fmt: on
|
|
445
468
|
|
|
469
|
+
# fmt: off
|
|
470
|
+
# IFDEF CYTHON
|
|
471
|
+
# def __init__(self, dict line_to_offset, int first_line, int last_line):
|
|
472
|
+
# self.line_to_offset = line_to_offset
|
|
473
|
+
# self.first_line = first_line
|
|
474
|
+
# self.last_line = last_line
|
|
475
|
+
# ELSE
|
|
476
|
+
def __init__(self, line_to_offset, first_line, last_line):
|
|
477
|
+
self.line_to_offset = line_to_offset
|
|
478
|
+
self.first_line = first_line
|
|
479
|
+
self.last_line = last_line
|
|
480
|
+
|
|
481
|
+
# ENDIF
|
|
482
|
+
# fmt: on
|
|
446
483
|
|
|
447
484
|
# Note: this method has a version in cython too
|
|
448
485
|
# fmt: off
|
|
449
486
|
# IFDEF CYTHON
|
|
450
|
-
# cdef _get_code_line_info(code_obj, _cache={}):
|
|
487
|
+
# cdef _CodeLineInfo _get_code_line_info(code_obj, _cache={}):
|
|
451
488
|
# ELSE
|
|
452
|
-
def _get_code_line_info(code_obj, _cache={}):
|
|
489
|
+
def _get_code_line_info(code_obj, _cache={}) -> _CodeLineInfo:
|
|
453
490
|
# ENDIF
|
|
454
491
|
# fmt: on
|
|
455
492
|
try:
|
|
@@ -460,7 +497,7 @@ def _get_code_line_info(code_obj, _cache={}):
|
|
|
460
497
|
last_line = None
|
|
461
498
|
|
|
462
499
|
for offset, line in dis.findlinestarts(code_obj):
|
|
463
|
-
if
|
|
500
|
+
if line is not None:
|
|
464
501
|
line_to_offset[line] = offset
|
|
465
502
|
|
|
466
503
|
if len(line_to_offset):
|
|
@@ -832,32 +869,30 @@ def _unwind_event(code, instruction, exc):
|
|
|
832
869
|
if thread_info is None:
|
|
833
870
|
return
|
|
834
871
|
|
|
835
|
-
frame = _getframe(1)
|
|
836
|
-
arg = (type(exc), exc, exc.__traceback__)
|
|
837
|
-
|
|
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
|
|
855
891
|
)
|
|
856
892
|
|
|
857
|
-
|
|
858
893
|
if has_caught_exception_breakpoint_in_pydb:
|
|
859
894
|
_should_stop, frame, user_uncaught_exc_info = should_stop_on_exception(
|
|
860
|
-
py_db, thread_info.additional_info, frame, thread_info.thread, arg, None
|
|
895
|
+
py_db, thread_info.additional_info, frame, thread_info.thread, arg, None, is_unwind=True
|
|
861
896
|
)
|
|
862
897
|
if user_uncaught_exc_info:
|
|
863
898
|
# TODO: Check: this may no longer be needed as in the unwind we know it's
|
|
@@ -871,13 +906,14 @@ def _unwind_event(code, instruction, exc):
|
|
|
871
906
|
)
|
|
872
907
|
|
|
873
908
|
if is_unhandled:
|
|
874
|
-
# print('stop in user uncaught')
|
|
875
909
|
handle_exception(py_db, thread_info.thread, frame, user_uncaught_exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
|
|
876
910
|
return
|
|
877
911
|
|
|
878
912
|
break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions
|
|
879
|
-
if break_on_uncaught_exceptions
|
|
880
|
-
|
|
913
|
+
if break_on_uncaught_exceptions:
|
|
914
|
+
if frame is _get_unhandled_exception_frame(exc, 1):
|
|
915
|
+
stop_on_unhandled_exception(py_db, thread_info.thread, thread_info.additional_info, arg)
|
|
916
|
+
return
|
|
881
917
|
|
|
882
918
|
|
|
883
919
|
# fmt: off
|
|
@@ -905,15 +941,12 @@ def _raise_event(code, instruction, exc):
|
|
|
905
941
|
thread_info = _get_thread_info(True, 1)
|
|
906
942
|
if thread_info is None:
|
|
907
943
|
return
|
|
908
|
-
|
|
909
|
-
frame = _getframe(1)
|
|
910
|
-
arg = (type(exc), exc, exc.__traceback__)
|
|
911
|
-
|
|
944
|
+
|
|
912
945
|
py_db: object = GlobalDebuggerHolder.global_dbg
|
|
913
946
|
if py_db is None or py_db.pydb_disposed:
|
|
914
947
|
return
|
|
915
948
|
|
|
916
|
-
if not thread_info.trace or not is_thread_alive(
|
|
949
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
917
950
|
# For thread-related stuff we can't disable the code tracing because other
|
|
918
951
|
# threads may still want it...
|
|
919
952
|
return
|
|
@@ -922,7 +955,8 @@ def _raise_event(code, instruction, exc):
|
|
|
922
955
|
if func_code_info.always_skip_code:
|
|
923
956
|
return
|
|
924
957
|
|
|
925
|
-
|
|
958
|
+
frame = _getframe(1)
|
|
959
|
+
arg = (type(exc), exc, exc.__traceback__)
|
|
926
960
|
|
|
927
961
|
# Compute the previous exception info (if any). We use it to check if the exception
|
|
928
962
|
# should be stopped
|
|
@@ -938,10 +972,6 @@ def _raise_event(code, instruction, exc):
|
|
|
938
972
|
if should_stop:
|
|
939
973
|
handle_exception(py_db, thread_info.thread, frame, arg, EXCEPTION_TYPE_HANDLED)
|
|
940
974
|
|
|
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
975
|
|
|
946
976
|
# fmt: off
|
|
947
977
|
# IFDEF CYTHON
|
|
@@ -1031,7 +1061,7 @@ def _return_event(code, instruction, retval):
|
|
|
1031
1061
|
if py_db is None or py_db.pydb_disposed:
|
|
1032
1062
|
return monitor.DISABLE
|
|
1033
1063
|
|
|
1034
|
-
if not thread_info.trace or not is_thread_alive(
|
|
1064
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
1035
1065
|
# For thread-related stuff we can't disable the code tracing because other
|
|
1036
1066
|
# threads may still want it...
|
|
1037
1067
|
return
|
|
@@ -1342,7 +1372,11 @@ def _jump_event(code, from_offset, to_offset):
|
|
|
1342
1372
|
if py_db is None or py_db.pydb_disposed:
|
|
1343
1373
|
return monitor.DISABLE
|
|
1344
1374
|
|
|
1345
|
-
|
|
1375
|
+
# If we get another jump event, remove the extra check for the line event
|
|
1376
|
+
if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
|
|
1377
|
+
del _thread_local_info.f_disable_next_line_if_match
|
|
1378
|
+
|
|
1379
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
1346
1380
|
# For thread-related stuff we can't disable the code tracing because other
|
|
1347
1381
|
# threads may still want it...
|
|
1348
1382
|
return
|
|
@@ -1358,9 +1392,8 @@ def _jump_event(code, from_offset, to_offset):
|
|
|
1358
1392
|
if to_offset > from_offset:
|
|
1359
1393
|
return monitor.DISABLE
|
|
1360
1394
|
|
|
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)
|
|
1395
|
+
from_line = func_code_info.get_line_of_offset(from_offset or 0)
|
|
1396
|
+
to_line = func_code_info.get_line_of_offset(to_offset or 0)
|
|
1364
1397
|
|
|
1365
1398
|
if from_line != to_line:
|
|
1366
1399
|
# I.e.: use case: "yield from [j for j in a if j % 2 == 0]"
|
|
@@ -1370,7 +1403,8 @@ def _jump_event(code, from_offset, to_offset):
|
|
|
1370
1403
|
frame = _getframe(1)
|
|
1371
1404
|
|
|
1372
1405
|
# 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
|
|
1406
|
+
_thread_local_info.f_disable_next_line_if_match = (func_code_info.co_filename, frame.f_lineno)
|
|
1407
|
+
# pydev_log.debug('_jump_event', code.co_name, 'from line', from_line, 'to line', frame.f_lineno)
|
|
1374
1408
|
|
|
1375
1409
|
return _internal_line_event(func_code_info, frame, frame.f_lineno)
|
|
1376
1410
|
|
|
@@ -1399,24 +1433,26 @@ def _line_event(code, line):
|
|
|
1399
1433
|
if py_db is None or py_db.pydb_disposed:
|
|
1400
1434
|
return monitor.DISABLE
|
|
1401
1435
|
|
|
1402
|
-
|
|
1436
|
+
# If we get another line event, remove the extra check for the line event
|
|
1437
|
+
if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
|
|
1438
|
+
(co_filename, line_to_skip) = _thread_local_info.f_disable_next_line_if_match
|
|
1439
|
+
del _thread_local_info.f_disable_next_line_if_match
|
|
1440
|
+
if line_to_skip is line and co_filename == code.co_filename:
|
|
1441
|
+
# The last jump already jumped to this line and we haven't had any
|
|
1442
|
+
# line events or jumps since then. We don't want to consider this line twice
|
|
1443
|
+
# pydev_log.debug('_line_event skipped', line)
|
|
1444
|
+
return
|
|
1445
|
+
|
|
1446
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
1403
1447
|
# For thread-related stuff we can't disable the code tracing because other
|
|
1404
1448
|
# threads may still want it...
|
|
1405
1449
|
return
|
|
1406
1450
|
|
|
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
1451
|
func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
|
|
1416
1452
|
if func_code_info.always_skip_code or func_code_info.always_filtered_out:
|
|
1417
1453
|
return monitor.DISABLE
|
|
1418
1454
|
|
|
1419
|
-
#
|
|
1455
|
+
# pydev_log.debug('_line_event', code.co_name, line)
|
|
1420
1456
|
|
|
1421
1457
|
# We know the frame depth.
|
|
1422
1458
|
frame = _getframe(1)
|
|
@@ -1646,12 +1682,11 @@ def _start_method_event(code, instruction_offset):
|
|
|
1646
1682
|
if py_db is None or py_db.pydb_disposed:
|
|
1647
1683
|
return monitor.DISABLE
|
|
1648
1684
|
|
|
1649
|
-
if not thread_info.trace or not is_thread_alive(
|
|
1685
|
+
if not thread_info.trace or not thread_info.is_thread_alive():
|
|
1650
1686
|
# For thread-related stuff we can't disable the code tracing because other
|
|
1651
1687
|
# threads may still want it...
|
|
1652
1688
|
return
|
|
1653
1689
|
|
|
1654
|
-
|
|
1655
1690
|
frame = _getframe(1)
|
|
1656
1691
|
func_code_info = _get_func_code_info(code, frame)
|
|
1657
1692
|
if func_code_info.always_skip_code:
|
|
@@ -1699,6 +1734,7 @@ def _start_method_event(code, instruction_offset):
|
|
|
1699
1734
|
|
|
1700
1735
|
return monitor.DISABLE
|
|
1701
1736
|
|
|
1737
|
+
|
|
1702
1738
|
# fmt: off
|
|
1703
1739
|
# IFDEF CYTHON
|
|
1704
1740
|
# cpdef _ensure_monitoring():
|
|
@@ -1771,7 +1807,7 @@ def stop_monitoring(all_threads=False):
|
|
|
1771
1807
|
thread_info.trace = False
|
|
1772
1808
|
|
|
1773
1809
|
|
|
1774
|
-
def update_monitor_events(suspend_requested: Optional[bool]
|
|
1810
|
+
def update_monitor_events(suspend_requested: Optional[bool]=None) -> None:
|
|
1775
1811
|
"""
|
|
1776
1812
|
This should be called when breakpoints change.
|
|
1777
1813
|
|
|
@@ -1843,7 +1879,10 @@ def update_monitor_events(suspend_requested: Optional[bool] = None) -> None:
|
|
|
1843
1879
|
monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, _start_method_event)
|
|
1844
1880
|
# monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, _resume_method_event)
|
|
1845
1881
|
monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, _line_event)
|
|
1846
|
-
|
|
1882
|
+
if not IS_PY313_OR_GREATER:
|
|
1883
|
+
# In Python 3.13+ jump_events aren't necessary as we have a line_event for every
|
|
1884
|
+
# jump location.
|
|
1885
|
+
monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, _jump_event)
|
|
1847
1886
|
monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, _return_event)
|
|
1848
1887
|
|
|
1849
1888
|
else:
|
|
@@ -1899,7 +1938,6 @@ def _do_wait_suspend(py_db, thread_info, frame, event, arg):
|
|
|
1899
1938
|
thread_info.additional_info.trace_suspend_type = "sys_monitor"
|
|
1900
1939
|
py_db.do_wait_suspend(thread_info.thread, frame, event, arg)
|
|
1901
1940
|
|
|
1902
|
-
|
|
1903
1941
|
# This can be used to diagnose exceptions inside of the debugger itself.
|
|
1904
1942
|
#
|
|
1905
1943
|
# import types
|