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
|
@@ -10,26 +10,50 @@ import pydevd_file_utils
|
|
|
10
10
|
from _pydev_bundle import pydev_log
|
|
11
11
|
from _pydevd_bundle._debug_adapter import pydevd_base_schema, pydevd_schema
|
|
12
12
|
from _pydevd_bundle._debug_adapter.pydevd_schema import (
|
|
13
|
-
CompletionsResponseBody,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
CompletionsResponseBody,
|
|
14
|
+
EvaluateResponseBody,
|
|
15
|
+
ExceptionOptions,
|
|
16
|
+
GotoTargetsResponseBody,
|
|
17
|
+
ModulesResponseBody,
|
|
18
|
+
ProcessEventBody,
|
|
19
|
+
ProcessEvent,
|
|
20
|
+
Scope,
|
|
21
|
+
ScopesResponseBody,
|
|
22
|
+
SetExpressionResponseBody,
|
|
23
|
+
SetVariableResponseBody,
|
|
24
|
+
SourceBreakpoint,
|
|
25
|
+
SourceResponseBody,
|
|
26
|
+
VariablesResponseBody,
|
|
27
|
+
SetBreakpointsResponseBody,
|
|
28
|
+
Response,
|
|
29
|
+
Capabilities,
|
|
30
|
+
PydevdAuthorizeRequest,
|
|
31
|
+
Request,
|
|
32
|
+
StepInTargetsResponseBody,
|
|
33
|
+
SetFunctionBreakpointsResponseBody,
|
|
34
|
+
BreakpointEvent,
|
|
35
|
+
BreakpointEventBody,
|
|
36
|
+
InitializedEvent,
|
|
37
|
+
)
|
|
21
38
|
from _pydevd_bundle.pydevd_api import PyDevdAPI
|
|
22
39
|
from _pydevd_bundle.pydevd_breakpoints import get_exception_class, FunctionBreakpoint
|
|
23
40
|
from _pydevd_bundle.pydevd_comm_constants import (
|
|
24
|
-
CMD_PROCESS_EVENT,
|
|
25
|
-
|
|
26
|
-
|
|
41
|
+
CMD_PROCESS_EVENT,
|
|
42
|
+
CMD_RETURN,
|
|
43
|
+
CMD_SET_NEXT_STATEMENT,
|
|
44
|
+
CMD_STEP_INTO,
|
|
45
|
+
CMD_STEP_INTO_MY_CODE,
|
|
46
|
+
CMD_STEP_OVER,
|
|
47
|
+
CMD_STEP_OVER_MY_CODE,
|
|
48
|
+
file_system_encoding,
|
|
49
|
+
CMD_STEP_RETURN_MY_CODE,
|
|
50
|
+
CMD_STEP_RETURN,
|
|
51
|
+
)
|
|
27
52
|
from _pydevd_bundle.pydevd_filtering import ExcludeFilter
|
|
28
53
|
from _pydevd_bundle.pydevd_json_debug_options import _extract_debug_options, DebugOptions
|
|
29
54
|
from _pydevd_bundle.pydevd_net_command import NetCommand
|
|
30
55
|
from _pydevd_bundle.pydevd_utils import convert_dap_log_message_to_expression, ScopeRequest
|
|
31
|
-
from _pydevd_bundle.pydevd_constants import
|
|
32
|
-
PY_IMPL_VERSION_STR, IS_64BIT_PROCESS)
|
|
56
|
+
from _pydevd_bundle.pydevd_constants import PY_IMPL_NAME, DebugInfoHolder, PY_VERSION_STR, PY_IMPL_VERSION_STR, IS_64BIT_PROCESS
|
|
33
57
|
from _pydevd_bundle.pydevd_trace_dispatch import USING_CYTHON
|
|
34
58
|
from _pydevd_frame_eval.pydevd_frame_eval_main import USING_FRAME_EVAL
|
|
35
59
|
from _pydevd_bundle.pydevd_comm import internal_get_step_in_targets_json
|
|
@@ -52,27 +76,27 @@ def _convert_rules_to_exclude_filters(rules, on_error):
|
|
|
52
76
|
on_error('Invalid "rules" (expected list of dicts). Found: %s' % (rules,))
|
|
53
77
|
continue
|
|
54
78
|
|
|
55
|
-
include = rule.get(
|
|
79
|
+
include = rule.get("include")
|
|
56
80
|
if include is None:
|
|
57
81
|
on_error('Invalid "rule" (expected dict with "include"). Found: %s' % (rule,))
|
|
58
82
|
continue
|
|
59
83
|
|
|
60
|
-
path = rule.get(
|
|
61
|
-
module = rule.get(
|
|
84
|
+
path = rule.get("path")
|
|
85
|
+
module = rule.get("module")
|
|
62
86
|
if path is None and module is None:
|
|
63
87
|
on_error('Invalid "rule" (expected dict with "path" or "module"). Found: %s' % (rule,))
|
|
64
88
|
continue
|
|
65
89
|
|
|
66
90
|
if path is not None:
|
|
67
91
|
glob_pattern = path
|
|
68
|
-
if
|
|
92
|
+
if "*" not in path and "?" not in path:
|
|
69
93
|
if os.path.isdir(glob_pattern):
|
|
70
94
|
# If a directory was specified, add a '/**'
|
|
71
95
|
# to be consistent with the glob pattern required
|
|
72
96
|
# by pydevd.
|
|
73
|
-
if not glob_pattern.endswith(
|
|
74
|
-
glob_pattern +=
|
|
75
|
-
glob_pattern +=
|
|
97
|
+
if not glob_pattern.endswith("/") and not glob_pattern.endswith("\\"):
|
|
98
|
+
glob_pattern += "/"
|
|
99
|
+
glob_pattern += "**"
|
|
76
100
|
directory_exclude_filters.append(ExcludeFilter(glob_pattern, not include, True))
|
|
77
101
|
else:
|
|
78
102
|
glob_exclude_filters.append(ExcludeFilter(glob_pattern, not include, True))
|
|
@@ -81,22 +105,21 @@ def _convert_rules_to_exclude_filters(rules, on_error):
|
|
|
81
105
|
module_exclude_filters.append(ExcludeFilter(module, not include, False))
|
|
82
106
|
|
|
83
107
|
else:
|
|
84
|
-
on_error(
|
|
108
|
+
on_error("Internal error: expected path or module to be specified.")
|
|
85
109
|
|
|
86
110
|
# Note that we have to sort the directory/module exclude filters so that the biggest
|
|
87
111
|
# paths match first.
|
|
88
112
|
# i.e.: if we have:
|
|
89
113
|
# /sub1/sub2/sub3
|
|
90
114
|
# a rule with /sub1/sub2 would match before a rule only with /sub1.
|
|
91
|
-
directory_exclude_filters = sorted(directory_exclude_filters, key=lambda exclude_filter
|
|
92
|
-
module_exclude_filters = sorted(module_exclude_filters, key=lambda exclude_filter
|
|
115
|
+
directory_exclude_filters = sorted(directory_exclude_filters, key=lambda exclude_filter: -len(exclude_filter.name))
|
|
116
|
+
module_exclude_filters = sorted(module_exclude_filters, key=lambda exclude_filter: -len(exclude_filter.name))
|
|
93
117
|
exclude_filters = directory_exclude_filters + glob_exclude_filters + module_exclude_filters
|
|
94
118
|
|
|
95
119
|
return exclude_filters
|
|
96
120
|
|
|
97
121
|
|
|
98
122
|
class IDMap(object):
|
|
99
|
-
|
|
100
123
|
def __init__(self):
|
|
101
124
|
self._value_to_key = {}
|
|
102
125
|
self._key_to_value = {}
|
|
@@ -116,7 +139,6 @@ class IDMap(object):
|
|
|
116
139
|
|
|
117
140
|
|
|
118
141
|
class PyDevJsonCommandProcessor(object):
|
|
119
|
-
|
|
120
142
|
def __init__(self, from_json):
|
|
121
143
|
self.from_json = from_json
|
|
122
144
|
self.api = PyDevdAPI()
|
|
@@ -126,24 +148,24 @@ class PyDevJsonCommandProcessor(object):
|
|
|
126
148
|
self._launch_or_attach_request_done = False
|
|
127
149
|
|
|
128
150
|
def process_net_command_json(self, py_db, json_contents, send_response=True):
|
|
129
|
-
|
|
151
|
+
"""
|
|
130
152
|
Processes a debug adapter protocol json command.
|
|
131
|
-
|
|
153
|
+
"""
|
|
132
154
|
|
|
133
155
|
DEBUG = False
|
|
134
156
|
|
|
135
157
|
try:
|
|
136
158
|
if isinstance(json_contents, bytes):
|
|
137
|
-
json_contents = json_contents.decode(
|
|
159
|
+
json_contents = json_contents.decode("utf-8")
|
|
138
160
|
|
|
139
161
|
request = self.from_json(json_contents, update_ids_from_dap=True)
|
|
140
162
|
except Exception as e:
|
|
141
163
|
try:
|
|
142
164
|
loaded_json = json.loads(json_contents)
|
|
143
|
-
request = Request(loaded_json.get(
|
|
165
|
+
request = Request(loaded_json.get("command", "<unknown>"), loaded_json["seq"])
|
|
144
166
|
except:
|
|
145
167
|
# There's not much we can do in this case...
|
|
146
|
-
pydev_log.exception(
|
|
168
|
+
pydev_log.exception("Error loading json: %s", json_contents)
|
|
147
169
|
return
|
|
148
170
|
|
|
149
171
|
error_msg = str(e)
|
|
@@ -154,28 +176,33 @@ class PyDevJsonCommandProcessor(object):
|
|
|
154
176
|
# so, answer with a failure response).
|
|
155
177
|
def on_request(py_db, request):
|
|
156
178
|
error_response = {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
179
|
+
"type": "response",
|
|
180
|
+
"request_seq": request.seq,
|
|
181
|
+
"success": False,
|
|
182
|
+
"command": request.command,
|
|
183
|
+
"message": error_msg,
|
|
162
184
|
}
|
|
163
185
|
return NetCommand(CMD_RETURN, 0, error_response, is_json=True)
|
|
164
186
|
|
|
165
187
|
else:
|
|
166
188
|
if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 1:
|
|
167
|
-
pydev_log.info(
|
|
168
|
-
|
|
189
|
+
pydev_log.info(
|
|
190
|
+
"Process %s: %s\n"
|
|
191
|
+
% (
|
|
192
|
+
request.__class__.__name__,
|
|
193
|
+
json.dumps(request.to_dict(update_ids_to_dap=True), indent=4, sort_keys=True),
|
|
194
|
+
)
|
|
195
|
+
)
|
|
169
196
|
|
|
170
|
-
assert request.type ==
|
|
171
|
-
method_name =
|
|
197
|
+
assert request.type == "request"
|
|
198
|
+
method_name = "on_%s_request" % (request.command.lower(),)
|
|
172
199
|
on_request = getattr(self, method_name, None)
|
|
173
200
|
if on_request is None:
|
|
174
|
-
print(
|
|
201
|
+
print("Unhandled: %s not available in PyDevJsonCommandProcessor.\n" % (method_name,))
|
|
175
202
|
return
|
|
176
203
|
|
|
177
204
|
if DEBUG:
|
|
178
|
-
print(
|
|
205
|
+
print("Handled in pydevd: %s (in PyDevJsonCommandProcessor).\n" % (method_name,))
|
|
179
206
|
|
|
180
207
|
with py_db._main_lock:
|
|
181
208
|
if request.__class__ == PydevdAuthorizeRequest:
|
|
@@ -184,8 +211,7 @@ class PyDevJsonCommandProcessor(object):
|
|
|
184
211
|
py_db.authentication.login(access_token)
|
|
185
212
|
|
|
186
213
|
if not py_db.authentication.is_authenticated():
|
|
187
|
-
response = Response(
|
|
188
|
-
request.seq, success=False, command=request.command, message='Client not authenticated.', body={})
|
|
214
|
+
response = Response(request.seq, success=False, command=request.command, message="Client not authenticated.", body={})
|
|
189
215
|
cmd = NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
190
216
|
py_db.writer.add_command(cmd)
|
|
191
217
|
return
|
|
@@ -196,11 +222,11 @@ class PyDevJsonCommandProcessor(object):
|
|
|
196
222
|
|
|
197
223
|
def on_pydevdauthorize_request(self, py_db, request):
|
|
198
224
|
client_access_token = py_db.authentication.client_access_token
|
|
199
|
-
body = {
|
|
225
|
+
body = {"clientAccessToken": None}
|
|
200
226
|
if client_access_token:
|
|
201
|
-
body[
|
|
227
|
+
body["clientAccessToken"] = client_access_token
|
|
202
228
|
|
|
203
|
-
response = pydevd_base_schema.build_response(request, kwargs={
|
|
229
|
+
response = pydevd_base_schema.build_response(request, kwargs={"body": body})
|
|
204
230
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
205
231
|
|
|
206
232
|
def on_initialize_request(self, py_db, request):
|
|
@@ -224,13 +250,11 @@ class PyDevJsonCommandProcessor(object):
|
|
|
224
250
|
supportsTerminateRequest=True,
|
|
225
251
|
supportsClipboardContext=True,
|
|
226
252
|
supportsFunctionBreakpoints=True,
|
|
227
|
-
|
|
228
253
|
exceptionBreakpointFilters=[
|
|
229
|
-
{
|
|
230
|
-
{
|
|
254
|
+
{"filter": "raised", "label": "Raised Exceptions", "default": False},
|
|
255
|
+
{"filter": "uncaught", "label": "Uncaught Exceptions", "default": True},
|
|
231
256
|
{"filter": "userUnhandled", "label": "User Uncaught Exceptions", "default": False},
|
|
232
257
|
],
|
|
233
|
-
|
|
234
258
|
# Not supported.
|
|
235
259
|
supportsStepBack=False,
|
|
236
260
|
supportsRestartFrame=False,
|
|
@@ -247,20 +271,20 @@ class PyDevJsonCommandProcessor(object):
|
|
|
247
271
|
).to_dict()
|
|
248
272
|
|
|
249
273
|
# Non-standard capabilities/info below.
|
|
250
|
-
body[
|
|
274
|
+
body["supportsDebuggerProperties"] = True
|
|
251
275
|
|
|
252
|
-
body[
|
|
253
|
-
pydevd_info[
|
|
276
|
+
body["pydevd"] = pydevd_info = {}
|
|
277
|
+
pydevd_info["processId"] = os.getpid()
|
|
254
278
|
self.api.notify_initialize(py_db)
|
|
255
|
-
response = pydevd_base_schema.build_response(request, kwargs={
|
|
279
|
+
response = pydevd_base_schema.build_response(request, kwargs={"body": body})
|
|
256
280
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
257
281
|
|
|
258
282
|
def on_configurationdone_request(self, py_db, request):
|
|
259
|
-
|
|
283
|
+
"""
|
|
260
284
|
:param ConfigurationDoneRequest request:
|
|
261
|
-
|
|
285
|
+
"""
|
|
262
286
|
if not self._launch_or_attach_request_done:
|
|
263
|
-
pydev_log.critical(
|
|
287
|
+
pydev_log.critical("Missing launch request or attach request before configuration done request.")
|
|
264
288
|
|
|
265
289
|
self.api.run(py_db)
|
|
266
290
|
self.api.notify_configuration_done(py_db)
|
|
@@ -269,15 +293,15 @@ class PyDevJsonCommandProcessor(object):
|
|
|
269
293
|
return NetCommand(CMD_RETURN, 0, configuration_done_response, is_json=True)
|
|
270
294
|
|
|
271
295
|
def on_threads_request(self, py_db, request):
|
|
272
|
-
|
|
296
|
+
"""
|
|
273
297
|
:param ThreadsRequest request:
|
|
274
|
-
|
|
298
|
+
"""
|
|
275
299
|
return self.api.list_threads(py_db, request.seq)
|
|
276
300
|
|
|
277
301
|
def on_terminate_request(self, py_db, request):
|
|
278
|
-
|
|
302
|
+
"""
|
|
279
303
|
:param TerminateRequest request:
|
|
280
|
-
|
|
304
|
+
"""
|
|
281
305
|
self._request_terminate_process(py_db)
|
|
282
306
|
response = pydevd_base_schema.build_response(request)
|
|
283
307
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
@@ -286,25 +310,20 @@ class PyDevJsonCommandProcessor(object):
|
|
|
286
310
|
self.api.request_terminate_process(py_db)
|
|
287
311
|
|
|
288
312
|
def on_completions_request(self, py_db, request):
|
|
289
|
-
|
|
313
|
+
"""
|
|
290
314
|
:param CompletionsRequest request:
|
|
291
|
-
|
|
315
|
+
"""
|
|
292
316
|
arguments = request.arguments # : :type arguments: CompletionsArguments
|
|
293
317
|
seq = request.seq
|
|
294
318
|
text = arguments.text
|
|
295
319
|
frame_id = arguments.frameId
|
|
296
|
-
thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(
|
|
297
|
-
frame_id)
|
|
320
|
+
thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(frame_id)
|
|
298
321
|
|
|
299
322
|
if thread_id is None:
|
|
300
323
|
body = CompletionsResponseBody([])
|
|
301
324
|
variables_response = pydevd_base_schema.build_response(
|
|
302
|
-
request,
|
|
303
|
-
|
|
304
|
-
'body': body,
|
|
305
|
-
'success': False,
|
|
306
|
-
'message': 'Thread to get completions seems to have resumed already.'
|
|
307
|
-
})
|
|
325
|
+
request, kwargs={"body": body, "success": False, "message": "Thread to get completions seems to have resumed already."}
|
|
326
|
+
)
|
|
308
327
|
return NetCommand(CMD_RETURN, 0, variables_response, is_json=True)
|
|
309
328
|
|
|
310
329
|
# Note: line and column are 1-based (convert to 0-based for pydevd).
|
|
@@ -319,61 +338,62 @@ class PyDevJsonCommandProcessor(object):
|
|
|
319
338
|
self.api.request_completions(py_db, seq, thread_id, frame_id, text, line=line, column=column)
|
|
320
339
|
|
|
321
340
|
def _resolve_remote_root(self, local_root, remote_root):
|
|
322
|
-
if remote_root ==
|
|
341
|
+
if remote_root == ".":
|
|
323
342
|
cwd = os.getcwd()
|
|
324
|
-
append_pathsep = local_root.endswith(
|
|
325
|
-
return cwd + (os.path.sep if append_pathsep else
|
|
343
|
+
append_pathsep = local_root.endswith("\\") or local_root.endswith("/")
|
|
344
|
+
return cwd + (os.path.sep if append_pathsep else "")
|
|
326
345
|
return remote_root
|
|
327
346
|
|
|
328
347
|
def _set_debug_options(self, py_db, args, start_reason):
|
|
329
|
-
rules = args.get(
|
|
330
|
-
stepping_resumes_all_threads = args.get(
|
|
348
|
+
rules = args.get("rules")
|
|
349
|
+
stepping_resumes_all_threads = args.get("steppingResumesAllThreads", True)
|
|
331
350
|
self.api.set_stepping_resumes_all_threads(py_db, stepping_resumes_all_threads)
|
|
332
351
|
|
|
333
|
-
terminate_child_processes = args.get(
|
|
352
|
+
terminate_child_processes = args.get("terminateChildProcesses", True)
|
|
334
353
|
self.api.set_terminate_child_processes(py_db, terminate_child_processes)
|
|
335
354
|
|
|
336
|
-
terminate_keyboard_interrupt = args.get(
|
|
355
|
+
terminate_keyboard_interrupt = args.get("onTerminate", "kill") == "KeyboardInterrupt"
|
|
337
356
|
self.api.set_terminate_keyboard_interrupt(py_db, terminate_keyboard_interrupt)
|
|
338
357
|
|
|
339
|
-
variable_presentation = args.get(
|
|
358
|
+
variable_presentation = args.get("variablePresentation", None)
|
|
340
359
|
if isinstance(variable_presentation, dict):
|
|
341
360
|
|
|
342
361
|
def get_variable_presentation(setting, default):
|
|
343
362
|
value = variable_presentation.get(setting, default)
|
|
344
|
-
if value not in (
|
|
363
|
+
if value not in ("group", "inline", "hide"):
|
|
345
364
|
pydev_log.info(
|
|
346
|
-
'The value set for "%s" (%s) in the variablePresentation is not valid. Valid values are: "group", "inline", "hide"'
|
|
347
|
-
|
|
365
|
+
'The value set for "%s" (%s) in the variablePresentation is not valid. Valid values are: "group", "inline", "hide"'
|
|
366
|
+
% (
|
|
367
|
+
setting,
|
|
368
|
+
value,
|
|
369
|
+
)
|
|
370
|
+
)
|
|
348
371
|
value = default
|
|
349
372
|
|
|
350
373
|
return value
|
|
351
374
|
|
|
352
|
-
default = get_variable_presentation(
|
|
375
|
+
default = get_variable_presentation("all", "group")
|
|
353
376
|
|
|
354
|
-
special_presentation = get_variable_presentation(
|
|
355
|
-
function_presentation = get_variable_presentation(
|
|
356
|
-
class_presentation = get_variable_presentation(
|
|
357
|
-
protected_presentation = get_variable_presentation(
|
|
377
|
+
special_presentation = get_variable_presentation("special", default)
|
|
378
|
+
function_presentation = get_variable_presentation("function", default)
|
|
379
|
+
class_presentation = get_variable_presentation("class", default)
|
|
380
|
+
protected_presentation = get_variable_presentation("protected", default)
|
|
358
381
|
|
|
359
|
-
self.api.set_variable_presentation(
|
|
360
|
-
|
|
361
|
-
function_presentation,
|
|
362
|
-
|
|
363
|
-
protected_presentation
|
|
364
|
-
))
|
|
382
|
+
self.api.set_variable_presentation(
|
|
383
|
+
py_db,
|
|
384
|
+
self.api.VariablePresentation(special_presentation, function_presentation, class_presentation, protected_presentation),
|
|
385
|
+
)
|
|
365
386
|
|
|
366
387
|
exclude_filters = []
|
|
367
388
|
|
|
368
389
|
if rules is not None:
|
|
369
|
-
exclude_filters = _convert_rules_to_exclude_filters(
|
|
370
|
-
rules, lambda msg: self.api.send_error_message(py_db, msg))
|
|
390
|
+
exclude_filters = _convert_rules_to_exclude_filters(rules, lambda msg: self.api.send_error_message(py_db, msg))
|
|
371
391
|
|
|
372
392
|
self.api.set_exclude_filters(py_db, exclude_filters)
|
|
373
393
|
|
|
374
394
|
debug_options = _extract_debug_options(
|
|
375
|
-
args.get(
|
|
376
|
-
args.get(
|
|
395
|
+
args.get("options"),
|
|
396
|
+
args.get("debugOptions"),
|
|
377
397
|
)
|
|
378
398
|
self._options.update_fom_debug_options(debug_options)
|
|
379
399
|
self._options.update_from_args(args)
|
|
@@ -384,17 +404,17 @@ class PyDevJsonCommandProcessor(object):
|
|
|
384
404
|
self.api.set_ide_os(self._options.client_os)
|
|
385
405
|
|
|
386
406
|
path_mappings = []
|
|
387
|
-
for pathMapping in args.get(
|
|
388
|
-
localRoot = pathMapping.get(
|
|
389
|
-
remoteRoot = pathMapping.get(
|
|
407
|
+
for pathMapping in args.get("pathMappings", []):
|
|
408
|
+
localRoot = pathMapping.get("localRoot", "")
|
|
409
|
+
remoteRoot = pathMapping.get("remoteRoot", "")
|
|
390
410
|
remoteRoot = self._resolve_remote_root(localRoot, remoteRoot)
|
|
391
|
-
if (localRoot !=
|
|
411
|
+
if (localRoot != "") and (remoteRoot != ""):
|
|
392
412
|
path_mappings.append((localRoot, remoteRoot))
|
|
393
413
|
|
|
394
414
|
if bool(path_mappings):
|
|
395
415
|
pydevd_file_utils.setup_client_server_paths(path_mappings)
|
|
396
416
|
|
|
397
|
-
resolve_symlinks = args.get(
|
|
417
|
+
resolve_symlinks = args.get("resolveSymlinks", None)
|
|
398
418
|
if resolve_symlinks is not None:
|
|
399
419
|
pydevd_file_utils.set_resolve_symlinks(resolve_symlinks)
|
|
400
420
|
|
|
@@ -416,13 +436,13 @@ class PyDevJsonCommandProcessor(object):
|
|
|
416
436
|
|
|
417
437
|
self.api.set_ignore_system_exit_codes(py_db, ignore_system_exit_codes)
|
|
418
438
|
|
|
419
|
-
auto_reload = args.get(
|
|
439
|
+
auto_reload = args.get("autoReload", {})
|
|
420
440
|
if not isinstance(auto_reload, dict):
|
|
421
|
-
pydev_log.info(
|
|
441
|
+
pydev_log.info("Expected autoReload to be a dict. Received: %s" % (auto_reload,))
|
|
422
442
|
auto_reload = {}
|
|
423
443
|
|
|
424
|
-
enable_auto_reload = auto_reload.get(
|
|
425
|
-
watch_dirs = auto_reload.get(
|
|
444
|
+
enable_auto_reload = auto_reload.get("enable", False)
|
|
445
|
+
watch_dirs = auto_reload.get("watchDirectories")
|
|
426
446
|
if not watch_dirs:
|
|
427
447
|
watch_dirs = []
|
|
428
448
|
# Note: by default this is no longer done because on some cases there are entries in the PYTHONPATH
|
|
@@ -435,15 +455,15 @@ class PyDevJsonCommandProcessor(object):
|
|
|
435
455
|
# watch_dirs = [pydevd_file_utils.absolute_path(w) for w in check]
|
|
436
456
|
# watch_dirs = [w for w in watch_dirs if py_db.in_project_roots_filename_uncached(w) and os.path.isdir(w)]
|
|
437
457
|
|
|
438
|
-
program = args.get(
|
|
458
|
+
program = args.get("program")
|
|
439
459
|
if program:
|
|
440
460
|
if os.path.isdir(program):
|
|
441
461
|
watch_dirs.append(program)
|
|
442
462
|
else:
|
|
443
463
|
watch_dirs.append(os.path.dirname(program))
|
|
444
|
-
watch_dirs.append(os.path.abspath(
|
|
464
|
+
watch_dirs.append(os.path.abspath("."))
|
|
445
465
|
|
|
446
|
-
argv = getattr(sys,
|
|
466
|
+
argv = getattr(sys, "argv", [])
|
|
447
467
|
if argv:
|
|
448
468
|
f = argv[0]
|
|
449
469
|
if f: # argv[0] could be None (https://github.com/microsoft/debugpy/issues/987)
|
|
@@ -459,30 +479,31 @@ class PyDevJsonCommandProcessor(object):
|
|
|
459
479
|
try:
|
|
460
480
|
new_watch_dirs.add(pydevd_file_utils.get_path_with_real_case(pydevd_file_utils.absolute_path(w)))
|
|
461
481
|
except Exception:
|
|
462
|
-
pydev_log.exception(
|
|
482
|
+
pydev_log.exception("Error adding watch dir: %s", w)
|
|
463
483
|
watch_dirs = new_watch_dirs
|
|
464
484
|
|
|
465
|
-
poll_target_time = auto_reload.get(
|
|
466
|
-
exclude_patterns = auto_reload.get(
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
485
|
+
poll_target_time = auto_reload.get("pollingInterval", 1)
|
|
486
|
+
exclude_patterns = auto_reload.get(
|
|
487
|
+
"exclude", ("**/.git/**", "**/__pycache__/**", "**/node_modules/**", "**/.metadata/**", "**/site-packages/**")
|
|
488
|
+
)
|
|
489
|
+
include_patterns = auto_reload.get("include", ("**/*.py", "**/*.pyw"))
|
|
490
|
+
self.api.setup_auto_reload_watcher(py_db, enable_auto_reload, watch_dirs, poll_target_time, exclude_patterns, include_patterns)
|
|
470
491
|
|
|
471
|
-
if self._options.stop_on_entry and start_reason ==
|
|
492
|
+
if self._options.stop_on_entry and start_reason == "launch":
|
|
472
493
|
self.api.stop_on_entry()
|
|
473
494
|
|
|
474
495
|
self.api.set_gui_event_loop(py_db, self._options.gui_event_loop)
|
|
475
496
|
|
|
476
497
|
def _send_process_event(self, py_db, start_method):
|
|
477
|
-
argv = getattr(sys,
|
|
498
|
+
argv = getattr(sys, "argv", [])
|
|
478
499
|
if len(argv) > 0:
|
|
479
500
|
name = argv[0]
|
|
480
501
|
else:
|
|
481
|
-
name =
|
|
502
|
+
name = ""
|
|
482
503
|
|
|
483
504
|
if isinstance(name, bytes):
|
|
484
|
-
name = name.decode(file_system_encoding,
|
|
485
|
-
name = name.encode(
|
|
505
|
+
name = name.decode(file_system_encoding, "replace")
|
|
506
|
+
name = name.encode("utf-8")
|
|
486
507
|
|
|
487
508
|
body = ProcessEventBody(
|
|
488
509
|
name=name,
|
|
@@ -505,21 +526,21 @@ class PyDevJsonCommandProcessor(object):
|
|
|
505
526
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
506
527
|
|
|
507
528
|
def on_launch_request(self, py_db, request):
|
|
508
|
-
|
|
529
|
+
"""
|
|
509
530
|
:param LaunchRequest request:
|
|
510
|
-
|
|
511
|
-
return self._handle_launch_or_attach_request(py_db, request, start_reason=
|
|
531
|
+
"""
|
|
532
|
+
return self._handle_launch_or_attach_request(py_db, request, start_reason="launch")
|
|
512
533
|
|
|
513
534
|
def on_attach_request(self, py_db, request):
|
|
514
|
-
|
|
535
|
+
"""
|
|
515
536
|
:param AttachRequest request:
|
|
516
|
-
|
|
517
|
-
return self._handle_launch_or_attach_request(py_db, request, start_reason=
|
|
537
|
+
"""
|
|
538
|
+
return self._handle_launch_or_attach_request(py_db, request, start_reason="attach")
|
|
518
539
|
|
|
519
540
|
def on_pause_request(self, py_db, request):
|
|
520
|
-
|
|
541
|
+
"""
|
|
521
542
|
:param PauseRequest request:
|
|
522
|
-
|
|
543
|
+
"""
|
|
523
544
|
arguments = request.arguments # : :type arguments: PauseArguments
|
|
524
545
|
thread_id = arguments.threadId
|
|
525
546
|
|
|
@@ -529,29 +550,37 @@ class PyDevJsonCommandProcessor(object):
|
|
|
529
550
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
530
551
|
|
|
531
552
|
def on_continue_request(self, py_db, request):
|
|
532
|
-
|
|
553
|
+
"""
|
|
533
554
|
:param ContinueRequest request:
|
|
534
|
-
|
|
555
|
+
"""
|
|
535
556
|
arguments = request.arguments # : :type arguments: ContinueArguments
|
|
536
557
|
thread_id = arguments.threadId
|
|
537
558
|
|
|
538
559
|
def on_resumed():
|
|
539
|
-
body = {
|
|
540
|
-
response = pydevd_base_schema.build_response(request, kwargs={
|
|
560
|
+
body = {"allThreadsContinued": thread_id == "*"}
|
|
561
|
+
response = pydevd_base_schema.build_response(request, kwargs={"body": body})
|
|
541
562
|
cmd = NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
542
563
|
py_db.writer.add_command(cmd)
|
|
543
564
|
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
565
|
+
if py_db.multi_threads_single_notification:
|
|
566
|
+
# Only send resumed notification when it has actually resumed!
|
|
567
|
+
# (otherwise the user could send a continue, receive the notification and then
|
|
568
|
+
# request a new pause which would be paused without sending any notification as
|
|
569
|
+
# it didn't really run in the first place).
|
|
570
|
+
py_db.threads_suspended_single_notification.add_on_resumed_callback(on_resumed)
|
|
571
|
+
self.api.request_resume_thread(thread_id)
|
|
572
|
+
else:
|
|
573
|
+
# Only send resumed notification when it has actually resumed!
|
|
574
|
+
# (otherwise the user could send a continue, receive the notification and then
|
|
575
|
+
# request a new pause which would be paused without sending any notification as
|
|
576
|
+
# it didn't really run in the first place).
|
|
577
|
+
self.api.request_resume_thread(thread_id)
|
|
578
|
+
on_resumed()
|
|
550
579
|
|
|
551
580
|
def on_next_request(self, py_db, request):
|
|
552
|
-
|
|
581
|
+
"""
|
|
553
582
|
:param NextRequest request:
|
|
554
|
-
|
|
583
|
+
"""
|
|
555
584
|
arguments = request.arguments # : :type arguments: NextArguments
|
|
556
585
|
thread_id = arguments.threadId
|
|
557
586
|
|
|
@@ -566,9 +595,9 @@ class PyDevJsonCommandProcessor(object):
|
|
|
566
595
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
567
596
|
|
|
568
597
|
def on_stepin_request(self, py_db, request):
|
|
569
|
-
|
|
598
|
+
"""
|
|
570
599
|
:param StepInRequest request:
|
|
571
|
-
|
|
600
|
+
"""
|
|
572
601
|
arguments = request.arguments # : :type arguments: StepInArguments
|
|
573
602
|
thread_id = arguments.threadId
|
|
574
603
|
|
|
@@ -580,7 +609,7 @@ class PyDevJsonCommandProcessor(object):
|
|
|
580
609
|
request_seq=request.seq,
|
|
581
610
|
success=False,
|
|
582
611
|
command=request.command,
|
|
583
|
-
message=
|
|
612
|
+
message="Unable to find thread from thread_id: %s" % (thread_id,),
|
|
584
613
|
body={},
|
|
585
614
|
)
|
|
586
615
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
@@ -589,11 +618,8 @@ class PyDevJsonCommandProcessor(object):
|
|
|
589
618
|
target_id_to_smart_step_into_variant = info.target_id_to_smart_step_into_variant
|
|
590
619
|
if not target_id_to_smart_step_into_variant:
|
|
591
620
|
variables_response = pydevd_base_schema.build_response(
|
|
592
|
-
request,
|
|
593
|
-
|
|
594
|
-
'success': False,
|
|
595
|
-
'message': 'Unable to step into target (no targets are saved in the thread info).'
|
|
596
|
-
})
|
|
621
|
+
request, kwargs={"success": False, "message": "Unable to step into target (no targets are saved in the thread info)."}
|
|
622
|
+
)
|
|
597
623
|
return NetCommand(CMD_RETURN, 0, variables_response, is_json=True)
|
|
598
624
|
|
|
599
625
|
variant = target_id_to_smart_step_into_variant.get(target_id)
|
|
@@ -607,10 +633,11 @@ class PyDevJsonCommandProcessor(object):
|
|
|
607
633
|
variables_response = pydevd_base_schema.build_response(
|
|
608
634
|
request,
|
|
609
635
|
kwargs={
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
}
|
|
636
|
+
"success": False,
|
|
637
|
+
"message": "Unable to find step into target %s. Available targets: %s"
|
|
638
|
+
% (target_id, target_id_to_smart_step_into_variant),
|
|
639
|
+
},
|
|
640
|
+
)
|
|
614
641
|
return NetCommand(CMD_RETURN, 0, variables_response, is_json=True)
|
|
615
642
|
|
|
616
643
|
else:
|
|
@@ -625,31 +652,32 @@ class PyDevJsonCommandProcessor(object):
|
|
|
625
652
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
626
653
|
|
|
627
654
|
def on_stepintargets_request(self, py_db, request):
|
|
628
|
-
|
|
655
|
+
"""
|
|
629
656
|
:param StepInTargetsRequest request:
|
|
630
|
-
|
|
657
|
+
"""
|
|
631
658
|
frame_id = request.arguments.frameId
|
|
632
|
-
thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(
|
|
633
|
-
frame_id)
|
|
659
|
+
thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(frame_id)
|
|
634
660
|
|
|
635
661
|
if thread_id is None:
|
|
636
662
|
body = StepInTargetsResponseBody([])
|
|
637
663
|
variables_response = pydevd_base_schema.build_response(
|
|
638
664
|
request,
|
|
639
665
|
kwargs={
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
}
|
|
666
|
+
"body": body,
|
|
667
|
+
"success": False,
|
|
668
|
+
"message": "Unable to get thread_id from frame_id (thread to get step in targets seems to have resumed already).",
|
|
669
|
+
},
|
|
670
|
+
)
|
|
644
671
|
return NetCommand(CMD_RETURN, 0, variables_response, is_json=True)
|
|
645
672
|
|
|
646
673
|
py_db.post_method_as_internal_command(
|
|
647
|
-
thread_id, internal_get_step_in_targets_json, request.seq, thread_id, frame_id, request, set_additional_thread_info
|
|
674
|
+
thread_id, internal_get_step_in_targets_json, request.seq, thread_id, frame_id, request, set_additional_thread_info
|
|
675
|
+
)
|
|
648
676
|
|
|
649
677
|
def on_stepout_request(self, py_db, request):
|
|
650
|
-
|
|
678
|
+
"""
|
|
651
679
|
:param StepOutRequest request:
|
|
652
|
-
|
|
680
|
+
"""
|
|
653
681
|
arguments = request.arguments # : :type arguments: StepOutArguments
|
|
654
682
|
thread_id = arguments.threadId
|
|
655
683
|
|
|
@@ -664,38 +692,36 @@ class PyDevJsonCommandProcessor(object):
|
|
|
664
692
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
665
693
|
|
|
666
694
|
def _get_hit_condition_expression(self, hit_condition):
|
|
667
|
-
|
|
695
|
+
"""Following hit condition values are supported
|
|
668
696
|
|
|
669
697
|
* x or == x when breakpoint is hit x times
|
|
670
698
|
* >= x when breakpoint is hit more than or equal to x times
|
|
671
699
|
* % x when breakpoint is hit multiple of x times
|
|
672
700
|
|
|
673
701
|
Returns '@HIT@ == x' where @HIT@ will be replaced by number of hits
|
|
674
|
-
|
|
702
|
+
"""
|
|
675
703
|
if not hit_condition:
|
|
676
704
|
return None
|
|
677
705
|
|
|
678
706
|
expr = hit_condition.strip()
|
|
679
707
|
try:
|
|
680
708
|
int(expr)
|
|
681
|
-
return
|
|
709
|
+
return "@HIT@ == {}".format(expr)
|
|
682
710
|
except ValueError:
|
|
683
711
|
pass
|
|
684
712
|
|
|
685
|
-
if expr.startswith(
|
|
686
|
-
return
|
|
713
|
+
if expr.startswith("%"):
|
|
714
|
+
return "@HIT@ {} == 0".format(expr)
|
|
687
715
|
|
|
688
|
-
if expr.startswith(
|
|
689
|
-
|
|
690
|
-
expr.startswith('<'):
|
|
691
|
-
return '@HIT@ {}'.format(expr)
|
|
716
|
+
if expr.startswith("==") or expr.startswith(">") or expr.startswith("<"):
|
|
717
|
+
return "@HIT@ {}".format(expr)
|
|
692
718
|
|
|
693
719
|
return hit_condition
|
|
694
720
|
|
|
695
721
|
def on_disconnect_request(self, py_db, request):
|
|
696
|
-
|
|
722
|
+
"""
|
|
697
723
|
:param DisconnectRequest request:
|
|
698
|
-
|
|
724
|
+
"""
|
|
699
725
|
if request.arguments.terminateDebuggee:
|
|
700
726
|
self._request_terminate_process(py_db)
|
|
701
727
|
response = pydevd_base_schema.build_response(request)
|
|
@@ -712,30 +738,27 @@ class PyDevJsonCommandProcessor(object):
|
|
|
712
738
|
if not self._launch_or_attach_request_done:
|
|
713
739
|
# Note that to validate the breakpoints we need the launch request to be done already
|
|
714
740
|
# (otherwise the filters wouldn't be set for the breakpoint validation).
|
|
715
|
-
if request.command ==
|
|
741
|
+
if request.command == "setFunctionBreakpoints":
|
|
716
742
|
body = SetFunctionBreakpointsResponseBody([])
|
|
717
743
|
else:
|
|
718
744
|
body = SetBreakpointsResponseBody([])
|
|
719
745
|
response = pydevd_base_schema.build_response(
|
|
720
746
|
request,
|
|
721
|
-
kwargs={
|
|
722
|
-
|
|
723
|
-
'success': False,
|
|
724
|
-
'message': 'Breakpoints may only be set after the launch request is received.'
|
|
725
|
-
})
|
|
747
|
+
kwargs={"body": body, "success": False, "message": "Breakpoints may only be set after the launch request is received."},
|
|
748
|
+
)
|
|
726
749
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
727
750
|
|
|
728
751
|
def on_setfunctionbreakpoints_request(self, py_db, request):
|
|
729
|
-
|
|
752
|
+
"""
|
|
730
753
|
:param SetFunctionBreakpointsRequest request:
|
|
731
|
-
|
|
754
|
+
"""
|
|
732
755
|
response = self._verify_launch_or_attach_done(request)
|
|
733
756
|
if response is not None:
|
|
734
757
|
return response
|
|
735
758
|
|
|
736
759
|
arguments = request.arguments # : :type arguments: SetFunctionBreakpointsArguments
|
|
737
760
|
function_breakpoints = []
|
|
738
|
-
suspend_policy =
|
|
761
|
+
suspend_policy = "ALL" if py_db.multi_threads_single_notification else "NONE"
|
|
739
762
|
|
|
740
763
|
# Not currently covered by the DAP.
|
|
741
764
|
is_logpoint = False
|
|
@@ -743,26 +766,24 @@ class PyDevJsonCommandProcessor(object):
|
|
|
743
766
|
|
|
744
767
|
breakpoints_set = []
|
|
745
768
|
for bp in arguments.breakpoints:
|
|
746
|
-
hit_condition = self._get_hit_condition_expression(bp.get(
|
|
747
|
-
condition = bp.get(
|
|
769
|
+
hit_condition = self._get_hit_condition_expression(bp.get("hitCondition"))
|
|
770
|
+
condition = bp.get("condition")
|
|
748
771
|
|
|
749
|
-
function_breakpoints.append(
|
|
750
|
-
FunctionBreakpoint(bp['name'], condition, expression, suspend_policy, hit_condition, is_logpoint))
|
|
772
|
+
function_breakpoints.append(FunctionBreakpoint(bp["name"], condition, expression, suspend_policy, hit_condition, is_logpoint))
|
|
751
773
|
|
|
752
774
|
# Note: always succeeds.
|
|
753
|
-
breakpoints_set.append(pydevd_schema.Breakpoint(
|
|
754
|
-
verified=True, id=self._next_breakpoint_id()).to_dict())
|
|
775
|
+
breakpoints_set.append(pydevd_schema.Breakpoint(verified=True, id=self._next_breakpoint_id()).to_dict())
|
|
755
776
|
|
|
756
777
|
self.api.set_function_breakpoints(py_db, function_breakpoints)
|
|
757
778
|
|
|
758
|
-
body = {
|
|
759
|
-
set_breakpoints_response = pydevd_base_schema.build_response(request, kwargs={
|
|
779
|
+
body = {"breakpoints": breakpoints_set}
|
|
780
|
+
set_breakpoints_response = pydevd_base_schema.build_response(request, kwargs={"body": body})
|
|
760
781
|
return NetCommand(CMD_RETURN, 0, set_breakpoints_response, is_json=True)
|
|
761
782
|
|
|
762
783
|
def on_setbreakpoints_request(self, py_db, request):
|
|
763
|
-
|
|
784
|
+
"""
|
|
764
785
|
:param SetBreakpointsRequest request:
|
|
765
|
-
|
|
786
|
+
"""
|
|
766
787
|
response = self._verify_launch_or_attach_done(request)
|
|
767
788
|
if response is not None:
|
|
768
789
|
return response
|
|
@@ -770,18 +791,18 @@ class PyDevJsonCommandProcessor(object):
|
|
|
770
791
|
arguments = request.arguments # : :type arguments: SetBreakpointsArguments
|
|
771
792
|
# TODO: Path is optional here it could be source reference.
|
|
772
793
|
filename = self.api.filename_to_str(arguments.source.path)
|
|
773
|
-
func_name =
|
|
794
|
+
func_name = "None"
|
|
774
795
|
|
|
775
796
|
self.api.remove_all_breakpoints(py_db, filename)
|
|
776
797
|
|
|
777
|
-
btype =
|
|
778
|
-
suspend_policy =
|
|
798
|
+
btype = "python-line"
|
|
799
|
+
suspend_policy = "ALL" if py_db.multi_threads_single_notification else "NONE"
|
|
779
800
|
|
|
780
|
-
if not filename.lower().endswith(
|
|
801
|
+
if not filename.lower().endswith(".py"): # Note: check based on original file, not mapping.
|
|
781
802
|
if self._options.django_debug:
|
|
782
|
-
btype =
|
|
803
|
+
btype = "django-line"
|
|
783
804
|
elif self._options.flask_debug:
|
|
784
|
-
btype =
|
|
805
|
+
btype = "jinja2-line"
|
|
785
806
|
|
|
786
807
|
breakpoints_set = []
|
|
787
808
|
|
|
@@ -802,20 +823,32 @@ class PyDevJsonCommandProcessor(object):
|
|
|
802
823
|
|
|
803
824
|
on_changed_breakpoint_state = partial(self._on_changed_breakpoint_state, py_db, arguments.source)
|
|
804
825
|
result = self.api.add_breakpoint(
|
|
805
|
-
py_db,
|
|
806
|
-
|
|
826
|
+
py_db,
|
|
827
|
+
filename,
|
|
828
|
+
btype,
|
|
829
|
+
breakpoint_id,
|
|
830
|
+
line,
|
|
831
|
+
condition,
|
|
832
|
+
func_name,
|
|
833
|
+
expression,
|
|
834
|
+
suspend_policy,
|
|
835
|
+
hit_condition,
|
|
836
|
+
is_logpoint,
|
|
837
|
+
adjust_line=True,
|
|
838
|
+
on_changed_breakpoint_state=on_changed_breakpoint_state,
|
|
839
|
+
)
|
|
807
840
|
|
|
808
841
|
bp = self._create_breakpoint_from_add_breakpoint_result(py_db, arguments.source, breakpoint_id, result)
|
|
809
842
|
breakpoints_set.append(bp)
|
|
810
843
|
|
|
811
|
-
body = {
|
|
812
|
-
set_breakpoints_response = pydevd_base_schema.build_response(request, kwargs={
|
|
844
|
+
body = {"breakpoints": breakpoints_set}
|
|
845
|
+
set_breakpoints_response = pydevd_base_schema.build_response(request, kwargs={"body": body})
|
|
813
846
|
return NetCommand(CMD_RETURN, 0, set_breakpoints_response, is_json=True)
|
|
814
847
|
|
|
815
848
|
def _on_changed_breakpoint_state(self, py_db, source, breakpoint_id, result):
|
|
816
849
|
bp = self._create_breakpoint_from_add_breakpoint_result(py_db, source, breakpoint_id, result)
|
|
817
850
|
body = BreakpointEventBody(
|
|
818
|
-
reason=
|
|
851
|
+
reason="changed",
|
|
819
852
|
breakpoint=bp,
|
|
820
853
|
)
|
|
821
854
|
event = BreakpointEvent(body)
|
|
@@ -827,34 +860,36 @@ class PyDevJsonCommandProcessor(object):
|
|
|
827
860
|
|
|
828
861
|
if error_code:
|
|
829
862
|
if error_code == self.api.ADD_BREAKPOINT_FILE_NOT_FOUND:
|
|
830
|
-
error_msg =
|
|
863
|
+
error_msg = "Breakpoint in file that does not exist."
|
|
831
864
|
|
|
832
865
|
elif error_code == self.api.ADD_BREAKPOINT_FILE_EXCLUDED_BY_FILTERS:
|
|
833
|
-
error_msg =
|
|
866
|
+
error_msg = "Breakpoint in file excluded by filters."
|
|
834
867
|
if py_db.get_use_libraries_filter():
|
|
835
|
-
error_msg += (
|
|
836
|
-
|
|
868
|
+
error_msg += (
|
|
869
|
+
'\nNote: may be excluded because of "justMyCode" option (default == true).'
|
|
870
|
+
'Try setting "justMyCode": false in the debug configuration (e.g., launch.json).\n'
|
|
871
|
+
)
|
|
837
872
|
|
|
838
873
|
elif error_code == self.api.ADD_BREAKPOINT_LAZY_VALIDATION:
|
|
839
|
-
error_msg =
|
|
874
|
+
error_msg = "Waiting for code to be loaded to verify breakpoint."
|
|
840
875
|
|
|
841
876
|
elif error_code == self.api.ADD_BREAKPOINT_INVALID_LINE:
|
|
842
|
-
error_msg =
|
|
877
|
+
error_msg = "Breakpoint added to invalid line."
|
|
843
878
|
|
|
844
879
|
else:
|
|
845
880
|
# Shouldn't get here.
|
|
846
|
-
error_msg =
|
|
881
|
+
error_msg = "Breakpoint not validated (reason unknown -- please report as bug)."
|
|
847
882
|
|
|
848
883
|
return pydevd_schema.Breakpoint(
|
|
849
|
-
verified=False, id=breakpoint_id, line=result.translated_line, message=error_msg, source=source
|
|
884
|
+
verified=False, id=breakpoint_id, line=result.translated_line, message=error_msg, source=source
|
|
885
|
+
).to_dict()
|
|
850
886
|
else:
|
|
851
|
-
return pydevd_schema.Breakpoint(
|
|
852
|
-
verified=True, id=breakpoint_id, line=result.translated_line, source=source).to_dict()
|
|
887
|
+
return pydevd_schema.Breakpoint(verified=True, id=breakpoint_id, line=result.translated_line, source=source).to_dict()
|
|
853
888
|
|
|
854
889
|
def on_setexceptionbreakpoints_request(self, py_db, request):
|
|
855
|
-
|
|
890
|
+
"""
|
|
856
891
|
:param SetExceptionBreakpointsRequest request:
|
|
857
|
-
|
|
892
|
+
"""
|
|
858
893
|
# : :type arguments: SetExceptionBreakpointsArguments
|
|
859
894
|
arguments = request.arguments
|
|
860
895
|
filters = arguments.filters
|
|
@@ -885,9 +920,9 @@ class PyDevJsonCommandProcessor(object):
|
|
|
885
920
|
#
|
|
886
921
|
# userUnhandled: breaks if the exception is not handled by user code
|
|
887
922
|
|
|
888
|
-
notify_on_handled_exceptions = 1 if option.breakMode ==
|
|
889
|
-
notify_on_unhandled_exceptions = 1 if option.breakMode ==
|
|
890
|
-
notify_on_user_unhandled_exceptions = 1 if option.breakMode ==
|
|
923
|
+
notify_on_handled_exceptions = 1 if option.breakMode == "always" else 0
|
|
924
|
+
notify_on_unhandled_exceptions = 1 if option.breakMode == "unhandled" else 0
|
|
925
|
+
notify_on_user_unhandled_exceptions = 1 if option.breakMode == "userUnhandled" else 0
|
|
891
926
|
exception_paths = option.path
|
|
892
927
|
break_raised |= notify_on_handled_exceptions
|
|
893
928
|
break_uncaught |= notify_on_unhandled_exceptions
|
|
@@ -897,14 +932,14 @@ class PyDevJsonCommandProcessor(object):
|
|
|
897
932
|
continue
|
|
898
933
|
|
|
899
934
|
elif len(exception_paths) == 1:
|
|
900
|
-
if
|
|
901
|
-
exception_names = [
|
|
935
|
+
if "Python Exceptions" in exception_paths[0]["names"]:
|
|
936
|
+
exception_names = ["BaseException"]
|
|
902
937
|
|
|
903
938
|
else:
|
|
904
939
|
path_iterator = iter(exception_paths)
|
|
905
|
-
if
|
|
940
|
+
if "Python Exceptions" in next(path_iterator)["names"]:
|
|
906
941
|
for path in path_iterator:
|
|
907
|
-
for ex_name in path[
|
|
942
|
+
for ex_name in path["names"]:
|
|
908
943
|
exception_names.append(ex_name)
|
|
909
944
|
|
|
910
945
|
for exception_name in exception_names:
|
|
@@ -917,18 +952,18 @@ class PyDevJsonCommandProcessor(object):
|
|
|
917
952
|
notify_on_unhandled_exceptions,
|
|
918
953
|
notify_on_user_unhandled_exceptions,
|
|
919
954
|
notify_on_first_raise_only,
|
|
920
|
-
ignore_libraries
|
|
955
|
+
ignore_libraries,
|
|
921
956
|
)
|
|
922
957
|
|
|
923
958
|
else:
|
|
924
|
-
break_raised =
|
|
925
|
-
break_uncaught =
|
|
926
|
-
break_user =
|
|
959
|
+
break_raised = "raised" in filters
|
|
960
|
+
break_uncaught = "uncaught" in filters
|
|
961
|
+
break_user = "userUnhandled" in filters
|
|
927
962
|
if break_raised or break_uncaught or break_user:
|
|
928
963
|
notify_on_handled_exceptions = 1 if break_raised else 0
|
|
929
964
|
notify_on_unhandled_exceptions = 1 if break_uncaught else 0
|
|
930
965
|
notify_on_user_unhandled_exceptions = 1 if break_user else 0
|
|
931
|
-
exception =
|
|
966
|
+
exception = "BaseException"
|
|
932
967
|
|
|
933
968
|
self.api.add_python_exception_breakpoint(
|
|
934
969
|
py_db,
|
|
@@ -939,28 +974,27 @@ class PyDevJsonCommandProcessor(object):
|
|
|
939
974
|
notify_on_unhandled_exceptions,
|
|
940
975
|
notify_on_user_unhandled_exceptions,
|
|
941
976
|
notify_on_first_raise_only,
|
|
942
|
-
ignore_libraries
|
|
977
|
+
ignore_libraries,
|
|
943
978
|
)
|
|
944
979
|
|
|
945
980
|
if break_raised:
|
|
946
981
|
btype = None
|
|
947
982
|
if self._options.django_debug:
|
|
948
|
-
btype =
|
|
983
|
+
btype = "django"
|
|
949
984
|
elif self._options.flask_debug:
|
|
950
|
-
btype =
|
|
985
|
+
btype = "jinja2"
|
|
951
986
|
|
|
952
987
|
if btype:
|
|
953
|
-
self.api.add_plugins_exception_breakpoint(
|
|
954
|
-
py_db, btype, 'BaseException') # Note: Exception name could be anything here.
|
|
988
|
+
self.api.add_plugins_exception_breakpoint(py_db, btype, "BaseException") # Note: Exception name could be anything here.
|
|
955
989
|
|
|
956
990
|
# Note: no body required on success.
|
|
957
991
|
set_breakpoints_response = pydevd_base_schema.build_response(request)
|
|
958
992
|
return NetCommand(CMD_RETURN, 0, set_breakpoints_response, is_json=True)
|
|
959
993
|
|
|
960
994
|
def on_stacktrace_request(self, py_db, request):
|
|
961
|
-
|
|
995
|
+
"""
|
|
962
996
|
:param StackTraceRequest request:
|
|
963
|
-
|
|
997
|
+
"""
|
|
964
998
|
# : :type stack_trace_arguments: StackTraceArguments
|
|
965
999
|
stack_trace_arguments = request.arguments
|
|
966
1000
|
thread_id = stack_trace_arguments.threadId
|
|
@@ -976,14 +1010,14 @@ class PyDevJsonCommandProcessor(object):
|
|
|
976
1010
|
levels = 0
|
|
977
1011
|
|
|
978
1012
|
fmt = stack_trace_arguments.format
|
|
979
|
-
if hasattr(fmt,
|
|
1013
|
+
if hasattr(fmt, "to_dict"):
|
|
980
1014
|
fmt = fmt.to_dict()
|
|
981
1015
|
self.api.request_stack(py_db, request.seq, thread_id, fmt=fmt, start_frame=start_frame, levels=levels)
|
|
982
1016
|
|
|
983
1017
|
def on_exceptioninfo_request(self, py_db, request):
|
|
984
|
-
|
|
1018
|
+
"""
|
|
985
1019
|
:param ExceptionInfoRequest request:
|
|
986
|
-
|
|
1020
|
+
"""
|
|
987
1021
|
# : :type exception_into_arguments: ExceptionInfoArguments
|
|
988
1022
|
exception_into_arguments = request.arguments
|
|
989
1023
|
thread_id = exception_into_arguments.threadId
|
|
@@ -996,78 +1030,67 @@ class PyDevJsonCommandProcessor(object):
|
|
|
996
1030
|
request_seq=request.seq,
|
|
997
1031
|
success=False,
|
|
998
1032
|
command=request.command,
|
|
999
|
-
message=
|
|
1033
|
+
message="Unable to find thread from thread_id: %s" % (thread_id,),
|
|
1000
1034
|
body={},
|
|
1001
1035
|
)
|
|
1002
1036
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
1003
1037
|
|
|
1004
1038
|
def on_scopes_request(self, py_db, request):
|
|
1005
|
-
|
|
1039
|
+
"""
|
|
1006
1040
|
Scopes are the top-level items which appear for a frame (so, we receive the frame id
|
|
1007
1041
|
and provide the scopes it has).
|
|
1008
1042
|
|
|
1009
1043
|
:param ScopesRequest request:
|
|
1010
|
-
|
|
1044
|
+
"""
|
|
1011
1045
|
frame_id = request.arguments.frameId
|
|
1012
1046
|
|
|
1013
1047
|
variables_reference = frame_id
|
|
1014
1048
|
scopes = [
|
|
1015
|
-
Scope(
|
|
1016
|
-
Scope(
|
|
1049
|
+
Scope("Locals", ScopeRequest(int(variables_reference), "locals"), False, presentationHint="locals"),
|
|
1050
|
+
Scope("Globals", ScopeRequest(int(variables_reference), "globals"), False),
|
|
1017
1051
|
]
|
|
1018
1052
|
body = ScopesResponseBody(scopes)
|
|
1019
|
-
scopes_response = pydevd_base_schema.build_response(request, kwargs={
|
|
1053
|
+
scopes_response = pydevd_base_schema.build_response(request, kwargs={"body": body})
|
|
1020
1054
|
return NetCommand(CMD_RETURN, 0, scopes_response, is_json=True)
|
|
1021
1055
|
|
|
1022
1056
|
def on_evaluate_request(self, py_db, request):
|
|
1023
|
-
|
|
1057
|
+
"""
|
|
1024
1058
|
:param EvaluateRequest request:
|
|
1025
|
-
|
|
1059
|
+
"""
|
|
1026
1060
|
# : :type arguments: EvaluateArguments
|
|
1027
1061
|
arguments = request.arguments
|
|
1028
1062
|
|
|
1029
1063
|
if arguments.frameId is None:
|
|
1030
|
-
self.api.request_exec_or_evaluate_json(py_db, request, thread_id=
|
|
1064
|
+
self.api.request_exec_or_evaluate_json(py_db, request, thread_id="*")
|
|
1031
1065
|
else:
|
|
1032
|
-
thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(
|
|
1033
|
-
arguments.frameId)
|
|
1066
|
+
thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(arguments.frameId)
|
|
1034
1067
|
|
|
1035
1068
|
if thread_id is not None:
|
|
1036
|
-
self.api.request_exec_or_evaluate_json(
|
|
1037
|
-
py_db, request, thread_id)
|
|
1069
|
+
self.api.request_exec_or_evaluate_json(py_db, request, thread_id)
|
|
1038
1070
|
else:
|
|
1039
|
-
body = EvaluateResponseBody(
|
|
1071
|
+
body = EvaluateResponseBody("", 0)
|
|
1040
1072
|
response = pydevd_base_schema.build_response(
|
|
1041
|
-
request,
|
|
1042
|
-
|
|
1043
|
-
'body': body,
|
|
1044
|
-
'success': False,
|
|
1045
|
-
'message': 'Unable to find thread for evaluation.'
|
|
1046
|
-
})
|
|
1073
|
+
request, kwargs={"body": body, "success": False, "message": "Unable to find thread for evaluation."}
|
|
1074
|
+
)
|
|
1047
1075
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
1048
1076
|
|
|
1049
1077
|
def on_setexpression_request(self, py_db, request):
|
|
1050
1078
|
# : :type arguments: SetExpressionArguments
|
|
1051
1079
|
arguments = request.arguments
|
|
1052
1080
|
|
|
1053
|
-
thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(
|
|
1054
|
-
arguments.frameId)
|
|
1081
|
+
thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(arguments.frameId)
|
|
1055
1082
|
|
|
1056
1083
|
if thread_id is not None:
|
|
1057
1084
|
self.api.request_set_expression_json(py_db, request, thread_id)
|
|
1058
1085
|
else:
|
|
1059
|
-
body = SetExpressionResponseBody(
|
|
1086
|
+
body = SetExpressionResponseBody("")
|
|
1060
1087
|
response = pydevd_base_schema.build_response(
|
|
1061
|
-
request,
|
|
1062
|
-
|
|
1063
|
-
'body': body,
|
|
1064
|
-
'success': False,
|
|
1065
|
-
'message': 'Unable to find thread to set expression.'
|
|
1066
|
-
})
|
|
1088
|
+
request, kwargs={"body": body, "success": False, "message": "Unable to find thread to set expression."}
|
|
1089
|
+
)
|
|
1067
1090
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
1068
1091
|
|
|
1069
1092
|
def on_variables_request(self, py_db, request):
|
|
1070
|
-
|
|
1093
|
+
"""
|
|
1071
1094
|
Variables can be asked whenever some place returned a variables reference (so, it
|
|
1072
1095
|
can be a scope gotten from on_scopes_request, the result of some evaluation, etc.).
|
|
1073
1096
|
|
|
@@ -1080,25 +1103,22 @@ class PyDevJsonCommandProcessor(object):
|
|
|
1080
1103
|
see: SuspendedFramesManager
|
|
1081
1104
|
|
|
1082
1105
|
:param VariablesRequest request:
|
|
1083
|
-
|
|
1106
|
+
"""
|
|
1084
1107
|
arguments = request.arguments # : :type arguments: VariablesArguments
|
|
1085
1108
|
variables_reference = arguments.variablesReference
|
|
1086
1109
|
|
|
1087
1110
|
if isinstance(variables_reference, ScopeRequest):
|
|
1088
1111
|
variables_reference = variables_reference.variable_reference
|
|
1089
1112
|
|
|
1090
|
-
thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(
|
|
1091
|
-
variables_reference)
|
|
1113
|
+
thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(variables_reference)
|
|
1092
1114
|
if thread_id is not None:
|
|
1093
1115
|
self.api.request_get_variable_json(py_db, request, thread_id)
|
|
1094
1116
|
else:
|
|
1095
1117
|
variables = []
|
|
1096
1118
|
body = VariablesResponseBody(variables)
|
|
1097
|
-
variables_response = pydevd_base_schema.build_response(
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
'message': 'Unable to find thread to evaluate variable reference.'
|
|
1101
|
-
})
|
|
1119
|
+
variables_response = pydevd_base_schema.build_response(
|
|
1120
|
+
request, kwargs={"body": body, "success": False, "message": "Unable to find thread to evaluate variable reference."}
|
|
1121
|
+
)
|
|
1102
1122
|
return NetCommand(CMD_RETURN, 0, variables_response, is_json=True)
|
|
1103
1123
|
|
|
1104
1124
|
def on_setvariable_request(self, py_db, request):
|
|
@@ -1108,18 +1128,13 @@ class PyDevJsonCommandProcessor(object):
|
|
|
1108
1128
|
if isinstance(variables_reference, ScopeRequest):
|
|
1109
1129
|
variables_reference = variables_reference.variable_reference
|
|
1110
1130
|
|
|
1111
|
-
if arguments.name.startswith(
|
|
1131
|
+
if arguments.name.startswith("(return) "):
|
|
1112
1132
|
response = pydevd_base_schema.build_response(
|
|
1113
|
-
request,
|
|
1114
|
-
|
|
1115
|
-
'body': SetVariableResponseBody(''),
|
|
1116
|
-
'success': False,
|
|
1117
|
-
'message': 'Cannot change return value'
|
|
1118
|
-
})
|
|
1133
|
+
request, kwargs={"body": SetVariableResponseBody(""), "success": False, "message": "Cannot change return value"}
|
|
1134
|
+
)
|
|
1119
1135
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
1120
1136
|
|
|
1121
|
-
thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(
|
|
1122
|
-
variables_reference)
|
|
1137
|
+
thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference(variables_reference)
|
|
1123
1138
|
|
|
1124
1139
|
if thread_id is not None:
|
|
1125
1140
|
self.api.request_change_variable_json(py_db, request, thread_id)
|
|
@@ -1127,23 +1142,24 @@ class PyDevJsonCommandProcessor(object):
|
|
|
1127
1142
|
response = pydevd_base_schema.build_response(
|
|
1128
1143
|
request,
|
|
1129
1144
|
kwargs={
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
}
|
|
1145
|
+
"body": SetVariableResponseBody(""),
|
|
1146
|
+
"success": False,
|
|
1147
|
+
"message": "Unable to find thread to evaluate variable reference.",
|
|
1148
|
+
},
|
|
1149
|
+
)
|
|
1134
1150
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
1135
1151
|
|
|
1136
1152
|
def on_modules_request(self, py_db, request):
|
|
1137
1153
|
modules_manager = py_db.cmd_factory.modules_manager # : :type modules_manager: ModulesManager
|
|
1138
1154
|
modules_info = modules_manager.get_modules_info()
|
|
1139
1155
|
body = ModulesResponseBody(modules_info)
|
|
1140
|
-
variables_response = pydevd_base_schema.build_response(request, kwargs={
|
|
1156
|
+
variables_response = pydevd_base_schema.build_response(request, kwargs={"body": body})
|
|
1141
1157
|
return NetCommand(CMD_RETURN, 0, variables_response, is_json=True)
|
|
1142
1158
|
|
|
1143
1159
|
def on_source_request(self, py_db, request):
|
|
1144
|
-
|
|
1160
|
+
"""
|
|
1145
1161
|
:param SourceRequest request:
|
|
1146
|
-
|
|
1162
|
+
"""
|
|
1147
1163
|
source_reference = request.arguments.sourceReference
|
|
1148
1164
|
server_filename = None
|
|
1149
1165
|
content = None
|
|
@@ -1156,7 +1172,7 @@ class PyDevJsonCommandProcessor(object):
|
|
|
1156
1172
|
if server_filename:
|
|
1157
1173
|
# Try direct file access first - it's much faster when available.
|
|
1158
1174
|
try:
|
|
1159
|
-
with open(server_filename,
|
|
1175
|
+
with open(server_filename, "r") as stream:
|
|
1160
1176
|
content = stream.read()
|
|
1161
1177
|
except:
|
|
1162
1178
|
pass
|
|
@@ -1170,29 +1186,29 @@ class PyDevJsonCommandProcessor(object):
|
|
|
1170
1186
|
|
|
1171
1187
|
# If we didn't get at least one line back, reset it to None so that it's
|
|
1172
1188
|
# reported as error below, and not as an empty file.
|
|
1173
|
-
content =
|
|
1189
|
+
content = "".join(lines) or None
|
|
1174
1190
|
|
|
1175
1191
|
if content is None:
|
|
1176
1192
|
frame_id = pydevd_file_utils.get_frame_id_from_source_reference(source_reference)
|
|
1177
|
-
pydev_log.debug(
|
|
1193
|
+
pydev_log.debug("Found frame id: %s for source reference: %s", frame_id, source_reference)
|
|
1178
1194
|
if frame_id is not None:
|
|
1179
1195
|
try:
|
|
1180
1196
|
content = self.api.get_decompiled_source_from_frame_id(py_db, frame_id)
|
|
1181
1197
|
except Exception:
|
|
1182
|
-
pydev_log.exception(
|
|
1198
|
+
pydev_log.exception("Error getting source for frame id: %s", frame_id)
|
|
1183
1199
|
content = None
|
|
1184
1200
|
|
|
1185
|
-
body = SourceResponseBody(content or
|
|
1186
|
-
response_args = {
|
|
1201
|
+
body = SourceResponseBody(content or "")
|
|
1202
|
+
response_args = {"body": body}
|
|
1187
1203
|
|
|
1188
1204
|
if content is None:
|
|
1189
1205
|
if source_reference == 0:
|
|
1190
|
-
message =
|
|
1206
|
+
message = "Source unavailable"
|
|
1191
1207
|
elif server_filename:
|
|
1192
|
-
message =
|
|
1208
|
+
message = "Unable to retrieve source for %s" % (server_filename,)
|
|
1193
1209
|
else:
|
|
1194
|
-
message =
|
|
1195
|
-
response_args.update({
|
|
1210
|
+
message = "Invalid sourceReference %d" % (source_reference,)
|
|
1211
|
+
response_args.update({"success": False, "message": message})
|
|
1196
1212
|
|
|
1197
1213
|
response = pydevd_base_schema.build_response(request, kwargs=response_args)
|
|
1198
1214
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
@@ -1201,13 +1217,9 @@ class PyDevJsonCommandProcessor(object):
|
|
|
1201
1217
|
path = request.arguments.source.path
|
|
1202
1218
|
line = request.arguments.line
|
|
1203
1219
|
target_id = self._goto_targets_map.obtain_key((path, line))
|
|
1204
|
-
target = {
|
|
1205
|
-
'id': target_id,
|
|
1206
|
-
'label': '%s:%s' % (path, line),
|
|
1207
|
-
'line': line
|
|
1208
|
-
}
|
|
1220
|
+
target = {"id": target_id, "label": "%s:%s" % (path, line), "line": line}
|
|
1209
1221
|
body = GotoTargetsResponseBody(targets=[target])
|
|
1210
|
-
response_args = {
|
|
1222
|
+
response_args = {"body": body}
|
|
1211
1223
|
response = pydevd_base_schema.build_response(request, kwargs=response_args)
|
|
1212
1224
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
1213
1225
|
|
|
@@ -1220,13 +1232,14 @@ class PyDevJsonCommandProcessor(object):
|
|
|
1220
1232
|
response = pydevd_base_schema.build_response(
|
|
1221
1233
|
request,
|
|
1222
1234
|
kwargs={
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
}
|
|
1235
|
+
"body": {},
|
|
1236
|
+
"success": False,
|
|
1237
|
+
"message": "Unknown goto target id: %d" % (target_id,),
|
|
1238
|
+
},
|
|
1239
|
+
)
|
|
1227
1240
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
1228
1241
|
|
|
1229
|
-
self.api.request_set_next(py_db, request.seq, thread_id, CMD_SET_NEXT_STATEMENT, path, line,
|
|
1242
|
+
self.api.request_set_next(py_db, request.seq, thread_id, CMD_SET_NEXT_STATEMENT, path, line, "*")
|
|
1230
1243
|
# See 'NetCommandFactoryJson.make_set_next_stmnt_status_message' for response
|
|
1231
1244
|
return None
|
|
1232
1245
|
|
|
@@ -1241,12 +1254,10 @@ class PyDevJsonCommandProcessor(object):
|
|
|
1241
1254
|
self.api.set_dont_trace_start_end_patterns(py_db, start_patterns, end_patterns)
|
|
1242
1255
|
|
|
1243
1256
|
if args.skipSuspendOnBreakpointException is not None:
|
|
1244
|
-
py_db.skip_suspend_on_breakpoint_exception = tuple(
|
|
1245
|
-
get_exception_class(x) for x in args.skipSuspendOnBreakpointException)
|
|
1257
|
+
py_db.skip_suspend_on_breakpoint_exception = tuple(get_exception_class(x) for x in args.skipSuspendOnBreakpointException)
|
|
1246
1258
|
|
|
1247
1259
|
if args.skipPrintBreakpointException is not None:
|
|
1248
|
-
py_db.skip_print_breakpoint_exception = tuple(
|
|
1249
|
-
get_exception_class(x) for x in args.skipPrintBreakpointException)
|
|
1260
|
+
py_db.skip_print_breakpoint_exception = tuple(get_exception_class(x) for x in args.skipPrintBreakpointException)
|
|
1250
1261
|
|
|
1251
1262
|
if args.multiThreadsSingleNotification is not None:
|
|
1252
1263
|
py_db.multi_threads_single_notification = args.multiThreadsSingleNotification
|
|
@@ -1260,7 +1271,7 @@ class PyDevJsonCommandProcessor(object):
|
|
|
1260
1271
|
# WarnIfNoUserCodeOnLaunch: 0 or 1
|
|
1261
1272
|
# EnableStepFiltering: true of false
|
|
1262
1273
|
|
|
1263
|
-
response = pydevd_base_schema.build_response(request, kwargs={
|
|
1274
|
+
response = pydevd_base_schema.build_response(request, kwargs={"body": {}})
|
|
1264
1275
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
1265
1276
|
|
|
1266
1277
|
def on_pydevdsysteminfo_request(self, py_db, request):
|
|
@@ -1287,7 +1298,7 @@ class PyDevJsonCommandProcessor(object):
|
|
|
1287
1298
|
name=PY_IMPL_NAME,
|
|
1288
1299
|
version=PY_IMPL_VERSION_STR,
|
|
1289
1300
|
description=impl_desc,
|
|
1290
|
-
)
|
|
1301
|
+
),
|
|
1291
1302
|
)
|
|
1292
1303
|
platform_info = pydevd_schema.PydevdPlatformInfo(name=sys.platform)
|
|
1293
1304
|
process_info = pydevd_schema.PydevdProcessInfo(
|
|
@@ -1301,12 +1312,12 @@ class PyDevJsonCommandProcessor(object):
|
|
|
1301
1312
|
usingFrameEval=USING_FRAME_EVAL,
|
|
1302
1313
|
)
|
|
1303
1314
|
body = {
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1315
|
+
"python": py_info,
|
|
1316
|
+
"platform": platform_info,
|
|
1317
|
+
"process": process_info,
|
|
1318
|
+
"pydevd": pydevd_info,
|
|
1308
1319
|
}
|
|
1309
|
-
response = pydevd_base_schema.build_response(request, kwargs={
|
|
1320
|
+
response = pydevd_base_schema.build_response(request, kwargs={"body": body})
|
|
1310
1321
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
1311
1322
|
|
|
1312
1323
|
def on_setpydevdsourcemap_request(self, py_db, request):
|
|
@@ -1318,11 +1329,12 @@ class PyDevJsonCommandProcessor(object):
|
|
|
1318
1329
|
# : :type source_map: PydevdSourceMap
|
|
1319
1330
|
new_mappings = [
|
|
1320
1331
|
SourceMappingEntry(
|
|
1321
|
-
source_map[
|
|
1322
|
-
source_map[
|
|
1323
|
-
source_map[
|
|
1324
|
-
self.api.filename_to_str(source_map[
|
|
1325
|
-
)
|
|
1332
|
+
source_map["line"],
|
|
1333
|
+
source_map["endLine"],
|
|
1334
|
+
source_map["runtimeLine"],
|
|
1335
|
+
self.api.filename_to_str(source_map["runtimeSource"]["path"]),
|
|
1336
|
+
)
|
|
1337
|
+
for source_map in source_maps
|
|
1326
1338
|
]
|
|
1327
1339
|
|
|
1328
1340
|
error_msg = self.api.set_source_mapping(py_db, path, new_mappings)
|
|
@@ -1330,12 +1342,12 @@ class PyDevJsonCommandProcessor(object):
|
|
|
1330
1342
|
response = pydevd_base_schema.build_response(
|
|
1331
1343
|
request,
|
|
1332
1344
|
kwargs={
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
}
|
|
1345
|
+
"body": {},
|
|
1346
|
+
"success": False,
|
|
1347
|
+
"message": error_msg,
|
|
1348
|
+
},
|
|
1349
|
+
)
|
|
1337
1350
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
1338
1351
|
|
|
1339
1352
|
response = pydevd_base_schema.build_response(request)
|
|
1340
1353
|
return NetCommand(CMD_RETURN, 0, response, is_json=True)
|
|
1341
|
-
|