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
|
@@ -9,17 +9,19 @@ from _pydevd_bundle.pydevd_api import PyDevdAPI
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class Jinja2LineBreakpoint(LineBreakpointWithLazyValidation):
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
def __init__(
|
|
13
|
+
self, canonical_normalized_filename, breakpoint_id, line, condition, func_name, expression, hit_condition=None, is_logpoint=False
|
|
14
|
+
):
|
|
14
15
|
self.canonical_normalized_filename = canonical_normalized_filename
|
|
15
|
-
LineBreakpointWithLazyValidation.__init__(
|
|
16
|
+
LineBreakpointWithLazyValidation.__init__(
|
|
17
|
+
self, breakpoint_id, line, condition, func_name, expression, hit_condition=hit_condition, is_logpoint=is_logpoint
|
|
18
|
+
)
|
|
16
19
|
|
|
17
20
|
def __str__(self):
|
|
18
21
|
return "Jinja2LineBreakpoint: %s-%d" % (self.canonical_normalized_filename, self.line)
|
|
19
22
|
|
|
20
23
|
|
|
21
24
|
class _Jinja2ValidationInfo(ValidationInfo):
|
|
22
|
-
|
|
23
25
|
@overrides(ValidationInfo._collect_valid_lines_in_template_uncached)
|
|
24
26
|
def _collect_valid_lines_in_template_uncached(self, template):
|
|
25
27
|
lineno_mapping = _get_frame_lineno_mapping(template)
|
|
@@ -29,10 +31,32 @@ class _Jinja2ValidationInfo(ValidationInfo):
|
|
|
29
31
|
return set(x[0] for x in lineno_mapping)
|
|
30
32
|
|
|
31
33
|
|
|
32
|
-
def add_line_breakpoint(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
def add_line_breakpoint(
|
|
35
|
+
pydb,
|
|
36
|
+
type,
|
|
37
|
+
canonical_normalized_filename,
|
|
38
|
+
breakpoint_id,
|
|
39
|
+
line,
|
|
40
|
+
condition,
|
|
41
|
+
expression,
|
|
42
|
+
func_name,
|
|
43
|
+
hit_condition=None,
|
|
44
|
+
is_logpoint=False,
|
|
45
|
+
add_breakpoint_result=None,
|
|
46
|
+
on_changed_breakpoint_state=None,
|
|
47
|
+
):
|
|
48
|
+
if type == "jinja2-line":
|
|
49
|
+
jinja2_line_breakpoint = Jinja2LineBreakpoint(
|
|
50
|
+
canonical_normalized_filename,
|
|
51
|
+
breakpoint_id,
|
|
52
|
+
line,
|
|
53
|
+
condition,
|
|
54
|
+
func_name,
|
|
55
|
+
expression,
|
|
56
|
+
hit_condition=hit_condition,
|
|
57
|
+
is_logpoint=is_logpoint,
|
|
58
|
+
)
|
|
59
|
+
if not hasattr(pydb, "jinja2_breakpoints"):
|
|
36
60
|
_init_plugin_breaks(pydb)
|
|
37
61
|
|
|
38
62
|
add_breakpoint_result.error_code = PyDevdAPI.ADD_BREAKPOINT_LAZY_VALIDATION
|
|
@@ -43,23 +67,24 @@ def add_line_breakpoint(plugin, pydb, type, canonical_normalized_filename, break
|
|
|
43
67
|
return None
|
|
44
68
|
|
|
45
69
|
|
|
46
|
-
def after_breakpoints_consolidated(
|
|
70
|
+
def after_breakpoints_consolidated(py_db, canonical_normalized_filename, id_to_pybreakpoint, file_to_line_to_breakpoints):
|
|
47
71
|
jinja2_breakpoints_for_file = file_to_line_to_breakpoints.get(canonical_normalized_filename)
|
|
48
72
|
if not jinja2_breakpoints_for_file:
|
|
49
73
|
return
|
|
50
74
|
|
|
51
|
-
if not hasattr(py_db,
|
|
75
|
+
if not hasattr(py_db, "jinja2_validation_info"):
|
|
52
76
|
_init_plugin_breaks(py_db)
|
|
53
77
|
|
|
54
78
|
# In general we validate the breakpoints only when the template is loaded, but if the template
|
|
55
79
|
# was already loaded, we can validate the breakpoints based on the last loaded value.
|
|
56
80
|
py_db.jinja2_validation_info.verify_breakpoints_from_template_cached_lines(
|
|
57
|
-
py_db, canonical_normalized_filename, jinja2_breakpoints_for_file
|
|
81
|
+
py_db, canonical_normalized_filename, jinja2_breakpoints_for_file
|
|
82
|
+
)
|
|
58
83
|
|
|
59
84
|
|
|
60
|
-
def add_exception_breakpoint(
|
|
61
|
-
if type ==
|
|
62
|
-
if not hasattr(pydb,
|
|
85
|
+
def add_exception_breakpoint(pydb, type, exception):
|
|
86
|
+
if type == "jinja2":
|
|
87
|
+
if not hasattr(pydb, "jinja2_exception_break"):
|
|
63
88
|
_init_plugin_breaks(pydb)
|
|
64
89
|
pydb.jinja2_exception_break[exception] = True
|
|
65
90
|
return True
|
|
@@ -73,25 +98,25 @@ def _init_plugin_breaks(pydb):
|
|
|
73
98
|
pydb.jinja2_validation_info = _Jinja2ValidationInfo()
|
|
74
99
|
|
|
75
100
|
|
|
76
|
-
def remove_all_exception_breakpoints(
|
|
77
|
-
if hasattr(pydb,
|
|
101
|
+
def remove_all_exception_breakpoints(pydb):
|
|
102
|
+
if hasattr(pydb, "jinja2_exception_break"):
|
|
78
103
|
pydb.jinja2_exception_break = {}
|
|
79
104
|
return True
|
|
80
105
|
return False
|
|
81
106
|
|
|
82
107
|
|
|
83
|
-
def remove_exception_breakpoint(
|
|
84
|
-
if
|
|
108
|
+
def remove_exception_breakpoint(pydb, exception_type, exception):
|
|
109
|
+
if exception_type == "jinja2":
|
|
85
110
|
try:
|
|
86
111
|
del pydb.jinja2_exception_break[exception]
|
|
87
112
|
return True
|
|
88
|
-
except:
|
|
113
|
+
except KeyError:
|
|
89
114
|
pass
|
|
90
115
|
return False
|
|
91
116
|
|
|
92
117
|
|
|
93
|
-
def get_breakpoints(
|
|
94
|
-
if
|
|
118
|
+
def get_breakpoints(pydb, breakpoint_type):
|
|
119
|
+
if breakpoint_type == "jinja2-line":
|
|
95
120
|
return pydb.jinja2_breakpoints
|
|
96
121
|
return None
|
|
97
122
|
|
|
@@ -134,8 +159,12 @@ def _is_jinja2_context_call(frame):
|
|
|
134
159
|
|
|
135
160
|
|
|
136
161
|
def _is_jinja2_internal_function(frame):
|
|
137
|
-
return
|
|
138
|
-
|
|
162
|
+
return "self" in frame.f_locals and frame.f_locals["self"].__class__.__name__ in (
|
|
163
|
+
"LoopContext",
|
|
164
|
+
"TemplateReference",
|
|
165
|
+
"Macro",
|
|
166
|
+
"BlockReference",
|
|
167
|
+
)
|
|
139
168
|
|
|
140
169
|
|
|
141
170
|
def _find_jinja2_render_frame(frame):
|
|
@@ -144,17 +173,16 @@ def _find_jinja2_render_frame(frame):
|
|
|
144
173
|
|
|
145
174
|
return frame
|
|
146
175
|
|
|
147
|
-
|
|
176
|
+
|
|
177
|
+
# =======================================================================================================================
|
|
148
178
|
# Jinja2 Frame
|
|
149
|
-
|
|
179
|
+
# =======================================================================================================================
|
|
150
180
|
|
|
151
181
|
|
|
152
182
|
class Jinja2TemplateFrame(object):
|
|
153
|
-
|
|
154
183
|
IS_PLUGIN_FRAME = True
|
|
155
184
|
|
|
156
185
|
def __init__(self, frame, original_filename=None, template_lineno=None):
|
|
157
|
-
|
|
158
186
|
if original_filename is None:
|
|
159
187
|
original_filename = _get_jinja2_template_original_filename(frame)
|
|
160
188
|
|
|
@@ -162,10 +190,10 @@ class Jinja2TemplateFrame(object):
|
|
|
162
190
|
template_lineno = _get_jinja2_template_line(frame)
|
|
163
191
|
|
|
164
192
|
self.back_context = None
|
|
165
|
-
if
|
|
193
|
+
if "context" in frame.f_locals:
|
|
166
194
|
# sometimes we don't have 'context', e.g. in macros
|
|
167
|
-
self.back_context = frame.f_locals[
|
|
168
|
-
self.f_code = FCode(
|
|
195
|
+
self.back_context = frame.f_locals["context"]
|
|
196
|
+
self.f_code = FCode("template", original_filename)
|
|
169
197
|
self.f_lineno = template_lineno
|
|
170
198
|
self.f_back = frame
|
|
171
199
|
self.f_globals = {}
|
|
@@ -174,7 +202,7 @@ class Jinja2TemplateFrame(object):
|
|
|
174
202
|
|
|
175
203
|
def _get_real_var_name(self, orig_name):
|
|
176
204
|
# replace leading number for local variables
|
|
177
|
-
parts = orig_name.split(
|
|
205
|
+
parts = orig_name.split("_")
|
|
178
206
|
if len(parts) > 1 and parts[0].isdigit():
|
|
179
207
|
return parts[1]
|
|
180
208
|
return orig_name
|
|
@@ -182,7 +210,7 @@ class Jinja2TemplateFrame(object):
|
|
|
182
210
|
def collect_context(self, frame):
|
|
183
211
|
res = {}
|
|
184
212
|
for k, v in frame.f_locals.items():
|
|
185
|
-
if not k.startswith(
|
|
213
|
+
if not k.startswith("l_"):
|
|
186
214
|
res[k] = v
|
|
187
215
|
elif v and not _is_missing(v):
|
|
188
216
|
res[self._get_real_var_name(k[2:])] = v
|
|
@@ -193,15 +221,15 @@ class Jinja2TemplateFrame(object):
|
|
|
193
221
|
|
|
194
222
|
def _change_variable(self, frame, name, value):
|
|
195
223
|
in_vars_or_parents = False
|
|
196
|
-
if
|
|
197
|
-
if name in frame.f_locals[
|
|
224
|
+
if "context" in frame.f_locals:
|
|
225
|
+
if name in frame.f_locals["context"].parent:
|
|
198
226
|
self.back_context.parent[name] = value
|
|
199
227
|
in_vars_or_parents = True
|
|
200
|
-
if name in frame.f_locals[
|
|
228
|
+
if name in frame.f_locals["context"].vars:
|
|
201
229
|
self.back_context.vars[name] = value
|
|
202
230
|
in_vars_or_parents = True
|
|
203
231
|
|
|
204
|
-
l_name =
|
|
232
|
+
l_name = "l_" + name
|
|
205
233
|
if l_name in frame.f_locals:
|
|
206
234
|
if in_vars_or_parents:
|
|
207
235
|
frame.f_locals[l_name] = self.back_context.resolve(name)
|
|
@@ -210,11 +238,10 @@ class Jinja2TemplateFrame(object):
|
|
|
210
238
|
|
|
211
239
|
|
|
212
240
|
class Jinja2TemplateSyntaxErrorFrame(object):
|
|
213
|
-
|
|
214
241
|
IS_PLUGIN_FRAME = True
|
|
215
242
|
|
|
216
243
|
def __init__(self, frame, exception_cls_name, filename, lineno, f_locals):
|
|
217
|
-
self.f_code = FCode(
|
|
244
|
+
self.f_code = FCode("Jinja2 %s" % (exception_cls_name,), filename)
|
|
218
245
|
self.f_lineno = lineno
|
|
219
246
|
self.f_back = frame
|
|
220
247
|
self.f_globals = {}
|
|
@@ -222,16 +249,16 @@ class Jinja2TemplateSyntaxErrorFrame(object):
|
|
|
222
249
|
self.f_trace = None
|
|
223
250
|
|
|
224
251
|
|
|
225
|
-
def change_variable(
|
|
252
|
+
def change_variable(frame, attr, expression, default):
|
|
226
253
|
if isinstance(frame, Jinja2TemplateFrame):
|
|
227
254
|
result = eval(expression, frame.f_globals, frame.f_locals)
|
|
228
255
|
frame._change_variable(frame.f_back, attr, result)
|
|
229
256
|
return result
|
|
230
|
-
return
|
|
257
|
+
return default
|
|
231
258
|
|
|
232
259
|
|
|
233
260
|
def _is_missing(item):
|
|
234
|
-
if item.__class__.__name__ ==
|
|
261
|
+
if item.__class__.__name__ == "MissingType":
|
|
235
262
|
return True
|
|
236
263
|
return False
|
|
237
264
|
|
|
@@ -240,8 +267,9 @@ def _find_render_function_frame(frame):
|
|
|
240
267
|
# in order to hide internal rendering functions
|
|
241
268
|
old_frame = frame
|
|
242
269
|
try:
|
|
243
|
-
while not (
|
|
244
|
-
|
|
270
|
+
while not (
|
|
271
|
+
"self" in frame.f_locals and frame.f_locals["self"].__class__.__name__ == "Template" and frame.f_code.co_name == "render"
|
|
272
|
+
):
|
|
245
273
|
frame = frame.f_back
|
|
246
274
|
if frame is None:
|
|
247
275
|
return old_frame
|
|
@@ -253,7 +281,7 @@ def _find_render_function_frame(frame):
|
|
|
253
281
|
def _get_jinja2_template_debug_info(frame):
|
|
254
282
|
frame_globals = frame.f_globals
|
|
255
283
|
|
|
256
|
-
jinja_template = frame_globals.get(
|
|
284
|
+
jinja_template = frame_globals.get("__jinja_template__")
|
|
257
285
|
|
|
258
286
|
if jinja_template is None:
|
|
259
287
|
return None
|
|
@@ -262,10 +290,10 @@ def _get_jinja2_template_debug_info(frame):
|
|
|
262
290
|
|
|
263
291
|
|
|
264
292
|
def _get_frame_lineno_mapping(jinja_template):
|
|
265
|
-
|
|
293
|
+
"""
|
|
266
294
|
:rtype: list(tuple(int,int))
|
|
267
295
|
:return: list((original_line, line_in_frame))
|
|
268
|
-
|
|
296
|
+
"""
|
|
269
297
|
# _debug_info is a string with the mapping from frame line to actual line
|
|
270
298
|
# i.e.: "5=13&8=14"
|
|
271
299
|
_debug_info = jinja_template._debug_info
|
|
@@ -297,30 +325,31 @@ def _convert_to_str(s):
|
|
|
297
325
|
|
|
298
326
|
|
|
299
327
|
def _get_jinja2_template_original_filename(frame):
|
|
300
|
-
if
|
|
301
|
-
return _convert_to_str(frame.f_globals[
|
|
328
|
+
if "__jinja_template__" in frame.f_globals:
|
|
329
|
+
return _convert_to_str(frame.f_globals["__jinja_template__"].filename)
|
|
302
330
|
|
|
303
331
|
return None
|
|
304
332
|
|
|
305
|
-
|
|
333
|
+
|
|
334
|
+
# =======================================================================================================================
|
|
306
335
|
# Jinja2 Step Commands
|
|
307
|
-
|
|
336
|
+
# =======================================================================================================================
|
|
308
337
|
|
|
309
338
|
|
|
310
|
-
def has_exception_breaks(
|
|
311
|
-
if len(
|
|
339
|
+
def has_exception_breaks(py_db):
|
|
340
|
+
if len(py_db.jinja2_exception_break) > 0:
|
|
312
341
|
return True
|
|
313
342
|
return False
|
|
314
343
|
|
|
315
344
|
|
|
316
|
-
def has_line_breaks(
|
|
317
|
-
for _canonical_normalized_filename, breakpoints in
|
|
345
|
+
def has_line_breaks(py_db):
|
|
346
|
+
for _canonical_normalized_filename, breakpoints in py_db.jinja2_breakpoints.items():
|
|
318
347
|
if len(breakpoints) > 0:
|
|
319
348
|
return True
|
|
320
349
|
return False
|
|
321
350
|
|
|
322
351
|
|
|
323
|
-
def can_skip(
|
|
352
|
+
def can_skip(pydb, frame):
|
|
324
353
|
if pydb.jinja2_breakpoints and _is_jinja2_render_call(frame):
|
|
325
354
|
filename = _get_jinja2_template_original_filename(frame)
|
|
326
355
|
if filename is not None:
|
|
@@ -333,39 +362,46 @@ def can_skip(plugin, pydb, frame):
|
|
|
333
362
|
name = frame.f_code.co_name
|
|
334
363
|
|
|
335
364
|
# errors in compile time
|
|
336
|
-
if name in (
|
|
365
|
+
if name in ("template", "top-level template code", "<module>") or name.startswith("block "):
|
|
337
366
|
f_back = frame.f_back
|
|
338
|
-
module_name =
|
|
367
|
+
module_name = ""
|
|
339
368
|
if f_back is not None:
|
|
340
|
-
module_name = f_back.f_globals.get(
|
|
341
|
-
if module_name.startswith(
|
|
369
|
+
module_name = f_back.f_globals.get("__name__", "")
|
|
370
|
+
if module_name.startswith("jinja2."):
|
|
342
371
|
return False
|
|
343
372
|
|
|
344
373
|
return True
|
|
345
374
|
|
|
346
375
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
376
|
+
is_tracked_frame = _is_jinja2_render_call
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
def required_events_breakpoint():
|
|
380
|
+
return ("line",)
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
def required_events_stepping():
|
|
384
|
+
return ("call", "line", "return")
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
def cmd_step_into(pydb, frame, event, info, thread, stop_info, stop):
|
|
350
388
|
plugin_stop = False
|
|
351
|
-
stop_info['jinja2_stop'] = False
|
|
352
389
|
if _is_jinja2_suspended(thread):
|
|
353
|
-
stop_info[
|
|
354
|
-
plugin_stop = stop_info['jinja2_stop']
|
|
390
|
+
plugin_stop = stop_info["jinja2_stop"] = event in ("call", "line") and _is_jinja2_render_call(frame)
|
|
355
391
|
stop = False
|
|
356
392
|
if info.pydev_call_from_jinja2 is not None:
|
|
357
393
|
if _is_jinja2_internal_function(frame):
|
|
358
|
-
# if internal Jinja2 function was called, we
|
|
394
|
+
# if internal Jinja2 function was called, we should continue debugging inside template
|
|
359
395
|
info.pydev_call_from_jinja2 = None
|
|
360
396
|
else:
|
|
361
397
|
# we go into python code from Jinja2 rendering frame
|
|
362
398
|
stop = True
|
|
363
399
|
|
|
364
|
-
if event ==
|
|
400
|
+
if event == "call" and _is_jinja2_context_call(frame.f_back):
|
|
365
401
|
# we called function from context, the next step will be in function
|
|
366
402
|
info.pydev_call_from_jinja2 = 1
|
|
367
403
|
|
|
368
|
-
if event ==
|
|
404
|
+
if event == "return" and _is_jinja2_context_call(frame.f_back):
|
|
369
405
|
# we return from python code to Jinja2 rendering frame
|
|
370
406
|
info.pydev_step_stop = info.pydev_call_from_jinja2
|
|
371
407
|
info.pydev_call_from_jinja2 = None
|
|
@@ -378,31 +414,27 @@ def cmd_step_into(plugin, pydb, frame, event, args, stop_info, stop):
|
|
|
378
414
|
return stop, plugin_stop
|
|
379
415
|
|
|
380
416
|
|
|
381
|
-
def cmd_step_over(
|
|
382
|
-
info = args[2]
|
|
383
|
-
thread = args[3]
|
|
417
|
+
def cmd_step_over(pydb, frame, event, info, thread, stop_info, stop):
|
|
384
418
|
plugin_stop = False
|
|
385
|
-
stop_info['jinja2_stop'] = False
|
|
386
419
|
if _is_jinja2_suspended(thread):
|
|
387
420
|
stop = False
|
|
388
421
|
|
|
389
422
|
if info.pydev_call_inside_jinja2 is None:
|
|
390
423
|
if _is_jinja2_render_call(frame):
|
|
391
|
-
if event ==
|
|
424
|
+
if event == "call":
|
|
392
425
|
info.pydev_call_inside_jinja2 = frame.f_back
|
|
393
|
-
if event in (
|
|
426
|
+
if event in ("line", "return"):
|
|
394
427
|
info.pydev_call_inside_jinja2 = frame
|
|
395
428
|
else:
|
|
396
|
-
if event ==
|
|
429
|
+
if event == "line":
|
|
397
430
|
if _is_jinja2_render_call(frame) and info.pydev_call_inside_jinja2 is frame:
|
|
398
|
-
stop_info[
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
if frame is info.pydev_call_inside_jinja2 and 'event' not in frame.f_back.f_locals:
|
|
431
|
+
plugin_stop = stop_info["jinja2_stop"] = True
|
|
432
|
+
if event == "return":
|
|
433
|
+
if frame is info.pydev_call_inside_jinja2 and "event" not in frame.f_back.f_locals:
|
|
402
434
|
info.pydev_call_inside_jinja2 = _find_jinja2_render_frame(frame.f_back)
|
|
403
435
|
return stop, plugin_stop
|
|
404
436
|
else:
|
|
405
|
-
if event ==
|
|
437
|
+
if event == "return" and _is_jinja2_context_call(frame.f_back):
|
|
406
438
|
# we return from python code to Jinja2 rendering frame
|
|
407
439
|
info.pydev_call_from_jinja2 = None
|
|
408
440
|
info.pydev_call_inside_jinja2 = _find_jinja2_render_frame(frame)
|
|
@@ -419,10 +451,8 @@ def cmd_step_over(plugin, pydb, frame, event, args, stop_info, stop):
|
|
|
419
451
|
return stop, plugin_stop
|
|
420
452
|
|
|
421
453
|
|
|
422
|
-
def stop(
|
|
423
|
-
|
|
424
|
-
thread = args[3]
|
|
425
|
-
if 'jinja2_stop' in stop_info and stop_info['jinja2_stop']:
|
|
454
|
+
def stop(pydb, frame, event, thread, stop_info, arg, step_cmd):
|
|
455
|
+
if "jinja2_stop" in stop_info and stop_info["jinja2_stop"]:
|
|
426
456
|
frame = _suspend_jinja2(pydb, thread, frame, step_cmd)
|
|
427
457
|
if frame:
|
|
428
458
|
pydb.do_wait_suspend(thread, frame, event, arg)
|
|
@@ -430,17 +460,13 @@ def stop(plugin, pydb, frame, event, args, stop_info, arg, step_cmd):
|
|
|
430
460
|
return False
|
|
431
461
|
|
|
432
462
|
|
|
433
|
-
def get_breakpoint(
|
|
434
|
-
|
|
435
|
-
_filename = args[1]
|
|
436
|
-
info = args[2]
|
|
437
|
-
break_type = 'jinja2'
|
|
463
|
+
def get_breakpoint(py_db, frame, event, info):
|
|
464
|
+
break_type = "jinja2"
|
|
438
465
|
|
|
439
|
-
if event ==
|
|
440
|
-
|
|
441
|
-
jinja_template = frame.f_globals.get('__jinja_template__')
|
|
466
|
+
if event == "line" and info.pydev_state != STATE_SUSPEND and py_db.jinja2_breakpoints and _is_jinja2_render_call(frame):
|
|
467
|
+
jinja_template = frame.f_globals.get("__jinja_template__")
|
|
442
468
|
if jinja_template is None:
|
|
443
|
-
return
|
|
469
|
+
return None
|
|
444
470
|
|
|
445
471
|
original_filename = _get_jinja2_template_original_filename(frame)
|
|
446
472
|
if original_filename is not None:
|
|
@@ -449,7 +475,6 @@ def get_breakpoint(plugin, py_db, pydb_frame, frame, event, args):
|
|
|
449
475
|
jinja2_breakpoints_for_file = py_db.jinja2_breakpoints.get(canonical_normalized_filename)
|
|
450
476
|
|
|
451
477
|
if jinja2_breakpoints_for_file:
|
|
452
|
-
|
|
453
478
|
jinja2_validation_info = py_db.jinja2_validation_info
|
|
454
479
|
jinja2_validation_info.verify_breakpoints(py_db, canonical_normalized_filename, jinja2_breakpoints_for_file, jinja_template)
|
|
455
480
|
|
|
@@ -458,24 +483,22 @@ def get_breakpoint(plugin, py_db, pydb_frame, frame, event, args):
|
|
|
458
483
|
jinja2_breakpoint = jinja2_breakpoints_for_file.get(template_lineno)
|
|
459
484
|
if jinja2_breakpoint is not None:
|
|
460
485
|
new_frame = Jinja2TemplateFrame(frame, original_filename, template_lineno)
|
|
461
|
-
return
|
|
486
|
+
return jinja2_breakpoint, new_frame, break_type
|
|
462
487
|
|
|
463
|
-
return
|
|
488
|
+
return None
|
|
464
489
|
|
|
465
490
|
|
|
466
|
-
def suspend(
|
|
467
|
-
if bp_type ==
|
|
491
|
+
def suspend(pydb, thread, frame, bp_type):
|
|
492
|
+
if bp_type == "jinja2":
|
|
468
493
|
return _suspend_jinja2(pydb, thread, frame)
|
|
469
494
|
return None
|
|
470
495
|
|
|
471
496
|
|
|
472
|
-
def exception_break(
|
|
473
|
-
pydb = args[0]
|
|
474
|
-
thread = args[3]
|
|
497
|
+
def exception_break(pydb, frame, thread, arg):
|
|
475
498
|
exception, value, trace = arg
|
|
476
499
|
if pydb.jinja2_exception_break and exception is not None:
|
|
477
500
|
exception_type = list(pydb.jinja2_exception_break.keys())[0]
|
|
478
|
-
if exception.__name__ in (
|
|
501
|
+
if exception.__name__ in ("UndefinedError", "TemplateNotFound", "TemplatesNotFound"):
|
|
479
502
|
# errors in rendering
|
|
480
503
|
render_frame = _find_jinja2_render_frame(frame)
|
|
481
504
|
if render_frame:
|
|
@@ -486,19 +509,18 @@ def exception_break(plugin, pydb, pydb_frame, frame, args, arg):
|
|
|
486
509
|
frame = suspend_frame
|
|
487
510
|
return True, frame
|
|
488
511
|
|
|
489
|
-
elif exception.__name__ in (
|
|
512
|
+
elif exception.__name__ in ("TemplateSyntaxError", "TemplateAssertionError"):
|
|
490
513
|
name = frame.f_code.co_name
|
|
491
514
|
|
|
492
515
|
# errors in compile time
|
|
493
|
-
if name in (
|
|
494
|
-
|
|
516
|
+
if name in ("template", "top-level template code", "<module>") or name.startswith("block "):
|
|
495
517
|
f_back = frame.f_back
|
|
496
518
|
if f_back is not None:
|
|
497
|
-
module_name = f_back.f_globals.get(
|
|
519
|
+
module_name = f_back.f_globals.get("__name__", "")
|
|
498
520
|
|
|
499
|
-
if module_name.startswith(
|
|
521
|
+
if module_name.startswith("jinja2."):
|
|
500
522
|
# Jinja2 translates exception info and creates fake frame on his own
|
|
501
|
-
|
|
523
|
+
pydb.set_suspend(thread, CMD_ADD_EXCEPTION_BREAK)
|
|
502
524
|
add_exception_to_frame(frame, (exception, value, trace))
|
|
503
525
|
thread.additional_info.suspend_type = JINJA2_SUSPEND
|
|
504
526
|
thread.additional_info.pydev_message = str(exception_type)
|
|
@@ -5,7 +5,6 @@ from _pydev_bundle import pydev_log
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class LineBreakpointWithLazyValidation(LineBreakpoint):
|
|
8
|
-
|
|
9
8
|
def __init__(self, *args, **kwargs):
|
|
10
9
|
LineBreakpoint.__init__(self, *args, **kwargs)
|
|
11
10
|
# This is the _AddBreakpointResult that'll be modified (and then re-sent on the
|
|
@@ -23,7 +22,6 @@ class LineBreakpointWithLazyValidation(LineBreakpoint):
|
|
|
23
22
|
|
|
24
23
|
|
|
25
24
|
class ValidationInfo(object):
|
|
26
|
-
|
|
27
25
|
def __init__(self):
|
|
28
26
|
self._canonical_normalized_filename_to_last_template_lines = {}
|
|
29
27
|
|
|
@@ -32,7 +30,7 @@ class ValidationInfo(object):
|
|
|
32
30
|
# template may be a different instance (because the template contents could be
|
|
33
31
|
# changed on disk), but this may still be called multiple times during the
|
|
34
32
|
# same render session, so, caching is interesting.
|
|
35
|
-
lines_cache = getattr(template,
|
|
33
|
+
lines_cache = getattr(template, "__pydevd_lines_cache__", None)
|
|
36
34
|
if lines_cache is not None:
|
|
37
35
|
lines, sorted_lines = lines_cache
|
|
38
36
|
return lines, sorted_lines
|
|
@@ -48,28 +46,34 @@ class ValidationInfo(object):
|
|
|
48
46
|
raise NotImplementedError()
|
|
49
47
|
|
|
50
48
|
def verify_breakpoints(self, py_db, canonical_normalized_filename, template_breakpoints_for_file, template):
|
|
51
|
-
|
|
49
|
+
"""
|
|
52
50
|
This function should be called whenever a rendering is detected.
|
|
53
51
|
|
|
54
52
|
:param str canonical_normalized_filename:
|
|
55
53
|
:param dict[int:LineBreakpointWithLazyValidation] template_breakpoints_for_file:
|
|
56
|
-
|
|
54
|
+
"""
|
|
57
55
|
valid_lines_frozenset, sorted_lines = self._collect_valid_lines_in_template(template)
|
|
58
56
|
|
|
59
57
|
self._canonical_normalized_filename_to_last_template_lines[canonical_normalized_filename] = valid_lines_frozenset, sorted_lines
|
|
60
|
-
self._verify_breakpoints_with_lines_collected(
|
|
58
|
+
self._verify_breakpoints_with_lines_collected(
|
|
59
|
+
py_db, canonical_normalized_filename, template_breakpoints_for_file, valid_lines_frozenset, sorted_lines
|
|
60
|
+
)
|
|
61
61
|
|
|
62
62
|
def verify_breakpoints_from_template_cached_lines(self, py_db, canonical_normalized_filename, template_breakpoints_for_file):
|
|
63
|
-
|
|
63
|
+
"""
|
|
64
64
|
This is used when the lines are already available (if just the template is available,
|
|
65
65
|
`verify_breakpoints` should be used instead).
|
|
66
|
-
|
|
66
|
+
"""
|
|
67
67
|
cached = self._canonical_normalized_filename_to_last_template_lines.get(canonical_normalized_filename)
|
|
68
68
|
if cached is not None:
|
|
69
69
|
valid_lines_frozenset, sorted_lines = cached
|
|
70
|
-
self._verify_breakpoints_with_lines_collected(
|
|
70
|
+
self._verify_breakpoints_with_lines_collected(
|
|
71
|
+
py_db, canonical_normalized_filename, template_breakpoints_for_file, valid_lines_frozenset, sorted_lines
|
|
72
|
+
)
|
|
71
73
|
|
|
72
|
-
def _verify_breakpoints_with_lines_collected(
|
|
74
|
+
def _verify_breakpoints_with_lines_collected(
|
|
75
|
+
self, py_db, canonical_normalized_filename, template_breakpoints_for_file, valid_lines_frozenset, sorted_lines
|
|
76
|
+
):
|
|
73
77
|
for line, template_bp in list(template_breakpoints_for_file.items()): # Note: iterate in a copy (we may mutate it).
|
|
74
78
|
if template_bp.verified_cache_key != valid_lines_frozenset:
|
|
75
79
|
template_bp.verified_cache_key = valid_lines_frozenset
|
|
@@ -86,8 +90,13 @@ class ValidationInfo(object):
|
|
|
86
90
|
if new_line >= 0 and new_line not in template_breakpoints_for_file:
|
|
87
91
|
# We just add it if found and if there's no existing breakpoint at that
|
|
88
92
|
# location.
|
|
89
|
-
if
|
|
90
|
-
|
|
93
|
+
if (
|
|
94
|
+
template_bp.add_breakpoint_result.error_code != PyDevdAPI.ADD_BREAKPOINT_NO_ERROR
|
|
95
|
+
and template_bp.add_breakpoint_result.translated_line != new_line
|
|
96
|
+
):
|
|
97
|
+
pydev_log.debug(
|
|
98
|
+
"Template breakpoint in %s in line: %s moved to line: %s", canonical_normalized_filename, line, new_line
|
|
99
|
+
)
|
|
91
100
|
template_bp.add_breakpoint_result.error_code = PyDevdAPI.ADD_BREAKPOINT_NO_ERROR
|
|
92
101
|
template_bp.add_breakpoint_result.translated_line = new_line
|
|
93
102
|
|
|
@@ -97,11 +106,15 @@ class ValidationInfo(object):
|
|
|
97
106
|
template_bp.on_changed_breakpoint_state(template_bp.breakpoint_id, template_bp.add_breakpoint_result)
|
|
98
107
|
else:
|
|
99
108
|
if template_bp.add_breakpoint_result.error_code != PyDevdAPI.ADD_BREAKPOINT_INVALID_LINE:
|
|
100
|
-
pydev_log.debug(
|
|
109
|
+
pydev_log.debug(
|
|
110
|
+
"Template breakpoint in %s in line: %s invalid (valid lines: %s)",
|
|
111
|
+
canonical_normalized_filename,
|
|
112
|
+
line,
|
|
113
|
+
valid_lines_frozenset,
|
|
114
|
+
)
|
|
101
115
|
template_bp.add_breakpoint_result.error_code = PyDevdAPI.ADD_BREAKPOINT_INVALID_LINE
|
|
102
116
|
template_bp.on_changed_breakpoint_state(template_bp.breakpoint_id, template_bp.add_breakpoint_result)
|
|
103
117
|
else:
|
|
104
118
|
if template_bp.add_breakpoint_result.error_code != PyDevdAPI.ADD_BREAKPOINT_NO_ERROR:
|
|
105
119
|
template_bp.add_breakpoint_result.error_code = PyDevdAPI.ADD_BREAKPOINT_NO_ERROR
|
|
106
120
|
template_bp.on_changed_breakpoint_state(template_bp.breakpoint_id, template_bp.add_breakpoint_result)
|
|
107
|
-
|