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
|
@@ -2,8 +2,7 @@ import inspect
|
|
|
2
2
|
|
|
3
3
|
from _pydev_bundle import pydev_log
|
|
4
4
|
from _pydevd_bundle.pydevd_comm import CMD_SET_BREAK, CMD_ADD_EXCEPTION_BREAK
|
|
5
|
-
from _pydevd_bundle.pydevd_constants import STATE_SUSPEND, DJANGO_SUSPEND,
|
|
6
|
-
DebugInfoHolder
|
|
5
|
+
from _pydevd_bundle.pydevd_constants import STATE_SUSPEND, DJANGO_SUSPEND, DebugInfoHolder
|
|
7
6
|
from _pydevd_bundle.pydevd_frame_utils import add_exception_to_frame, FCode, just_raised, ignore_exception_trace
|
|
8
7
|
from pydevd_file_utils import canonical_normalized_path, absolute_path
|
|
9
8
|
from _pydevd_bundle.pydevd_api import PyDevdAPI
|
|
@@ -15,26 +14,29 @@ IS_DJANGO19 = False
|
|
|
15
14
|
IS_DJANGO19_OR_HIGHER = False
|
|
16
15
|
try:
|
|
17
16
|
import django
|
|
17
|
+
|
|
18
18
|
version = django.VERSION
|
|
19
19
|
IS_DJANGO18 = version[0] == 1 and version[1] == 8
|
|
20
20
|
IS_DJANGO19 = version[0] == 1 and version[1] == 9
|
|
21
|
-
IS_DJANGO19_OR_HIGHER = (
|
|
21
|
+
IS_DJANGO19_OR_HIGHER = (version[0] == 1 and version[1] >= 9) or version[0] > 1
|
|
22
22
|
except:
|
|
23
23
|
pass
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class DjangoLineBreakpoint(LineBreakpointWithLazyValidation):
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
def __init__(
|
|
28
|
+
self, canonical_normalized_filename, breakpoint_id, line, condition, func_name, expression, hit_condition=None, is_logpoint=False
|
|
29
|
+
):
|
|
29
30
|
self.canonical_normalized_filename = canonical_normalized_filename
|
|
30
|
-
LineBreakpointWithLazyValidation.__init__(
|
|
31
|
+
LineBreakpointWithLazyValidation.__init__(
|
|
32
|
+
self, breakpoint_id, line, condition, func_name, expression, hit_condition=hit_condition, is_logpoint=is_logpoint
|
|
33
|
+
)
|
|
31
34
|
|
|
32
35
|
def __str__(self):
|
|
33
36
|
return "DjangoLineBreakpoint: %s-%d" % (self.canonical_normalized_filename, self.line)
|
|
34
37
|
|
|
35
38
|
|
|
36
39
|
class _DjangoValidationInfo(ValidationInfo):
|
|
37
|
-
|
|
38
40
|
@overrides(ValidationInfo._collect_valid_lines_in_template_uncached)
|
|
39
41
|
def _collect_valid_lines_in_template_uncached(self, template):
|
|
40
42
|
lines = set()
|
|
@@ -47,7 +49,7 @@ class _DjangoValidationInfo(ValidationInfo):
|
|
|
47
49
|
return lines
|
|
48
50
|
|
|
49
51
|
def _get_lineno(self, node):
|
|
50
|
-
if hasattr(node,
|
|
52
|
+
if hasattr(node, "token") and hasattr(node.token, "lineno"):
|
|
51
53
|
return node.token.lineno
|
|
52
54
|
return None
|
|
53
55
|
|
|
@@ -68,10 +70,32 @@ class _DjangoValidationInfo(ValidationInfo):
|
|
|
68
70
|
yield node
|
|
69
71
|
|
|
70
72
|
|
|
71
|
-
def add_line_breakpoint(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
def add_line_breakpoint(
|
|
74
|
+
pydb,
|
|
75
|
+
type,
|
|
76
|
+
canonical_normalized_filename,
|
|
77
|
+
breakpoint_id,
|
|
78
|
+
line,
|
|
79
|
+
condition,
|
|
80
|
+
expression,
|
|
81
|
+
func_name,
|
|
82
|
+
hit_condition=None,
|
|
83
|
+
is_logpoint=False,
|
|
84
|
+
add_breakpoint_result=None,
|
|
85
|
+
on_changed_breakpoint_state=None,
|
|
86
|
+
):
|
|
87
|
+
if type == "django-line":
|
|
88
|
+
django_line_breakpoint = DjangoLineBreakpoint(
|
|
89
|
+
canonical_normalized_filename,
|
|
90
|
+
breakpoint_id,
|
|
91
|
+
line,
|
|
92
|
+
condition,
|
|
93
|
+
func_name,
|
|
94
|
+
expression,
|
|
95
|
+
hit_condition=hit_condition,
|
|
96
|
+
is_logpoint=is_logpoint,
|
|
97
|
+
)
|
|
98
|
+
if not hasattr(pydb, "django_breakpoints"):
|
|
75
99
|
_init_plugin_breaks(pydb)
|
|
76
100
|
|
|
77
101
|
if IS_DJANGO19_OR_HIGHER:
|
|
@@ -85,24 +109,25 @@ def add_line_breakpoint(plugin, pydb, type, canonical_normalized_filename, break
|
|
|
85
109
|
return None
|
|
86
110
|
|
|
87
111
|
|
|
88
|
-
def after_breakpoints_consolidated(
|
|
112
|
+
def after_breakpoints_consolidated(py_db, canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints):
|
|
89
113
|
if IS_DJANGO19_OR_HIGHER:
|
|
90
114
|
django_breakpoints_for_file = file_to_line_to_breakpoints.get(canonical_normalized_filename)
|
|
91
115
|
if not django_breakpoints_for_file:
|
|
92
116
|
return
|
|
93
117
|
|
|
94
|
-
if not hasattr(py_db,
|
|
118
|
+
if not hasattr(py_db, "django_validation_info"):
|
|
95
119
|
_init_plugin_breaks(py_db)
|
|
96
120
|
|
|
97
121
|
# In general we validate the breakpoints only when the template is loaded, but if the template
|
|
98
122
|
# was already loaded, we can validate the breakpoints based on the last loaded value.
|
|
99
123
|
py_db.django_validation_info.verify_breakpoints_from_template_cached_lines(
|
|
100
|
-
py_db, canonical_normalized_filename, django_breakpoints_for_file
|
|
124
|
+
py_db, canonical_normalized_filename, django_breakpoints_for_file
|
|
125
|
+
)
|
|
101
126
|
|
|
102
127
|
|
|
103
|
-
def add_exception_breakpoint(
|
|
104
|
-
if type ==
|
|
105
|
-
if not hasattr(pydb,
|
|
128
|
+
def add_exception_breakpoint(pydb, type, exception):
|
|
129
|
+
if type == "django":
|
|
130
|
+
if not hasattr(pydb, "django_exception_break"):
|
|
106
131
|
_init_plugin_breaks(pydb)
|
|
107
132
|
pydb.django_exception_break[exception] = True
|
|
108
133
|
return True
|
|
@@ -116,25 +141,25 @@ def _init_plugin_breaks(pydb):
|
|
|
116
141
|
pydb.django_validation_info = _DjangoValidationInfo()
|
|
117
142
|
|
|
118
143
|
|
|
119
|
-
def remove_exception_breakpoint(
|
|
120
|
-
if
|
|
144
|
+
def remove_exception_breakpoint(pydb, exception_type, exception):
|
|
145
|
+
if exception_type == "django":
|
|
121
146
|
try:
|
|
122
147
|
del pydb.django_exception_break[exception]
|
|
123
148
|
return True
|
|
124
|
-
except:
|
|
149
|
+
except KeyError:
|
|
125
150
|
pass
|
|
126
151
|
return False
|
|
127
152
|
|
|
128
153
|
|
|
129
|
-
def remove_all_exception_breakpoints(
|
|
130
|
-
if hasattr(pydb,
|
|
154
|
+
def remove_all_exception_breakpoints(pydb):
|
|
155
|
+
if hasattr(pydb, "django_exception_break"):
|
|
131
156
|
pydb.django_exception_break = {}
|
|
132
157
|
return True
|
|
133
158
|
return False
|
|
134
159
|
|
|
135
160
|
|
|
136
|
-
def get_breakpoints(
|
|
137
|
-
if
|
|
161
|
+
def get_breakpoints(pydb, breakpoint_type):
|
|
162
|
+
if breakpoint_type == "django-line":
|
|
138
163
|
return pydb.django_breakpoints
|
|
139
164
|
return None
|
|
140
165
|
|
|
@@ -150,21 +175,21 @@ def _inherits(cls, *names):
|
|
|
150
175
|
return inherits_node
|
|
151
176
|
|
|
152
177
|
|
|
153
|
-
_IGNORE_RENDER_OF_CLASSES = (
|
|
178
|
+
_IGNORE_RENDER_OF_CLASSES = ("TextNode", "NodeList")
|
|
154
179
|
|
|
155
180
|
|
|
156
|
-
def _is_django_render_call(frame
|
|
181
|
+
def _is_django_render_call(frame):
|
|
157
182
|
try:
|
|
158
183
|
name = frame.f_code.co_name
|
|
159
|
-
if name !=
|
|
184
|
+
if name != "render":
|
|
160
185
|
return False
|
|
161
186
|
|
|
162
|
-
if
|
|
187
|
+
if "self" not in frame.f_locals:
|
|
163
188
|
return False
|
|
164
189
|
|
|
165
|
-
cls = frame.f_locals[
|
|
190
|
+
cls = frame.f_locals["self"].__class__
|
|
166
191
|
|
|
167
|
-
inherits_node = _inherits(cls,
|
|
192
|
+
inherits_node = _inherits(cls, "Node")
|
|
168
193
|
|
|
169
194
|
if not inherits_node:
|
|
170
195
|
return False
|
|
@@ -172,9 +197,9 @@ def _is_django_render_call(frame, debug=False):
|
|
|
172
197
|
clsname = cls.__name__
|
|
173
198
|
if IS_DJANGO19:
|
|
174
199
|
# in Django 1.9 we need to save the flag that there is included template
|
|
175
|
-
if clsname ==
|
|
176
|
-
if
|
|
177
|
-
context = frame.f_locals[
|
|
200
|
+
if clsname == "IncludeNode":
|
|
201
|
+
if "context" in frame.f_locals:
|
|
202
|
+
context = frame.f_locals["context"]
|
|
178
203
|
context._has_included_template = True
|
|
179
204
|
|
|
180
205
|
return clsname not in _IGNORE_RENDER_OF_CLASSES
|
|
@@ -185,12 +210,12 @@ def _is_django_render_call(frame, debug=False):
|
|
|
185
210
|
|
|
186
211
|
def _is_django_context_get_call(frame):
|
|
187
212
|
try:
|
|
188
|
-
if
|
|
213
|
+
if "self" not in frame.f_locals:
|
|
189
214
|
return False
|
|
190
215
|
|
|
191
|
-
cls = frame.f_locals[
|
|
216
|
+
cls = frame.f_locals["self"].__class__
|
|
192
217
|
|
|
193
|
-
return _inherits(cls,
|
|
218
|
+
return _inherits(cls, "BaseContext")
|
|
194
219
|
except:
|
|
195
220
|
pydev_log.exception()
|
|
196
221
|
return False
|
|
@@ -199,16 +224,16 @@ def _is_django_context_get_call(frame):
|
|
|
199
224
|
def _is_django_resolve_call(frame):
|
|
200
225
|
try:
|
|
201
226
|
name = frame.f_code.co_name
|
|
202
|
-
if name !=
|
|
227
|
+
if name != "_resolve_lookup":
|
|
203
228
|
return False
|
|
204
229
|
|
|
205
|
-
if
|
|
230
|
+
if "self" not in frame.f_locals:
|
|
206
231
|
return False
|
|
207
232
|
|
|
208
|
-
cls = frame.f_locals[
|
|
233
|
+
cls = frame.f_locals["self"].__class__
|
|
209
234
|
|
|
210
235
|
clsname = cls.__name__
|
|
211
|
-
return clsname ==
|
|
236
|
+
return clsname == "Variable"
|
|
212
237
|
except:
|
|
213
238
|
pydev_log.exception()
|
|
214
239
|
return False
|
|
@@ -218,11 +243,11 @@ def _is_django_suspended(thread):
|
|
|
218
243
|
return thread.additional_info.suspend_type == DJANGO_SUSPEND
|
|
219
244
|
|
|
220
245
|
|
|
221
|
-
def suspend_django(
|
|
246
|
+
def suspend_django(py_db, thread, frame, cmd=CMD_SET_BREAK):
|
|
222
247
|
if frame.f_lineno is None:
|
|
223
248
|
return None
|
|
224
249
|
|
|
225
|
-
|
|
250
|
+
py_db.set_suspend(thread, cmd)
|
|
226
251
|
thread.additional_info.suspend_type = DJANGO_SUSPEND
|
|
227
252
|
|
|
228
253
|
return frame
|
|
@@ -234,14 +259,15 @@ def _find_django_render_frame(frame):
|
|
|
234
259
|
|
|
235
260
|
return frame
|
|
236
261
|
|
|
237
|
-
|
|
262
|
+
|
|
263
|
+
# =======================================================================================================================
|
|
238
264
|
# Django Frame
|
|
239
|
-
|
|
265
|
+
# =======================================================================================================================
|
|
240
266
|
|
|
241
267
|
|
|
242
268
|
def _read_file(filename):
|
|
243
269
|
# type: (str) -> str
|
|
244
|
-
f = open(filename,
|
|
270
|
+
f = open(filename, "r", encoding="utf-8", errors="replace")
|
|
245
271
|
s = f.read()
|
|
246
272
|
f.close()
|
|
247
273
|
return s
|
|
@@ -254,11 +280,11 @@ def _offset_to_line_number(text, offset):
|
|
|
254
280
|
if curOffset == len(text):
|
|
255
281
|
return -1
|
|
256
282
|
c = text[curOffset]
|
|
257
|
-
if c ==
|
|
283
|
+
if c == "\n":
|
|
258
284
|
curLine += 1
|
|
259
|
-
elif c ==
|
|
285
|
+
elif c == "\r":
|
|
260
286
|
curLine += 1
|
|
261
|
-
if curOffset < len(text) and text[curOffset + 1] ==
|
|
287
|
+
if curOffset < len(text) and text[curOffset + 1] == "\n":
|
|
262
288
|
curOffset += 1
|
|
263
289
|
|
|
264
290
|
curOffset += 1
|
|
@@ -269,18 +295,21 @@ def _offset_to_line_number(text, offset):
|
|
|
269
295
|
def _get_source_django_18_or_lower(frame):
|
|
270
296
|
# This method is usable only for the Django <= 1.8
|
|
271
297
|
try:
|
|
272
|
-
node = frame.f_locals[
|
|
273
|
-
if hasattr(node,
|
|
298
|
+
node = frame.f_locals["self"]
|
|
299
|
+
if hasattr(node, "source"):
|
|
274
300
|
return node.source
|
|
275
301
|
else:
|
|
276
302
|
if IS_DJANGO18:
|
|
277
303
|
# The debug setting was changed since Django 1.8
|
|
278
|
-
pydev_log.error_once(
|
|
279
|
-
|
|
304
|
+
pydev_log.error_once(
|
|
305
|
+
"WARNING: Template path is not available. Set the 'debug' option in the OPTIONS of a DjangoTemplates " "backend."
|
|
306
|
+
)
|
|
280
307
|
else:
|
|
281
308
|
# The debug setting for Django < 1.8
|
|
282
|
-
pydev_log.error_once(
|
|
283
|
-
|
|
309
|
+
pydev_log.error_once(
|
|
310
|
+
"WARNING: Template path is not available. Please set TEMPLATE_DEBUG=True in your settings.py to make "
|
|
311
|
+
"django template breakpoints working"
|
|
312
|
+
)
|
|
284
313
|
return None
|
|
285
314
|
|
|
286
315
|
except:
|
|
@@ -296,29 +325,27 @@ def _get_template_original_file_name_from_frame(frame):
|
|
|
296
325
|
try:
|
|
297
326
|
if IS_DJANGO19:
|
|
298
327
|
# The Node source was removed since Django 1.9
|
|
299
|
-
if
|
|
300
|
-
context = frame.f_locals[
|
|
301
|
-
if hasattr(context,
|
|
328
|
+
if "context" in frame.f_locals:
|
|
329
|
+
context = frame.f_locals["context"]
|
|
330
|
+
if hasattr(context, "_has_included_template"):
|
|
302
331
|
# if there was included template we need to inspect the previous frames and find its name
|
|
303
332
|
back = frame.f_back
|
|
304
|
-
while back is not None and frame.f_code.co_name in (
|
|
333
|
+
while back is not None and frame.f_code.co_name in ("render", "_render"):
|
|
305
334
|
locals = back.f_locals
|
|
306
|
-
if
|
|
307
|
-
self = locals[
|
|
308
|
-
if self.__class__.__name__ ==
|
|
309
|
-
hasattr(self.origin, 'name'):
|
|
335
|
+
if "self" in locals:
|
|
336
|
+
self = locals["self"]
|
|
337
|
+
if self.__class__.__name__ == "Template" and hasattr(self, "origin") and hasattr(self.origin, "name"):
|
|
310
338
|
return _convert_to_str(self.origin.name)
|
|
311
339
|
back = back.f_back
|
|
312
340
|
else:
|
|
313
|
-
if hasattr(context,
|
|
314
|
-
hasattr(context.template.origin, 'name'):
|
|
341
|
+
if hasattr(context, "template") and hasattr(context.template, "origin") and hasattr(context.template.origin, "name"):
|
|
315
342
|
return _convert_to_str(context.template.origin.name)
|
|
316
343
|
return None
|
|
317
344
|
elif IS_DJANGO19_OR_HIGHER:
|
|
318
345
|
# For Django 1.10 and later there is much simpler way to get template name
|
|
319
|
-
if
|
|
320
|
-
self = frame.f_locals[
|
|
321
|
-
if hasattr(self,
|
|
346
|
+
if "self" in frame.f_locals:
|
|
347
|
+
self = frame.f_locals["self"]
|
|
348
|
+
if hasattr(self, "origin") and hasattr(self.origin, "name"):
|
|
322
349
|
return _convert_to_str(self.origin.name)
|
|
323
350
|
return None
|
|
324
351
|
|
|
@@ -328,21 +355,21 @@ def _get_template_original_file_name_from_frame(frame):
|
|
|
328
355
|
return None
|
|
329
356
|
fname = _convert_to_str(source[0].name)
|
|
330
357
|
|
|
331
|
-
if fname ==
|
|
358
|
+
if fname == "<unknown source>":
|
|
332
359
|
pydev_log.debug("Source name is %s\n" % fname)
|
|
333
360
|
return None
|
|
334
361
|
else:
|
|
335
362
|
return fname
|
|
336
363
|
except:
|
|
337
364
|
if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 2:
|
|
338
|
-
pydev_log.exception(
|
|
365
|
+
pydev_log.exception("Error getting django template filename.")
|
|
339
366
|
return None
|
|
340
367
|
|
|
341
368
|
|
|
342
369
|
def _get_template_line(frame):
|
|
343
370
|
if IS_DJANGO19_OR_HIGHER:
|
|
344
|
-
node = frame.f_locals[
|
|
345
|
-
if hasattr(node,
|
|
371
|
+
node = frame.f_locals["self"]
|
|
372
|
+
if hasattr(node, "token") and hasattr(node.token, "lineno"):
|
|
346
373
|
return node.token.lineno
|
|
347
374
|
else:
|
|
348
375
|
return None
|
|
@@ -359,13 +386,12 @@ def _get_template_line(frame):
|
|
|
359
386
|
|
|
360
387
|
|
|
361
388
|
class DjangoTemplateFrame(object):
|
|
362
|
-
|
|
363
389
|
IS_PLUGIN_FRAME = True
|
|
364
390
|
|
|
365
391
|
def __init__(self, frame):
|
|
366
392
|
original_filename = _get_template_original_file_name_from_frame(frame)
|
|
367
|
-
self._back_context = frame.f_locals[
|
|
368
|
-
self.f_code = FCode(
|
|
393
|
+
self._back_context = frame.f_locals["context"]
|
|
394
|
+
self.f_code = FCode("Django Template", original_filename)
|
|
369
395
|
self.f_lineno = _get_template_line(frame)
|
|
370
396
|
self.f_back = frame
|
|
371
397
|
self.f_globals = {}
|
|
@@ -378,7 +404,7 @@ class DjangoTemplateFrame(object):
|
|
|
378
404
|
for d in context.dicts:
|
|
379
405
|
for k, v in d.items():
|
|
380
406
|
res[k] = v
|
|
381
|
-
except
|
|
407
|
+
except AttributeError:
|
|
382
408
|
pass
|
|
383
409
|
return res
|
|
384
410
|
|
|
@@ -390,11 +416,10 @@ class DjangoTemplateFrame(object):
|
|
|
390
416
|
|
|
391
417
|
|
|
392
418
|
class DjangoTemplateSyntaxErrorFrame(object):
|
|
393
|
-
|
|
394
419
|
IS_PLUGIN_FRAME = True
|
|
395
420
|
|
|
396
421
|
def __init__(self, frame, original_filename, lineno, f_locals):
|
|
397
|
-
self.f_code = FCode(
|
|
422
|
+
self.f_code = FCode("Django TemplateSyntaxError", original_filename)
|
|
398
423
|
self.f_lineno = lineno
|
|
399
424
|
self.f_back = frame
|
|
400
425
|
self.f_globals = {}
|
|
@@ -402,12 +427,12 @@ class DjangoTemplateSyntaxErrorFrame(object):
|
|
|
402
427
|
self.f_trace = None
|
|
403
428
|
|
|
404
429
|
|
|
405
|
-
def change_variable(
|
|
430
|
+
def change_variable(frame, attr, expression, default):
|
|
406
431
|
if isinstance(frame, DjangoTemplateFrame):
|
|
407
432
|
result = eval(expression, frame.f_globals, frame.f_locals)
|
|
408
433
|
frame._change_variable(attr, result)
|
|
409
434
|
return result
|
|
410
|
-
return
|
|
435
|
+
return default
|
|
411
436
|
|
|
412
437
|
|
|
413
438
|
def _is_django_variable_does_not_exist_exception_break_context(frame):
|
|
@@ -415,102 +440,103 @@ def _is_django_variable_does_not_exist_exception_break_context(frame):
|
|
|
415
440
|
name = frame.f_code.co_name
|
|
416
441
|
except:
|
|
417
442
|
name = None
|
|
418
|
-
return name in (
|
|
443
|
+
return name in ("_resolve_lookup", "find_template")
|
|
419
444
|
|
|
420
445
|
|
|
421
446
|
def _is_ignoring_failures(frame):
|
|
422
447
|
while frame is not None:
|
|
423
|
-
if frame.f_code.co_name ==
|
|
424
|
-
ignore_failures = frame.f_locals.get(
|
|
448
|
+
if frame.f_code.co_name == "resolve":
|
|
449
|
+
ignore_failures = frame.f_locals.get("ignore_failures")
|
|
425
450
|
if ignore_failures:
|
|
426
451
|
return True
|
|
427
452
|
frame = frame.f_back
|
|
428
453
|
|
|
429
454
|
return False
|
|
430
455
|
|
|
431
|
-
|
|
456
|
+
|
|
457
|
+
# =======================================================================================================================
|
|
432
458
|
# Django Step Commands
|
|
433
|
-
|
|
459
|
+
# =======================================================================================================================
|
|
434
460
|
|
|
435
461
|
|
|
436
|
-
def can_skip(
|
|
437
|
-
if
|
|
462
|
+
def can_skip(py_db, frame):
|
|
463
|
+
if py_db.django_breakpoints:
|
|
438
464
|
if _is_django_render_call(frame):
|
|
439
465
|
return False
|
|
440
466
|
|
|
441
|
-
if
|
|
442
|
-
module_name = frame.f_globals.get(
|
|
467
|
+
if py_db.django_exception_break:
|
|
468
|
+
module_name = frame.f_globals.get("__name__", "")
|
|
443
469
|
|
|
444
|
-
if module_name ==
|
|
470
|
+
if module_name == "django.template.base":
|
|
445
471
|
# Exceptions raised at django.template.base must be checked.
|
|
446
472
|
return False
|
|
447
473
|
|
|
448
474
|
return True
|
|
449
475
|
|
|
450
476
|
|
|
451
|
-
|
|
452
|
-
|
|
477
|
+
is_tracked_frame = _is_django_render_call
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
def required_events_breakpoint():
|
|
481
|
+
return ("call",)
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
def required_events_stepping():
|
|
485
|
+
return ("call", "return")
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
def has_exception_breaks(py_db):
|
|
489
|
+
if len(py_db.django_exception_break) > 0:
|
|
453
490
|
return True
|
|
454
491
|
return False
|
|
455
492
|
|
|
456
493
|
|
|
457
|
-
def has_line_breaks(
|
|
458
|
-
for _canonical_normalized_filename, breakpoints in
|
|
494
|
+
def has_line_breaks(py_db):
|
|
495
|
+
for _canonical_normalized_filename, breakpoints in py_db.django_breakpoints.items():
|
|
459
496
|
if len(breakpoints) > 0:
|
|
460
497
|
return True
|
|
461
498
|
return False
|
|
462
499
|
|
|
463
500
|
|
|
464
|
-
def cmd_step_into(
|
|
465
|
-
info = args[2]
|
|
466
|
-
thread = args[3]
|
|
501
|
+
def cmd_step_into(py_db, frame, event, info, thread, stop_info, stop):
|
|
467
502
|
plugin_stop = False
|
|
468
503
|
if _is_django_suspended(thread):
|
|
469
|
-
stop_info[
|
|
470
|
-
plugin_stop = stop_info['django_stop']
|
|
504
|
+
plugin_stop = stop_info["django_stop"] = event == "call" and _is_django_render_call(frame)
|
|
471
505
|
stop = stop and _is_django_resolve_call(frame.f_back) and not _is_django_context_get_call(frame)
|
|
472
506
|
if stop:
|
|
473
507
|
info.pydev_django_resolve_frame = True # we remember that we've go into python code from django rendering frame
|
|
474
508
|
return stop, plugin_stop
|
|
475
509
|
|
|
476
510
|
|
|
477
|
-
def cmd_step_over(
|
|
478
|
-
info = args[2]
|
|
479
|
-
thread = args[3]
|
|
511
|
+
def cmd_step_over(py_db, frame, event, info, thread, stop_info, stop):
|
|
480
512
|
plugin_stop = False
|
|
481
513
|
if _is_django_suspended(thread):
|
|
482
|
-
stop_info[
|
|
483
|
-
plugin_stop = stop_info['django_stop']
|
|
514
|
+
plugin_stop = stop_info["django_stop"] = event == "call" and _is_django_render_call(frame)
|
|
484
515
|
stop = False
|
|
485
516
|
return stop, plugin_stop
|
|
486
517
|
else:
|
|
487
|
-
if event ==
|
|
518
|
+
if event == "return" and info.pydev_django_resolve_frame and _is_django_resolve_call(frame.f_back):
|
|
488
519
|
# we return to Django suspend mode and should not stop before django rendering frame
|
|
489
520
|
info.pydev_step_stop = frame.f_back
|
|
490
521
|
info.pydev_django_resolve_frame = False
|
|
491
522
|
thread.additional_info.suspend_type = DJANGO_SUSPEND
|
|
492
|
-
stop = info.pydev_step_stop is frame and event in (
|
|
523
|
+
stop = info.pydev_step_stop is frame and event in ("line", "return")
|
|
493
524
|
return stop, plugin_stop
|
|
494
525
|
|
|
495
526
|
|
|
496
|
-
def stop(
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
if 'django_stop' in stop_info and stop_info['django_stop']:
|
|
500
|
-
frame = suspend_django(main_debugger, thread, DjangoTemplateFrame(frame), step_cmd)
|
|
527
|
+
def stop(py_db, frame, event, thread, stop_info, arg, step_cmd):
|
|
528
|
+
if "django_stop" in stop_info and stop_info["django_stop"]:
|
|
529
|
+
frame = suspend_django(py_db, thread, DjangoTemplateFrame(frame), step_cmd)
|
|
501
530
|
if frame:
|
|
502
|
-
|
|
531
|
+
py_db.do_wait_suspend(thread, frame, event, arg)
|
|
503
532
|
return True
|
|
504
533
|
return False
|
|
505
534
|
|
|
506
535
|
|
|
507
|
-
def get_breakpoint(
|
|
508
|
-
|
|
509
|
-
_filename = args[1]
|
|
510
|
-
info = args[2]
|
|
511
|
-
breakpoint_type = 'django'
|
|
536
|
+
def get_breakpoint(py_db, frame, event, info):
|
|
537
|
+
breakpoint_type = "django"
|
|
512
538
|
|
|
513
|
-
if event ==
|
|
539
|
+
if event == "call" and info.pydev_state != STATE_SUSPEND and py_db.django_breakpoints and _is_django_render_call(frame):
|
|
514
540
|
original_filename = _get_template_original_file_name_from_frame(frame)
|
|
515
541
|
pydev_log.debug("Django is rendering a template: %s", original_filename)
|
|
516
542
|
|
|
@@ -518,13 +544,14 @@ def get_breakpoint(plugin, py_db, pydb_frame, frame, event, args):
|
|
|
518
544
|
django_breakpoints_for_file = py_db.django_breakpoints.get(canonical_normalized_filename)
|
|
519
545
|
|
|
520
546
|
if django_breakpoints_for_file:
|
|
521
|
-
|
|
522
547
|
# At this point, let's validate whether template lines are correct.
|
|
523
548
|
if IS_DJANGO19_OR_HIGHER:
|
|
524
549
|
django_validation_info = py_db.django_validation_info
|
|
525
|
-
context = frame.f_locals[
|
|
550
|
+
context = frame.f_locals["context"]
|
|
526
551
|
django_template = context.template
|
|
527
|
-
django_validation_info.verify_breakpoints(
|
|
552
|
+
django_validation_info.verify_breakpoints(
|
|
553
|
+
py_db, canonical_normalized_filename, django_breakpoints_for_file, django_template
|
|
554
|
+
)
|
|
528
555
|
|
|
529
556
|
pydev_log.debug("Breakpoints for that file: %s", django_breakpoints_for_file)
|
|
530
557
|
template_line = _get_template_line(frame)
|
|
@@ -533,14 +560,14 @@ def get_breakpoint(plugin, py_db, pydb_frame, frame, event, args):
|
|
|
533
560
|
if template_line in django_breakpoints_for_file:
|
|
534
561
|
django_breakpoint = django_breakpoints_for_file[template_line]
|
|
535
562
|
new_frame = DjangoTemplateFrame(frame)
|
|
536
|
-
return
|
|
563
|
+
return django_breakpoint, new_frame, breakpoint_type
|
|
537
564
|
|
|
538
|
-
return
|
|
565
|
+
return None
|
|
539
566
|
|
|
540
567
|
|
|
541
|
-
def suspend(
|
|
542
|
-
if bp_type ==
|
|
543
|
-
return suspend_django(
|
|
568
|
+
def suspend(py_db, thread, frame, bp_type):
|
|
569
|
+
if bp_type == "django":
|
|
570
|
+
return suspend_django(py_db, thread, DjangoTemplateFrame(frame))
|
|
544
571
|
return None
|
|
545
572
|
|
|
546
573
|
|
|
@@ -552,60 +579,59 @@ def _get_original_filename_from_origin_in_parent_frame_locals(frame, parent_fram
|
|
|
552
579
|
|
|
553
580
|
origin = None
|
|
554
581
|
if parent_frame is not None:
|
|
555
|
-
origin = parent_frame.f_locals.get(
|
|
582
|
+
origin = parent_frame.f_locals.get("origin")
|
|
556
583
|
|
|
557
|
-
if hasattr(origin,
|
|
584
|
+
if hasattr(origin, "name") and origin.name is not None:
|
|
558
585
|
filename = _convert_to_str(origin.name)
|
|
559
586
|
return filename
|
|
560
587
|
|
|
561
588
|
|
|
562
|
-
def exception_break(
|
|
563
|
-
main_debugger = args[0]
|
|
564
|
-
thread = args[3]
|
|
589
|
+
def exception_break(py_db, frame, thread, arg):
|
|
565
590
|
exception, value, trace = arg
|
|
566
591
|
|
|
567
|
-
if
|
|
568
|
-
if
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
592
|
+
if py_db.django_exception_break and exception is not None:
|
|
593
|
+
if (
|
|
594
|
+
exception.__name__ in ["VariableDoesNotExist", "TemplateDoesNotExist", "TemplateSyntaxError"]
|
|
595
|
+
and just_raised(trace)
|
|
596
|
+
and not ignore_exception_trace(trace)
|
|
597
|
+
):
|
|
598
|
+
if exception.__name__ == "TemplateSyntaxError":
|
|
572
599
|
# In this case we don't actually have a regular render frame with the context
|
|
573
600
|
# (we didn't really get to that point).
|
|
574
|
-
token = getattr(value,
|
|
601
|
+
token = getattr(value, "token", None)
|
|
575
602
|
|
|
576
603
|
if token is None:
|
|
577
604
|
# Django 1.7 does not have token in exception. Try to get it from locals.
|
|
578
|
-
token = frame.f_locals.get(
|
|
605
|
+
token = frame.f_locals.get("token")
|
|
579
606
|
|
|
580
|
-
lineno = getattr(token,
|
|
607
|
+
lineno = getattr(token, "lineno", None)
|
|
581
608
|
|
|
582
609
|
original_filename = None
|
|
583
610
|
if lineno is not None:
|
|
584
|
-
original_filename = _get_original_filename_from_origin_in_parent_frame_locals(frame,
|
|
611
|
+
original_filename = _get_original_filename_from_origin_in_parent_frame_locals(frame, "get_template")
|
|
585
612
|
|
|
586
613
|
if original_filename is None:
|
|
587
614
|
# Django 1.7 does not have origin in get_template. Try to get it from
|
|
588
615
|
# load_template.
|
|
589
|
-
original_filename = _get_original_filename_from_origin_in_parent_frame_locals(frame,
|
|
616
|
+
original_filename = _get_original_filename_from_origin_in_parent_frame_locals(frame, "load_template")
|
|
590
617
|
|
|
591
618
|
if original_filename is not None and lineno is not None:
|
|
592
619
|
syntax_error_frame = DjangoTemplateSyntaxErrorFrame(
|
|
593
|
-
frame, original_filename, lineno, {
|
|
620
|
+
frame, original_filename, lineno, {"token": token, "exception": exception}
|
|
621
|
+
)
|
|
594
622
|
|
|
595
|
-
suspend_frame = suspend_django(
|
|
596
|
-
main_debugger, thread, syntax_error_frame, CMD_ADD_EXCEPTION_BREAK)
|
|
623
|
+
suspend_frame = suspend_django(py_db, thread, syntax_error_frame, CMD_ADD_EXCEPTION_BREAK)
|
|
597
624
|
return True, suspend_frame
|
|
598
625
|
|
|
599
|
-
elif exception.__name__ ==
|
|
626
|
+
elif exception.__name__ == "VariableDoesNotExist":
|
|
600
627
|
if _is_django_variable_does_not_exist_exception_break_context(frame):
|
|
601
|
-
if not getattr(exception,
|
|
628
|
+
if not getattr(exception, "silent_variable_failure", False) and not _is_ignoring_failures(frame):
|
|
602
629
|
render_frame = _find_django_render_frame(frame)
|
|
603
630
|
if render_frame:
|
|
604
|
-
suspend_frame = suspend_django(
|
|
605
|
-
main_debugger, thread, DjangoTemplateFrame(render_frame), CMD_ADD_EXCEPTION_BREAK)
|
|
631
|
+
suspend_frame = suspend_django(py_db, thread, DjangoTemplateFrame(render_frame), CMD_ADD_EXCEPTION_BREAK)
|
|
606
632
|
if suspend_frame:
|
|
607
633
|
add_exception_to_frame(suspend_frame, (exception, value, trace))
|
|
608
|
-
thread.additional_info.pydev_message =
|
|
634
|
+
thread.additional_info.pydev_message = "VariableDoesNotExist"
|
|
609
635
|
suspend_frame.f_back = frame
|
|
610
636
|
frame = suspend_frame
|
|
611
637
|
return True, frame
|