debugpy 1.8.5__zip → 1.8.7__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.5/src/debugpy.egg-info → debugpy-1.8.7}/PKG-INFO +1 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py +19 -21
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py +30 -30
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py +3 -1
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +43 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py +35 -32
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py +83 -84
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py +92 -99
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py +2 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py +51 -27
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py +11 -7
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py +6 -5
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py +34 -38
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py +71 -69
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py +1 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py +0 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py +14 -16
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py +81 -93
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py +3 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py +9 -8
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py +33 -25
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py +183 -170
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py +33 -29
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py +6 -4
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py +19 -18
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py +3 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py +165 -138
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +77 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py +35 -36
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py +22 -23
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py +37 -57
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py +54 -52
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py +28 -37
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py +56 -53
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +604 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json +551 -445
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py +25 -29
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +17458 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py +11 -12
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py +18 -19
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +41 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +328 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py +263 -214
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py +7 -10
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py +187 -92
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py +105 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py +46 -51
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py +239 -176
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py +370 -297
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py +78 -86
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py +55 -59
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py +194 -58
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py +2 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py +18 -23
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py +159 -127
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py +10 -12
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +55527 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd +15 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx +803 -511
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py +18 -7
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py +32 -24
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py +11 -13
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py +16 -16
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py +27 -2
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py +1 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py +4 -5
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py +8 -10
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py +50 -45
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py +462 -407
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py +69 -61
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py +14 -16
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py +27 -25
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py +40 -42
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +200 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py +20 -19
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py +199 -108
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py +121 -73
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +208 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py +206 -159
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py +346 -334
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py +75 -80
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py +35 -35
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py +116 -124
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py +44 -58
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py +51 -55
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py +4 -2
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py +24 -24
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py +19 -20
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py +45 -49
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py +61 -58
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py +23 -13
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py +29 -31
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py +41 -11
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py +117 -55
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py +11 -14
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py +90 -89
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py +106 -97
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +40 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py +56 -46
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py +5 -5
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +71 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c +11165 -5326
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py +5 -6
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py +53 -56
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py +4 -6
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py +6 -26
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py +7 -21
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py +5 -24
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py +10 -34
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py +1 -4
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py +2 -6
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py +3 -5
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py +11 -31
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py +2 -2
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py +14 -41
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py +2 -4
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py +7 -18
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py +6 -18
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py +7 -18
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py +1 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py +14 -19
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py +1929 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c +43253 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pxd +46 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx +1935 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/pydevd_sys_monitoring.py +16 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py +12 -11
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_coverage.py +30 -32
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhook.py +58 -54
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py +20 -24
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py +8 -7
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py +8 -6
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py +11 -8
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py +21 -18
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py +17 -15
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt6.py +17 -15
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py +6 -4
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py +14 -10
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py +30 -26
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +24 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py +37 -34
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_loaders.py +86 -73
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +7 -7
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydev_pysrc.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_run_in_console.py +23 -24
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +267 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevconsole.py +55 -47
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd.py +732 -508
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +40 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py +1 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +11 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +75 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/add_code_to_python_process.py +130 -125
- 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_pydevd.py +89 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_script.py +41 -32
- 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.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp +9 -1
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.exe +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py +10 -9
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py +103 -119
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py +457 -516
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py +33 -15
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py +336 -281
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py +101 -131
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py +148 -153
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py +310 -302
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py +235 -208
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py +185 -218
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py +428 -564
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py +54 -53
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py +69 -73
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py +158 -170
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py +143 -213
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py +302 -333
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py +220 -239
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py +198 -177
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py +11 -11
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py +1191 -713
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py +248 -194
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py +132 -120
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py +450 -346
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py +305 -286
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +526 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py +1479 -1097
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +579 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +3517 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py +54 -31
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py +170 -149
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py +190 -108
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py +542 -437
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py +489 -442
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py +83 -65
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py +70 -76
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp +17 -9
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat +1 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_file_utils.py +141 -120
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py +175 -149
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py +5 -5
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py +28 -28
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py +22 -30
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py +3 -2
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py +130 -108
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py +27 -14
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_tracing.py +85 -66
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/setup_pydevd_cython.py +96 -59
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_version.py +3 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/messaging.py +2 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/server/cli.py +32 -17
- {debugpy-1.8.5 → debugpy-1.8.7/src/debugpy.egg-info}/PKG-INFO +1 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy.egg-info/SOURCES.txt +6 -1
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +0 -41
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +0 -76
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +0 -592
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +0 -19514
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +0 -19
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +0 -153
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +0 -43377
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +0 -204
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +0 -91
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_api.py +0 -62
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +0 -41
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +0 -48
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +0 -23
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydev_pysrc.py +0 -1
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +0 -237
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +0 -32
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +0 -9
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +0 -74
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +0 -79
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +0 -507
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +0 -539
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +0 -3435
- {debugpy-1.8.5 → debugpy-1.8.7}/DESCRIPTION.md +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/LICENSE +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/MANIFEST.in +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/README.md +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/pyproject.toml +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/setup.cfg +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/setup.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/ThirdPartyNotices.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/__main__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/_pydevd_packaging.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/_util.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/force_pydevd.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pyx +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/README +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_310.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_311.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_common.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/__main__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/clients.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/components.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/launchers.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/servers.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/sessions.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/json.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/log.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/singleton.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/sockets.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/stacks.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/timestamp.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/util.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/__main__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/debuggee.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/handlers.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/output.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/winapi.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/public_api.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/server/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/server/api.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/server/attach_pid_injected.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy.egg-info/dependency_links.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy.egg-info/entry_points.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy.egg-info/top_level.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/versioneer.py +0 -0
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
from contextlib import contextmanager
|
|
2
2
|
import sys
|
|
3
3
|
|
|
4
|
-
from _pydevd_bundle.pydevd_constants import get_frame, RETURN_VALUES_DICT,
|
|
5
|
-
ForkSafeLock, GENERATED_LEN_ATTR_NAME, silence_warnings_decorator
|
|
4
|
+
from _pydevd_bundle.pydevd_constants import get_frame, RETURN_VALUES_DICT, ForkSafeLock, GENERATED_LEN_ATTR_NAME, silence_warnings_decorator
|
|
6
5
|
from _pydevd_bundle.pydevd_xml import get_variable_details, get_type
|
|
7
6
|
from _pydev_bundle.pydev_override import overrides
|
|
8
7
|
from _pydevd_bundle.pydevd_resolver import sorted_attributes_key, TOO_LARGE_ATTR, get_var_scope
|
|
@@ -16,7 +15,6 @@ from typing import Optional
|
|
|
16
15
|
|
|
17
16
|
|
|
18
17
|
class _AbstractVariable(object):
|
|
19
|
-
|
|
20
18
|
# Default attributes in class, set in instance.
|
|
21
19
|
|
|
22
20
|
name = None
|
|
@@ -36,8 +34,8 @@ class _AbstractVariable(object):
|
|
|
36
34
|
def get_variable_reference(self):
|
|
37
35
|
return id(self.value)
|
|
38
36
|
|
|
39
|
-
def get_var_data(self, fmt: Optional[dict]=None, context: Optional[str]=None, **safe_repr_custom_attrs):
|
|
40
|
-
|
|
37
|
+
def get_var_data(self, fmt: Optional[dict] = None, context: Optional[str] = None, **safe_repr_custom_attrs):
|
|
38
|
+
"""
|
|
41
39
|
:param dict fmt:
|
|
42
40
|
Format expected by the DAP (keys: 'hex': bool, 'rawString': bool)
|
|
43
41
|
|
|
@@ -47,58 +45,59 @@ class _AbstractVariable(object):
|
|
|
47
45
|
"repl",
|
|
48
46
|
"hover",
|
|
49
47
|
"clipboard"
|
|
50
|
-
|
|
48
|
+
"""
|
|
51
49
|
timer = Timer()
|
|
52
50
|
safe_repr = SafeRepr()
|
|
53
51
|
if fmt is not None:
|
|
54
|
-
safe_repr.convert_to_hex = fmt.get(
|
|
55
|
-
safe_repr.raw_value = fmt.get(
|
|
52
|
+
safe_repr.convert_to_hex = fmt.get("hex", False)
|
|
53
|
+
safe_repr.raw_value = fmt.get("rawString", False)
|
|
56
54
|
for key, val in safe_repr_custom_attrs.items():
|
|
57
55
|
setattr(safe_repr, key, val)
|
|
58
56
|
|
|
59
57
|
type_name, _type_qualifier, _is_exception_on_eval, resolver, value = get_variable_details(
|
|
60
|
-
self.value, to_string=safe_repr, context=context
|
|
58
|
+
self.value, to_string=safe_repr, context=context
|
|
59
|
+
)
|
|
61
60
|
|
|
62
|
-
is_raw_string = type_name in (
|
|
61
|
+
is_raw_string = type_name in ("str", "bytes", "bytearray")
|
|
63
62
|
|
|
64
63
|
attributes = []
|
|
65
64
|
|
|
66
65
|
if is_raw_string:
|
|
67
|
-
attributes.append(
|
|
66
|
+
attributes.append("rawString")
|
|
68
67
|
|
|
69
68
|
name = self.name
|
|
70
69
|
|
|
71
70
|
if self._is_return_value:
|
|
72
|
-
attributes.append(
|
|
73
|
-
name =
|
|
71
|
+
attributes.append("readOnly")
|
|
72
|
+
name = "(return) %s" % (name,)
|
|
74
73
|
|
|
75
74
|
elif name in (TOO_LARGE_ATTR, GENERATED_LEN_ATTR_NAME):
|
|
76
|
-
attributes.append(
|
|
75
|
+
attributes.append("readOnly")
|
|
77
76
|
|
|
78
77
|
try:
|
|
79
78
|
if self.value.__class__ == DAPGrouper:
|
|
80
|
-
type_name =
|
|
79
|
+
type_name = ""
|
|
81
80
|
except:
|
|
82
81
|
pass # Ignore errors accessing __class__.
|
|
83
82
|
|
|
84
83
|
var_data = {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
84
|
+
"name": name,
|
|
85
|
+
"value": value,
|
|
86
|
+
"type": type_name,
|
|
88
87
|
}
|
|
89
88
|
|
|
90
89
|
if self.evaluate_name is not None:
|
|
91
|
-
var_data[
|
|
90
|
+
var_data["evaluateName"] = self.evaluate_name
|
|
92
91
|
|
|
93
92
|
if resolver is not None: # I.e.: it's a container
|
|
94
|
-
var_data[
|
|
93
|
+
var_data["variablesReference"] = self.get_variable_reference()
|
|
95
94
|
else:
|
|
96
|
-
var_data[
|
|
95
|
+
var_data["variablesReference"] = 0 # It's mandatory (although if == 0 it doesn't have children).
|
|
97
96
|
|
|
98
97
|
if len(attributes) > 0:
|
|
99
|
-
var_data[
|
|
98
|
+
var_data["presentationHint"] = {"attributes": attributes}
|
|
100
99
|
|
|
101
|
-
timer.report_if_compute_repr_attr_slow(
|
|
100
|
+
timer.report_if_compute_repr_attr_slow("", name, type_name)
|
|
102
101
|
return var_data
|
|
103
102
|
|
|
104
103
|
def get_children_variables(self, fmt=None, scope=None):
|
|
@@ -126,10 +125,10 @@ class _AbstractVariable(object):
|
|
|
126
125
|
entry = (attr_name, attr_value, evaluate_name)
|
|
127
126
|
if scope:
|
|
128
127
|
presentation = get_presentation(scope)
|
|
129
|
-
if presentation ==
|
|
128
|
+
if presentation == "hide":
|
|
130
129
|
continue
|
|
131
130
|
|
|
132
|
-
elif presentation ==
|
|
131
|
+
elif presentation == "inline":
|
|
133
132
|
new_lst.append(entry)
|
|
134
133
|
|
|
135
134
|
else: # group
|
|
@@ -153,7 +152,6 @@ class _AbstractVariable(object):
|
|
|
153
152
|
|
|
154
153
|
|
|
155
154
|
class _ObjectVariable(_AbstractVariable):
|
|
156
|
-
|
|
157
155
|
def __init__(self, py_db, name, value, register_variable, is_return_value=False, evaluate_name=None, frame=None):
|
|
158
156
|
_AbstractVariable.__init__(self, py_db)
|
|
159
157
|
self.frame = frame
|
|
@@ -171,7 +169,7 @@ class _ObjectVariable(_AbstractVariable):
|
|
|
171
169
|
|
|
172
170
|
children_variables = []
|
|
173
171
|
if resolver is not None: # i.e.: it's a container.
|
|
174
|
-
if hasattr(resolver,
|
|
172
|
+
if hasattr(resolver, "get_contents_debug_adapter_protocol"):
|
|
175
173
|
# The get_contents_debug_adapter_protocol needs to return sorted.
|
|
176
174
|
lst = resolver.get_contents_debug_adapter_protocol(self.value, fmt=fmt)
|
|
177
175
|
else:
|
|
@@ -192,8 +190,7 @@ class _ObjectVariable(_AbstractVariable):
|
|
|
192
190
|
evaluate_name = evaluate_name(parent_evaluate_name)
|
|
193
191
|
else:
|
|
194
192
|
evaluate_name = parent_evaluate_name + evaluate_name
|
|
195
|
-
variable = _ObjectVariable(
|
|
196
|
-
self.py_db, key, val, self._register_variable, evaluate_name=evaluate_name, frame=self.frame)
|
|
193
|
+
variable = _ObjectVariable(self.py_db, key, val, self._register_variable, evaluate_name=evaluate_name, frame=self.frame)
|
|
197
194
|
children_variables.append(variable)
|
|
198
195
|
else:
|
|
199
196
|
for key, val, evaluate_name in lst:
|
|
@@ -204,13 +201,12 @@ class _ObjectVariable(_AbstractVariable):
|
|
|
204
201
|
return children_variables
|
|
205
202
|
|
|
206
203
|
def change_variable(self, name, value, py_db, fmt=None):
|
|
207
|
-
|
|
208
204
|
children_variable = self.get_child_variable_named(name)
|
|
209
205
|
if children_variable is None:
|
|
210
206
|
return None
|
|
211
207
|
|
|
212
208
|
var_data = children_variable.get_var_data()
|
|
213
|
-
evaluate_name = var_data.get(
|
|
209
|
+
evaluate_name = var_data.get("evaluateName")
|
|
214
210
|
|
|
215
211
|
if not evaluate_name:
|
|
216
212
|
# Note: right now we only pass control to the resolver in the cases where
|
|
@@ -218,15 +214,14 @@ class _ObjectVariable(_AbstractVariable):
|
|
|
218
214
|
# we can use that evaluation to set the value too -- if in the future
|
|
219
215
|
# a case where this isn't true is found this logic may need to be changed).
|
|
220
216
|
_type, _type_name, container_resolver = get_type(self.value)
|
|
221
|
-
if hasattr(container_resolver,
|
|
217
|
+
if hasattr(container_resolver, "change_var_from_name"):
|
|
222
218
|
try:
|
|
223
219
|
new_value = eval(value)
|
|
224
220
|
except:
|
|
225
221
|
return None
|
|
226
222
|
new_key = container_resolver.change_var_from_name(self.value, name, new_value)
|
|
227
223
|
if new_key is not None:
|
|
228
|
-
return _ObjectVariable(
|
|
229
|
-
self.py_db, new_key, new_value, self._register_variable, evaluate_name=None, frame=self.frame)
|
|
224
|
+
return _ObjectVariable(self.py_db, new_key, new_value, self._register_variable, evaluate_name=None, frame=self.frame)
|
|
230
225
|
|
|
231
226
|
return None
|
|
232
227
|
else:
|
|
@@ -238,7 +233,7 @@ class _ObjectVariable(_AbstractVariable):
|
|
|
238
233
|
|
|
239
234
|
try:
|
|
240
235
|
# This handles the simple cases (such as dict, list, object)
|
|
241
|
-
Exec(
|
|
236
|
+
Exec("%s=%s" % (evaluate_name, value), frame.f_globals, frame.f_locals)
|
|
242
237
|
except:
|
|
243
238
|
return None
|
|
244
239
|
|
|
@@ -250,7 +245,6 @@ def sorted_variables_key(obj):
|
|
|
250
245
|
|
|
251
246
|
|
|
252
247
|
class _FrameVariable(_AbstractVariable):
|
|
253
|
-
|
|
254
248
|
def __init__(self, py_db, frame, register_variable):
|
|
255
249
|
_AbstractVariable.__init__(self, py_db)
|
|
256
250
|
self.frame = frame
|
|
@@ -276,19 +270,21 @@ class _FrameVariable(_AbstractVariable):
|
|
|
276
270
|
assert isinstance(scope, ScopeRequest)
|
|
277
271
|
scope = scope.scope
|
|
278
272
|
|
|
279
|
-
if scope in (
|
|
273
|
+
if scope in ("locals", None):
|
|
280
274
|
dct = self.frame.f_locals
|
|
281
|
-
elif scope ==
|
|
275
|
+
elif scope == "globals":
|
|
282
276
|
dct = self.frame.f_globals
|
|
283
277
|
else:
|
|
284
|
-
raise AssertionError(
|
|
278
|
+
raise AssertionError("Unexpected scope: %s" % (scope,))
|
|
285
279
|
|
|
286
|
-
lst, group_entries = self._group_entries(
|
|
280
|
+
lst, group_entries = self._group_entries(
|
|
281
|
+
[(x[0], x[1], None) for x in list(dct.items()) if x[0] != "_pydev_stop_at_break"], handle_return_values=True
|
|
282
|
+
)
|
|
287
283
|
group_variables = []
|
|
288
284
|
|
|
289
285
|
for key, val, _ in group_entries:
|
|
290
286
|
# Make sure that the contents in the group are also sorted.
|
|
291
|
-
val.contents_debug_adapter_protocol.sort(key=lambda v:sorted_attributes_key(v[0]))
|
|
287
|
+
val.contents_debug_adapter_protocol.sort(key=lambda v: sorted_attributes_key(v[0]))
|
|
292
288
|
variable = _ObjectVariable(self.py_db, key, val, self._register_variable, False, key, frame=self.frame)
|
|
293
289
|
group_variables.append(variable)
|
|
294
290
|
|
|
@@ -297,7 +293,14 @@ class _FrameVariable(_AbstractVariable):
|
|
|
297
293
|
if is_return_value:
|
|
298
294
|
for return_key, return_value in val.items():
|
|
299
295
|
variable = _ObjectVariable(
|
|
300
|
-
self.py_db,
|
|
296
|
+
self.py_db,
|
|
297
|
+
return_key,
|
|
298
|
+
return_value,
|
|
299
|
+
self._register_variable,
|
|
300
|
+
is_return_value,
|
|
301
|
+
"%s[%r]" % (key, return_key),
|
|
302
|
+
frame=self.frame,
|
|
303
|
+
)
|
|
301
304
|
children_variables.append(variable)
|
|
302
305
|
else:
|
|
303
306
|
variable = _ObjectVariable(self.py_db, key, val, self._register_variable, is_return_value, key, frame=self.frame)
|
|
@@ -313,9 +316,9 @@ class _FrameVariable(_AbstractVariable):
|
|
|
313
316
|
|
|
314
317
|
|
|
315
318
|
class _FramesTracker(object):
|
|
316
|
-
|
|
319
|
+
"""
|
|
317
320
|
This is a helper class to be used to track frames when a thread becomes suspended.
|
|
318
|
-
|
|
321
|
+
"""
|
|
319
322
|
|
|
320
323
|
def __init__(self, suspended_frames_manager, py_db):
|
|
321
324
|
self._suspended_frames_manager = suspended_frames_manager
|
|
@@ -342,7 +345,7 @@ class _FramesTracker(object):
|
|
|
342
345
|
self._untracked = False
|
|
343
346
|
|
|
344
347
|
# We need to be thread-safe!
|
|
345
|
-
self._lock = ForkSafeLock()
|
|
348
|
+
self._lock = ForkSafeLock(rlock=True)
|
|
346
349
|
|
|
347
350
|
self._variable_reference_to_variable = {}
|
|
348
351
|
|
|
@@ -361,7 +364,8 @@ class _FramesTracker(object):
|
|
|
361
364
|
|
|
362
365
|
# Still not created, let's do it now.
|
|
363
366
|
return _ObjectVariable(
|
|
364
|
-
self.py_db, name, value, self._register_variable, is_return_value=False, evaluate_name=evaluate_name, frame=frame
|
|
367
|
+
self.py_db, name, value, self._register_variable, is_return_value=False, evaluate_name=evaluate_name, frame=frame
|
|
368
|
+
)
|
|
365
369
|
|
|
366
370
|
def get_main_thread_id(self):
|
|
367
371
|
return self._main_thread_id
|
|
@@ -370,7 +374,7 @@ class _FramesTracker(object):
|
|
|
370
374
|
return self._variable_reference_to_variable[variable_reference]
|
|
371
375
|
|
|
372
376
|
def track(self, thread_id, frames_list, frame_custom_thread_id=None):
|
|
373
|
-
|
|
377
|
+
"""
|
|
374
378
|
:param thread_id:
|
|
375
379
|
The thread id to be used for this frame.
|
|
376
380
|
|
|
@@ -379,19 +383,18 @@ class _FramesTracker(object):
|
|
|
379
383
|
|
|
380
384
|
:param frame_custom_thread_id:
|
|
381
385
|
If None this this is the id of the thread id for the custom frame (i.e.: coroutine).
|
|
382
|
-
|
|
386
|
+
"""
|
|
383
387
|
assert frames_list.__class__ == FramesList
|
|
384
388
|
with self._lock:
|
|
385
389
|
coroutine_or_main_thread_id = frame_custom_thread_id or thread_id
|
|
386
390
|
|
|
387
391
|
if coroutine_or_main_thread_id in self._suspended_frames_manager._thread_id_to_tracker:
|
|
388
|
-
sys.stderr.write(
|
|
392
|
+
sys.stderr.write("pydevd: Something is wrong. Tracker being added twice to the same thread id.\n")
|
|
389
393
|
|
|
390
394
|
self._suspended_frames_manager._thread_id_to_tracker[coroutine_or_main_thread_id] = self
|
|
391
395
|
self._main_thread_id = thread_id
|
|
392
396
|
|
|
393
|
-
frame_ids_from_thread = self._thread_id_to_frame_ids.setdefault(
|
|
394
|
-
coroutine_or_main_thread_id, [])
|
|
397
|
+
frame_ids_from_thread = self._thread_id_to_frame_ids.setdefault(coroutine_or_main_thread_id, [])
|
|
395
398
|
|
|
396
399
|
self._thread_id_to_frames_list[coroutine_or_main_thread_id] = frames_list
|
|
397
400
|
for frame in frames_list:
|
|
@@ -433,20 +436,20 @@ class _FramesTracker(object):
|
|
|
433
436
|
with self._lock:
|
|
434
437
|
return self._frame_id_to_frame.get(frame_id)
|
|
435
438
|
|
|
436
|
-
def create_thread_suspend_command(self, thread_id, stop_reason, message,
|
|
439
|
+
def create_thread_suspend_command(self, thread_id, stop_reason, message, trace_suspend_type, thread, additional_info):
|
|
437
440
|
with self._lock:
|
|
438
441
|
# First one is topmost frame suspended.
|
|
439
442
|
frames_list = self._thread_id_to_frames_list[thread_id]
|
|
440
443
|
|
|
441
444
|
cmd = self.py_db.cmd_factory.make_thread_suspend_message(
|
|
442
|
-
self.py_db, thread_id, frames_list, stop_reason, message,
|
|
445
|
+
self.py_db, thread_id, frames_list, stop_reason, message, trace_suspend_type, thread, additional_info
|
|
446
|
+
)
|
|
443
447
|
|
|
444
448
|
frames_list = None
|
|
445
449
|
return cmd
|
|
446
450
|
|
|
447
451
|
|
|
448
452
|
class SuspendedFramesManager(object):
|
|
449
|
-
|
|
450
453
|
def __init__(self):
|
|
451
454
|
self._thread_id_to_fake_frames = {}
|
|
452
455
|
self._thread_id_to_tracker = {}
|
|
@@ -470,7 +473,7 @@ class SuspendedFramesManager(object):
|
|
|
470
473
|
return None
|
|
471
474
|
|
|
472
475
|
def get_thread_id_for_variable_reference(self, variable_reference):
|
|
473
|
-
|
|
476
|
+
"""
|
|
474
477
|
We can't evaluate variable references values on any thread, only in the suspended
|
|
475
478
|
thread (the main reason for this is that in UI frameworks inspecting a UI object
|
|
476
479
|
from a different thread can potentially crash the application).
|
|
@@ -482,7 +485,7 @@ class SuspendedFramesManager(object):
|
|
|
482
485
|
:return str:
|
|
483
486
|
The thread id for the thread to be used to inspect the given variable reference or
|
|
484
487
|
None if the thread was already resumed.
|
|
485
|
-
|
|
488
|
+
"""
|
|
486
489
|
frames_tracker = self._get_tracker_for_variable_reference(variable_reference)
|
|
487
490
|
if frames_tracker is not None:
|
|
488
491
|
return frames_tracker.get_main_thread_id()
|
|
@@ -492,9 +495,9 @@ class SuspendedFramesManager(object):
|
|
|
492
495
|
return self._thread_id_to_tracker.get(thread_id)
|
|
493
496
|
|
|
494
497
|
def get_variable(self, variable_reference):
|
|
495
|
-
|
|
498
|
+
"""
|
|
496
499
|
:raises KeyError
|
|
497
|
-
|
|
500
|
+
"""
|
|
498
501
|
frames_tracker = self._get_tracker_for_variable_reference(variable_reference)
|
|
499
502
|
if frames_tracker is None:
|
|
500
503
|
raise KeyError()
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
from _pydevd_bundle import pydevd_utils
|
|
2
2
|
from _pydevd_bundle.pydevd_additional_thread_info import set_additional_thread_info
|
|
3
3
|
from _pydevd_bundle.pydevd_comm_constants import CMD_STEP_INTO, CMD_THREAD_SUSPEND
|
|
4
|
-
from _pydevd_bundle.pydevd_constants import PYTHON_SUSPEND, STATE_SUSPEND, get_thread_id, STATE_RUN
|
|
4
|
+
from _pydevd_bundle.pydevd_constants import PYTHON_SUSPEND, STATE_SUSPEND, get_thread_id, STATE_RUN, PYDEVD_USE_SYS_MONITORING
|
|
5
5
|
from _pydev_bundle._pydev_saved_modules import threading
|
|
6
6
|
from _pydev_bundle import pydev_log
|
|
7
|
+
import sys
|
|
8
|
+
from _pydevd_sys_monitoring import pydevd_sys_monitoring
|
|
7
9
|
|
|
8
10
|
|
|
9
11
|
def pydevd_find_thread_by_id(thread_id):
|
|
@@ -11,7 +13,7 @@ def pydevd_find_thread_by_id(thread_id):
|
|
|
11
13
|
threads = threading.enumerate()
|
|
12
14
|
for i in threads:
|
|
13
15
|
tid = get_thread_id(i)
|
|
14
|
-
if thread_id == tid or thread_id.endswith(
|
|
16
|
+
if thread_id == tid or thread_id.endswith("|" + tid):
|
|
15
17
|
return i
|
|
16
18
|
|
|
17
19
|
# This can happen when a request comes for a thread which was previously removed.
|
|
@@ -23,7 +25,7 @@ def pydevd_find_thread_by_id(thread_id):
|
|
|
23
25
|
return None
|
|
24
26
|
|
|
25
27
|
|
|
26
|
-
def mark_thread_suspended(thread, stop_reason, original_step_cmd
|
|
28
|
+
def mark_thread_suspended(thread, stop_reason: int, original_step_cmd: int = -1):
|
|
27
29
|
info = set_additional_thread_info(thread)
|
|
28
30
|
info.suspend_type = PYTHON_SUSPEND
|
|
29
31
|
if original_step_cmd != -1:
|
|
@@ -40,7 +42,7 @@ def mark_thread_suspended(thread, stop_reason, original_step_cmd=-1):
|
|
|
40
42
|
|
|
41
43
|
# Mark as suspended as the last thing.
|
|
42
44
|
info.pydev_state = STATE_SUSPEND
|
|
43
|
-
|
|
45
|
+
info.update_stepping_info()
|
|
44
46
|
return info
|
|
45
47
|
|
|
46
48
|
|
|
@@ -50,15 +52,16 @@ def internal_run_thread(thread, set_additional_thread_info):
|
|
|
50
52
|
info.pydev_step_cmd = -1
|
|
51
53
|
info.pydev_step_stop = None
|
|
52
54
|
info.pydev_state = STATE_RUN
|
|
55
|
+
info.update_stepping_info()
|
|
53
56
|
|
|
54
57
|
|
|
55
58
|
def resume_threads(thread_id, except_thread=None):
|
|
56
|
-
pydev_log.info(
|
|
59
|
+
pydev_log.info("Resuming threads: %s (except thread: %s)", thread_id, except_thread)
|
|
57
60
|
threads = []
|
|
58
|
-
if thread_id ==
|
|
61
|
+
if thread_id == "*":
|
|
59
62
|
threads = pydevd_utils.get_non_pydevd_threads()
|
|
60
63
|
|
|
61
|
-
elif thread_id.startswith(
|
|
64
|
+
elif thread_id.startswith("__frame__:"):
|
|
62
65
|
pydev_log.critical("Can't make tasklet run: %s", thread_id)
|
|
63
66
|
|
|
64
67
|
else:
|
|
@@ -66,21 +69,24 @@ def resume_threads(thread_id, except_thread=None):
|
|
|
66
69
|
|
|
67
70
|
for t in threads:
|
|
68
71
|
if t is None or t is except_thread:
|
|
69
|
-
pydev_log.info(
|
|
72
|
+
pydev_log.info("Skipped resuming thread: %s", t)
|
|
70
73
|
continue
|
|
71
74
|
|
|
72
75
|
internal_run_thread(t, set_additional_thread_info=set_additional_thread_info)
|
|
73
76
|
|
|
74
77
|
|
|
75
78
|
def suspend_all_threads(py_db, except_thread):
|
|
76
|
-
|
|
79
|
+
"""
|
|
77
80
|
Suspend all except the one passed as a parameter.
|
|
78
81
|
:param except_thread:
|
|
79
|
-
|
|
80
|
-
|
|
82
|
+
"""
|
|
83
|
+
if PYDEVD_USE_SYS_MONITORING:
|
|
84
|
+
pydevd_sys_monitoring.update_monitor_events(suspend_requested=True)
|
|
85
|
+
|
|
86
|
+
pydev_log.info("Suspending all threads except: %s", except_thread)
|
|
81
87
|
all_threads = pydevd_utils.get_non_pydevd_threads()
|
|
82
88
|
for t in all_threads:
|
|
83
|
-
if getattr(t,
|
|
89
|
+
if getattr(t, "pydev_do_not_trace", None):
|
|
84
90
|
pass # skip some other threads, i.e. ipython history saving thread from debug console
|
|
85
91
|
else:
|
|
86
92
|
if t is except_thread:
|
|
@@ -91,6 +97,10 @@ def suspend_all_threads(py_db, except_thread):
|
|
|
91
97
|
# Reset the tracing as in this case as it could've set scopes to be untraced.
|
|
92
98
|
if frame is not None:
|
|
93
99
|
try:
|
|
94
|
-
py_db.set_trace_for_frame_and_parents(frame)
|
|
100
|
+
py_db.set_trace_for_frame_and_parents(t.ident, frame)
|
|
95
101
|
finally:
|
|
96
102
|
frame = None
|
|
103
|
+
|
|
104
|
+
if PYDEVD_USE_SYS_MONITORING:
|
|
105
|
+
# After suspending the frames we need the monitoring to be reset.
|
|
106
|
+
pydevd_sys_monitoring.restart_events()
|
{debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from _pydev_bundle._pydev_saved_modules import
|
|
1
|
+
from _pydev_bundle._pydev_saved_modules import ThreadingEvent, ThreadingLock, threading_current_thread
|
|
2
2
|
from _pydevd_bundle.pydevd_daemon_thread import PyDBDaemonThread
|
|
3
3
|
from _pydevd_bundle.pydevd_constants import thread_get_ident, IS_CPYTHON, NULL
|
|
4
4
|
import ctypes
|
|
@@ -12,7 +12,7 @@ _DEBUG = False # Default should be False as this can be very verbose.
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class _TimeoutThread(PyDBDaemonThread):
|
|
15
|
-
|
|
15
|
+
"""
|
|
16
16
|
The idea in this class is that it should be usually stopped waiting
|
|
17
17
|
for the next event to be called (paused in a threading.Event.wait).
|
|
18
18
|
|
|
@@ -20,26 +20,26 @@ class _TimeoutThread(PyDBDaemonThread):
|
|
|
20
20
|
then keeps on waiting as needed again.
|
|
21
21
|
|
|
22
22
|
This is done so that it's a bit more optimized than creating many Timer threads.
|
|
23
|
-
|
|
23
|
+
"""
|
|
24
24
|
|
|
25
25
|
def __init__(self, py_db):
|
|
26
26
|
PyDBDaemonThread.__init__(self, py_db)
|
|
27
|
-
self._event =
|
|
27
|
+
self._event = ThreadingEvent()
|
|
28
28
|
self._handles = []
|
|
29
29
|
|
|
30
30
|
# We could probably do things valid without this lock so that it's possible to add
|
|
31
31
|
# handles while processing, but the implementation would also be harder to follow,
|
|
32
32
|
# so, for now, we're either processing or adding handles, not both at the same time.
|
|
33
|
-
self._lock =
|
|
33
|
+
self._lock = ThreadingLock()
|
|
34
34
|
|
|
35
35
|
def _on_run(self):
|
|
36
36
|
wait_time = None
|
|
37
37
|
while not self._kill_received:
|
|
38
38
|
if _DEBUG:
|
|
39
39
|
if wait_time is None:
|
|
40
|
-
pydev_log.critical(
|
|
40
|
+
pydev_log.critical("pydevd_timeout: Wait until a new handle is added.")
|
|
41
41
|
else:
|
|
42
|
-
pydev_log.critical(
|
|
42
|
+
pydev_log.critical("pydevd_timeout: Next wait time: %s.", wait_time)
|
|
43
43
|
self._event.wait(wait_time)
|
|
44
44
|
|
|
45
45
|
if self._kill_received:
|
|
@@ -49,13 +49,13 @@ class _TimeoutThread(PyDBDaemonThread):
|
|
|
49
49
|
wait_time = self.process_handles()
|
|
50
50
|
|
|
51
51
|
def process_handles(self):
|
|
52
|
-
|
|
52
|
+
"""
|
|
53
53
|
:return int:
|
|
54
54
|
Returns the time we should be waiting for to process the next event properly.
|
|
55
|
-
|
|
55
|
+
"""
|
|
56
56
|
with self._lock:
|
|
57
57
|
if _DEBUG:
|
|
58
|
-
pydev_log.critical(
|
|
58
|
+
pydev_log.critical("pydevd_timeout: Processing handles")
|
|
59
59
|
self._event.clear()
|
|
60
60
|
handles = self._handles
|
|
61
61
|
new_handles = self._handles = []
|
|
@@ -71,7 +71,7 @@ class _TimeoutThread(PyDBDaemonThread):
|
|
|
71
71
|
if curtime < handle.abs_timeout and not handle.disposed:
|
|
72
72
|
# It still didn't time out.
|
|
73
73
|
if _DEBUG:
|
|
74
|
-
pydev_log.critical(
|
|
74
|
+
pydev_log.critical("pydevd_timeout: Handle NOT processed: %s", handle)
|
|
75
75
|
new_handles.append(handle)
|
|
76
76
|
if min_handle_timeout is None:
|
|
77
77
|
min_handle_timeout = handle.abs_timeout
|
|
@@ -81,7 +81,7 @@ class _TimeoutThread(PyDBDaemonThread):
|
|
|
81
81
|
|
|
82
82
|
else:
|
|
83
83
|
if _DEBUG:
|
|
84
|
-
pydev_log.critical(
|
|
84
|
+
pydev_log.critical("pydevd_timeout: Handle processed: %s", handle)
|
|
85
85
|
# Timed out (or disposed), so, let's execute it (should be no-op if disposed).
|
|
86
86
|
handle.exec_on_timeout()
|
|
87
87
|
|
|
@@ -90,7 +90,7 @@ class _TimeoutThread(PyDBDaemonThread):
|
|
|
90
90
|
else:
|
|
91
91
|
timeout = min_handle_timeout - curtime
|
|
92
92
|
if timeout <= 0:
|
|
93
|
-
pydev_log.critical(
|
|
93
|
+
pydev_log.critical("pydevd_timeout: Expected timeout to be > 0. Found: %s", timeout)
|
|
94
94
|
|
|
95
95
|
return timeout
|
|
96
96
|
|
|
@@ -106,9 +106,8 @@ class _TimeoutThread(PyDBDaemonThread):
|
|
|
106
106
|
|
|
107
107
|
|
|
108
108
|
class _OnTimeoutHandle(object):
|
|
109
|
-
|
|
110
109
|
def __init__(self, tracker, abs_timeout, on_timeout, kwargs):
|
|
111
|
-
self._str =
|
|
110
|
+
self._str = "_OnTimeoutHandle(%s)" % (on_timeout,)
|
|
112
111
|
|
|
113
112
|
self._tracker = weakref.ref(tracker)
|
|
114
113
|
self.abs_timeout = abs_timeout
|
|
@@ -130,11 +129,11 @@ class _OnTimeoutHandle(object):
|
|
|
130
129
|
|
|
131
130
|
try:
|
|
132
131
|
if _DEBUG:
|
|
133
|
-
pydev_log.critical(
|
|
132
|
+
pydev_log.critical("pydevd_timeout: Calling on timeout: %s with kwargs: %s", on_timeout, kwargs)
|
|
134
133
|
|
|
135
134
|
on_timeout(**kwargs)
|
|
136
135
|
except Exception:
|
|
137
|
-
pydev_log.exception(
|
|
136
|
+
pydev_log.exception("pydevd_timeout: Exception on callback timeout.")
|
|
138
137
|
|
|
139
138
|
def __enter__(self):
|
|
140
139
|
pass
|
|
@@ -159,17 +158,17 @@ class _OnTimeoutHandle(object):
|
|
|
159
158
|
|
|
160
159
|
|
|
161
160
|
class TimeoutTracker(object):
|
|
162
|
-
|
|
161
|
+
"""
|
|
163
162
|
This is a helper class to track the timeout of something.
|
|
164
|
-
|
|
163
|
+
"""
|
|
165
164
|
|
|
166
165
|
def __init__(self, py_db):
|
|
167
166
|
self._thread = None
|
|
168
|
-
self._lock =
|
|
167
|
+
self._lock = ThreadingLock()
|
|
169
168
|
self._py_db = weakref.ref(py_db)
|
|
170
169
|
|
|
171
170
|
def call_on_timeout(self, timeout, on_timeout, kwargs=None):
|
|
172
|
-
|
|
171
|
+
"""
|
|
173
172
|
This can be called regularly to always execute the given function after a given timeout:
|
|
174
173
|
|
|
175
174
|
call_on_timeout(py_db, 10, on_timeout)
|
|
@@ -182,11 +181,11 @@ class TimeoutTracker(object):
|
|
|
182
181
|
...
|
|
183
182
|
|
|
184
183
|
Note: the callback will be called from a PyDBDaemonThread.
|
|
185
|
-
|
|
184
|
+
"""
|
|
186
185
|
with self._lock:
|
|
187
186
|
if self._thread is None:
|
|
188
187
|
if _DEBUG:
|
|
189
|
-
pydev_log.critical(
|
|
188
|
+
pydev_log.critical("pydevd_timeout: Created _TimeoutThread.")
|
|
190
189
|
|
|
191
190
|
self._thread = _TimeoutThread(self._py_db())
|
|
192
191
|
self._thread.start()
|
|
@@ -194,13 +193,13 @@ class TimeoutTracker(object):
|
|
|
194
193
|
curtime = time.time()
|
|
195
194
|
handle = _OnTimeoutHandle(self, curtime + timeout, on_timeout, kwargs)
|
|
196
195
|
if _DEBUG:
|
|
197
|
-
pydev_log.critical(
|
|
196
|
+
pydev_log.critical("pydevd_timeout: Added handle: %s.", handle)
|
|
198
197
|
self._thread.add_on_timeout_handle(handle)
|
|
199
198
|
return handle
|
|
200
199
|
|
|
201
200
|
|
|
202
201
|
def create_interrupt_this_thread_callback():
|
|
203
|
-
|
|
202
|
+
"""
|
|
204
203
|
The idea here is returning a callback that when called will generate a KeyboardInterrupt
|
|
205
204
|
in the thread that called this function.
|
|
206
205
|
|
|
@@ -214,26 +213,25 @@ def create_interrupt_this_thread_callback():
|
|
|
214
213
|
:return callable:
|
|
215
214
|
Returns a callback that will interrupt the current thread (this may be called
|
|
216
215
|
from an auxiliary thread).
|
|
217
|
-
|
|
216
|
+
"""
|
|
218
217
|
tid = thread_get_ident()
|
|
219
218
|
|
|
220
219
|
if is_current_thread_main_thread():
|
|
221
|
-
main_thread =
|
|
220
|
+
main_thread = threading_current_thread()
|
|
222
221
|
|
|
223
222
|
def raise_on_this_thread():
|
|
224
|
-
pydev_log.debug(
|
|
223
|
+
pydev_log.debug("Callback to interrupt main thread.")
|
|
225
224
|
pydevd_utils.interrupt_main_thread(main_thread)
|
|
226
225
|
|
|
227
226
|
else:
|
|
228
|
-
|
|
229
227
|
# Note: this works in the sense that it can stop some cpu-intensive slow operation,
|
|
230
228
|
# but we can't really interrupt the thread out of some sleep or I/O operation
|
|
231
229
|
# (this will only be raised when Python is about to execute the next instruction).
|
|
232
230
|
def raise_on_this_thread():
|
|
233
231
|
if IS_CPYTHON:
|
|
234
|
-
pydev_log.debug(
|
|
232
|
+
pydev_log.debug("Interrupt thread: %s", tid)
|
|
235
233
|
ctypes.pythonapi.PyThreadState_SetAsyncExc(ctypes.c_long(tid), ctypes.py_object(KeyboardInterrupt))
|
|
236
234
|
else:
|
|
237
|
-
pydev_log.debug(
|
|
235
|
+
pydev_log.debug("It is only possible to interrupt non-main threads in CPython.")
|
|
238
236
|
|
|
239
237
|
return raise_on_this_thread
|