debugpy 1.8.5__zip → 1.8.6__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.6}/PKG-INFO +1 -1
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py +19 -21
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py +30 -30
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py +3 -1
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +43 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py +35 -32
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py +83 -84
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py +92 -99
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py +2 -3
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py +51 -27
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py +11 -7
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py +6 -5
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py +34 -38
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py +71 -69
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py +1 -3
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py +0 -1
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py +14 -16
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py +81 -93
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py +3 -3
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py +9 -8
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py +33 -25
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py +183 -170
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py +33 -29
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py +6 -4
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py +19 -18
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py +3 -3
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py +165 -138
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +77 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py +35 -36
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py +22 -23
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py +37 -57
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py +54 -52
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py +28 -37
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py +56 -53
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +604 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json +551 -445
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py +25 -29
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +17458 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py +11 -12
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py +18 -19
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +41 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +327 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py +263 -214
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py +7 -10
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py +187 -92
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py +105 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py +46 -51
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py +239 -176
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py +370 -297
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py +78 -86
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py +55 -59
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py +194 -58
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py +2 -3
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py +18 -23
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py +157 -127
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py +10 -12
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +35217 -23106
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd +15 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx +802 -511
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py +18 -7
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py +32 -24
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py +11 -13
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py +16 -16
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py +27 -2
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py +1 -1
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py +4 -5
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py +8 -10
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py +50 -45
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py +462 -407
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py +63 -61
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py +14 -16
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py +27 -25
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py +40 -42
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +200 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py +20 -19
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py +199 -108
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py +121 -73
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +208 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py +206 -159
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py +346 -334
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py +75 -80
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py +35 -35
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py +116 -124
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py +44 -58
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py +51 -55
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py +4 -2
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py +24 -24
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py +19 -20
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py +45 -49
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py +61 -58
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py +23 -13
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py +29 -31
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py +41 -11
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py +117 -55
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py +11 -14
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py +90 -89
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py +106 -97
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +40 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py +56 -46
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py +5 -5
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +71 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c +11165 -5326
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py +5 -6
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py +53 -56
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py +4 -6
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py +6 -26
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py +7 -21
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py +5 -24
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py +10 -34
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py +1 -4
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py +2 -6
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py +3 -5
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py +11 -31
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py +2 -2
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py +14 -41
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py +2 -4
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py +7 -18
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py +6 -18
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py +7 -18
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py +1 -3
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py +14 -19
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py +1927 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c +43058 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pxd +46 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx +1934 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/pydevd_sys_monitoring.py +16 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py +12 -11
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_coverage.py +30 -32
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhook.py +58 -54
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py +20 -24
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py +8 -7
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py +8 -6
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py +11 -8
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py +21 -18
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py +17 -15
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt6.py +17 -15
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py +6 -4
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py +14 -10
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py +30 -26
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +24 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py +37 -34
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_loaders.py +86 -73
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +7 -7
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydev_pysrc.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_run_in_console.py +23 -24
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +267 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevconsole.py +55 -47
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd.py +732 -508
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +40 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py +1 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +11 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +75 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/add_code_to_python_process.py +130 -125
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +89 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_script.py +41 -32
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp +1 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp +9 -1
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.exe +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py +10 -9
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py +103 -119
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py +457 -516
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py +33 -15
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py +336 -281
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py +101 -131
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py +148 -153
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py +310 -302
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py +235 -208
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py +185 -218
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py +428 -564
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py +54 -53
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py +69 -73
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py +158 -170
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py +143 -213
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py +302 -333
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py +220 -239
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py +198 -177
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py +11 -11
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py +1191 -713
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py +248 -194
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py +132 -120
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py +450 -346
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py +305 -286
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +526 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py +1479 -1097
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +579 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +3517 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py +54 -31
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py +170 -149
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py +190 -108
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py +542 -437
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py +489 -442
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py +83 -65
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py +70 -76
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp +17 -9
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat +1 -1
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_file_utils.py +141 -120
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py +175 -149
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py +5 -5
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py +28 -28
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py +22 -30
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py +3 -2
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py +130 -108
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py +27 -14
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_tracing.py +85 -66
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/setup_pydevd_cython.py +96 -59
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_version.py +3 -3
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/messaging.py +2 -1
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/server/cli.py +32 -17
- {debugpy-1.8.5 → debugpy-1.8.6/src/debugpy.egg-info}/PKG-INFO +1 -1
- {debugpy-1.8.5 → debugpy-1.8.6}/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_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.6}/DESCRIPTION.md +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/LICENSE +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/MANIFEST.in +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/README.md +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/pyproject.toml +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/setup.cfg +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/setup.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/ThirdPartyNotices.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/__main__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/_pydevd_packaging.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/_util.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/force_pydevd.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pyx +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/README +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_310.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_311.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_common.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/__main__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/clients.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/components.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/launchers.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/servers.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/sessions.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/json.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/log.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/singleton.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/sockets.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/stacks.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/timestamp.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/util.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/__main__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/debuggee.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/handlers.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/output.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/winapi.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/public_api.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/server/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/server/api.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/server/attach_pid_injected.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy.egg-info/dependency_links.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy.egg-info/entry_points.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy.egg-info/top_level.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/versioneer.py +0 -0
|
@@ -4,21 +4,52 @@ from _pydev_bundle.pydev_is_thread_alive import is_thread_alive
|
|
|
4
4
|
from _pydev_bundle._pydev_saved_modules import thread
|
|
5
5
|
from _pydevd_bundle import pydevd_xml, pydevd_frame_utils, pydevd_constants, pydevd_utils
|
|
6
6
|
from _pydevd_bundle.pydevd_comm_constants import (
|
|
7
|
-
CMD_THREAD_CREATE,
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
CMD_THREAD_CREATE,
|
|
8
|
+
CMD_THREAD_KILL,
|
|
9
|
+
CMD_THREAD_SUSPEND,
|
|
10
|
+
CMD_THREAD_RUN,
|
|
11
|
+
CMD_GET_VARIABLE,
|
|
12
|
+
CMD_EVALUATE_EXPRESSION,
|
|
13
|
+
CMD_GET_FRAME,
|
|
14
|
+
CMD_WRITE_TO_CONSOLE,
|
|
15
|
+
CMD_GET_COMPLETIONS,
|
|
16
|
+
CMD_LOAD_SOURCE,
|
|
17
|
+
CMD_SET_NEXT_STATEMENT,
|
|
18
|
+
CMD_EXIT,
|
|
19
|
+
CMD_GET_FILE_CONTENTS,
|
|
20
|
+
CMD_EVALUATE_CONSOLE_EXPRESSION,
|
|
21
|
+
CMD_RUN_CUSTOM_OPERATION,
|
|
22
|
+
CMD_GET_BREAKPOINT_EXCEPTION,
|
|
23
|
+
CMD_SEND_CURR_EXCEPTION_TRACE,
|
|
24
|
+
CMD_SEND_CURR_EXCEPTION_TRACE_PROCEEDED,
|
|
25
|
+
CMD_SHOW_CONSOLE,
|
|
26
|
+
CMD_GET_ARRAY,
|
|
27
|
+
CMD_INPUT_REQUESTED,
|
|
28
|
+
CMD_GET_DESCRIPTION,
|
|
29
|
+
CMD_PROCESS_CREATED,
|
|
30
|
+
CMD_SHOW_CYTHON_WARNING,
|
|
31
|
+
CMD_LOAD_FULL_VALUE,
|
|
32
|
+
CMD_GET_THREAD_STACK,
|
|
33
|
+
CMD_GET_EXCEPTION_DETAILS,
|
|
34
|
+
CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION,
|
|
16
35
|
CMD_THREAD_RESUME_SINGLE_NOTIFICATION,
|
|
17
|
-
CMD_GET_NEXT_STATEMENT_TARGETS,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
36
|
+
CMD_GET_NEXT_STATEMENT_TARGETS,
|
|
37
|
+
CMD_VERSION,
|
|
38
|
+
CMD_RETURN,
|
|
39
|
+
CMD_SET_PROTOCOL,
|
|
40
|
+
CMD_ERROR,
|
|
41
|
+
MAX_IO_MSG_SIZE,
|
|
42
|
+
VERSION_STRING,
|
|
43
|
+
CMD_RELOAD_CODE,
|
|
44
|
+
CMD_LOAD_SOURCE_FROM_FRAME_ID,
|
|
45
|
+
)
|
|
46
|
+
from _pydevd_bundle.pydevd_constants import (
|
|
47
|
+
DebugInfoHolder,
|
|
48
|
+
get_thread_id,
|
|
49
|
+
get_global_debugger,
|
|
50
|
+
GetGlobalDebugger,
|
|
51
|
+
set_global_debugger,
|
|
52
|
+
) # Keep for backward compatibility @UnusedImport
|
|
22
53
|
from _pydevd_bundle.pydevd_net_command import NetCommand, NULL_NET_COMMAND, NULL_EXIT_COMMAND
|
|
23
54
|
from _pydevd_bundle.pydevd_utils import quote_smart as quote, get_non_pydevd_threads
|
|
24
55
|
from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame
|
|
@@ -30,16 +61,15 @@ from _pydevd_bundle.pydevd_frame_utils import FramesList
|
|
|
30
61
|
from io import StringIO
|
|
31
62
|
|
|
32
63
|
|
|
33
|
-
|
|
64
|
+
# =======================================================================================================================
|
|
34
65
|
# NetCommandFactory
|
|
35
|
-
|
|
66
|
+
# =======================================================================================================================
|
|
36
67
|
class NetCommandFactory(object):
|
|
37
|
-
|
|
38
68
|
def __init__(self):
|
|
39
69
|
self._additional_thread_id_to_thread_name = {}
|
|
40
70
|
|
|
41
71
|
def _thread_to_xml(self, thread):
|
|
42
|
-
"""
|
|
72
|
+
"""thread information as XML"""
|
|
43
73
|
name = pydevd_xml.make_valid_xml_value(thread.name)
|
|
44
74
|
cmd_text = '<thread name="%s" id="%s" />' % (quote(name), get_thread_id(thread))
|
|
45
75
|
return cmd_text
|
|
@@ -51,14 +81,14 @@ class NetCommandFactory(object):
|
|
|
51
81
|
return cmd
|
|
52
82
|
|
|
53
83
|
def make_protocol_set_message(self, seq):
|
|
54
|
-
return NetCommand(CMD_SET_PROTOCOL, seq,
|
|
84
|
+
return NetCommand(CMD_SET_PROTOCOL, seq, "")
|
|
55
85
|
|
|
56
86
|
def make_thread_created_message(self, thread):
|
|
57
87
|
cmdText = "<xml>" + self._thread_to_xml(thread) + "</xml>"
|
|
58
88
|
return NetCommand(CMD_THREAD_CREATE, 0, cmdText)
|
|
59
89
|
|
|
60
90
|
def make_process_created_message(self):
|
|
61
|
-
cmdText =
|
|
91
|
+
cmdText = "<process/>"
|
|
62
92
|
return NetCommand(CMD_PROCESS_CREATED, 0, cmdText)
|
|
63
93
|
|
|
64
94
|
def make_process_about_to_be_replaced_message(self):
|
|
@@ -66,7 +96,7 @@ class NetCommandFactory(object):
|
|
|
66
96
|
|
|
67
97
|
def make_show_cython_warning_message(self):
|
|
68
98
|
try:
|
|
69
|
-
return NetCommand(CMD_SHOW_CYTHON_WARNING, 0,
|
|
99
|
+
return NetCommand(CMD_SHOW_CYTHON_WARNING, 0, "")
|
|
70
100
|
except:
|
|
71
101
|
return self.make_error_message(0, get_exception_traceback_str())
|
|
72
102
|
|
|
@@ -76,7 +106,7 @@ class NetCommandFactory(object):
|
|
|
76
106
|
return NetCommand(CMD_THREAD_CREATE, 0, '<xml><thread name="%s" id="%s"/></xml>' % (frame_description, frame_id))
|
|
77
107
|
|
|
78
108
|
def make_list_threads_message(self, py_db, seq):
|
|
79
|
-
"""
|
|
109
|
+
"""returns thread listing as XML"""
|
|
80
110
|
try:
|
|
81
111
|
threads = get_non_pydevd_threads()
|
|
82
112
|
cmd_text = ["<xml>"]
|
|
@@ -90,7 +120,7 @@ class NetCommandFactory(object):
|
|
|
90
120
|
append('<thread name="%s" id="%s" />' % (quote(name), thread_id))
|
|
91
121
|
|
|
92
122
|
append("</xml>")
|
|
93
|
-
return NetCommand(CMD_RETURN, seq,
|
|
123
|
+
return NetCommand(CMD_RETURN, seq, "".join(cmd_text))
|
|
94
124
|
except:
|
|
95
125
|
return self.make_error_message(seq, get_exception_traceback_str())
|
|
96
126
|
|
|
@@ -119,8 +149,8 @@ class NetCommandFactory(object):
|
|
|
119
149
|
cmd_text.append(self.make_thread_stack_str(py_db, frames_list))
|
|
120
150
|
finally:
|
|
121
151
|
topmost_frame = None
|
|
122
|
-
cmd_text.append(
|
|
123
|
-
return NetCommand(CMD_GET_THREAD_STACK, seq,
|
|
152
|
+
cmd_text.append("</thread></xml>")
|
|
153
|
+
return NetCommand(CMD_GET_THREAD_STACK, seq, "".join(cmd_text))
|
|
124
154
|
except:
|
|
125
155
|
return self.make_error_message(seq, get_exception_traceback_str())
|
|
126
156
|
|
|
@@ -135,18 +165,18 @@ class NetCommandFactory(object):
|
|
|
135
165
|
return self.make_io_message(msg, 2)
|
|
136
166
|
|
|
137
167
|
def make_io_message(self, msg, ctx):
|
|
138
|
-
|
|
168
|
+
"""
|
|
139
169
|
@param msg: the message to pass to the debug server
|
|
140
170
|
@param ctx: 1 for stdio 2 for stderr
|
|
141
|
-
|
|
171
|
+
"""
|
|
142
172
|
try:
|
|
143
173
|
msg = pydevd_constants.as_str(msg)
|
|
144
174
|
|
|
145
175
|
if len(msg) > MAX_IO_MSG_SIZE:
|
|
146
176
|
msg = msg[0:MAX_IO_MSG_SIZE]
|
|
147
|
-
msg +=
|
|
177
|
+
msg += "..."
|
|
148
178
|
|
|
149
|
-
msg = pydevd_xml.make_valid_xml_value(quote(msg,
|
|
179
|
+
msg = pydevd_xml.make_valid_xml_value(quote(msg, "/>_= "))
|
|
150
180
|
return NetCommand(str(CMD_WRITE_TO_CONSOLE), 0, '<xml><io s="%s" ctx="%s"/></xml>' % (msg, ctx))
|
|
151
181
|
except:
|
|
152
182
|
return self.make_error_message(0, get_exception_traceback_str())
|
|
@@ -171,16 +201,16 @@ class NetCommandFactory(object):
|
|
|
171
201
|
for frame in frames_list:
|
|
172
202
|
show_as_current_frame = frame is frames_list.current_frame
|
|
173
203
|
if frame.f_code is None:
|
|
174
|
-
pydev_log.info(
|
|
204
|
+
pydev_log.info("Frame without f_code: %s", frame)
|
|
175
205
|
continue # IronPython sometimes does not have it!
|
|
176
206
|
|
|
177
207
|
method_name = frame.f_code.co_name # method name (if in method) or ? if global
|
|
178
208
|
if method_name is None:
|
|
179
|
-
pydev_log.info(
|
|
209
|
+
pydev_log.info("Frame without co_name: %s", frame)
|
|
180
210
|
continue # IronPython sometimes does not have it!
|
|
181
211
|
|
|
182
212
|
if is_chained:
|
|
183
|
-
method_name =
|
|
213
|
+
method_name = "[Chained Exc: %s] %s" % (frames_list.exc_desc, method_name)
|
|
184
214
|
|
|
185
215
|
abs_path_real_path_and_base = get_abs_path_real_path_and_base_from_frame(frame)
|
|
186
216
|
if py_db.get_file_type(frame, abs_path_real_path_and_base) == py_db.PYDEV_FILE:
|
|
@@ -196,7 +226,17 @@ class NetCommandFactory(object):
|
|
|
196
226
|
new_filename_in_utf8, applied_mapping = pydevd_file_utils.map_file_to_client(filename_in_utf8)
|
|
197
227
|
applied_mapping = applied_mapping or changed
|
|
198
228
|
|
|
199
|
-
yield
|
|
229
|
+
yield (
|
|
230
|
+
frame_id,
|
|
231
|
+
frame,
|
|
232
|
+
method_name,
|
|
233
|
+
abs_path_real_path_and_base[0],
|
|
234
|
+
new_filename_in_utf8,
|
|
235
|
+
lineno,
|
|
236
|
+
applied_mapping,
|
|
237
|
+
show_as_current_frame,
|
|
238
|
+
line_col_info,
|
|
239
|
+
)
|
|
200
240
|
|
|
201
241
|
if not flatten_chained:
|
|
202
242
|
break
|
|
@@ -213,21 +253,28 @@ class NetCommandFactory(object):
|
|
|
213
253
|
append = cmd_text_list.append
|
|
214
254
|
|
|
215
255
|
try:
|
|
216
|
-
for
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
256
|
+
for (
|
|
257
|
+
frame_id,
|
|
258
|
+
frame,
|
|
259
|
+
method_name,
|
|
260
|
+
_original_filename,
|
|
261
|
+
filename_in_utf8,
|
|
262
|
+
lineno,
|
|
263
|
+
_applied_mapping,
|
|
264
|
+
_show_as_current_frame,
|
|
265
|
+
line_col_info,
|
|
266
|
+
) in self._iter_visible_frames_info(py_db, frames_list, flatten_chained=True):
|
|
220
267
|
# print("file is ", filename_in_utf8)
|
|
221
268
|
# print("line is ", lineno)
|
|
222
269
|
|
|
223
270
|
# Note: variables are all gotten 'on-demand'.
|
|
224
|
-
append('<frame id="%s" name="%s" ' % (frame_id
|
|
225
|
-
append('file="%s" line="%s">' % (quote(make_valid_xml_value(filename_in_utf8),
|
|
271
|
+
append('<frame id="%s" name="%s" ' % (frame_id, make_valid_xml_value(method_name)))
|
|
272
|
+
append('file="%s" line="%s">' % (quote(make_valid_xml_value(filename_in_utf8), "/>_= \t"), lineno))
|
|
226
273
|
append("</frame>")
|
|
227
274
|
except:
|
|
228
275
|
pydev_log.exception()
|
|
229
276
|
|
|
230
|
-
return
|
|
277
|
+
return "".join(cmd_text_list)
|
|
231
278
|
|
|
232
279
|
def make_thread_suspend_str(
|
|
233
280
|
self,
|
|
@@ -236,8 +283,8 @@ class NetCommandFactory(object):
|
|
|
236
283
|
frames_list,
|
|
237
284
|
stop_reason=None,
|
|
238
285
|
message=None,
|
|
239
|
-
|
|
240
|
-
|
|
286
|
+
trace_suspend_type="trace",
|
|
287
|
+
):
|
|
241
288
|
"""
|
|
242
289
|
:return tuple(str,str):
|
|
243
290
|
Returns tuple(thread_suspended_str, thread_stack_str).
|
|
@@ -264,7 +311,7 @@ class NetCommandFactory(object):
|
|
|
264
311
|
cmd_text_list = []
|
|
265
312
|
append = cmd_text_list.append
|
|
266
313
|
|
|
267
|
-
cmd_text_list.append(
|
|
314
|
+
cmd_text_list.append("<xml>")
|
|
268
315
|
if message:
|
|
269
316
|
message = make_valid_xml_value(message)
|
|
270
317
|
|
|
@@ -273,19 +320,20 @@ class NetCommandFactory(object):
|
|
|
273
320
|
append(' stop_reason="%s"' % (stop_reason,))
|
|
274
321
|
if message is not None:
|
|
275
322
|
append(' message="%s"' % (message,))
|
|
276
|
-
if
|
|
277
|
-
append(' suspend_type="%s"' % (
|
|
278
|
-
append(
|
|
323
|
+
if trace_suspend_type is not None:
|
|
324
|
+
append(' suspend_type="%s"' % (trace_suspend_type,))
|
|
325
|
+
append(">")
|
|
279
326
|
thread_stack_str = self.make_thread_stack_str(py_db, frames_list)
|
|
280
327
|
append(thread_stack_str)
|
|
281
328
|
append("</thread></xml>")
|
|
282
329
|
|
|
283
|
-
return
|
|
330
|
+
return "".join(cmd_text_list), thread_stack_str
|
|
284
331
|
|
|
285
|
-
def make_thread_suspend_message(self, py_db, thread_id, frames_list, stop_reason, message,
|
|
332
|
+
def make_thread_suspend_message(self, py_db, thread_id, frames_list, stop_reason, message, trace_suspend_type, thread, additional_info):
|
|
286
333
|
try:
|
|
287
334
|
thread_suspend_str, thread_stack_str = self.make_thread_suspend_str(
|
|
288
|
-
py_db, thread_id, frames_list, stop_reason, message,
|
|
335
|
+
py_db, thread_id, frames_list, stop_reason, message, trace_suspend_type
|
|
336
|
+
)
|
|
289
337
|
cmd = NetCommand(CMD_THREAD_SUSPEND, 0, thread_suspend_str)
|
|
290
338
|
cmd.thread_stack_str = thread_stack_str
|
|
291
339
|
cmd.thread_suspend_str = thread_suspend_str
|
|
@@ -295,19 +343,17 @@ class NetCommandFactory(object):
|
|
|
295
343
|
|
|
296
344
|
def make_thread_suspend_single_notification(self, py_db, thread_id, thread, stop_reason):
|
|
297
345
|
try:
|
|
298
|
-
return NetCommand(CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION, 0, json.dumps(
|
|
299
|
-
{'thread_id': thread_id, 'stop_reason':stop_reason}))
|
|
346
|
+
return NetCommand(CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION, 0, json.dumps({"thread_id": thread_id, "stop_reason": stop_reason}))
|
|
300
347
|
except:
|
|
301
348
|
return self.make_error_message(0, get_exception_traceback_str())
|
|
302
349
|
|
|
303
350
|
def make_thread_resume_single_notification(self, thread_id):
|
|
304
351
|
try:
|
|
305
|
-
return NetCommand(CMD_THREAD_RESUME_SINGLE_NOTIFICATION, 0, json.dumps(
|
|
306
|
-
{'thread_id': thread_id}))
|
|
352
|
+
return NetCommand(CMD_THREAD_RESUME_SINGLE_NOTIFICATION, 0, json.dumps({"thread_id": thread_id}))
|
|
307
353
|
except:
|
|
308
354
|
return self.make_error_message(0, get_exception_traceback_str())
|
|
309
355
|
|
|
310
|
-
def make_thread_run_message(self, thread_id, reason):
|
|
356
|
+
def make_thread_run_message(self, py_db, thread_id, reason):
|
|
311
357
|
try:
|
|
312
358
|
return NetCommand(CMD_THREAD_RUN, 0, "%s\t%s" % (thread_id, reason))
|
|
313
359
|
except:
|
|
@@ -371,24 +417,26 @@ class NetCommandFactory(object):
|
|
|
371
417
|
def _make_send_curr_exception_trace_str(self, py_db, thread_id, exc_type, exc_desc, trace_obj):
|
|
372
418
|
frames_list = pydevd_frame_utils.create_frames_list_from_traceback(trace_obj, None, exc_type, exc_desc)
|
|
373
419
|
|
|
374
|
-
exc_type = pydevd_xml.make_valid_xml_value(str(exc_type)).replace(
|
|
375
|
-
exc_desc = pydevd_xml.make_valid_xml_value(str(exc_desc)).replace(
|
|
420
|
+
exc_type = pydevd_xml.make_valid_xml_value(str(exc_type)).replace("\t", " ") or "exception: type unknown"
|
|
421
|
+
exc_desc = pydevd_xml.make_valid_xml_value(str(exc_desc)).replace("\t", " ") or "exception: no description"
|
|
376
422
|
|
|
377
423
|
thread_suspend_str, thread_stack_str = self.make_thread_suspend_str(
|
|
378
|
-
py_db, thread_id, frames_list, CMD_SEND_CURR_EXCEPTION_TRACE,
|
|
424
|
+
py_db, thread_id, frames_list, CMD_SEND_CURR_EXCEPTION_TRACE, ""
|
|
425
|
+
)
|
|
379
426
|
return exc_type, exc_desc, thread_suspend_str, thread_stack_str
|
|
380
427
|
|
|
381
428
|
def make_send_curr_exception_trace_message(self, py_db, seq, thread_id, curr_frame_id, exc_type, exc_desc, trace_obj):
|
|
382
429
|
try:
|
|
383
430
|
exc_type, exc_desc, thread_suspend_str, _thread_stack_str = self._make_send_curr_exception_trace_str(
|
|
384
|
-
py_db, thread_id, exc_type, exc_desc, trace_obj
|
|
385
|
-
|
|
431
|
+
py_db, thread_id, exc_type, exc_desc, trace_obj
|
|
432
|
+
)
|
|
433
|
+
payload = str(curr_frame_id) + "\t" + exc_type + "\t" + exc_desc + "\t" + thread_suspend_str
|
|
386
434
|
return NetCommand(CMD_SEND_CURR_EXCEPTION_TRACE, seq, payload)
|
|
387
435
|
except Exception:
|
|
388
436
|
return self.make_error_message(seq, get_exception_traceback_str())
|
|
389
437
|
|
|
390
438
|
def make_get_exception_details_message(self, py_db, seq, thread_id, topmost_frame):
|
|
391
|
-
"""Returns exception details as XML
|
|
439
|
+
"""Returns exception details as XML"""
|
|
392
440
|
try:
|
|
393
441
|
# If the debugger is not suspended, just return the thread and its id.
|
|
394
442
|
cmd_text = ['<xml><thread id="%s" ' % (thread_id,)]
|
|
@@ -398,23 +446,24 @@ class NetCommandFactory(object):
|
|
|
398
446
|
frame = topmost_frame
|
|
399
447
|
topmost_frame = None
|
|
400
448
|
while frame is not None:
|
|
401
|
-
if frame.f_code.co_name ==
|
|
402
|
-
arg = frame.f_locals.get(
|
|
449
|
+
if frame.f_code.co_name == "do_wait_suspend" and frame.f_code.co_filename.endswith("pydevd.py"):
|
|
450
|
+
arg = frame.f_locals.get("arg", None)
|
|
403
451
|
if arg is not None:
|
|
404
452
|
exc_type, exc_desc, _thread_suspend_str, thread_stack_str = self._make_send_curr_exception_trace_str(
|
|
405
|
-
py_db, thread_id, *arg
|
|
453
|
+
py_db, thread_id, *arg
|
|
454
|
+
)
|
|
406
455
|
cmd_text.append('exc_type="%s" ' % (exc_type,))
|
|
407
456
|
cmd_text.append('exc_desc="%s" ' % (exc_desc,))
|
|
408
|
-
cmd_text.append(
|
|
457
|
+
cmd_text.append(">")
|
|
409
458
|
cmd_text.append(thread_stack_str)
|
|
410
459
|
break
|
|
411
460
|
frame = frame.f_back
|
|
412
461
|
else:
|
|
413
|
-
cmd_text.append(
|
|
462
|
+
cmd_text.append(">")
|
|
414
463
|
finally:
|
|
415
464
|
frame = None
|
|
416
|
-
cmd_text.append(
|
|
417
|
-
return NetCommand(CMD_GET_EXCEPTION_DETAILS, seq,
|
|
465
|
+
cmd_text.append("</thread></xml>")
|
|
466
|
+
return NetCommand(CMD_GET_EXCEPTION_DETAILS, seq, "".join(cmd_text))
|
|
418
467
|
except:
|
|
419
468
|
return self.make_error_message(seq, get_exception_traceback_str())
|
|
420
469
|
|
|
@@ -445,8 +494,7 @@ class NetCommandFactory(object):
|
|
|
445
494
|
def make_show_console_message(self, py_db, thread_id, frame):
|
|
446
495
|
try:
|
|
447
496
|
frames_list = pydevd_frame_utils.create_frames_list_from_frame(frame)
|
|
448
|
-
thread_suspended_str, _thread_stack_str = self.make_thread_suspend_str(
|
|
449
|
-
py_db, thread_id, frames_list, CMD_SHOW_CONSOLE, '')
|
|
497
|
+
thread_suspended_str, _thread_stack_str = self.make_thread_suspend_str(py_db, thread_id, frames_list, CMD_SHOW_CONSOLE, "")
|
|
450
498
|
return NetCommand(CMD_SHOW_CONSOLE, 0, thread_suspended_str)
|
|
451
499
|
except:
|
|
452
500
|
return self.make_error_message(0, get_exception_traceback_str())
|
|
@@ -459,7 +507,7 @@ class NetCommandFactory(object):
|
|
|
459
507
|
|
|
460
508
|
def make_set_next_stmnt_status_message(self, seq, is_success, exception_msg):
|
|
461
509
|
try:
|
|
462
|
-
message = str(is_success) +
|
|
510
|
+
message = str(is_success) + "\t" + exception_msg
|
|
463
511
|
return NetCommand(CMD_SET_NEXT_STATEMENT, int(seq), message)
|
|
464
512
|
except:
|
|
465
513
|
return self.make_error_message(0, get_exception_traceback_str())
|
|
@@ -480,7 +528,7 @@ class NetCommandFactory(object):
|
|
|
480
528
|
return NULL_NET_COMMAND # Not a part of the xml protocol
|
|
481
529
|
|
|
482
530
|
def make_evaluation_timeout_msg(self, py_db, expression, thread):
|
|
483
|
-
msg =
|
|
531
|
+
msg = """pydevd: Evaluating: %s did not finish after %.2f seconds.
|
|
484
532
|
This may mean a number of things:
|
|
485
533
|
- This evaluation is really slow and this is expected.
|
|
486
534
|
In this case it's possible to silence this error by raising the timeout, setting the
|
|
@@ -498,12 +546,12 @@ This may mean a number of things:
|
|
|
498
546
|
environment variable to true so that a thread dump is shown along with this message and
|
|
499
547
|
optionally, set the PYDEVD_INTERRUPT_THREAD_TIMEOUT to some value so that the debugger
|
|
500
548
|
tries to interrupt the evaluation (if possible) when this happens.
|
|
501
|
-
|
|
549
|
+
""" % (expression, pydevd_constants.PYDEVD_WARN_EVALUATION_TIMEOUT)
|
|
502
550
|
|
|
503
551
|
if pydevd_constants.PYDEVD_THREAD_DUMP_ON_WARN_EVALUATION_TIMEOUT:
|
|
504
552
|
stream = StringIO()
|
|
505
553
|
pydevd_utils.dump_threads(stream, show_pydevd_threads=False)
|
|
506
|
-
msg +=
|
|
554
|
+
msg += "\n\n%s\n" % stream.getvalue()
|
|
507
555
|
return self.make_warning_message(msg)
|
|
508
556
|
|
|
509
557
|
def make_exit_command(self, py_db):
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import types
|
|
2
|
+
|
|
3
|
+
from _pydev_bundle import pydev_log
|
|
4
|
+
from typing import Tuple, Literal
|
|
5
|
+
|
|
6
|
+
try:
|
|
7
|
+
from pydevd_plugins import django_debug
|
|
8
|
+
except:
|
|
9
|
+
django_debug = None
|
|
10
|
+
pydev_log.debug("Unable to load django_debug plugin")
|
|
11
|
+
|
|
12
|
+
try:
|
|
13
|
+
from pydevd_plugins import jinja2_debug
|
|
14
|
+
except:
|
|
15
|
+
jinja2_debug = None
|
|
16
|
+
pydev_log.debug("Unable to load jinja2_debug plugin")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def load_plugins():
|
|
20
|
+
plugins = []
|
|
21
|
+
if django_debug is not None:
|
|
22
|
+
plugins.append(django_debug)
|
|
23
|
+
|
|
24
|
+
if jinja2_debug is not None:
|
|
25
|
+
plugins.append(jinja2_debug)
|
|
26
|
+
return plugins
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def bind_func_to_method(func, obj, method_name):
|
|
30
|
+
bound_method = types.MethodType(func, obj)
|
|
31
|
+
|
|
32
|
+
setattr(obj, method_name, bound_method)
|
|
33
|
+
return bound_method
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class PluginManager(object):
|
|
37
|
+
EMPTY_SENTINEL = object()
|
|
38
|
+
|
|
39
|
+
def __init__(self, main_debugger):
|
|
40
|
+
self.plugins = load_plugins()
|
|
41
|
+
|
|
42
|
+
# When some breakpoint is added for a given plugin it becomes active.
|
|
43
|
+
self.active_plugins = []
|
|
44
|
+
|
|
45
|
+
self.main_debugger = main_debugger
|
|
46
|
+
|
|
47
|
+
def add_breakpoint(self, func_name, *args, **kwargs):
|
|
48
|
+
# add breakpoint for plugin
|
|
49
|
+
for plugin in self.plugins:
|
|
50
|
+
if hasattr(plugin, func_name):
|
|
51
|
+
func = getattr(plugin, func_name)
|
|
52
|
+
result = func(*args, **kwargs)
|
|
53
|
+
if result:
|
|
54
|
+
self.activate(plugin)
|
|
55
|
+
return result
|
|
56
|
+
return None
|
|
57
|
+
|
|
58
|
+
def activate(self, plugin):
|
|
59
|
+
if plugin not in self.active_plugins:
|
|
60
|
+
self.active_plugins.append(plugin)
|
|
61
|
+
|
|
62
|
+
# These are not a part of the API, rather, `add_breakpoint` should be used with `add_line_breakpoint` or `add_exception_breakpoint`
|
|
63
|
+
# which will call it for all plugins and then if it's valid it'll be activated.
|
|
64
|
+
#
|
|
65
|
+
# def add_line_breakpoint(self, py_db, type, canonical_normalized_filename, breakpoint_id, line, condition, expression, func_name, hit_condition=None, is_logpoint=False, add_breakpoint_result=None, on_changed_breakpoint_state=None):
|
|
66
|
+
# def add_exception_breakpoint(plugin, py_db, type, exception):
|
|
67
|
+
|
|
68
|
+
def after_breakpoints_consolidated(self, py_db, canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints):
|
|
69
|
+
for plugin in self.active_plugins:
|
|
70
|
+
plugin.after_breakpoints_consolidated(py_db, canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints)
|
|
71
|
+
|
|
72
|
+
def remove_exception_breakpoint(self, py_db, exception_type, exception):
|
|
73
|
+
"""
|
|
74
|
+
:param exception_type: 'django', 'jinja2' (can be extended)
|
|
75
|
+
"""
|
|
76
|
+
for plugin in self.active_plugins:
|
|
77
|
+
ret = plugin.remove_exception_breakpoint(py_db, exception_type, exception)
|
|
78
|
+
if ret:
|
|
79
|
+
return ret
|
|
80
|
+
|
|
81
|
+
return None
|
|
82
|
+
|
|
83
|
+
def remove_all_exception_breakpoints(self, py_db):
|
|
84
|
+
for plugin in self.active_plugins:
|
|
85
|
+
plugin.remove_all_exception_breakpoints(py_db)
|
|
86
|
+
|
|
87
|
+
def get_breakpoints(self, py_db, breakpoint_type):
|
|
88
|
+
"""
|
|
89
|
+
:param breakpoint_type: 'django-line', 'jinja2-line'
|
|
90
|
+
"""
|
|
91
|
+
for plugin in self.active_plugins:
|
|
92
|
+
ret = plugin.get_breakpoints(py_db, breakpoint_type)
|
|
93
|
+
if ret:
|
|
94
|
+
return ret
|
|
95
|
+
|
|
96
|
+
def can_skip(self, py_db, frame):
|
|
97
|
+
for plugin in self.active_plugins:
|
|
98
|
+
if not plugin.can_skip(py_db, frame):
|
|
99
|
+
return False
|
|
100
|
+
return True
|
|
101
|
+
|
|
102
|
+
def required_events_breakpoint(self) -> Tuple[Literal["line", "call"], ...]:
|
|
103
|
+
ret = ()
|
|
104
|
+
for plugin in self.active_plugins:
|
|
105
|
+
new = plugin.required_events_breakpoint()
|
|
106
|
+
if new:
|
|
107
|
+
ret += new
|
|
108
|
+
|
|
109
|
+
return ret
|
|
110
|
+
|
|
111
|
+
def required_events_stepping(self) -> Tuple[Literal["line", "call", "return"], ...]:
|
|
112
|
+
ret = ()
|
|
113
|
+
for plugin in self.active_plugins:
|
|
114
|
+
new = plugin.required_events_stepping()
|
|
115
|
+
if new:
|
|
116
|
+
ret += new
|
|
117
|
+
|
|
118
|
+
return ret
|
|
119
|
+
|
|
120
|
+
def is_tracked_frame(self, frame) -> bool:
|
|
121
|
+
for plugin in self.active_plugins:
|
|
122
|
+
if plugin.is_tracked_frame(frame):
|
|
123
|
+
return True
|
|
124
|
+
return False
|
|
125
|
+
|
|
126
|
+
def has_exception_breaks(self, py_db) -> bool:
|
|
127
|
+
for plugin in self.active_plugins:
|
|
128
|
+
if plugin.has_exception_breaks(py_db):
|
|
129
|
+
return True
|
|
130
|
+
return False
|
|
131
|
+
|
|
132
|
+
def has_line_breaks(self, py_db) -> bool:
|
|
133
|
+
for plugin in self.active_plugins:
|
|
134
|
+
if plugin.has_line_breaks(py_db):
|
|
135
|
+
return True
|
|
136
|
+
return False
|
|
137
|
+
|
|
138
|
+
def cmd_step_into(self, py_db, frame, event, info, thread, stop_info, stop: bool):
|
|
139
|
+
"""
|
|
140
|
+
:param stop_info: in/out information. If it should stop then it'll be
|
|
141
|
+
filled by the plugin.
|
|
142
|
+
:param stop: whether the stop has already been flagged for this frame.
|
|
143
|
+
:returns:
|
|
144
|
+
tuple(stop, plugin_stop)
|
|
145
|
+
"""
|
|
146
|
+
plugin_stop = False
|
|
147
|
+
for plugin in self.active_plugins:
|
|
148
|
+
stop, plugin_stop = plugin.cmd_step_into(py_db, frame, event, info, thread, stop_info, stop)
|
|
149
|
+
if plugin_stop:
|
|
150
|
+
return stop, plugin_stop
|
|
151
|
+
return stop, plugin_stop
|
|
152
|
+
|
|
153
|
+
def cmd_step_over(self, py_db, frame, event, info, thread, stop_info, stop):
|
|
154
|
+
plugin_stop = False
|
|
155
|
+
for plugin in self.active_plugins:
|
|
156
|
+
stop, plugin_stop = plugin.cmd_step_over(py_db, frame, event, info, thread, stop_info, stop)
|
|
157
|
+
if plugin_stop:
|
|
158
|
+
return stop, plugin_stop
|
|
159
|
+
return stop, plugin_stop
|
|
160
|
+
|
|
161
|
+
def stop(self, py_db, frame, event, thread, stop_info, arg, step_cmd):
|
|
162
|
+
"""
|
|
163
|
+
The way this works is that the `cmd_step_into` or `cmd_step_over`
|
|
164
|
+
is called which then fills the `stop_info` and then this method
|
|
165
|
+
is called to do the actual stop.
|
|
166
|
+
"""
|
|
167
|
+
for plugin in self.active_plugins:
|
|
168
|
+
stopped = plugin.stop(py_db, frame, event, thread, stop_info, arg, step_cmd)
|
|
169
|
+
if stopped:
|
|
170
|
+
return stopped
|
|
171
|
+
return False
|
|
172
|
+
|
|
173
|
+
def get_breakpoint(self, py_db, frame, event, info):
|
|
174
|
+
for plugin in self.active_plugins:
|
|
175
|
+
ret = plugin.get_breakpoint(py_db, frame, event, info)
|
|
176
|
+
if ret:
|
|
177
|
+
return ret
|
|
178
|
+
return None
|
|
179
|
+
|
|
180
|
+
def suspend(self, py_db, thread, frame, bp_type):
|
|
181
|
+
"""
|
|
182
|
+
:param bp_type: 'django' or 'jinja2'
|
|
183
|
+
|
|
184
|
+
:return:
|
|
185
|
+
The frame for the suspend or None if it should not be suspended.
|
|
186
|
+
"""
|
|
187
|
+
for plugin in self.active_plugins:
|
|
188
|
+
ret = plugin.suspend(py_db, thread, frame, bp_type)
|
|
189
|
+
if ret is not None:
|
|
190
|
+
return ret
|
|
191
|
+
|
|
192
|
+
return None
|
|
193
|
+
|
|
194
|
+
def exception_break(self, py_db, frame, thread, arg):
|
|
195
|
+
for plugin in self.active_plugins:
|
|
196
|
+
ret = plugin.exception_break(py_db, frame, thread, arg)
|
|
197
|
+
if ret is not None:
|
|
198
|
+
return ret
|
|
199
|
+
|
|
200
|
+
return None
|
|
201
|
+
|
|
202
|
+
def change_variable(self, frame, attr, expression):
|
|
203
|
+
for plugin in self.active_plugins:
|
|
204
|
+
ret = plugin.change_variable(frame, attr, expression, self.EMPTY_SENTINEL)
|
|
205
|
+
if ret is not self.EMPTY_SENTINEL:
|
|
206
|
+
return ret
|
|
207
|
+
|
|
208
|
+
return self.EMPTY_SENTINEL
|