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
|
@@ -5,17 +5,44 @@ import types
|
|
|
5
5
|
from _pydev_bundle._pydev_saved_modules import threading
|
|
6
6
|
from _pydevd_bundle import pydevd_utils, pydevd_source_mapping
|
|
7
7
|
from _pydevd_bundle.pydevd_additional_thread_info import set_additional_thread_info
|
|
8
|
-
from _pydevd_bundle.pydevd_comm import (
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
8
|
+
from _pydevd_bundle.pydevd_comm import (
|
|
9
|
+
InternalGetThreadStack,
|
|
10
|
+
internal_get_completions,
|
|
11
|
+
InternalSetNextStatementThread,
|
|
12
|
+
internal_reload_code,
|
|
13
|
+
InternalGetVariable,
|
|
14
|
+
InternalGetArray,
|
|
15
|
+
InternalLoadFullValue,
|
|
16
|
+
internal_get_description,
|
|
17
|
+
internal_get_frame,
|
|
18
|
+
internal_evaluate_expression,
|
|
19
|
+
InternalConsoleExec,
|
|
20
|
+
internal_get_variable_json,
|
|
21
|
+
internal_change_variable,
|
|
22
|
+
internal_change_variable_json,
|
|
23
|
+
internal_evaluate_expression_json,
|
|
24
|
+
internal_set_expression_json,
|
|
25
|
+
internal_get_exception_details_json,
|
|
26
|
+
internal_step_in_thread,
|
|
27
|
+
internal_smart_step_into,
|
|
28
|
+
)
|
|
29
|
+
from _pydevd_bundle.pydevd_comm_constants import (
|
|
30
|
+
CMD_THREAD_SUSPEND,
|
|
31
|
+
file_system_encoding,
|
|
32
|
+
CMD_STEP_INTO_MY_CODE,
|
|
33
|
+
CMD_STOP_ON_START,
|
|
34
|
+
CMD_SMART_STEP_INTO,
|
|
35
|
+
)
|
|
36
|
+
from _pydevd_bundle.pydevd_constants import (
|
|
37
|
+
get_current_thread_id,
|
|
38
|
+
set_protocol,
|
|
39
|
+
get_protocol,
|
|
40
|
+
HTTP_JSON_PROTOCOL,
|
|
41
|
+
JSON_PROTOCOL,
|
|
42
|
+
DebugInfoHolder,
|
|
43
|
+
IS_WINDOWS,
|
|
44
|
+
PYDEVD_USE_SYS_MONITORING,
|
|
45
|
+
)
|
|
19
46
|
from _pydevd_bundle.pydevd_net_command_factory_json import NetCommandFactoryJson
|
|
20
47
|
from _pydevd_bundle.pydevd_net_command_factory_xml import NetCommandFactory
|
|
21
48
|
import pydevd_file_utils
|
|
@@ -32,6 +59,7 @@ from _pydevd_bundle.pydevd_utils import DAPGrouper, interrupt_main_thread
|
|
|
32
59
|
from _pydevd_bundle.pydevd_daemon_thread import run_as_pydevd_daemon_thread
|
|
33
60
|
from _pydevd_bundle.pydevd_thread_lifecycle import pydevd_find_thread_by_id, resume_threads
|
|
34
61
|
import tokenize
|
|
62
|
+
from _pydevd_sys_monitoring import pydevd_sys_monitoring
|
|
35
63
|
|
|
36
64
|
try:
|
|
37
65
|
import dis
|
|
@@ -47,7 +75,7 @@ else:
|
|
|
47
75
|
path = code
|
|
48
76
|
with tokenize.open(path) as f:
|
|
49
77
|
src = f.read()
|
|
50
|
-
code = compile(src, path,
|
|
78
|
+
code = compile(src, path, "exec", 0, dont_inherit=True)
|
|
51
79
|
return _get_code_lines(code)
|
|
52
80
|
|
|
53
81
|
def iterate():
|
|
@@ -68,10 +96,8 @@ else:
|
|
|
68
96
|
|
|
69
97
|
|
|
70
98
|
class PyDevdAPI(object):
|
|
71
|
-
|
|
72
99
|
class VariablePresentation(object):
|
|
73
|
-
|
|
74
|
-
def __init__(self, special='group', function='group', class_='group', protected='inline'):
|
|
100
|
+
def __init__(self, special="group", function="group", class_="group", protected="inline"):
|
|
75
101
|
self._presentation = {
|
|
76
102
|
DAPGrouper.SCOPE_SPECIAL_VARS: special,
|
|
77
103
|
DAPGrouper.SCOPE_FUNCTION_VARS: function,
|
|
@@ -107,11 +133,11 @@ class PyDevdAPI(object):
|
|
|
107
133
|
return py_db.cmd_factory.make_protocol_set_message(seq)
|
|
108
134
|
|
|
109
135
|
def set_ide_os_and_breakpoints_by(self, py_db, seq, ide_os, breakpoints_by):
|
|
110
|
-
|
|
136
|
+
"""
|
|
111
137
|
:param ide_os: 'WINDOWS' or 'UNIX'
|
|
112
138
|
:param breakpoints_by: 'ID' or 'LINE'
|
|
113
|
-
|
|
114
|
-
if breakpoints_by ==
|
|
139
|
+
"""
|
|
140
|
+
if breakpoints_by == "ID":
|
|
115
141
|
py_db._set_breakpoints_with_id = True
|
|
116
142
|
else:
|
|
117
143
|
py_db._set_breakpoints_with_id = False
|
|
@@ -121,16 +147,16 @@ class PyDevdAPI(object):
|
|
|
121
147
|
return py_db.cmd_factory.make_version_message(seq)
|
|
122
148
|
|
|
123
149
|
def set_ide_os(self, ide_os):
|
|
124
|
-
|
|
150
|
+
"""
|
|
125
151
|
:param ide_os: 'WINDOWS' or 'UNIX'
|
|
126
|
-
|
|
152
|
+
"""
|
|
127
153
|
pydevd_file_utils.set_ide_os(ide_os)
|
|
128
154
|
|
|
129
155
|
def set_gui_event_loop(self, py_db, gui_event_loop):
|
|
130
156
|
py_db._gui_event_loop = gui_event_loop
|
|
131
157
|
|
|
132
158
|
def send_error_message(self, py_db, msg):
|
|
133
|
-
cmd = py_db.cmd_factory.make_warning_message(
|
|
159
|
+
cmd = py_db.cmd_factory.make_warning_message("pydevd: %s\n" % (msg,))
|
|
134
160
|
py_db.writer.add_command(cmd)
|
|
135
161
|
|
|
136
162
|
def set_show_return_values(self, py_db, show_return_values):
|
|
@@ -147,14 +173,14 @@ class PyDevdAPI(object):
|
|
|
147
173
|
# Response is the command with the list of threads to be added to the writer thread.
|
|
148
174
|
return py_db.cmd_factory.make_list_threads_message(py_db, seq)
|
|
149
175
|
|
|
150
|
-
def request_suspend_thread(self, py_db, thread_id=
|
|
176
|
+
def request_suspend_thread(self, py_db, thread_id="*"):
|
|
151
177
|
# Yes, thread suspend is done at this point, not through an internal command.
|
|
152
178
|
threads = []
|
|
153
|
-
suspend_all = thread_id.strip() ==
|
|
179
|
+
suspend_all = thread_id.strip() == "*"
|
|
154
180
|
if suspend_all:
|
|
155
181
|
threads = pydevd_utils.get_non_pydevd_threads()
|
|
156
182
|
|
|
157
|
-
elif thread_id.startswith(
|
|
183
|
+
elif thread_id.startswith("__frame__:"):
|
|
158
184
|
sys.stderr.write("Can't suspend tasklet: %s\n" % (thread_id,))
|
|
159
185
|
|
|
160
186
|
else:
|
|
@@ -174,40 +200,42 @@ class PyDevdAPI(object):
|
|
|
174
200
|
break
|
|
175
201
|
|
|
176
202
|
def set_enable_thread_notifications(self, py_db, enable):
|
|
177
|
-
|
|
203
|
+
"""
|
|
178
204
|
When disabled, no thread notifications (for creation/removal) will be
|
|
179
205
|
issued until it's re-enabled.
|
|
180
206
|
|
|
181
207
|
Note that when it's re-enabled, a creation notification will be sent for
|
|
182
208
|
all existing threads even if it was previously sent (this is meant to
|
|
183
209
|
be used on disconnect/reconnect).
|
|
184
|
-
|
|
210
|
+
"""
|
|
185
211
|
py_db.set_enable_thread_notifications(enable)
|
|
186
212
|
|
|
187
213
|
def request_disconnect(self, py_db, resume_threads):
|
|
188
214
|
self.set_enable_thread_notifications(py_db, False)
|
|
189
|
-
self.remove_all_breakpoints(py_db,
|
|
215
|
+
self.remove_all_breakpoints(py_db, "*")
|
|
190
216
|
self.remove_all_exception_breakpoints(py_db)
|
|
191
217
|
self.notify_disconnect(py_db)
|
|
192
218
|
|
|
193
219
|
if resume_threads:
|
|
194
|
-
self.request_resume_thread(thread_id=
|
|
220
|
+
self.request_resume_thread(thread_id="*")
|
|
195
221
|
|
|
196
222
|
def request_resume_thread(self, thread_id):
|
|
197
223
|
resume_threads(thread_id)
|
|
198
224
|
|
|
199
225
|
def request_completions(self, py_db, seq, thread_id, frame_id, act_tok, line=-1, column=-1):
|
|
200
226
|
py_db.post_method_as_internal_command(
|
|
201
|
-
thread_id, internal_get_completions, seq, thread_id, frame_id, act_tok, line=line, column=column
|
|
227
|
+
thread_id, internal_get_completions, seq, thread_id, frame_id, act_tok, line=line, column=column
|
|
228
|
+
)
|
|
202
229
|
|
|
203
|
-
def request_stack(self, py_db, seq, thread_id, fmt=None, timeout
|
|
230
|
+
def request_stack(self, py_db, seq, thread_id, fmt=None, timeout=0.5, start_frame=0, levels=0):
|
|
204
231
|
# If it's already suspended, get it right away.
|
|
205
232
|
internal_get_thread_stack = InternalGetThreadStack(
|
|
206
|
-
seq, thread_id, py_db, set_additional_thread_info, fmt=fmt, timeout=timeout, start_frame=start_frame, levels=levels
|
|
233
|
+
seq, thread_id, py_db, set_additional_thread_info, fmt=fmt, timeout=timeout, start_frame=start_frame, levels=levels
|
|
234
|
+
)
|
|
207
235
|
if internal_get_thread_stack.can_be_executed_by(get_current_thread_id(threading.current_thread())):
|
|
208
236
|
internal_get_thread_stack.do_it(py_db)
|
|
209
237
|
else:
|
|
210
|
-
py_db.post_internal_command(internal_get_thread_stack,
|
|
238
|
+
py_db.post_internal_command(internal_get_thread_stack, "*")
|
|
211
239
|
|
|
212
240
|
def request_exception_info_json(self, py_db, request, thread_id, thread, max_frames):
|
|
213
241
|
py_db.post_method_as_internal_command(
|
|
@@ -231,15 +259,16 @@ class PyDevdAPI(object):
|
|
|
231
259
|
step_cmd_id,
|
|
232
260
|
set_additional_thread_info=set_additional_thread_info,
|
|
233
261
|
)
|
|
234
|
-
elif thread_id.startswith(
|
|
262
|
+
elif thread_id.startswith("__frame__:"):
|
|
235
263
|
sys.stderr.write("Can't make tasklet step command: %s\n" % (thread_id,))
|
|
236
264
|
|
|
237
265
|
def request_smart_step_into(self, py_db, seq, thread_id, offset, child_offset):
|
|
238
266
|
t = pydevd_find_thread_by_id(thread_id)
|
|
239
267
|
if t:
|
|
240
268
|
py_db.post_method_as_internal_command(
|
|
241
|
-
thread_id, internal_smart_step_into, thread_id, offset, child_offset, set_additional_thread_info=set_additional_thread_info
|
|
242
|
-
|
|
269
|
+
thread_id, internal_smart_step_into, thread_id, offset, child_offset, set_additional_thread_info=set_additional_thread_info
|
|
270
|
+
)
|
|
271
|
+
elif thread_id.startswith("__frame__:"):
|
|
243
272
|
sys.stderr.write("Can't set next statement in tasklet: %s\n" % (thread_id,))
|
|
244
273
|
|
|
245
274
|
def request_smart_step_into_by_func_name(self, py_db, seq, thread_id, line, func_name):
|
|
@@ -247,7 +276,7 @@ class PyDevdAPI(object):
|
|
|
247
276
|
self.request_set_next(py_db, seq, thread_id, CMD_SMART_STEP_INTO, None, line, func_name)
|
|
248
277
|
|
|
249
278
|
def request_set_next(self, py_db, seq, thread_id, set_next_cmd_id, original_filename, line, func_name):
|
|
250
|
-
|
|
279
|
+
"""
|
|
251
280
|
set_next_cmd_id may actually be one of:
|
|
252
281
|
|
|
253
282
|
CMD_RUN_TO_LINE
|
|
@@ -261,52 +290,49 @@ class PyDevdAPI(object):
|
|
|
261
290
|
place (the set next just needs the line afterwards as it executes locally, but for
|
|
262
291
|
the Jupyter integration, the source mapping may change the actual lines and not only
|
|
263
292
|
the filename).
|
|
264
|
-
|
|
293
|
+
"""
|
|
265
294
|
t = pydevd_find_thread_by_id(thread_id)
|
|
266
295
|
if t:
|
|
267
296
|
if original_filename is not None:
|
|
268
297
|
translated_filename = self.filename_to_server(original_filename) # Apply user path mapping.
|
|
269
|
-
pydev_log.debug(
|
|
298
|
+
pydev_log.debug("Set next (after path translation) in: %s line: %s", translated_filename, line)
|
|
270
299
|
func_name = self.to_str(func_name)
|
|
271
300
|
|
|
272
301
|
assert translated_filename.__class__ == str # i.e.: bytes on py2 and str on py3
|
|
273
302
|
assert func_name.__class__ == str # i.e.: bytes on py2 and str on py3
|
|
274
303
|
|
|
275
304
|
# Apply source mapping (i.e.: ipython).
|
|
276
|
-
_source_mapped_filename, new_line, multi_mapping_applied = py_db.source_mapping.map_to_server(
|
|
277
|
-
translated_filename, line)
|
|
305
|
+
_source_mapped_filename, new_line, multi_mapping_applied = py_db.source_mapping.map_to_server(translated_filename, line)
|
|
278
306
|
if multi_mapping_applied:
|
|
279
|
-
pydev_log.debug(
|
|
307
|
+
pydev_log.debug("Set next (after source mapping) in: %s line: %s", translated_filename, line)
|
|
280
308
|
line = new_line
|
|
281
309
|
|
|
282
310
|
int_cmd = InternalSetNextStatementThread(thread_id, set_next_cmd_id, line, func_name, seq=seq)
|
|
283
311
|
py_db.post_internal_command(int_cmd, thread_id)
|
|
284
|
-
elif thread_id.startswith(
|
|
312
|
+
elif thread_id.startswith("__frame__:"):
|
|
285
313
|
sys.stderr.write("Can't set next statement in tasklet: %s\n" % (thread_id,))
|
|
286
314
|
|
|
287
315
|
def request_reload_code(self, py_db, seq, module_name, filename):
|
|
288
|
-
|
|
316
|
+
"""
|
|
289
317
|
:param seq: if -1 no message will be sent back when the reload is done.
|
|
290
318
|
|
|
291
319
|
Note: either module_name or filename may be None (but not both at the same time).
|
|
292
|
-
|
|
293
|
-
thread_id =
|
|
320
|
+
"""
|
|
321
|
+
thread_id = "*" # Any thread
|
|
294
322
|
# Note: not going for the main thread because in this case it'd only do the load
|
|
295
323
|
# when we stopped on a breakpoint.
|
|
296
|
-
py_db.post_method_as_internal_command(
|
|
297
|
-
thread_id, internal_reload_code, seq, module_name, filename)
|
|
324
|
+
py_db.post_method_as_internal_command(thread_id, internal_reload_code, seq, module_name, filename)
|
|
298
325
|
|
|
299
326
|
def request_change_variable(self, py_db, seq, thread_id, frame_id, scope, attr, value):
|
|
300
|
-
|
|
327
|
+
"""
|
|
301
328
|
:param scope: 'FRAME' or 'GLOBAL'
|
|
302
|
-
|
|
303
|
-
py_db.post_method_as_internal_command(
|
|
304
|
-
thread_id, internal_change_variable, seq, thread_id, frame_id, scope, attr, value)
|
|
329
|
+
"""
|
|
330
|
+
py_db.post_method_as_internal_command(thread_id, internal_change_variable, seq, thread_id, frame_id, scope, attr, value)
|
|
305
331
|
|
|
306
332
|
def request_get_variable(self, py_db, seq, thread_id, frame_id, scope, attrs):
|
|
307
|
-
|
|
333
|
+
"""
|
|
308
334
|
:param scope: 'FRAME' or 'GLOBAL'
|
|
309
|
-
|
|
335
|
+
"""
|
|
310
336
|
int_cmd = InternalGetVariable(seq, thread_id, frame_id, scope, attrs)
|
|
311
337
|
py_db.post_internal_command(int_cmd, thread_id)
|
|
312
338
|
|
|
@@ -319,27 +345,25 @@ class PyDevdAPI(object):
|
|
|
319
345
|
py_db.post_internal_command(int_cmd, thread_id)
|
|
320
346
|
|
|
321
347
|
def request_get_description(self, py_db, seq, thread_id, frame_id, expression):
|
|
322
|
-
py_db.post_method_as_internal_command(
|
|
323
|
-
thread_id, internal_get_description, seq, thread_id, frame_id, expression)
|
|
348
|
+
py_db.post_method_as_internal_command(thread_id, internal_get_description, seq, thread_id, frame_id, expression)
|
|
324
349
|
|
|
325
350
|
def request_get_frame(self, py_db, seq, thread_id, frame_id):
|
|
326
|
-
py_db.post_method_as_internal_command(
|
|
327
|
-
thread_id, internal_get_frame, seq, thread_id, frame_id)
|
|
351
|
+
py_db.post_method_as_internal_command(thread_id, internal_get_frame, seq, thread_id, frame_id)
|
|
328
352
|
|
|
329
353
|
def to_str(self, s):
|
|
330
|
-
|
|
354
|
+
"""
|
|
331
355
|
-- in py3 raises an error if it's not str already.
|
|
332
|
-
|
|
356
|
+
"""
|
|
333
357
|
if s.__class__ != str:
|
|
334
|
-
raise AssertionError(
|
|
358
|
+
raise AssertionError("Expected to have str on Python 3. Found: %s (%s)" % (s, s.__class__))
|
|
335
359
|
return s
|
|
336
360
|
|
|
337
361
|
def filename_to_str(self, filename):
|
|
338
|
-
|
|
362
|
+
"""
|
|
339
363
|
-- in py3 raises an error if it's not str already.
|
|
340
|
-
|
|
364
|
+
"""
|
|
341
365
|
if filename.__class__ != str:
|
|
342
|
-
raise AssertionError(
|
|
366
|
+
raise AssertionError("Expected to have str on Python 3. Found: %s (%s)" % (filename, filename.__class__))
|
|
343
367
|
return filename
|
|
344
368
|
|
|
345
369
|
def filename_to_server(self, filename):
|
|
@@ -348,17 +372,16 @@ class PyDevdAPI(object):
|
|
|
348
372
|
return filename
|
|
349
373
|
|
|
350
374
|
class _DummyFrame(object):
|
|
351
|
-
|
|
375
|
+
"""
|
|
352
376
|
Dummy frame to be used with PyDB.apply_files_filter (as we don't really have the
|
|
353
377
|
related frame as breakpoints are added before execution).
|
|
354
|
-
|
|
378
|
+
"""
|
|
355
379
|
|
|
356
380
|
class _DummyCode(object):
|
|
357
|
-
|
|
358
381
|
def __init__(self, filename):
|
|
359
382
|
self.co_firstlineno = 1
|
|
360
383
|
self.co_filename = filename
|
|
361
|
-
self.co_name =
|
|
384
|
+
self.co_name = "invalid func name "
|
|
362
385
|
|
|
363
386
|
def __init__(self, filename):
|
|
364
387
|
self.f_code = self._DummyCode(filename)
|
|
@@ -374,14 +397,13 @@ class PyDevdAPI(object):
|
|
|
374
397
|
ADD_BREAKPOINT_INVALID_LINE = 4
|
|
375
398
|
|
|
376
399
|
class _AddBreakpointResult(object):
|
|
377
|
-
|
|
378
400
|
# :see: ADD_BREAKPOINT_NO_ERROR = 0
|
|
379
401
|
# :see: ADD_BREAKPOINT_FILE_NOT_FOUND = 1
|
|
380
402
|
# :see: ADD_BREAKPOINT_FILE_EXCLUDED_BY_FILTERS = 2
|
|
381
403
|
# :see: ADD_BREAKPOINT_LAZY_VALIDATION = 3
|
|
382
404
|
# :see: ADD_BREAKPOINT_INVALID_LINE = 4
|
|
383
405
|
|
|
384
|
-
__slots__ = [
|
|
406
|
+
__slots__ = ["error_code", "breakpoint_id", "translated_filename", "translated_line", "original_line"]
|
|
385
407
|
|
|
386
408
|
def __init__(self, breakpoint_id, translated_filename, translated_line, original_line):
|
|
387
409
|
self.error_code = PyDevdAPI.ADD_BREAKPOINT_NO_ERROR
|
|
@@ -391,9 +413,22 @@ class PyDevdAPI(object):
|
|
|
391
413
|
self.original_line = original_line
|
|
392
414
|
|
|
393
415
|
def add_breakpoint(
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
416
|
+
self,
|
|
417
|
+
py_db,
|
|
418
|
+
original_filename,
|
|
419
|
+
breakpoint_type,
|
|
420
|
+
breakpoint_id,
|
|
421
|
+
line,
|
|
422
|
+
condition,
|
|
423
|
+
func_name,
|
|
424
|
+
expression,
|
|
425
|
+
suspend_policy,
|
|
426
|
+
hit_condition,
|
|
427
|
+
is_logpoint,
|
|
428
|
+
adjust_line=False,
|
|
429
|
+
on_changed_breakpoint_state=None,
|
|
430
|
+
):
|
|
431
|
+
"""
|
|
397
432
|
:param str original_filename:
|
|
398
433
|
Note: must be sent as it was received in the protocol. It may be translated in this
|
|
399
434
|
function and its final value will be available in the returned _AddBreakpointResult.
|
|
@@ -446,30 +481,41 @@ class PyDevdAPI(object):
|
|
|
446
481
|
implementation may internally reuse the same instance multiple times).
|
|
447
482
|
|
|
448
483
|
:return _AddBreakpointResult:
|
|
449
|
-
|
|
450
|
-
assert original_filename.__class__ == str,
|
|
484
|
+
"""
|
|
485
|
+
assert original_filename.__class__ == str, "Expected str, found: %s" % (
|
|
486
|
+
original_filename.__class__,
|
|
487
|
+
) # i.e.: bytes on py2 and str on py3
|
|
451
488
|
|
|
452
489
|
original_filename_normalized = pydevd_file_utils.normcase_from_client(original_filename)
|
|
453
490
|
|
|
454
|
-
pydev_log.debug(
|
|
491
|
+
pydev_log.debug("Request for breakpoint in: %s line: %s", original_filename, line)
|
|
455
492
|
original_line = line
|
|
456
493
|
# Parameters to reapply breakpoint.
|
|
457
|
-
api_add_breakpoint_params = (
|
|
458
|
-
|
|
494
|
+
api_add_breakpoint_params = (
|
|
495
|
+
original_filename,
|
|
496
|
+
breakpoint_type,
|
|
497
|
+
breakpoint_id,
|
|
498
|
+
line,
|
|
499
|
+
condition,
|
|
500
|
+
func_name,
|
|
501
|
+
expression,
|
|
502
|
+
suspend_policy,
|
|
503
|
+
hit_condition,
|
|
504
|
+
is_logpoint,
|
|
505
|
+
)
|
|
459
506
|
|
|
460
507
|
translated_filename = self.filename_to_server(original_filename) # Apply user path mapping.
|
|
461
|
-
pydev_log.debug(
|
|
508
|
+
pydev_log.debug("Breakpoint (after path translation) in: %s line: %s", translated_filename, line)
|
|
462
509
|
func_name = self.to_str(func_name)
|
|
463
510
|
|
|
464
511
|
assert translated_filename.__class__ == str # i.e.: bytes on py2 and str on py3
|
|
465
512
|
assert func_name.__class__ == str # i.e.: bytes on py2 and str on py3
|
|
466
513
|
|
|
467
514
|
# Apply source mapping (i.e.: ipython).
|
|
468
|
-
source_mapped_filename, new_line, multi_mapping_applied = py_db.source_mapping.map_to_server(
|
|
469
|
-
translated_filename, line)
|
|
515
|
+
source_mapped_filename, new_line, multi_mapping_applied = py_db.source_mapping.map_to_server(translated_filename, line)
|
|
470
516
|
|
|
471
517
|
if multi_mapping_applied:
|
|
472
|
-
pydev_log.debug(
|
|
518
|
+
pydev_log.debug("Breakpoint (after source mapping) in: %s line: %s", source_mapped_filename, new_line)
|
|
473
519
|
# Note that source mapping is internal and does not change the resulting filename nor line
|
|
474
520
|
# (we want the outside world to see the line in the original file and not in the ipython
|
|
475
521
|
# cell, otherwise the editor wouldn't be correct as the returned line is the line to
|
|
@@ -485,7 +531,7 @@ class PyDevdAPI(object):
|
|
|
485
531
|
translated_absolute_filename = pydevd_file_utils.absolute_path(translated_filename)
|
|
486
532
|
canonical_normalized_filename = pydevd_file_utils.canonical_normalized_path(translated_filename)
|
|
487
533
|
|
|
488
|
-
if adjust_line and not translated_absolute_filename.startswith(
|
|
534
|
+
if adjust_line and not translated_absolute_filename.startswith("<"):
|
|
489
535
|
# Validate file_to_line_to_breakpoints and adjust their positions.
|
|
490
536
|
try:
|
|
491
537
|
lines = sorted(_get_code_lines(translated_absolute_filename))
|
|
@@ -500,9 +546,12 @@ class PyDevdAPI(object):
|
|
|
500
546
|
|
|
501
547
|
result = self._AddBreakpointResult(breakpoint_id, original_filename, line, original_line)
|
|
502
548
|
|
|
503
|
-
py_db.api_received_breakpoints[(original_filename_normalized, breakpoint_id)] = (
|
|
549
|
+
py_db.api_received_breakpoints[(original_filename_normalized, breakpoint_id)] = (
|
|
550
|
+
canonical_normalized_filename,
|
|
551
|
+
api_add_breakpoint_params,
|
|
552
|
+
)
|
|
504
553
|
|
|
505
|
-
if not translated_absolute_filename.startswith(
|
|
554
|
+
if not translated_absolute_filename.startswith("<"):
|
|
506
555
|
# Note: if a mapping pointed to a file starting with '<', don't validate.
|
|
507
556
|
|
|
508
557
|
if not pydevd_file_utils.exists(translated_absolute_filename):
|
|
@@ -510,10 +559,10 @@ class PyDevdAPI(object):
|
|
|
510
559
|
return result
|
|
511
560
|
|
|
512
561
|
if (
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
562
|
+
py_db.is_files_filter_enabled
|
|
563
|
+
and not py_db.get_require_module_for_filters()
|
|
564
|
+
and py_db.apply_files_filter(self._DummyFrame(translated_absolute_filename), translated_absolute_filename, False)
|
|
565
|
+
):
|
|
517
566
|
# Note that if `get_require_module_for_filters()` returns False, we don't do this check.
|
|
518
567
|
# This is because we don't have the module name given a file at this point (in
|
|
519
568
|
# runtime it's gotten from the frame.f_globals).
|
|
@@ -525,9 +574,10 @@ class PyDevdAPI(object):
|
|
|
525
574
|
# breakpoint even with the error code.
|
|
526
575
|
result.error_code = self.ADD_BREAKPOINT_FILE_EXCLUDED_BY_FILTERS
|
|
527
576
|
|
|
528
|
-
if breakpoint_type ==
|
|
577
|
+
if breakpoint_type == "python-line":
|
|
529
578
|
added_breakpoint = LineBreakpoint(
|
|
530
|
-
breakpoint_id, line, condition, func_name, expression, suspend_policy, hit_condition=hit_condition, is_logpoint=is_logpoint
|
|
579
|
+
breakpoint_id, line, condition, func_name, expression, suspend_policy, hit_condition=hit_condition, is_logpoint=is_logpoint
|
|
580
|
+
)
|
|
531
581
|
|
|
532
582
|
file_to_line_to_breakpoints = py_db.breakpoints
|
|
533
583
|
file_to_id_to_breakpoint = py_db.file_to_id_to_line_breakpoint
|
|
@@ -538,9 +588,20 @@ class PyDevdAPI(object):
|
|
|
538
588
|
plugin = py_db.get_plugin_lazy_init()
|
|
539
589
|
if plugin is not None:
|
|
540
590
|
add_plugin_breakpoint_result = plugin.add_breakpoint(
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
591
|
+
"add_line_breakpoint",
|
|
592
|
+
py_db,
|
|
593
|
+
breakpoint_type,
|
|
594
|
+
canonical_normalized_filename,
|
|
595
|
+
breakpoint_id,
|
|
596
|
+
line,
|
|
597
|
+
condition,
|
|
598
|
+
expression,
|
|
599
|
+
func_name,
|
|
600
|
+
hit_condition=hit_condition,
|
|
601
|
+
is_logpoint=is_logpoint,
|
|
602
|
+
add_breakpoint_result=result,
|
|
603
|
+
on_changed_breakpoint_state=on_changed_breakpoint_state,
|
|
604
|
+
)
|
|
544
605
|
|
|
545
606
|
if add_plugin_breakpoint_result is not None:
|
|
546
607
|
supported_type = True
|
|
@@ -552,7 +613,7 @@ class PyDevdAPI(object):
|
|
|
552
613
|
if not supported_type:
|
|
553
614
|
raise NameError(breakpoint_type)
|
|
554
615
|
|
|
555
|
-
pydev_log.debug(
|
|
616
|
+
pydev_log.debug("Added breakpoint:%s - line:%s - func_name:%s\n", canonical_normalized_filename, line, func_name)
|
|
556
617
|
|
|
557
618
|
if canonical_normalized_filename in file_to_id_to_breakpoint:
|
|
558
619
|
id_to_pybreakpoint = file_to_id_to_breakpoint[canonical_normalized_filename]
|
|
@@ -562,46 +623,44 @@ class PyDevdAPI(object):
|
|
|
562
623
|
id_to_pybreakpoint[breakpoint_id] = added_breakpoint
|
|
563
624
|
py_db.consolidate_breakpoints(canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints)
|
|
564
625
|
if py_db.plugin is not None:
|
|
565
|
-
py_db.has_plugin_line_breaks = py_db.plugin.has_line_breaks()
|
|
566
|
-
py_db.plugin.after_breakpoints_consolidated(
|
|
626
|
+
py_db.has_plugin_line_breaks = py_db.plugin.has_line_breaks(py_db)
|
|
627
|
+
py_db.plugin.after_breakpoints_consolidated(
|
|
628
|
+
py_db, canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints
|
|
629
|
+
)
|
|
567
630
|
|
|
568
631
|
py_db.on_breakpoints_changed()
|
|
569
632
|
return result
|
|
570
633
|
|
|
571
634
|
def reapply_breakpoints(self, py_db):
|
|
572
|
-
|
|
635
|
+
"""
|
|
573
636
|
Reapplies all the received breakpoints as they were received by the API (so, new
|
|
574
637
|
translations are applied).
|
|
575
|
-
|
|
576
|
-
pydev_log.debug(
|
|
638
|
+
"""
|
|
639
|
+
pydev_log.debug("Reapplying breakpoints.")
|
|
577
640
|
values = list(py_db.api_received_breakpoints.values()) # Create a copy with items to reapply.
|
|
578
|
-
self.remove_all_breakpoints(py_db,
|
|
641
|
+
self.remove_all_breakpoints(py_db, "*")
|
|
579
642
|
for val in values:
|
|
580
643
|
_new_filename, api_add_breakpoint_params = val
|
|
581
644
|
self.add_breakpoint(py_db, *api_add_breakpoint_params)
|
|
582
645
|
|
|
583
646
|
def remove_all_breakpoints(self, py_db, received_filename):
|
|
584
|
-
|
|
647
|
+
"""
|
|
585
648
|
Removes all the breakpoints from a given file or from all files if received_filename == '*'.
|
|
586
649
|
|
|
587
650
|
:param str received_filename:
|
|
588
651
|
Note: must be sent as it was received in the protocol. It may be translated in this
|
|
589
652
|
function.
|
|
590
|
-
|
|
653
|
+
"""
|
|
591
654
|
assert received_filename.__class__ == str # i.e.: bytes on py2 and str on py3
|
|
592
655
|
changed = False
|
|
593
|
-
lst = [
|
|
594
|
-
|
|
595
|
-
py_db.file_to_id_to_plugin_breakpoint,
|
|
596
|
-
py_db.breakpoints
|
|
597
|
-
]
|
|
598
|
-
if hasattr(py_db, 'django_breakpoints'):
|
|
656
|
+
lst = [py_db.file_to_id_to_line_breakpoint, py_db.file_to_id_to_plugin_breakpoint, py_db.breakpoints]
|
|
657
|
+
if hasattr(py_db, "django_breakpoints"):
|
|
599
658
|
lst.append(py_db.django_breakpoints)
|
|
600
659
|
|
|
601
|
-
if hasattr(py_db,
|
|
660
|
+
if hasattr(py_db, "jinja2_breakpoints"):
|
|
602
661
|
lst.append(py_db.jinja2_breakpoints)
|
|
603
662
|
|
|
604
|
-
if received_filename ==
|
|
663
|
+
if received_filename == "*":
|
|
605
664
|
py_db.api_received_breakpoints.clear()
|
|
606
665
|
|
|
607
666
|
for file_to_id_to_breakpoint in lst:
|
|
@@ -631,7 +690,7 @@ class PyDevdAPI(object):
|
|
|
631
690
|
py_db.on_breakpoints_changed(removed=True)
|
|
632
691
|
|
|
633
692
|
def remove_breakpoint(self, py_db, received_filename, breakpoint_type, breakpoint_id):
|
|
634
|
-
|
|
693
|
+
"""
|
|
635
694
|
:param str received_filename:
|
|
636
695
|
Note: must be sent as it was received in the protocol. It may be translated in this
|
|
637
696
|
function.
|
|
@@ -640,7 +699,7 @@ class PyDevdAPI(object):
|
|
|
640
699
|
One of: 'python-line', 'django-line', 'jinja2-line'.
|
|
641
700
|
|
|
642
701
|
:param int breakpoint_id:
|
|
643
|
-
|
|
702
|
+
"""
|
|
644
703
|
received_filename_normalized = pydevd_file_utils.normcase_from_client(received_filename)
|
|
645
704
|
for key, val in list(py_db.api_received_breakpoints.items()):
|
|
646
705
|
original_filename_normalized, existing_breakpoint_id = key
|
|
@@ -649,14 +708,13 @@ class PyDevdAPI(object):
|
|
|
649
708
|
del py_db.api_received_breakpoints[key]
|
|
650
709
|
break
|
|
651
710
|
else:
|
|
652
|
-
pydev_log.info(
|
|
653
|
-
'Did not find breakpoint to remove: %s (breakpoint id: %s)', received_filename, breakpoint_id)
|
|
711
|
+
pydev_log.info("Did not find breakpoint to remove: %s (breakpoint id: %s)", received_filename, breakpoint_id)
|
|
654
712
|
|
|
655
713
|
file_to_id_to_breakpoint = None
|
|
656
714
|
received_filename = self.filename_to_server(received_filename)
|
|
657
715
|
canonical_normalized_filename = pydevd_file_utils.canonical_normalized_path(received_filename)
|
|
658
716
|
|
|
659
|
-
if breakpoint_type ==
|
|
717
|
+
if breakpoint_type == "python-line":
|
|
660
718
|
file_to_line_to_breakpoints = py_db.breakpoints
|
|
661
719
|
file_to_id_to_breakpoint = py_db.file_to_id_to_line_breakpoint
|
|
662
720
|
|
|
@@ -667,25 +725,33 @@ class PyDevdAPI(object):
|
|
|
667
725
|
file_to_line_to_breakpoints = result
|
|
668
726
|
|
|
669
727
|
if file_to_id_to_breakpoint is None:
|
|
670
|
-
pydev_log.critical(
|
|
728
|
+
pydev_log.critical("Error removing breakpoint. Cannot handle breakpoint of type %s", breakpoint_type)
|
|
671
729
|
|
|
672
730
|
else:
|
|
673
731
|
try:
|
|
674
732
|
id_to_pybreakpoint = file_to_id_to_breakpoint.get(canonical_normalized_filename, {})
|
|
675
733
|
if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 1:
|
|
676
734
|
existing = id_to_pybreakpoint[breakpoint_id]
|
|
677
|
-
pydev_log.info(
|
|
678
|
-
|
|
735
|
+
pydev_log.info(
|
|
736
|
+
"Removed breakpoint:%s - line:%s - func_name:%s (id: %s)\n"
|
|
737
|
+
% (canonical_normalized_filename, existing.line, existing.func_name, breakpoint_id)
|
|
738
|
+
)
|
|
679
739
|
|
|
680
740
|
del id_to_pybreakpoint[breakpoint_id]
|
|
681
741
|
py_db.consolidate_breakpoints(canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints)
|
|
682
742
|
if py_db.plugin is not None:
|
|
683
|
-
py_db.has_plugin_line_breaks = py_db.plugin.has_line_breaks()
|
|
684
|
-
py_db.plugin.after_breakpoints_consolidated(
|
|
743
|
+
py_db.has_plugin_line_breaks = py_db.plugin.has_line_breaks(py_db)
|
|
744
|
+
py_db.plugin.after_breakpoints_consolidated(
|
|
745
|
+
py_db, canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints
|
|
746
|
+
)
|
|
685
747
|
|
|
686
748
|
except KeyError:
|
|
687
|
-
pydev_log.info(
|
|
688
|
-
|
|
749
|
+
pydev_log.info(
|
|
750
|
+
"Error removing breakpoint: Breakpoint id not found: %s id: %s. Available ids: %s\n",
|
|
751
|
+
canonical_normalized_filename,
|
|
752
|
+
breakpoint_id,
|
|
753
|
+
list(id_to_pybreakpoint),
|
|
754
|
+
)
|
|
689
755
|
|
|
690
756
|
py_db.on_breakpoints_changed(removed=True)
|
|
691
757
|
|
|
@@ -697,31 +763,27 @@ class PyDevdAPI(object):
|
|
|
697
763
|
py_db.function_breakpoint_name_to_breakpoint = function_breakpoint_name_to_breakpoint
|
|
698
764
|
py_db.on_breakpoints_changed()
|
|
699
765
|
|
|
700
|
-
def request_exec_or_evaluate(
|
|
701
|
-
self, py_db, seq, thread_id, frame_id, expression, is_exec, trim_if_too_big, attr_to_set_result):
|
|
766
|
+
def request_exec_or_evaluate(self, py_db, seq, thread_id, frame_id, expression, is_exec, trim_if_too_big, attr_to_set_result):
|
|
702
767
|
py_db.post_method_as_internal_command(
|
|
703
|
-
thread_id, internal_evaluate_expression,
|
|
704
|
-
|
|
768
|
+
thread_id, internal_evaluate_expression, seq, thread_id, frame_id, expression, is_exec, trim_if_too_big, attr_to_set_result
|
|
769
|
+
)
|
|
705
770
|
|
|
706
|
-
def request_exec_or_evaluate_json(
|
|
707
|
-
|
|
708
|
-
py_db.post_method_as_internal_command(
|
|
709
|
-
thread_id, internal_evaluate_expression_json, request, thread_id)
|
|
771
|
+
def request_exec_or_evaluate_json(self, py_db, request, thread_id):
|
|
772
|
+
py_db.post_method_as_internal_command(thread_id, internal_evaluate_expression_json, request, thread_id)
|
|
710
773
|
|
|
711
774
|
def request_set_expression_json(self, py_db, request, thread_id):
|
|
712
|
-
py_db.post_method_as_internal_command(
|
|
713
|
-
thread_id, internal_set_expression_json, request, thread_id)
|
|
775
|
+
py_db.post_method_as_internal_command(thread_id, internal_set_expression_json, request, thread_id)
|
|
714
776
|
|
|
715
777
|
def request_console_exec(self, py_db, seq, thread_id, frame_id, expression):
|
|
716
778
|
int_cmd = InternalConsoleExec(seq, thread_id, frame_id, expression)
|
|
717
779
|
py_db.post_internal_command(int_cmd, thread_id)
|
|
718
780
|
|
|
719
781
|
def request_load_source(self, py_db, seq, filename):
|
|
720
|
-
|
|
782
|
+
"""
|
|
721
783
|
:param str filename:
|
|
722
784
|
Note: must be sent as it was received in the protocol. It may be translated in this
|
|
723
785
|
function.
|
|
724
|
-
|
|
786
|
+
"""
|
|
725
787
|
try:
|
|
726
788
|
filename = self.filename_to_server(filename)
|
|
727
789
|
assert filename.__class__ == str # i.e.: bytes on py2 and str on py3
|
|
@@ -735,13 +797,13 @@ class PyDevdAPI(object):
|
|
|
735
797
|
py_db.writer.add_command(cmd)
|
|
736
798
|
|
|
737
799
|
def get_decompiled_source_from_frame_id(self, py_db, frame_id):
|
|
738
|
-
|
|
800
|
+
"""
|
|
739
801
|
:param py_db:
|
|
740
802
|
:param frame_id:
|
|
741
803
|
:throws Exception:
|
|
742
804
|
If unable to get the frame in the currently paused frames or if some error happened
|
|
743
805
|
when decompiling.
|
|
744
|
-
|
|
806
|
+
"""
|
|
745
807
|
variable = py_db.suspended_frames_manager.get_variable(int(frame_id))
|
|
746
808
|
frame = variable.value
|
|
747
809
|
|
|
@@ -749,7 +811,7 @@ class PyDevdAPI(object):
|
|
|
749
811
|
lines = (linecache.getline(frame.f_code.co_filename, i) for i in itertools.count(1))
|
|
750
812
|
lines = itertools.takewhile(bool, lines) # empty lines are '\n', EOF is ''
|
|
751
813
|
|
|
752
|
-
source =
|
|
814
|
+
source = "".join(lines)
|
|
753
815
|
if not source:
|
|
754
816
|
source = code_to_bytecode_representation(frame.f_code)
|
|
755
817
|
|
|
@@ -765,17 +827,17 @@ class PyDevdAPI(object):
|
|
|
765
827
|
py_db.writer.add_command(cmd)
|
|
766
828
|
|
|
767
829
|
def add_python_exception_breakpoint(
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
830
|
+
self,
|
|
831
|
+
py_db,
|
|
832
|
+
exception,
|
|
833
|
+
condition,
|
|
834
|
+
expression,
|
|
835
|
+
notify_on_handled_exceptions,
|
|
836
|
+
notify_on_unhandled_exceptions,
|
|
837
|
+
notify_on_user_unhandled_exceptions,
|
|
838
|
+
notify_on_first_raise_only,
|
|
839
|
+
ignore_libraries,
|
|
840
|
+
):
|
|
779
841
|
exception_breakpoint = py_db.add_break_on_exception(
|
|
780
842
|
exception,
|
|
781
843
|
condition=condition,
|
|
@@ -794,10 +856,10 @@ class PyDevdAPI(object):
|
|
|
794
856
|
supported_type = False
|
|
795
857
|
plugin = py_db.get_plugin_lazy_init()
|
|
796
858
|
if plugin is not None:
|
|
797
|
-
supported_type = plugin.add_breakpoint(
|
|
859
|
+
supported_type = plugin.add_breakpoint("add_exception_breakpoint", py_db, breakpoint_type, exception)
|
|
798
860
|
|
|
799
861
|
if supported_type:
|
|
800
|
-
py_db.has_plugin_exception_breaks = py_db.plugin.has_exception_breaks()
|
|
862
|
+
py_db.has_plugin_exception_breaks = py_db.plugin.has_exception_breaks(py_db)
|
|
801
863
|
py_db.on_breakpoints_changed()
|
|
802
864
|
else:
|
|
803
865
|
raise NameError(breakpoint_type)
|
|
@@ -830,9 +892,9 @@ class PyDevdAPI(object):
|
|
|
830
892
|
supported_type = plugin.remove_exception_breakpoint(py_db, exception_type, exception)
|
|
831
893
|
|
|
832
894
|
if supported_type:
|
|
833
|
-
py_db.has_plugin_exception_breaks = py_db.plugin.has_exception_breaks()
|
|
895
|
+
py_db.has_plugin_exception_breaks = py_db.plugin.has_exception_breaks(py_db)
|
|
834
896
|
else:
|
|
835
|
-
pydev_log.info(
|
|
897
|
+
pydev_log.info("No exception of type: %s was previously registered.", exception_type)
|
|
836
898
|
|
|
837
899
|
py_db.on_breakpoints_changed(removed=True)
|
|
838
900
|
|
|
@@ -847,9 +909,9 @@ class PyDevdAPI(object):
|
|
|
847
909
|
py_db.on_breakpoints_changed(removed=True)
|
|
848
910
|
|
|
849
911
|
def set_project_roots(self, py_db, project_roots):
|
|
850
|
-
|
|
912
|
+
"""
|
|
851
913
|
:param str project_roots:
|
|
852
|
-
|
|
914
|
+
"""
|
|
853
915
|
py_db.set_project_roots(project_roots)
|
|
854
916
|
|
|
855
917
|
def set_stepping_resumes_all_threads(self, py_db, stepping_resumes_all_threads):
|
|
@@ -859,27 +921,25 @@ class PyDevdAPI(object):
|
|
|
859
921
|
from _pydevd_bundle.pydevd_filtering import ExcludeFilter # noqa
|
|
860
922
|
|
|
861
923
|
def set_exclude_filters(self, py_db, exclude_filters):
|
|
862
|
-
|
|
924
|
+
"""
|
|
863
925
|
:param list(PyDevdAPI.ExcludeFilter) exclude_filters:
|
|
864
|
-
|
|
926
|
+
"""
|
|
865
927
|
py_db.set_exclude_filters(exclude_filters)
|
|
866
928
|
|
|
867
929
|
def set_use_libraries_filter(self, py_db, use_libraries_filter):
|
|
868
930
|
py_db.set_use_libraries_filter(use_libraries_filter)
|
|
869
931
|
|
|
870
932
|
def request_get_variable_json(self, py_db, request, thread_id):
|
|
871
|
-
|
|
933
|
+
"""
|
|
872
934
|
:param VariablesRequest request:
|
|
873
|
-
|
|
874
|
-
py_db.post_method_as_internal_command(
|
|
875
|
-
thread_id, internal_get_variable_json, request)
|
|
935
|
+
"""
|
|
936
|
+
py_db.post_method_as_internal_command(thread_id, internal_get_variable_json, request)
|
|
876
937
|
|
|
877
938
|
def request_change_variable_json(self, py_db, request, thread_id):
|
|
878
|
-
|
|
939
|
+
"""
|
|
879
940
|
:param SetVariableRequest request:
|
|
880
|
-
|
|
881
|
-
py_db.post_method_as_internal_command(
|
|
882
|
-
thread_id, internal_change_variable_json, request)
|
|
941
|
+
"""
|
|
942
|
+
py_db.post_method_as_internal_command(thread_id, internal_change_variable_json, request)
|
|
883
943
|
|
|
884
944
|
def set_dont_trace_start_end_patterns(self, py_db, start_patterns, end_patterns):
|
|
885
945
|
# Note: start/end patterns normalized internally.
|
|
@@ -889,8 +949,7 @@ class PyDevdAPI(object):
|
|
|
889
949
|
# After it's set the first time, we can still change it, but we need to reset the
|
|
890
950
|
# related caches.
|
|
891
951
|
reset_caches = False
|
|
892
|
-
dont_trace_start_end_patterns_previously_set =
|
|
893
|
-
py_db.dont_trace_external_files.__name__ == 'custom_dont_trace_external_files'
|
|
952
|
+
dont_trace_start_end_patterns_previously_set = py_db.dont_trace_external_files.__name__ == "custom_dont_trace_external_files"
|
|
894
953
|
|
|
895
954
|
if not dont_trace_start_end_patterns_previously_set and not start_patterns and not end_patterns:
|
|
896
955
|
# If it wasn't set previously and start and end patterns are empty we don't need to do anything.
|
|
@@ -899,8 +958,10 @@ class PyDevdAPI(object):
|
|
|
899
958
|
if not py_db.is_cache_file_type_empty():
|
|
900
959
|
# i.e.: custom function set in set_dont_trace_start_end_patterns.
|
|
901
960
|
if dont_trace_start_end_patterns_previously_set:
|
|
902
|
-
reset_caches =
|
|
903
|
-
py_db.dont_trace_external_files.
|
|
961
|
+
reset_caches = (
|
|
962
|
+
py_db.dont_trace_external_files.start_patterns != start_patterns
|
|
963
|
+
or py_db.dont_trace_external_files.end_patterns != end_patterns
|
|
964
|
+
)
|
|
904
965
|
|
|
905
966
|
else:
|
|
906
967
|
reset_caches = True
|
|
@@ -919,11 +980,15 @@ class PyDevdAPI(object):
|
|
|
919
980
|
def stop_on_entry(self):
|
|
920
981
|
main_thread = pydevd_utils.get_main_thread()
|
|
921
982
|
if main_thread is None:
|
|
922
|
-
pydev_log.critical(
|
|
983
|
+
pydev_log.critical("Could not find main thread while setting Stop on Entry.")
|
|
923
984
|
else:
|
|
924
985
|
info = set_additional_thread_info(main_thread)
|
|
925
986
|
info.pydev_original_step_cmd = CMD_STOP_ON_START
|
|
926
987
|
info.pydev_step_cmd = CMD_STEP_INTO_MY_CODE
|
|
988
|
+
info.update_stepping_info()
|
|
989
|
+
if PYDEVD_USE_SYS_MONITORING:
|
|
990
|
+
pydevd_sys_monitoring.update_monitor_events(suspend_requested=True)
|
|
991
|
+
pydevd_sys_monitoring.restart_events()
|
|
927
992
|
|
|
928
993
|
def set_ignore_system_exit_codes(self, py_db, ignore_system_exit_codes):
|
|
929
994
|
py_db.set_ignore_system_exit_codes(ignore_system_exit_codes)
|
|
@@ -931,7 +996,7 @@ class PyDevdAPI(object):
|
|
|
931
996
|
SourceMappingEntry = pydevd_source_mapping.SourceMappingEntry
|
|
932
997
|
|
|
933
998
|
def set_source_mapping(self, py_db, source_filename, mapping):
|
|
934
|
-
|
|
999
|
+
"""
|
|
935
1000
|
:param str source_filename:
|
|
936
1001
|
The filename for the source mapping (bytes on py2 and str on py3).
|
|
937
1002
|
This filename will be made absolute in this function.
|
|
@@ -942,7 +1007,7 @@ class PyDevdAPI(object):
|
|
|
942
1007
|
:return str:
|
|
943
1008
|
An error message if it was not possible to set the mapping or an empty string if
|
|
944
1009
|
everything is ok.
|
|
945
|
-
|
|
1010
|
+
"""
|
|
946
1011
|
source_filename = self.filename_to_server(source_filename)
|
|
947
1012
|
absolute_source_filename = pydevd_file_utils.absolute_path(source_filename)
|
|
948
1013
|
for map_entry in mapping:
|
|
@@ -952,16 +1017,16 @@ class PyDevdAPI(object):
|
|
|
952
1017
|
return error_msg
|
|
953
1018
|
|
|
954
1019
|
self.reapply_breakpoints(py_db)
|
|
955
|
-
return
|
|
1020
|
+
return ""
|
|
956
1021
|
|
|
957
1022
|
def set_variable_presentation(self, py_db, variable_presentation):
|
|
958
1023
|
assert isinstance(variable_presentation, self.VariablePresentation)
|
|
959
1024
|
py_db.variable_presentation = variable_presentation
|
|
960
1025
|
|
|
961
1026
|
def get_ppid(self):
|
|
962
|
-
|
|
1027
|
+
"""
|
|
963
1028
|
Provides the parent pid (even for older versions of Python on Windows).
|
|
964
|
-
|
|
1029
|
+
"""
|
|
965
1030
|
ppid = None
|
|
966
1031
|
|
|
967
1032
|
try:
|
|
@@ -985,7 +1050,6 @@ class PyDevdAPI(object):
|
|
|
985
1050
|
def _terminate_child_processes_windows(self, dont_terminate_child_pids):
|
|
986
1051
|
this_pid = os.getpid()
|
|
987
1052
|
for _ in range(50): # Try this at most 50 times before giving up.
|
|
988
|
-
|
|
989
1053
|
# Note: we can't kill the process itself with taskkill, so, we
|
|
990
1054
|
# list immediate children, kill that tree and then exit this process.
|
|
991
1055
|
|
|
@@ -999,11 +1063,7 @@ class PyDevdAPI(object):
|
|
|
999
1063
|
break
|
|
1000
1064
|
else:
|
|
1001
1065
|
for pid in children_pids:
|
|
1002
|
-
self._call(
|
|
1003
|
-
['taskkill', '/F', '/PID', str(pid), '/T'],
|
|
1004
|
-
stdout=subprocess.PIPE,
|
|
1005
|
-
stderr=subprocess.PIPE
|
|
1006
|
-
)
|
|
1066
|
+
self._call(["taskkill", "/F", "/PID", str(pid), "/T"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
1007
1067
|
|
|
1008
1068
|
del children_pids[:]
|
|
1009
1069
|
|
|
@@ -1014,22 +1074,14 @@ class PyDevdAPI(object):
|
|
|
1014
1074
|
children_pids = []
|
|
1015
1075
|
if stop:
|
|
1016
1076
|
# Ask to stop forking (shouldn't be called for this process, only subprocesses).
|
|
1017
|
-
self._call(
|
|
1018
|
-
['kill', '-STOP', str(initial_pid)],
|
|
1019
|
-
stdout=subprocess.PIPE,
|
|
1020
|
-
stderr=subprocess.PIPE
|
|
1021
|
-
)
|
|
1077
|
+
self._call(["kill", "-STOP", str(initial_pid)], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
1022
1078
|
|
|
1023
|
-
list_popen = self._popen(
|
|
1024
|
-
['pgrep', '-P', str(initial_pid)],
|
|
1025
|
-
stdout=subprocess.PIPE,
|
|
1026
|
-
stderr=subprocess.PIPE
|
|
1027
|
-
)
|
|
1079
|
+
list_popen = self._popen(["pgrep", "-P", str(initial_pid)], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
1028
1080
|
|
|
1029
1081
|
if list_popen is not None:
|
|
1030
1082
|
stdout, _ = list_popen.communicate()
|
|
1031
1083
|
for line in stdout.splitlines():
|
|
1032
|
-
line = line.decode(
|
|
1084
|
+
line = line.decode("ascii").strip()
|
|
1033
1085
|
if line:
|
|
1034
1086
|
pid = str(line)
|
|
1035
1087
|
if pid in dont_terminate_child_pids:
|
|
@@ -1042,7 +1094,6 @@ class PyDevdAPI(object):
|
|
|
1042
1094
|
previously_found = set()
|
|
1043
1095
|
|
|
1044
1096
|
for _ in range(50): # Try this at most 50 times before giving up.
|
|
1045
|
-
|
|
1046
1097
|
children_pids = list_children_and_stop_forking(this_pid, stop=False)
|
|
1047
1098
|
found_new = False
|
|
1048
1099
|
|
|
@@ -1050,11 +1101,7 @@ class PyDevdAPI(object):
|
|
|
1050
1101
|
if pid not in previously_found:
|
|
1051
1102
|
found_new = True
|
|
1052
1103
|
previously_found.add(pid)
|
|
1053
|
-
self._call(
|
|
1054
|
-
['kill', '-KILL', str(pid)],
|
|
1055
|
-
stdout=subprocess.PIPE,
|
|
1056
|
-
stderr=subprocess.PIPE
|
|
1057
|
-
)
|
|
1104
|
+
self._call(["kill", "-KILL", str(pid)], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
1058
1105
|
|
|
1059
1106
|
if not found_new:
|
|
1060
1107
|
break
|
|
@@ -1064,7 +1111,7 @@ class PyDevdAPI(object):
|
|
|
1064
1111
|
return subprocess.Popen(cmdline, **kwargs)
|
|
1065
1112
|
except:
|
|
1066
1113
|
if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 1:
|
|
1067
|
-
pydev_log.exception(
|
|
1114
|
+
pydev_log.exception("Error running: %s" % (" ".join(cmdline)))
|
|
1068
1115
|
return None
|
|
1069
1116
|
|
|
1070
1117
|
def _call(self, cmdline, **kwargs):
|
|
@@ -1072,7 +1119,7 @@ class PyDevdAPI(object):
|
|
|
1072
1119
|
subprocess.check_call(cmdline, **kwargs)
|
|
1073
1120
|
except:
|
|
1074
1121
|
if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 1:
|
|
1075
|
-
pydev_log.exception(
|
|
1122
|
+
pydev_log.exception("Error running: %s" % (" ".join(cmdline)))
|
|
1076
1123
|
|
|
1077
1124
|
def set_terminate_child_processes(self, py_db, terminate_child_processes):
|
|
1078
1125
|
py_db.terminate_child_processes = terminate_child_processes
|
|
@@ -1081,19 +1128,19 @@ class PyDevdAPI(object):
|
|
|
1081
1128
|
py_db.terminate_keyboard_interrupt = terminate_keyboard_interrupt
|
|
1082
1129
|
|
|
1083
1130
|
def terminate_process(self, py_db):
|
|
1084
|
-
|
|
1131
|
+
"""
|
|
1085
1132
|
Terminates the current process (and child processes if the option to also terminate
|
|
1086
1133
|
child processes is enabled).
|
|
1087
|
-
|
|
1134
|
+
"""
|
|
1088
1135
|
try:
|
|
1089
1136
|
if py_db.terminate_child_processes:
|
|
1090
|
-
pydev_log.debug(
|
|
1137
|
+
pydev_log.debug("Terminating child processes.")
|
|
1091
1138
|
if IS_WINDOWS:
|
|
1092
1139
|
self._terminate_child_processes_windows(py_db.dont_terminate_child_pids)
|
|
1093
1140
|
else:
|
|
1094
1141
|
self._terminate_child_processes_linux_and_mac(py_db.dont_terminate_child_pids)
|
|
1095
1142
|
finally:
|
|
1096
|
-
pydev_log.debug(
|
|
1143
|
+
pydev_log.debug("Exiting process (os._exit(0)).")
|
|
1097
1144
|
os._exit(0)
|
|
1098
1145
|
|
|
1099
1146
|
def _terminate_if_commands_processed(self, py_db):
|
|
@@ -1120,16 +1167,18 @@ def _list_ppid_and_pid():
|
|
|
1120
1167
|
_TH32CS_SNAPPROCESS = 0x00000002
|
|
1121
1168
|
|
|
1122
1169
|
class PROCESSENTRY32(ctypes.Structure):
|
|
1123
|
-
_fields_ = [
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1170
|
+
_fields_ = [
|
|
1171
|
+
("dwSize", ctypes.c_uint32),
|
|
1172
|
+
("cntUsage", ctypes.c_uint32),
|
|
1173
|
+
("th32ProcessID", ctypes.c_uint32),
|
|
1174
|
+
("th32DefaultHeapID", ctypes.c_size_t),
|
|
1175
|
+
("th32ModuleID", ctypes.c_uint32),
|
|
1176
|
+
("cntThreads", ctypes.c_uint32),
|
|
1177
|
+
("th32ParentProcessID", ctypes.c_uint32),
|
|
1178
|
+
("pcPriClassBase", ctypes.c_long),
|
|
1179
|
+
("dwFlags", ctypes.c_uint32),
|
|
1180
|
+
("szExeFile", ctypes.c_char * 260),
|
|
1181
|
+
]
|
|
1133
1182
|
|
|
1134
1183
|
kernel32 = ctypes.windll.kernel32
|
|
1135
1184
|
snapshot = kernel32.CreateToolhelp32Snapshot(_TH32CS_SNAPPROCESS, 0)
|
|
@@ -1138,7 +1187,7 @@ def _list_ppid_and_pid():
|
|
|
1138
1187
|
process_entry = PROCESSENTRY32()
|
|
1139
1188
|
process_entry.dwSize = ctypes.sizeof(PROCESSENTRY32)
|
|
1140
1189
|
if not kernel32.Process32First(ctypes.c_void_p(snapshot), ctypes.byref(process_entry)):
|
|
1141
|
-
pydev_log.critical(
|
|
1190
|
+
pydev_log.critical("Process32First failed (getting process from CreateToolhelp32Snapshot).")
|
|
1142
1191
|
else:
|
|
1143
1192
|
while True:
|
|
1144
1193
|
ppid_and_pids.append((process_entry.th32ParentProcessID, process_entry.th32ProcessID))
|