debugpy 1.8.19__tar.gz → 1.8.21__tar.gz
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.19/src/debugpy.egg-info → debugpy-1.8.21}/PKG-INFO +1 -1
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py +1 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py +1 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py +23 -8
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py +1 -1
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py +98 -82
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +1 -1
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py +3 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py +21 -10
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py +18 -16
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py +2 -2
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py +1 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +17548 -21173
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx +3 -2
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py +3 -1
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py +2 -2
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py +75 -5
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py +5 -2
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py +2 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py +1 -1
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py +14 -3
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py +12 -3
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py +2 -2
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py +16 -16
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c +8386 -8968
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py +1 -3
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py +2 -2
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py +3 -3
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py +2 -4
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py +9 -9
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py +1 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py +2 -2
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py +50 -7
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c +17158 -20248
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx +82 -53
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_coverage.py +2 -2
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py +5 -10
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_loaders.py +2 -2
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +9 -8
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd.py +62 -16
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/add_code_to_python_process.py +1 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh +1 -1
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py +10 -10
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py +3 -3
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py +1 -3
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py +3 -3
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py +5 -5
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py +11 -11
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py +1 -1
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py +3 -3
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py +1 -1
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +1 -1
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat +6 -6
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_file_utils.py +12 -10
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py +1 -1
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/setup_pydevd_cython.py +30 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_version.py +3 -3
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/server/cli.py +34 -0
- {debugpy-1.8.19 → debugpy-1.8.21/src/debugpy.egg-info}/PKG-INFO +1 -1
- {debugpy-1.8.19 → debugpy-1.8.21}/DESCRIPTION.md +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/LICENSE +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/MANIFEST.in +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/README.md +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/pyproject.toml +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/setup.cfg +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/setup.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/ThirdPartyNotices.txt +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/__main__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/_pydevd_packaging.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/_util.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/force_pydevd.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pyx +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pxd +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/pydevd_sys_monitoring.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/README +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhook.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt6.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_pysrc.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_run_in_console.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevconsole.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_script.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_310.hpp +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_311.hpp +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_common.hpp +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/pydevd_tracing.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/adapter/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/adapter/__main__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/adapter/clients.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/adapter/components.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/adapter/launchers.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/adapter/servers.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/adapter/sessions.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/common/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/common/json.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/common/log.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/common/messaging.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/common/singleton.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/common/sockets.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/common/stacks.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/common/timestamp.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/common/util.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/launcher/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/launcher/__main__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/launcher/debuggee.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/launcher/handlers.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/launcher/output.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/launcher/winapi.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/public_api.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/py.typed +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/server/__init__.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/server/api.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/server/attach_pid_injected.py +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy.egg-info/SOURCES.txt +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy.egg-info/dependency_links.txt +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy.egg-info/entry_points.txt +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy.egg-info/top_level.txt +0 -0
- {debugpy-1.8.19 → debugpy-1.8.21}/versioneer.py +0 -0
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
# eg: Completing a magic when user typed it without the leading % causes the % to be inserted
|
|
11
11
|
# to the left of what should be the first colon.
|
|
12
12
|
"""Interface to TerminalInteractiveShell for PyDev Interactive Console frontend
|
|
13
|
-
|
|
13
|
+
for IPython 0.11 to 1.0+.
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
16
|
from __future__ import print_function
|
|
@@ -96,9 +96,20 @@ class PyDevIPCompleter6(IPCompleter):
|
|
|
96
96
|
def matchers(self):
|
|
97
97
|
"""All active matcher routines for completion"""
|
|
98
98
|
# To remove python_matches we now have to override it as it's now a property in the superclass.
|
|
99
|
+
|
|
100
|
+
# Newer versions of IPython have file_matcher and magic_matcher.
|
|
101
|
+
try:
|
|
102
|
+
file_matches = self.file_matches
|
|
103
|
+
except AttributeError:
|
|
104
|
+
file_matches = self.file_matcher
|
|
105
|
+
|
|
106
|
+
try:
|
|
107
|
+
magic_matches = self.magic_matches
|
|
108
|
+
except AttributeError:
|
|
109
|
+
magic_matches = self.magic_matcher
|
|
99
110
|
return [
|
|
100
|
-
|
|
101
|
-
|
|
111
|
+
file_matches,
|
|
112
|
+
magic_matches,
|
|
102
113
|
self.python_func_kw_matches,
|
|
103
114
|
self.dict_key_matches,
|
|
104
115
|
]
|
|
@@ -137,6 +148,7 @@ class PyDevTerminalInteractiveShell(TerminalInteractiveShell):
|
|
|
137
148
|
# Since IPython 5 the terminal interface is not compatible with Emacs `inferior-shell` and
|
|
138
149
|
# the `simple_prompt` flag is needed
|
|
139
150
|
simple_prompt = CBool(True)
|
|
151
|
+
use_jedy = CBool(False)
|
|
140
152
|
|
|
141
153
|
# In the PyDev Console, GUI control is done via hookable XML-RPC server
|
|
142
154
|
@staticmethod
|
|
@@ -366,12 +378,17 @@ class _PyDevFrontEnd:
|
|
|
366
378
|
def complete(self, string):
|
|
367
379
|
try:
|
|
368
380
|
if string:
|
|
369
|
-
|
|
381
|
+
ret = self.ipython.complete(None, line=string, cursor_pos=string.__len__())
|
|
370
382
|
else:
|
|
371
|
-
|
|
383
|
+
ret = self.ipython.complete(string, string, 0)
|
|
384
|
+
|
|
385
|
+
return ret
|
|
372
386
|
except:
|
|
387
|
+
import traceback
|
|
388
|
+
|
|
389
|
+
traceback.print_exc()
|
|
373
390
|
# Silence completer exceptions
|
|
374
|
-
|
|
391
|
+
return None, []
|
|
375
392
|
|
|
376
393
|
def is_complete(self, string):
|
|
377
394
|
# Based on IPython 0.10.1
|
|
@@ -435,8 +452,6 @@ class _PyDevFrontEnd:
|
|
|
435
452
|
append((ipython_completion, pydev_doc, "", pydev_type))
|
|
436
453
|
return ret
|
|
437
454
|
except:
|
|
438
|
-
import traceback
|
|
439
|
-
|
|
440
455
|
traceback.print_exc()
|
|
441
456
|
return []
|
|
442
457
|
|
|
@@ -9,7 +9,7 @@ if hasattr(_temp, "_os_thread_handle"): # Python 3.14 and later has this
|
|
|
9
9
|
def is_thread_alive(t):
|
|
10
10
|
return not t._os_thread_handle.is_done()
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
elif hasattr(_temp, "_handle") and hasattr(_temp, "_started"): # Python 3.13 and later has this
|
|
13
13
|
|
|
14
14
|
def is_thread_alive(t):
|
|
15
15
|
return not t._handle.is_done()
|
{debugpy-1.8.19 → debugpy-1.8.21}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py
RENAMED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
# License: EPL
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
from _thread import _local
|
|
2
5
|
import os
|
|
3
6
|
import re
|
|
4
7
|
import sys
|
|
8
|
+
from typing import Generator
|
|
5
9
|
from _pydev_bundle._pydev_saved_modules import threading
|
|
6
10
|
from _pydevd_bundle.pydevd_constants import (
|
|
7
11
|
get_global_debugger,
|
|
@@ -25,13 +29,13 @@ from pathlib import Path
|
|
|
25
29
|
# Things that are dependent on having the pydevd debugger
|
|
26
30
|
# ===============================================================================
|
|
27
31
|
|
|
28
|
-
pydev_src_dir = os.path.dirname(os.path.dirname(__file__))
|
|
32
|
+
pydev_src_dir: str = os.path.dirname(os.path.dirname(__file__))
|
|
29
33
|
|
|
30
|
-
_arg_patch = threading.local()
|
|
34
|
+
_arg_patch: _local = threading.local()
|
|
31
35
|
|
|
32
36
|
|
|
33
37
|
@contextmanager
|
|
34
|
-
def skip_subprocess_arg_patch():
|
|
38
|
+
def skip_subprocess_arg_patch() -> Generator[None, Any, None]:
|
|
35
39
|
_arg_patch.apply_arg_patching = False
|
|
36
40
|
try:
|
|
37
41
|
yield
|
|
@@ -39,7 +43,7 @@ def skip_subprocess_arg_patch():
|
|
|
39
43
|
_arg_patch.apply_arg_patching = True
|
|
40
44
|
|
|
41
45
|
|
|
42
|
-
def _get_apply_arg_patching():
|
|
46
|
+
def _get_apply_arg_patching() -> os.Any | bool:
|
|
43
47
|
return getattr(_arg_patch, "apply_arg_patching", True)
|
|
44
48
|
|
|
45
49
|
|
|
@@ -58,7 +62,7 @@ def _get_setup_updated_with_protocol_and_ppid(setup, is_exec=False):
|
|
|
58
62
|
# If it's an exec, keep it what it was.
|
|
59
63
|
setup[pydevd_constants.ARGUMENT_PPID] = os.getpid()
|
|
60
64
|
|
|
61
|
-
protocol = pydevd_constants.get_protocol()
|
|
65
|
+
protocol: str = pydevd_constants.get_protocol()
|
|
62
66
|
if protocol == pydevd_constants.HTTP_JSON_PROTOCOL:
|
|
63
67
|
setup[pydevd_constants.ARGUMENT_HTTP_JSON_PROTOCOL] = True
|
|
64
68
|
|
|
@@ -74,11 +78,11 @@ def _get_setup_updated_with_protocol_and_ppid(setup, is_exec=False):
|
|
|
74
78
|
else:
|
|
75
79
|
pydev_log.debug("Unexpected protocol: %s", protocol)
|
|
76
80
|
|
|
77
|
-
mode = pydevd_defaults.PydevdCustomization.DEBUG_MODE
|
|
81
|
+
mode: str = pydevd_defaults.PydevdCustomization.DEBUG_MODE
|
|
78
82
|
if mode:
|
|
79
83
|
setup["debug-mode"] = mode
|
|
80
84
|
|
|
81
|
-
preimport = pydevd_defaults.PydevdCustomization.PREIMPORT
|
|
85
|
+
preimport: str = pydevd_defaults.PydevdCustomization.PREIMPORT
|
|
82
86
|
if preimport:
|
|
83
87
|
setup["preimport"] = preimport
|
|
84
88
|
|
|
@@ -92,12 +96,12 @@ def _get_setup_updated_with_protocol_and_ppid(setup, is_exec=False):
|
|
|
92
96
|
|
|
93
97
|
|
|
94
98
|
class _LastFutureImportFinder(ast.NodeVisitor):
|
|
95
|
-
def __init__(self):
|
|
99
|
+
def __init__(self) -> None:
|
|
96
100
|
self.last_future_import_found = None
|
|
97
101
|
|
|
98
|
-
def visit_ImportFrom(self, node):
|
|
102
|
+
def visit_ImportFrom(self, node) -> None:
|
|
99
103
|
if node.module == "__future__":
|
|
100
|
-
self.last_future_import_found = node
|
|
104
|
+
self.last_future_import_found: ast.ImportFrom = node
|
|
101
105
|
|
|
102
106
|
|
|
103
107
|
def _get_offset_from_line_col(code, line, col):
|
|
@@ -133,7 +137,7 @@ def _separate_future_imports(code):
|
|
|
133
137
|
if visitor.last_future_import_found is None:
|
|
134
138
|
return "", code
|
|
135
139
|
|
|
136
|
-
node = visitor.last_future_import_found
|
|
140
|
+
node: ast.ImportFrom = visitor.last_future_import_found
|
|
137
141
|
offset = -1
|
|
138
142
|
if hasattr(node, "end_lineno") and hasattr(node, "end_col_offset"):
|
|
139
143
|
# Python 3.8 onwards has these (so, use when possible).
|
|
@@ -144,9 +148,9 @@ def _separate_future_imports(code):
|
|
|
144
148
|
# end line/col not available, let's just find the offset and then search
|
|
145
149
|
# for the alias from there.
|
|
146
150
|
line, col = node.lineno, node.col_offset
|
|
147
|
-
offset = _get_offset_from_line_col(code, line - 1, col) # ast lines are 1-based, make it 0-based.
|
|
151
|
+
offset: int = _get_offset_from_line_col(code, line - 1, col) # ast lines are 1-based, make it 0-based.
|
|
148
152
|
if offset >= 0 and node.names:
|
|
149
|
-
from_future_import_name = node.names[-1].name
|
|
153
|
+
from_future_import_name: str = node.names[-1].name
|
|
150
154
|
i = code.find(from_future_import_name, offset)
|
|
151
155
|
if i < 0:
|
|
152
156
|
offset = -1
|
|
@@ -183,19 +187,25 @@ def _separate_future_imports(code):
|
|
|
183
187
|
return "", code
|
|
184
188
|
|
|
185
189
|
|
|
186
|
-
def _get_python_c_args(host, port, code, args, setup):
|
|
190
|
+
def _get_python_c_args(host, port, code, args, setup) -> bytes | str:
|
|
187
191
|
setup = _get_setup_updated_with_protocol_and_ppid(setup)
|
|
188
192
|
|
|
189
193
|
# i.e.: We want to make the repr sorted so that it works in tests.
|
|
190
194
|
setup_repr = setup if setup is None else (sorted_dict_repr(setup))
|
|
191
195
|
|
|
192
|
-
|
|
196
|
+
# Normalize code to str for processing if it's bytes (can happen on Linux/WSL
|
|
197
|
+
# with loky/joblib subprocesses). We'll convert back to the original type at the end.
|
|
198
|
+
code_is_bytes: bool = isinstance(code, bytes)
|
|
199
|
+
if code_is_bytes:
|
|
200
|
+
code: str = code.decode("utf-8")
|
|
201
|
+
|
|
202
|
+
future_imports: str = ""
|
|
193
203
|
if "__future__" in code:
|
|
194
204
|
# If the code has a __future__ import, we need to be able to strip the __future__
|
|
195
205
|
# imports from the code and add them to the start of our code snippet.
|
|
196
206
|
future_imports, code = _separate_future_imports(code)
|
|
197
207
|
|
|
198
|
-
|
|
208
|
+
result: str = (
|
|
199
209
|
"%simport sys; sys.path.insert(0, r'%s'); import pydevd; pydevd.config(%r, %r); "
|
|
200
210
|
"pydevd.settrace(host=%r, port=%s, suspend=False, trace_only_current_thread=False, patch_multiprocessing=True, access_token=%r, client_access_token=%r, __setup_holder__=%s); "
|
|
201
211
|
"%s"
|
|
@@ -212,6 +222,12 @@ def _get_python_c_args(host, port, code, args, setup):
|
|
|
212
222
|
code,
|
|
213
223
|
)
|
|
214
224
|
|
|
225
|
+
# Convert back to the original type if it was bytes
|
|
226
|
+
if code_is_bytes:
|
|
227
|
+
result: bytes = result.encode("utf-8")
|
|
228
|
+
|
|
229
|
+
return result
|
|
230
|
+
|
|
215
231
|
|
|
216
232
|
def _get_host_port():
|
|
217
233
|
import pydevd
|
|
@@ -220,14 +236,14 @@ def _get_host_port():
|
|
|
220
236
|
return host, port
|
|
221
237
|
|
|
222
238
|
|
|
223
|
-
def _is_managed_arg(arg):
|
|
239
|
+
def _is_managed_arg(arg) -> bool:
|
|
224
240
|
pydevd_py = _get_str_type_compatible(arg, "pydevd.py")
|
|
225
241
|
if arg.endswith(pydevd_py):
|
|
226
242
|
return True
|
|
227
243
|
return False
|
|
228
244
|
|
|
229
245
|
|
|
230
|
-
def _on_forked_process(setup_tracing=True):
|
|
246
|
+
def _on_forked_process(setup_tracing=True) -> None:
|
|
231
247
|
pydevd_constants.after_fork()
|
|
232
248
|
pydev_log.initialize_debug_stream(reinitialize=True)
|
|
233
249
|
|
|
@@ -240,7 +256,7 @@ def _on_forked_process(setup_tracing=True):
|
|
|
240
256
|
pydevd.settrace_forked(setup_tracing=setup_tracing)
|
|
241
257
|
|
|
242
258
|
|
|
243
|
-
def _on_set_trace_for_new_thread(global_debugger):
|
|
259
|
+
def _on_set_trace_for_new_thread(global_debugger) -> None:
|
|
244
260
|
if global_debugger is not None:
|
|
245
261
|
if not PYDEVD_USE_SYS_MONITORING:
|
|
246
262
|
global_debugger.enable_tracing()
|
|
@@ -274,7 +290,7 @@ def _get_str_type_compatible(s, args):
|
|
|
274
290
|
# ===============================================================================
|
|
275
291
|
# Things related to monkey-patching
|
|
276
292
|
# ===============================================================================
|
|
277
|
-
def is_python(path):
|
|
293
|
+
def is_python(path) -> bool:
|
|
278
294
|
single_quote, double_quote = _get_str_type_compatible(path, ["'", '"'])
|
|
279
295
|
|
|
280
296
|
if path.endswith(single_quote) or path.endswith(double_quote):
|
|
@@ -314,7 +330,7 @@ def remove_quotes_from_args(args):
|
|
|
314
330
|
new_args = []
|
|
315
331
|
for x in args:
|
|
316
332
|
if isinstance(x, Path):
|
|
317
|
-
x = x.as_posix()
|
|
333
|
+
x: str = x.as_posix()
|
|
318
334
|
else:
|
|
319
335
|
if not isinstance(x, (bytes, str)):
|
|
320
336
|
raise InvalidTypeInArgsException(str(type(x)))
|
|
@@ -422,17 +438,17 @@ def patch_args(args, is_exec=False):
|
|
|
422
438
|
#
|
|
423
439
|
# python -O -Q old -v -c "import sys;print(sys)"
|
|
424
440
|
|
|
425
|
-
params_with_combinable_arg = set(("W", "X", "Q", "c", "m"))
|
|
441
|
+
params_with_combinable_arg: set[Literal['W', 'X', 'Q', 'c', 'm']] = set(("W", "X", "Q", "c", "m"))
|
|
426
442
|
|
|
427
443
|
module_name = None
|
|
428
|
-
before_module_flag = ""
|
|
444
|
+
before_module_flag: str = ""
|
|
429
445
|
module_name_i_start = -1
|
|
430
446
|
module_name_i_end = -1
|
|
431
447
|
|
|
432
448
|
code = None
|
|
433
449
|
code_i = -1
|
|
434
450
|
code_i_end = -1
|
|
435
|
-
code_flag = ""
|
|
451
|
+
code_flag: str = ""
|
|
436
452
|
|
|
437
453
|
filename = None
|
|
438
454
|
filename_i = -1
|
|
@@ -471,15 +487,15 @@ def patch_args(args, is_exec=False):
|
|
|
471
487
|
# python -qmtest
|
|
472
488
|
before_module_flag = arg_as_str[:j] # before_module_flag would then be "-q"
|
|
473
489
|
if before_module_flag == "-":
|
|
474
|
-
before_module_flag = ""
|
|
475
|
-
module_name_i_start = i
|
|
490
|
+
before_module_flag: str = ""
|
|
491
|
+
module_name_i_start: int = i
|
|
476
492
|
if not remainder:
|
|
477
493
|
module_name = unquoted_args[i + 1]
|
|
478
|
-
module_name_i_end = i + 1
|
|
494
|
+
module_name_i_end: int = i + 1
|
|
479
495
|
else:
|
|
480
496
|
# i.e.: python -qmtest should provide 'test' as the module_name
|
|
481
497
|
module_name = unquoted_args[i][j + 1 :]
|
|
482
|
-
module_name_i_end = module_name_i_start
|
|
498
|
+
module_name_i_end: int = module_name_i_start
|
|
483
499
|
break_out = True
|
|
484
500
|
break
|
|
485
501
|
|
|
@@ -493,12 +509,12 @@ def patch_args(args, is_exec=False):
|
|
|
493
509
|
if not remainder:
|
|
494
510
|
# arg_as_str is something as "-qc", "import sys"
|
|
495
511
|
code = unquoted_args[i + 1]
|
|
496
|
-
code_i_end = i + 2
|
|
512
|
+
code_i_end: int = i + 2
|
|
497
513
|
else:
|
|
498
514
|
# if arg_as_str is something as "-qcimport sys"
|
|
499
515
|
code = remainder # code would be "import sys"
|
|
500
|
-
code_i_end = i + 1
|
|
501
|
-
code_i = i
|
|
516
|
+
code_i_end: int = i + 1
|
|
517
|
+
code_i: int = i
|
|
502
518
|
break_out = True
|
|
503
519
|
break
|
|
504
520
|
|
|
@@ -519,7 +535,7 @@ def patch_args(args, is_exec=False):
|
|
|
519
535
|
# So, we should support whatever runpy.run_path
|
|
520
536
|
# supports in this case.
|
|
521
537
|
|
|
522
|
-
filename_i = i
|
|
538
|
+
filename_i: int = i
|
|
523
539
|
|
|
524
540
|
if _is_managed_arg(filename): # no need to add pydevd twice
|
|
525
541
|
pydev_log.debug("Skipped monkey-patching as pydevd.py is in args already.")
|
|
@@ -543,7 +559,7 @@ def patch_args(args, is_exec=False):
|
|
|
543
559
|
|
|
544
560
|
return quote_args(new_args)
|
|
545
561
|
|
|
546
|
-
first_non_vm_index = max(filename_i, module_name_i_start)
|
|
562
|
+
first_non_vm_index: int = max(filename_i, module_name_i_start)
|
|
547
563
|
if first_non_vm_index == -1:
|
|
548
564
|
pydev_log.debug("Unable to fix arguments to attach debugger on subprocess (could not resolve filename nor module name).")
|
|
549
565
|
return original_args
|
|
@@ -558,7 +574,7 @@ def patch_args(args, is_exec=False):
|
|
|
558
574
|
if before_module_flag:
|
|
559
575
|
new_args.append(before_module_flag)
|
|
560
576
|
|
|
561
|
-
add_module_at = len(new_args) + 1
|
|
577
|
+
add_module_at: int = len(new_args) + 1
|
|
562
578
|
|
|
563
579
|
new_args.extend(
|
|
564
580
|
setup_to_argv(
|
|
@@ -601,11 +617,11 @@ def str_to_args_windows(args):
|
|
|
601
617
|
ARG = 1
|
|
602
618
|
IN_DOUBLE_QUOTE = 2
|
|
603
619
|
|
|
604
|
-
state = DEFAULT
|
|
620
|
+
state: int = DEFAULT
|
|
605
621
|
backslashes = 0
|
|
606
|
-
buf = ""
|
|
622
|
+
buf: str = ""
|
|
607
623
|
|
|
608
|
-
args_len = len(args)
|
|
624
|
+
args_len: int = len(args)
|
|
609
625
|
for i in range(args_len):
|
|
610
626
|
ch = args[i]
|
|
611
627
|
if ch == "\\":
|
|
@@ -618,7 +634,7 @@ def str_to_args_windows(args):
|
|
|
618
634
|
buf += "\\"
|
|
619
635
|
if backslashes == 1:
|
|
620
636
|
if state == DEFAULT:
|
|
621
|
-
state = ARG
|
|
637
|
+
state: int = ARG
|
|
622
638
|
|
|
623
639
|
buf += '"'
|
|
624
640
|
backslashes = 0
|
|
@@ -627,7 +643,7 @@ def str_to_args_windows(args):
|
|
|
627
643
|
else:
|
|
628
644
|
# false alarm, treat passed backslashes literally...
|
|
629
645
|
if state == DEFAULT:
|
|
630
|
-
state = ARG
|
|
646
|
+
state: int = ARG
|
|
631
647
|
|
|
632
648
|
while backslashes > 0:
|
|
633
649
|
backslashes -= 1
|
|
@@ -638,16 +654,16 @@ def str_to_args_windows(args):
|
|
|
638
654
|
# skip
|
|
639
655
|
continue
|
|
640
656
|
elif state == ARG:
|
|
641
|
-
state = DEFAULT
|
|
657
|
+
state: int = DEFAULT
|
|
642
658
|
result.append(buf)
|
|
643
|
-
buf = ""
|
|
659
|
+
buf: str = ""
|
|
644
660
|
continue
|
|
645
661
|
|
|
646
662
|
if state in (DEFAULT, ARG):
|
|
647
663
|
if ch == '"':
|
|
648
|
-
state = IN_DOUBLE_QUOTE
|
|
664
|
+
state: int = IN_DOUBLE_QUOTE
|
|
649
665
|
else:
|
|
650
|
-
state = ARG
|
|
666
|
+
state: int = ARG
|
|
651
667
|
buf += ch
|
|
652
668
|
|
|
653
669
|
elif state == IN_DOUBLE_QUOTE:
|
|
@@ -659,7 +675,7 @@ def str_to_args_windows(args):
|
|
|
659
675
|
buf += '"'
|
|
660
676
|
i += 1
|
|
661
677
|
else:
|
|
662
|
-
state = ARG
|
|
678
|
+
state: int = ARG
|
|
663
679
|
else:
|
|
664
680
|
buf += ch
|
|
665
681
|
|
|
@@ -677,12 +693,12 @@ def patch_arg_str_win(arg_str):
|
|
|
677
693
|
# Fix https://youtrack.jetbrains.com/issue/PY-9767 (args may be empty)
|
|
678
694
|
if not args or not is_python(args[0]):
|
|
679
695
|
return arg_str
|
|
680
|
-
arg_str = " ".join(patch_args(args))
|
|
696
|
+
arg_str: str = " ".join(patch_args(args))
|
|
681
697
|
pydev_log.debug("New args: %s", arg_str)
|
|
682
698
|
return arg_str
|
|
683
699
|
|
|
684
700
|
|
|
685
|
-
def monkey_patch_module(module, funcname, create_func):
|
|
701
|
+
def monkey_patch_module(module, funcname, create_func) -> None:
|
|
686
702
|
if hasattr(module, funcname):
|
|
687
703
|
original_name = "original_" + funcname
|
|
688
704
|
if not hasattr(module, original_name):
|
|
@@ -690,11 +706,11 @@ def monkey_patch_module(module, funcname, create_func):
|
|
|
690
706
|
setattr(module, funcname, create_func(original_name))
|
|
691
707
|
|
|
692
708
|
|
|
693
|
-
def monkey_patch_os(funcname, create_func):
|
|
709
|
+
def monkey_patch_os(funcname, create_func) -> None:
|
|
694
710
|
monkey_patch_module(os, funcname, create_func)
|
|
695
711
|
|
|
696
712
|
|
|
697
|
-
def warn_multiproc():
|
|
713
|
+
def warn_multiproc() -> None:
|
|
698
714
|
pass # TODO: Provide logging as messages to the IDE.
|
|
699
715
|
# pydev_log.error_once(
|
|
700
716
|
# "pydev debugger: New process is launching (breakpoints won't work in the new process).\n"
|
|
@@ -847,7 +863,7 @@ def create_warn_fork_exec(original_name):
|
|
|
847
863
|
_posixsubprocess.fork_exec(args, executable_list, close_fds, ... (13 more))
|
|
848
864
|
"""
|
|
849
865
|
|
|
850
|
-
def new_warn_fork_exec(*args):
|
|
866
|
+
def new_warn_fork_exec(*args) -> os.Any | None:
|
|
851
867
|
try:
|
|
852
868
|
import _posixsubprocess
|
|
853
869
|
|
|
@@ -881,7 +897,7 @@ def create_subprocess_warn_fork_exec(original_name):
|
|
|
881
897
|
subprocess._fork_exec(args, executable_list, close_fds, ... (13 more))
|
|
882
898
|
"""
|
|
883
899
|
|
|
884
|
-
def new_warn_fork_exec(*args):
|
|
900
|
+
def new_warn_fork_exec(*args) -> os.Any | None:
|
|
885
901
|
try:
|
|
886
902
|
import subprocess
|
|
887
903
|
|
|
@@ -929,13 +945,13 @@ def create_CreateProcessWarnMultiproc(original_name):
|
|
|
929
945
|
return new_CreateProcess
|
|
930
946
|
|
|
931
947
|
|
|
932
|
-
def create_fork(original_name):
|
|
948
|
+
def create_fork(original_name) -> Callable[[], Any]:
|
|
933
949
|
def new_fork():
|
|
934
950
|
# A simple fork will result in a new python process
|
|
935
951
|
is_new_python_process = True
|
|
936
|
-
frame = sys._getframe()
|
|
952
|
+
frame: sys.FrameType = sys._getframe()
|
|
937
953
|
|
|
938
|
-
apply_arg_patch = _get_apply_arg_patching()
|
|
954
|
+
apply_arg_patch: os.Any | bool = _get_apply_arg_patching()
|
|
939
955
|
|
|
940
956
|
is_subprocess_fork = False
|
|
941
957
|
while frame is not None:
|
|
@@ -944,18 +960,18 @@ def create_fork(original_name):
|
|
|
944
960
|
# If we're actually in subprocess.Popen creating a child, it may
|
|
945
961
|
# result in something which is not a Python process, (so, we
|
|
946
962
|
# don't want to connect with it in the forked version).
|
|
947
|
-
executable = frame.f_locals.get("executable")
|
|
963
|
+
executable: os.Any | None = frame.f_locals.get("executable")
|
|
948
964
|
if executable is not None:
|
|
949
965
|
is_new_python_process = False
|
|
950
966
|
if is_python(executable):
|
|
951
967
|
is_new_python_process = True
|
|
952
968
|
break
|
|
953
969
|
|
|
954
|
-
frame = frame.f_back
|
|
970
|
+
frame: sys.FrameType | None = frame.f_back
|
|
955
971
|
frame = None # Just make sure we don't hold on to it.
|
|
956
972
|
|
|
957
|
-
protocol = pydevd_constants.get_protocol()
|
|
958
|
-
debug_mode = PydevdCustomization.DEBUG_MODE
|
|
973
|
+
protocol: str = pydevd_constants.get_protocol()
|
|
974
|
+
debug_mode: str = PydevdCustomization.DEBUG_MODE
|
|
959
975
|
|
|
960
976
|
child_process = getattr(os, original_name)() # fork
|
|
961
977
|
if not child_process:
|
|
@@ -973,19 +989,19 @@ def create_fork(original_name):
|
|
|
973
989
|
return new_fork
|
|
974
990
|
|
|
975
991
|
|
|
976
|
-
def send_process_created_message():
|
|
977
|
-
py_db = get_global_debugger()
|
|
992
|
+
def send_process_created_message() -> None:
|
|
993
|
+
py_db: None = get_global_debugger()
|
|
978
994
|
if py_db is not None:
|
|
979
995
|
py_db.send_process_created_message()
|
|
980
996
|
|
|
981
997
|
|
|
982
|
-
def send_process_about_to_be_replaced():
|
|
983
|
-
py_db = get_global_debugger()
|
|
998
|
+
def send_process_about_to_be_replaced() -> None:
|
|
999
|
+
py_db: None = get_global_debugger()
|
|
984
1000
|
if py_db is not None:
|
|
985
1001
|
py_db.send_process_about_to_be_replaced()
|
|
986
1002
|
|
|
987
1003
|
|
|
988
|
-
def patch_new_process_functions():
|
|
1004
|
+
def patch_new_process_functions() -> None:
|
|
989
1005
|
# os.execl(path, arg0, arg1, ...)
|
|
990
1006
|
# os.execle(path, arg0, arg1, ..., env)
|
|
991
1007
|
# os.execlp(file, arg0, arg1, ...)
|
|
@@ -1050,7 +1066,7 @@ def patch_new_process_functions():
|
|
|
1050
1066
|
monkey_patch_module(_subprocess, "CreateProcess", create_CreateProcess)
|
|
1051
1067
|
|
|
1052
1068
|
|
|
1053
|
-
def patch_new_process_functions_with_warning():
|
|
1069
|
+
def patch_new_process_functions_with_warning() -> None:
|
|
1054
1070
|
monkey_patch_os("execl", create_warn_multiproc)
|
|
1055
1071
|
monkey_patch_os("execle", create_warn_multiproc)
|
|
1056
1072
|
monkey_patch_os("execlp", create_warn_multiproc)
|
|
@@ -1096,15 +1112,15 @@ def patch_new_process_functions_with_warning():
|
|
|
1096
1112
|
|
|
1097
1113
|
|
|
1098
1114
|
class _NewThreadStartupWithTrace:
|
|
1099
|
-
def __init__(self, original_func, args, kwargs):
|
|
1100
|
-
self.original_func = original_func
|
|
1101
|
-
self.args = args
|
|
1102
|
-
self.kwargs = kwargs
|
|
1115
|
+
def __init__(self, original_func, args, kwargs) -> None:
|
|
1116
|
+
self.original_func: Any = original_func
|
|
1117
|
+
self.args: Any = args
|
|
1118
|
+
self.kwargs: Any = kwargs
|
|
1103
1119
|
|
|
1104
1120
|
def __call__(self):
|
|
1105
1121
|
# We monkey-patch the thread creation so that this function is called in the new thread. At this point
|
|
1106
1122
|
# we notify of its creation and start tracing it.
|
|
1107
|
-
py_db = get_global_debugger()
|
|
1123
|
+
py_db: None = get_global_debugger()
|
|
1108
1124
|
|
|
1109
1125
|
thread_id = None
|
|
1110
1126
|
if py_db is not None:
|
|
@@ -1112,11 +1128,11 @@ class _NewThreadStartupWithTrace:
|
|
|
1112
1128
|
# the start_new_thread internal machinery and thread._bootstrap has not finished), so, the code below needs
|
|
1113
1129
|
# to make sure that we use the current thread bound to the original function and not use
|
|
1114
1130
|
# threading.current_thread() unless we're sure it's a dummy thread.
|
|
1115
|
-
t = getattr(self.original_func, "__self__", getattr(self.original_func, "im_self", None))
|
|
1131
|
+
t: os.Any | None = getattr(self.original_func, "__self__", getattr(self.original_func, "im_self", None))
|
|
1116
1132
|
if not isinstance(t, threading.Thread):
|
|
1117
1133
|
# This is not a threading.Thread but a Dummy thread (so, get it as a dummy thread using
|
|
1118
1134
|
# currentThread).
|
|
1119
|
-
t = threading.current_thread()
|
|
1135
|
+
t: threading.Thread = threading.current_thread()
|
|
1120
1136
|
|
|
1121
1137
|
if not getattr(t, "is_pydev_daemon_thread", False):
|
|
1122
1138
|
thread_id = get_current_thread_id(t)
|
|
@@ -1144,10 +1160,10 @@ class _NewThreadStartupWithTrace:
|
|
|
1144
1160
|
|
|
1145
1161
|
|
|
1146
1162
|
class _NewThreadStartupWithoutTrace:
|
|
1147
|
-
def __init__(self, original_func, args, kwargs):
|
|
1148
|
-
self.original_func = original_func
|
|
1149
|
-
self.args = args
|
|
1150
|
-
self.kwargs = kwargs
|
|
1163
|
+
def __init__(self, original_func, args, kwargs) -> None:
|
|
1164
|
+
self.original_func: Any = original_func
|
|
1165
|
+
self.args: Any = args
|
|
1166
|
+
self.kwargs: Any = kwargs
|
|
1151
1167
|
|
|
1152
1168
|
def __call__(self):
|
|
1153
1169
|
return self.original_func(*self.args, **self.kwargs)
|
|
@@ -1172,12 +1188,12 @@ def _get_threading_modules_to_patch():
|
|
|
1172
1188
|
threading_modules_to_patch = _get_threading_modules_to_patch()
|
|
1173
1189
|
|
|
1174
1190
|
|
|
1175
|
-
def patch_thread_module(thread_module):
|
|
1191
|
+
def patch_thread_module(thread_module) -> None:
|
|
1176
1192
|
# Note: this is needed not just for the tracing, but to have an early way to
|
|
1177
1193
|
# notify that a thread was created (i.e.: tests_python.test_debugger_json.test_case_started_exited_threads_protocol)
|
|
1178
|
-
start_thread_attrs = ["_start_new_thread", "start_new_thread", "start_new"]
|
|
1179
|
-
start_joinable_attrs = ["start_joinable_thread", "_start_joinable_thread"]
|
|
1180
|
-
check = start_thread_attrs + start_joinable_attrs
|
|
1194
|
+
start_thread_attrs: list[str] = ["_start_new_thread", "start_new_thread", "start_new"]
|
|
1195
|
+
start_joinable_attrs: list[str] = ["start_joinable_thread", "_start_joinable_thread"]
|
|
1196
|
+
check: list[str] = start_thread_attrs + start_joinable_attrs
|
|
1181
1197
|
|
|
1182
1198
|
replace_attrs = []
|
|
1183
1199
|
for attr in check:
|
|
@@ -1240,12 +1256,12 @@ def patch_thread_module(thread_module):
|
|
|
1240
1256
|
setattr(thread_module, attr, pydev_start_new_thread)
|
|
1241
1257
|
|
|
1242
1258
|
|
|
1243
|
-
def patch_thread_modules():
|
|
1259
|
+
def patch_thread_modules() -> None:
|
|
1244
1260
|
for t in threading_modules_to_patch:
|
|
1245
1261
|
patch_thread_module(t)
|
|
1246
1262
|
|
|
1247
1263
|
|
|
1248
|
-
def undo_patch_thread_modules():
|
|
1264
|
+
def undo_patch_thread_modules() -> None:
|
|
1249
1265
|
for t in threading_modules_to_patch:
|
|
1250
1266
|
try:
|
|
1251
1267
|
t.start_new_thread = t._original_start_new_thread
|
|
@@ -1273,7 +1289,7 @@ def undo_patch_thread_modules():
|
|
|
1273
1289
|
pass
|
|
1274
1290
|
|
|
1275
1291
|
|
|
1276
|
-
def disable_trace_thread_modules():
|
|
1292
|
+
def disable_trace_thread_modules() -> None:
|
|
1277
1293
|
"""
|
|
1278
1294
|
Can be used to temporarily stop tracing threads created with thread.start_new_thread.
|
|
1279
1295
|
"""
|
|
@@ -1281,7 +1297,7 @@ def disable_trace_thread_modules():
|
|
|
1281
1297
|
_UseNewThreadStartup = _NewThreadStartupWithoutTrace
|
|
1282
1298
|
|
|
1283
1299
|
|
|
1284
|
-
def enable_trace_thread_modules():
|
|
1300
|
+
def enable_trace_thread_modules() -> None:
|
|
1285
1301
|
"""
|
|
1286
1302
|
Can be used to start tracing threads created with thread.start_new_thread again.
|
|
1287
1303
|
"""
|
|
@@ -140,7 +140,7 @@ class PyDBAdditionalThreadInfo(object):
|
|
|
140
140
|
return None
|
|
141
141
|
|
|
142
142
|
if thread._ident is None: # Can this happen?
|
|
143
|
-
pydev_log.critical("thread._ident is None in _get_related_thread!")
|
|
143
|
+
pydev_log.critical("thread._ident is None in _get_related_thread! - thread: %s", thread)
|
|
144
144
|
return None
|
|
145
145
|
|
|
146
146
|
if threading._active.get(thread._ident) is not thread:
|
|
@@ -994,6 +994,9 @@ class PyDevdAPI(object):
|
|
|
994
994
|
def set_ignore_system_exit_codes(self, py_db, ignore_system_exit_codes):
|
|
995
995
|
py_db.set_ignore_system_exit_codes(ignore_system_exit_codes)
|
|
996
996
|
|
|
997
|
+
def set_break_on_system_exit(self, py_db, codes, ranges):
|
|
998
|
+
py_db.set_break_on_system_exit(codes, ranges)
|
|
999
|
+
|
|
997
1000
|
SourceMappingEntry = pydevd_source_mapping.SourceMappingEntry
|
|
998
1001
|
|
|
999
1002
|
def set_source_mapping(self, py_db, source_filename, mapping):
|