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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
r
|
|
1
|
+
r"""
|
|
2
2
|
This module provides utilities to get the absolute filenames so that we can be sure that:
|
|
3
3
|
- The case of a file will match the actual file in the filesystem (otherwise breakpoints won't be hit).
|
|
4
4
|
- Providing means for the user to make path conversions when doing a remote debugging session in
|
|
@@ -39,11 +39,10 @@ r'''
|
|
|
39
39
|
@note: for doing a remote debugging session, all the pydevd_ files must be on the server accessible
|
|
40
40
|
through the PYTHONPATH (and the PATHS_FROM_ECLIPSE_TO_PYTHON only needs to be set on the target
|
|
41
41
|
machine for the paths that'll actually have breakpoints).
|
|
42
|
-
|
|
42
|
+
"""
|
|
43
43
|
|
|
44
44
|
from _pydev_bundle import pydev_log
|
|
45
|
-
from _pydevd_bundle.pydevd_constants import DebugInfoHolder, IS_WINDOWS, IS_JYTHON,
|
|
46
|
-
DISABLE_FILE_VALIDATION, is_true_in_env, IS_MAC
|
|
45
|
+
from _pydevd_bundle.pydevd_constants import DebugInfoHolder, IS_WINDOWS, IS_JYTHON, DISABLE_FILE_VALIDATION, is_true_in_env, IS_MAC
|
|
47
46
|
from _pydev_bundle._pydev_filesystem_encoding import getfilesystemencoding
|
|
48
47
|
from _pydevd_bundle.pydevd_comm_constants import file_system_encoding, filesystem_encoding_is_utf8
|
|
49
48
|
from _pydev_bundle.pydev_log import error_once
|
|
@@ -77,13 +76,14 @@ def _get_library_dir():
|
|
|
77
76
|
library_dir = None
|
|
78
77
|
try:
|
|
79
78
|
import sysconfig
|
|
80
|
-
|
|
79
|
+
|
|
80
|
+
library_dir = sysconfig.get_path("purelib")
|
|
81
81
|
except ImportError:
|
|
82
82
|
pass # i.e.: Only 2.7 onwards
|
|
83
83
|
|
|
84
84
|
if library_dir is None or not os_path_exists(library_dir):
|
|
85
85
|
for path in sys.path:
|
|
86
|
-
if os_path_exists(path) and os.path.basename(path) ==
|
|
86
|
+
if os_path_exists(path) and os.path.basename(path) == "site-packages":
|
|
87
87
|
library_dir = path
|
|
88
88
|
break
|
|
89
89
|
|
|
@@ -101,14 +101,14 @@ _library_dir = _get_library_dir()
|
|
|
101
101
|
# and the 2nd element is the path in the server machine.
|
|
102
102
|
# see module docstring for more details.
|
|
103
103
|
try:
|
|
104
|
-
PATHS_FROM_ECLIPSE_TO_PYTHON = json.loads(os.environ.get(
|
|
104
|
+
PATHS_FROM_ECLIPSE_TO_PYTHON = json.loads(os.environ.get("PATHS_FROM_ECLIPSE_TO_PYTHON", "[]"))
|
|
105
105
|
except Exception:
|
|
106
|
-
pydev_log.critical(
|
|
106
|
+
pydev_log.critical("Error loading PATHS_FROM_ECLIPSE_TO_PYTHON from environment variable.")
|
|
107
107
|
pydev_log.exception()
|
|
108
108
|
PATHS_FROM_ECLIPSE_TO_PYTHON = []
|
|
109
109
|
else:
|
|
110
110
|
if not isinstance(PATHS_FROM_ECLIPSE_TO_PYTHON, list):
|
|
111
|
-
pydev_log.critical(
|
|
111
|
+
pydev_log.critical("Expected PATHS_FROM_ECLIPSE_TO_PYTHON loaded from environment variable to be a list.")
|
|
112
112
|
PATHS_FROM_ECLIPSE_TO_PYTHON = []
|
|
113
113
|
else:
|
|
114
114
|
# Converting json lists to tuple
|
|
@@ -120,9 +120,9 @@ else:
|
|
|
120
120
|
# r'd:\temp\temp_workspace_2\test_python\src\hhh\xxx')
|
|
121
121
|
# ]
|
|
122
122
|
|
|
123
|
-
convert_to_long_pathname = lambda filename:filename
|
|
124
|
-
convert_to_short_pathname = lambda filename:filename
|
|
125
|
-
get_path_with_real_case = lambda filename:filename
|
|
123
|
+
convert_to_long_pathname = lambda filename: filename
|
|
124
|
+
convert_to_short_pathname = lambda filename: filename
|
|
125
|
+
get_path_with_real_case = lambda filename: filename
|
|
126
126
|
|
|
127
127
|
# Note that we have a cache for previous list dirs... the only case where this may be an
|
|
128
128
|
# issue is if the user actually changes the case of an existing file on while
|
|
@@ -155,15 +155,14 @@ def _resolve_listing(resolved, iter_parts_lowercase, cache=_listdir_cache):
|
|
|
155
155
|
cache[(resolved_lower, resolve_lowercase)] = resolved_joined
|
|
156
156
|
break
|
|
157
157
|
else:
|
|
158
|
-
raise FileNotFoundError(
|
|
159
|
-
resolve_lowercase, resolved, dir_contents))
|
|
158
|
+
raise FileNotFoundError("Unable to find: %s in %s. Dir Contents: %s" % (resolve_lowercase, resolved, dir_contents))
|
|
160
159
|
|
|
161
160
|
resolved = resolved_joined
|
|
162
161
|
|
|
163
162
|
|
|
164
163
|
def _resolve_listing_parts(resolved, parts_in_lowercase, filename):
|
|
165
164
|
try:
|
|
166
|
-
if parts_in_lowercase == [
|
|
165
|
+
if parts_in_lowercase == [""]:
|
|
167
166
|
return resolved
|
|
168
167
|
return _resolve_listing(resolved, iter(parts_in_lowercase))
|
|
169
168
|
except FileNotFoundError:
|
|
@@ -175,10 +174,12 @@ def _resolve_listing_parts(resolved, parts_in_lowercase, filename):
|
|
|
175
174
|
if os_path_exists(filename):
|
|
176
175
|
# This is really strange, ask the user to report as error.
|
|
177
176
|
pydev_log.critical(
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
filename,
|
|
177
|
+
"pydev debugger: critical: unable to get real case for file. Details:\n"
|
|
178
|
+
"filename: %s\ndrive: %s\nparts: %s\n"
|
|
179
|
+
"(please create a ticket in the tracker to address this).",
|
|
180
|
+
filename,
|
|
181
|
+
resolved,
|
|
182
|
+
parts_in_lowercase,
|
|
182
183
|
)
|
|
183
184
|
pydev_log.exception()
|
|
184
185
|
# Don't fail, just return the original file passed.
|
|
@@ -189,15 +190,16 @@ def _resolve_listing_parts(resolved, parts_in_lowercase, filename):
|
|
|
189
190
|
# Don't fail nor log unless the trace level is at least info. Just return the original file passed.
|
|
190
191
|
if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 1:
|
|
191
192
|
pydev_log.info(
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
193
|
+
"pydev debugger: OSError: Unable to get real case for file. Details:\n" "filename: %s\ndrive: %s\nparts: %s\n",
|
|
194
|
+
filename,
|
|
195
|
+
resolved,
|
|
196
|
+
parts_in_lowercase,
|
|
195
197
|
)
|
|
196
198
|
pydev_log.exception()
|
|
197
199
|
return filename
|
|
198
200
|
|
|
199
201
|
|
|
200
|
-
if sys.platform ==
|
|
202
|
+
if sys.platform == "win32":
|
|
201
203
|
try:
|
|
202
204
|
import ctypes
|
|
203
205
|
from ctypes.wintypes import MAX_PATH, LPCWSTR, LPWSTR, DWORD
|
|
@@ -235,10 +237,10 @@ if sys.platform == 'win32':
|
|
|
235
237
|
# consistently (there are settings to disable it on Windows).
|
|
236
238
|
# So, using approach which resolves by listing the dir.
|
|
237
239
|
|
|
238
|
-
if
|
|
240
|
+
if "~" in filename:
|
|
239
241
|
filename = convert_to_long_pathname(filename)
|
|
240
242
|
|
|
241
|
-
if filename.startswith(
|
|
243
|
+
if filename.startswith("<") or not os_path_exists(filename):
|
|
242
244
|
return filename # Not much we can do.
|
|
243
245
|
|
|
244
246
|
drive, parts = os.path.splitdrive(os.path.normpath(filename))
|
|
@@ -263,10 +265,11 @@ if sys.platform == 'win32':
|
|
|
263
265
|
elif IS_JYTHON and IS_WINDOWS:
|
|
264
266
|
|
|
265
267
|
def get_path_with_real_case(filename):
|
|
266
|
-
if filename.startswith(
|
|
268
|
+
if filename.startswith("<"):
|
|
267
269
|
return filename
|
|
268
270
|
|
|
269
271
|
from java.io import File # noqa
|
|
272
|
+
|
|
270
273
|
f = File(filename)
|
|
271
274
|
ret = f.getCanonicalPath()
|
|
272
275
|
return ret
|
|
@@ -274,18 +277,19 @@ elif IS_JYTHON and IS_WINDOWS:
|
|
|
274
277
|
elif IS_MAC:
|
|
275
278
|
|
|
276
279
|
def get_path_with_real_case(filename):
|
|
277
|
-
if filename.startswith(
|
|
280
|
+
if filename.startswith("<") or not os_path_exists(filename):
|
|
278
281
|
return filename # Not much we can do.
|
|
279
282
|
|
|
280
|
-
parts = filename.lower().split(
|
|
283
|
+
parts = filename.lower().split("/")
|
|
281
284
|
|
|
282
|
-
found =
|
|
283
|
-
while parts and parts[0] ==
|
|
284
|
-
found +=
|
|
285
|
+
found = ""
|
|
286
|
+
while parts and parts[0] == "":
|
|
287
|
+
found += "/"
|
|
285
288
|
parts = parts[1:]
|
|
286
289
|
|
|
287
290
|
return _resolve_listing_parts(found, parts, filename)
|
|
288
291
|
|
|
292
|
+
|
|
289
293
|
if IS_JYTHON:
|
|
290
294
|
|
|
291
295
|
def _normcase_windows(filename):
|
|
@@ -295,7 +299,7 @@ else:
|
|
|
295
299
|
|
|
296
300
|
def _normcase_windows(filename):
|
|
297
301
|
# `normcase` doesn't lower case on Python 2 for non-English locale, so we should do it manually.
|
|
298
|
-
if
|
|
302
|
+
if "~" in filename:
|
|
299
303
|
filename = convert_to_long_pathname(filename)
|
|
300
304
|
|
|
301
305
|
filename = _nt_os_normcase(filename)
|
|
@@ -306,8 +310,8 @@ def _normcase_linux(filename):
|
|
|
306
310
|
return filename # no-op
|
|
307
311
|
|
|
308
312
|
|
|
309
|
-
_filename_normalization = os.environ.get(
|
|
310
|
-
if _filename_normalization ==
|
|
313
|
+
_filename_normalization = os.environ.get("PYDEVD_FILENAME_NORMALIZATION", "").lower()
|
|
314
|
+
if _filename_normalization == "lower":
|
|
311
315
|
# Note: this is mostly for testing (forcing to always lower-case all contents
|
|
312
316
|
# internally -- used to mimick Windows normalization on Linux).
|
|
313
317
|
|
|
@@ -316,7 +320,7 @@ if _filename_normalization == 'lower':
|
|
|
316
320
|
|
|
317
321
|
_default_normcase = _normcase_lower
|
|
318
322
|
|
|
319
|
-
elif _filename_normalization ==
|
|
323
|
+
elif _filename_normalization == "none":
|
|
320
324
|
# Disable any filename normalization may be an option on Windows if the
|
|
321
325
|
# user is having issues under some circumstances.
|
|
322
326
|
_default_normcase = _normcase_linux
|
|
@@ -343,7 +347,7 @@ def normcase(s, NORMCASE_CACHE={}):
|
|
|
343
347
|
return normalized
|
|
344
348
|
|
|
345
349
|
|
|
346
|
-
_ide_os =
|
|
350
|
+
_ide_os = "WINDOWS" if IS_WINDOWS else "UNIX"
|
|
347
351
|
|
|
348
352
|
_normcase_from_client = normcase
|
|
349
353
|
|
|
@@ -352,32 +356,31 @@ def normcase_from_client(s):
|
|
|
352
356
|
return _normcase_from_client(s)
|
|
353
357
|
|
|
354
358
|
|
|
355
|
-
DEBUG_CLIENT_SERVER_TRANSLATION = os.environ.get(
|
|
359
|
+
DEBUG_CLIENT_SERVER_TRANSLATION = os.environ.get("DEBUG_PYDEVD_PATHS_TRANSLATION", "False").lower() in ("1", "true")
|
|
356
360
|
|
|
357
361
|
|
|
358
362
|
def set_ide_os(os):
|
|
359
|
-
|
|
363
|
+
"""
|
|
360
364
|
We need to set the IDE os because the host where the code is running may be
|
|
361
365
|
actually different from the client (and the point is that we want the proper
|
|
362
366
|
paths to translate from the client to the server).
|
|
363
367
|
|
|
364
368
|
:param os:
|
|
365
369
|
'UNIX' or 'WINDOWS'
|
|
366
|
-
|
|
370
|
+
"""
|
|
367
371
|
global _ide_os
|
|
368
372
|
global _normcase_from_client
|
|
369
373
|
prev = _ide_os
|
|
370
|
-
if os ==
|
|
371
|
-
os =
|
|
374
|
+
if os == "WIN": # Apparently PyCharm uses 'WIN' (https://github.com/fabioz/PyDev.Debugger/issues/116)
|
|
375
|
+
os = "WINDOWS"
|
|
372
376
|
|
|
373
|
-
assert os in (
|
|
377
|
+
assert os in ("WINDOWS", "UNIX")
|
|
374
378
|
|
|
375
379
|
if DEBUG_CLIENT_SERVER_TRANSLATION:
|
|
376
|
-
print(
|
|
380
|
+
print("pydev debugger: client OS: %s" % (os,))
|
|
377
381
|
|
|
378
382
|
_normcase_from_client = normcase
|
|
379
|
-
if os ==
|
|
380
|
-
|
|
383
|
+
if os == "WINDOWS":
|
|
381
384
|
# Client in Windows and server in Unix, we need to normalize the case.
|
|
382
385
|
if not IS_WINDOWS:
|
|
383
386
|
_normcase_from_client = _normcase_windows
|
|
@@ -399,28 +402,28 @@ NORM_PATHS_AND_BASE_CONTAINER = {}
|
|
|
399
402
|
|
|
400
403
|
|
|
401
404
|
def canonical_normalized_path(filename):
|
|
402
|
-
|
|
405
|
+
"""
|
|
403
406
|
This returns a filename that is canonical and it's meant to be used internally
|
|
404
407
|
to store information on breakpoints and see if there's any hit on it.
|
|
405
408
|
|
|
406
409
|
Note that this version is only internal as it may not match the case and
|
|
407
410
|
may have symlinks resolved (and thus may not match what the user expects
|
|
408
411
|
in the editor).
|
|
409
|
-
|
|
412
|
+
"""
|
|
410
413
|
return get_abs_path_real_path_and_base_from_file(filename)[1]
|
|
411
414
|
|
|
412
415
|
|
|
413
416
|
def absolute_path(filename):
|
|
414
|
-
|
|
417
|
+
"""
|
|
415
418
|
Provides a version of the filename that's absolute (and NOT normalized).
|
|
416
|
-
|
|
419
|
+
"""
|
|
417
420
|
return get_abs_path_real_path_and_base_from_file(filename)[0]
|
|
418
421
|
|
|
419
422
|
|
|
420
423
|
def basename(filename):
|
|
421
|
-
|
|
424
|
+
"""
|
|
422
425
|
Provides the basename for a file.
|
|
423
|
-
|
|
426
|
+
"""
|
|
424
427
|
return get_abs_path_real_path_and_base_from_file(filename)[2]
|
|
425
428
|
|
|
426
429
|
|
|
@@ -430,7 +433,7 @@ def _abs_and_canonical_path(filename, NORM_PATHS_CONTAINER=NORM_PATHS_CONTAINER)
|
|
|
430
433
|
return NORM_PATHS_CONTAINER[filename]
|
|
431
434
|
except:
|
|
432
435
|
if filename.__class__ != str:
|
|
433
|
-
raise AssertionError(
|
|
436
|
+
raise AssertionError("Paths passed to _abs_and_canonical_path must be str. Found: %s (%s)" % (filename, type(filename)))
|
|
434
437
|
if os is None: # Interpreter shutdown
|
|
435
438
|
return filename, filename
|
|
436
439
|
|
|
@@ -475,7 +478,7 @@ def _get_relative_filename_abs_path(filename, func, os_path_exists=os_path_exist
|
|
|
475
478
|
|
|
476
479
|
|
|
477
480
|
def _apply_func_and_normalize_case(filename, func, isabs, normalize_case, os_path_exists=os_path_exists, join=join):
|
|
478
|
-
if filename.startswith(
|
|
481
|
+
if filename.startswith("<"):
|
|
479
482
|
# Not really a file, rather a synthetic name like <string> or <ipython-...>;
|
|
480
483
|
# shouldn't be normalized.
|
|
481
484
|
return filename
|
|
@@ -486,23 +489,23 @@ def _apply_func_and_normalize_case(filename, func, isabs, normalize_case, os_pat
|
|
|
486
489
|
if not os_path_exists(r):
|
|
487
490
|
r = _get_relative_filename_abs_path(filename, func)
|
|
488
491
|
|
|
489
|
-
ind = r.find(
|
|
492
|
+
ind = r.find(".zip")
|
|
490
493
|
if ind == -1:
|
|
491
|
-
ind = r.find(
|
|
494
|
+
ind = r.find(".egg")
|
|
492
495
|
if ind != -1:
|
|
493
496
|
ind += 4
|
|
494
497
|
zip_path = r[:ind]
|
|
495
498
|
inner_path = r[ind:]
|
|
496
|
-
if inner_path.startswith(
|
|
499
|
+
if inner_path.startswith("!"):
|
|
497
500
|
# Note (fabioz): although I can replicate this by creating a file ending as
|
|
498
501
|
# .zip! or .egg!, I don't really know what's the real-world case for this
|
|
499
502
|
# (still kept as it was added by @jetbrains, but it should probably be reviewed
|
|
500
503
|
# later on).
|
|
501
504
|
# Note 2: it goes hand-in-hand with 'exists'.
|
|
502
505
|
inner_path = inner_path[1:]
|
|
503
|
-
zip_path = zip_path +
|
|
506
|
+
zip_path = zip_path + "!"
|
|
504
507
|
|
|
505
|
-
if inner_path.startswith(
|
|
508
|
+
if inner_path.startswith("/") or inner_path.startswith("\\"):
|
|
506
509
|
inner_path = inner_path[1:]
|
|
507
510
|
if inner_path:
|
|
508
511
|
if normalize_case:
|
|
@@ -529,9 +532,9 @@ def exists(filename):
|
|
|
529
532
|
if os_path_exists(filename):
|
|
530
533
|
return True
|
|
531
534
|
|
|
532
|
-
ind = filename.find(
|
|
535
|
+
ind = filename.find(".zip")
|
|
533
536
|
if ind == -1:
|
|
534
|
-
ind = filename.find(
|
|
537
|
+
ind = filename.find(".egg")
|
|
535
538
|
|
|
536
539
|
if ind != -1:
|
|
537
540
|
ind += 4
|
|
@@ -544,7 +547,7 @@ def exists(filename):
|
|
|
544
547
|
# later on).
|
|
545
548
|
# Note 2: it goes hand-in-hand with '_apply_func_and_normalize_case'.
|
|
546
549
|
inner_path = inner_path[1:]
|
|
547
|
-
zip_path = zip_path +
|
|
550
|
+
zip_path = zip_path + "!"
|
|
548
551
|
|
|
549
552
|
zip_file_obj = _ZIP_SEARCH_CACHE.get(zip_path, _NOT_FOUND_SENTINEL)
|
|
550
553
|
if zip_file_obj is None:
|
|
@@ -552,24 +555,25 @@ def exists(filename):
|
|
|
552
555
|
elif zip_file_obj is _NOT_FOUND_SENTINEL:
|
|
553
556
|
try:
|
|
554
557
|
import zipfile
|
|
555
|
-
|
|
558
|
+
|
|
559
|
+
zip_file_obj = zipfile.ZipFile(zip_path, "r")
|
|
556
560
|
_ZIP_SEARCH_CACHE[zip_path] = zip_file_obj
|
|
557
561
|
except:
|
|
558
562
|
_ZIP_SEARCH_CACHE[zip_path] = _NOT_FOUND_SENTINEL
|
|
559
563
|
return False
|
|
560
564
|
|
|
561
565
|
try:
|
|
562
|
-
if inner_path.startswith(
|
|
566
|
+
if inner_path.startswith("/") or inner_path.startswith("\\"):
|
|
563
567
|
inner_path = inner_path[1:]
|
|
564
568
|
|
|
565
|
-
_info = zip_file_obj.getinfo(inner_path.replace(
|
|
569
|
+
_info = zip_file_obj.getinfo(inner_path.replace("\\", "/"))
|
|
566
570
|
|
|
567
571
|
return join(zip_path, inner_path)
|
|
568
572
|
except KeyError:
|
|
569
573
|
return False
|
|
570
574
|
|
|
571
575
|
else:
|
|
572
|
-
pydev_log.debug(
|
|
576
|
+
pydev_log.debug("os.path.exists(%r) returned False.", filename)
|
|
573
577
|
|
|
574
578
|
return False
|
|
575
579
|
|
|
@@ -584,22 +588,22 @@ try:
|
|
|
584
588
|
except AttributeError:
|
|
585
589
|
code = os_path_real_path.__code__
|
|
586
590
|
|
|
587
|
-
if code.co_filename.startswith(
|
|
591
|
+
if code.co_filename.startswith("<frozen"):
|
|
588
592
|
# See: https://github.com/fabioz/PyDev.Debugger/issues/213
|
|
589
|
-
report(
|
|
590
|
-
report(
|
|
591
|
-
report(
|
|
592
|
-
report(
|
|
593
|
+
report("Debugger warning: It seems that frozen modules are being used, which may")
|
|
594
|
+
report("make the debugger miss breakpoints. Please pass -Xfrozen_modules=off")
|
|
595
|
+
report("to python to disable frozen modules.")
|
|
596
|
+
report("Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.")
|
|
593
597
|
|
|
594
598
|
elif not os.path.isabs(code.co_filename):
|
|
595
|
-
report(
|
|
596
|
-
report(
|
|
597
|
-
report(
|
|
599
|
+
report("Debugger warning: The os.path.realpath.__code__.co_filename (%s)", code.co_filename)
|
|
600
|
+
report("is not absolute, which may make the debugger miss breakpoints.")
|
|
601
|
+
report("Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.")
|
|
598
602
|
|
|
599
603
|
elif not exists(code.co_filename): # Note: checks for files inside .zip containers.
|
|
600
|
-
report(
|
|
601
|
-
report(
|
|
602
|
-
report(
|
|
604
|
+
report("Debugger warning: It seems the debugger cannot find os.path.realpath.__code__.co_filename (%s).", code.co_filename)
|
|
605
|
+
report("This may make the debugger miss breakpoints in the standard library.")
|
|
606
|
+
report("Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.")
|
|
603
607
|
except:
|
|
604
608
|
# Don't fail if there's something not correct here -- but at least print it to the user so that we can correct that
|
|
605
609
|
pydev_log.exception()
|
|
@@ -641,14 +645,14 @@ map_file_to_server = _original_map_file_to_server
|
|
|
641
645
|
|
|
642
646
|
def _fix_path(path, sep, add_end_sep=False):
|
|
643
647
|
if add_end_sep:
|
|
644
|
-
if not path.endswith(
|
|
645
|
-
path +=
|
|
648
|
+
if not path.endswith("/") and not path.endswith("\\"):
|
|
649
|
+
path += "/"
|
|
646
650
|
else:
|
|
647
|
-
if path.endswith(
|
|
651
|
+
if path.endswith("/") or path.endswith("\\"):
|
|
648
652
|
path = path[:-1]
|
|
649
653
|
|
|
650
|
-
if sep !=
|
|
651
|
-
path = path.replace(
|
|
654
|
+
if sep != "/":
|
|
655
|
+
path = path.replace("/", sep)
|
|
652
656
|
return path
|
|
653
657
|
|
|
654
658
|
|
|
@@ -666,12 +670,12 @@ def get_client_filename_source_reference(client_filename):
|
|
|
666
670
|
|
|
667
671
|
|
|
668
672
|
def get_server_filename_from_source_reference(source_reference):
|
|
669
|
-
return _source_reference_to_server_filename.get(source_reference,
|
|
673
|
+
return _source_reference_to_server_filename.get(source_reference, "")
|
|
670
674
|
|
|
671
675
|
|
|
672
676
|
def create_source_reference_for_linecache(server_filename):
|
|
673
677
|
source_reference = _next_source_reference()
|
|
674
|
-
pydev_log.debug(
|
|
678
|
+
pydev_log.debug("Created linecache id source reference: %s for server filename: %s", source_reference, server_filename)
|
|
675
679
|
_line_cache_source_reference_to_server_filename[source_reference] = server_filename
|
|
676
680
|
return source_reference
|
|
677
681
|
|
|
@@ -682,7 +686,7 @@ def get_source_reference_filename_from_linecache(source_reference):
|
|
|
682
686
|
|
|
683
687
|
def create_source_reference_for_frame_id(frame_id, original_filename):
|
|
684
688
|
source_reference = _next_source_reference()
|
|
685
|
-
pydev_log.debug(
|
|
689
|
+
pydev_log.debug("Created frame id source reference: %s for frame id: %s (%s)", source_reference, frame_id, original_filename)
|
|
686
690
|
_source_reference_to_frame_id[source_reference] = frame_id
|
|
687
691
|
return source_reference
|
|
688
692
|
|
|
@@ -691,7 +695,7 @@ def get_frame_id_from_source_reference(source_reference):
|
|
|
691
695
|
return _source_reference_to_frame_id.get(source_reference)
|
|
692
696
|
|
|
693
697
|
|
|
694
|
-
_global_resolve_symlinks = is_true_in_env(
|
|
698
|
+
_global_resolve_symlinks = is_true_in_env("PYDEVD_RESOLVE_SYMLINKS")
|
|
695
699
|
|
|
696
700
|
|
|
697
701
|
def set_resolve_symlinks(resolve_symlinks):
|
|
@@ -700,7 +704,7 @@ def set_resolve_symlinks(resolve_symlinks):
|
|
|
700
704
|
|
|
701
705
|
|
|
702
706
|
def setup_client_server_paths(paths):
|
|
703
|
-
|
|
707
|
+
"""paths is the same format as PATHS_FROM_ECLIPSE_TO_PYTHON"""
|
|
704
708
|
|
|
705
709
|
global map_file_to_client
|
|
706
710
|
global map_file_to_server
|
|
@@ -714,8 +718,8 @@ def setup_client_server_paths(paths):
|
|
|
714
718
|
_next_source_reference = partial(next, itertools.count(1))
|
|
715
719
|
|
|
716
720
|
# Work on the client and server slashes.
|
|
717
|
-
python_sep =
|
|
718
|
-
eclipse_sep =
|
|
721
|
+
python_sep = "\\" if IS_WINDOWS else "/"
|
|
722
|
+
eclipse_sep = "\\" if _ide_os == "WINDOWS" else "/"
|
|
719
723
|
|
|
720
724
|
norm_filename_to_server_container = {}
|
|
721
725
|
norm_filename_to_client_container = {}
|
|
@@ -729,7 +733,7 @@ def setup_client_server_paths(paths):
|
|
|
729
733
|
# Apply normcase to the existing paths to follow the os preferences.
|
|
730
734
|
|
|
731
735
|
for i, (path0, path1) in enumerate(paths):
|
|
732
|
-
force_only_slash = path0.endswith((
|
|
736
|
+
force_only_slash = path0.endswith(("/", "\\")) and path1.endswith(("/", "\\"))
|
|
733
737
|
|
|
734
738
|
if not force_only_slash:
|
|
735
739
|
path0 = _fix_path(path0, eclipse_sep, False)
|
|
@@ -771,10 +775,10 @@ def setup_client_server_paths(paths):
|
|
|
771
775
|
if translated_normalized.startswith(eclipse_prefix):
|
|
772
776
|
found_translation = True
|
|
773
777
|
if DEBUG_CLIENT_SERVER_TRANSLATION:
|
|
774
|
-
pydev_log.critical(
|
|
775
|
-
translated = server_prefix + filename[len(eclipse_prefix):]
|
|
778
|
+
pydev_log.critical("pydev debugger: replacing to server: %s", filename)
|
|
779
|
+
translated = server_prefix + filename[len(eclipse_prefix) :]
|
|
776
780
|
if DEBUG_CLIENT_SERVER_TRANSLATION:
|
|
777
|
-
pydev_log.critical(
|
|
781
|
+
pydev_log.critical("pydev debugger: sent to server: %s - matched prefix: %s", translated, eclipse_prefix)
|
|
778
782
|
break
|
|
779
783
|
else:
|
|
780
784
|
found_translation = False
|
|
@@ -789,11 +793,14 @@ def setup_client_server_paths(paths):
|
|
|
789
793
|
translated = absolute_path(translated)
|
|
790
794
|
else:
|
|
791
795
|
if not os_path_exists(translated):
|
|
792
|
-
if not translated.startswith(
|
|
796
|
+
if not translated.startswith("<"):
|
|
793
797
|
# This is a configuration error, so, write it always so
|
|
794
798
|
# that the user can fix it.
|
|
795
|
-
error_once(
|
|
796
|
-
|
|
799
|
+
error_once(
|
|
800
|
+
'pydev debugger: unable to find translation for: "%s" in [%s] (please revise your path mappings).\n',
|
|
801
|
+
filename,
|
|
802
|
+
", ".join(['"%s"' % (x[0],) for x in paths_from_eclipse_to_python]),
|
|
803
|
+
)
|
|
797
804
|
else:
|
|
798
805
|
# It's possible that we had some round trip (say, we sent /usr/lib and received
|
|
799
806
|
# it back, so, having no translation is ok too).
|
|
@@ -820,25 +827,28 @@ def setup_client_server_paths(paths):
|
|
|
820
827
|
if translated_normalized.lower() != translated_proper_case.lower():
|
|
821
828
|
if DEBUG_CLIENT_SERVER_TRANSLATION:
|
|
822
829
|
pydev_log.critical(
|
|
823
|
-
|
|
824
|
-
|
|
830
|
+
"pydev debugger: translated_normalized changed path (from: %s to %s)", translated_proper_case, translated_normalized
|
|
831
|
+
)
|
|
825
832
|
|
|
826
833
|
for i, (eclipse_prefix, python_prefix) in enumerate(paths_from_eclipse_to_python):
|
|
827
834
|
if translated_normalized.startswith(python_prefix):
|
|
828
835
|
if DEBUG_CLIENT_SERVER_TRANSLATION:
|
|
829
|
-
pydev_log.critical(
|
|
836
|
+
pydev_log.critical("pydev debugger: replacing to client: %s", translated_normalized)
|
|
830
837
|
|
|
831
838
|
# Note: use the non-normalized version.
|
|
832
839
|
eclipse_prefix = initial_paths[i][0]
|
|
833
|
-
translated = eclipse_prefix + translated_proper_case[len(python_prefix):]
|
|
840
|
+
translated = eclipse_prefix + translated_proper_case[len(python_prefix) :]
|
|
834
841
|
if DEBUG_CLIENT_SERVER_TRANSLATION:
|
|
835
|
-
pydev_log.critical(
|
|
842
|
+
pydev_log.critical("pydev debugger: sent to client: %s - matched prefix: %s", translated, python_prefix)
|
|
836
843
|
path_mapping_applied = True
|
|
837
844
|
break
|
|
838
845
|
else:
|
|
839
846
|
if DEBUG_CLIENT_SERVER_TRANSLATION:
|
|
840
|
-
pydev_log.critical(
|
|
841
|
-
|
|
847
|
+
pydev_log.critical(
|
|
848
|
+
"pydev debugger: to client: unable to find matching prefix for: %s in %s",
|
|
849
|
+
translated_normalized,
|
|
850
|
+
[x[1] for x in paths_from_eclipse_to_python],
|
|
851
|
+
)
|
|
842
852
|
translated = translated_proper_case
|
|
843
853
|
|
|
844
854
|
if eclipse_sep != python_sep:
|
|
@@ -855,7 +865,7 @@ def setup_client_server_paths(paths):
|
|
|
855
865
|
source_reference = 0
|
|
856
866
|
else:
|
|
857
867
|
source_reference = _next_source_reference()
|
|
858
|
-
pydev_log.debug(
|
|
868
|
+
pydev_log.debug("Created source reference: %s for untranslated path: %s", source_reference, filename)
|
|
859
869
|
|
|
860
870
|
_client_filename_in_utf8_to_source_reference[translated] = source_reference
|
|
861
871
|
_source_reference_to_server_filename[source_reference] = filename
|
|
@@ -870,8 +880,7 @@ setup_client_server_paths(PATHS_FROM_ECLIPSE_TO_PYTHON)
|
|
|
870
880
|
|
|
871
881
|
|
|
872
882
|
# For given file f returns tuple of its absolute path, real path and base name
|
|
873
|
-
def get_abs_path_real_path_and_base_from_file(
|
|
874
|
-
filename, NORM_PATHS_AND_BASE_CONTAINER=NORM_PATHS_AND_BASE_CONTAINER):
|
|
883
|
+
def get_abs_path_real_path_and_base_from_file(filename, NORM_PATHS_AND_BASE_CONTAINER=NORM_PATHS_AND_BASE_CONTAINER):
|
|
875
884
|
try:
|
|
876
885
|
return NORM_PATHS_AND_BASE_CONTAINER[filename]
|
|
877
886
|
except:
|
|
@@ -879,20 +888,20 @@ def get_abs_path_real_path_and_base_from_file(
|
|
|
879
888
|
if not f:
|
|
880
889
|
# i.e.: it's possible that the user compiled code with an empty string (consider
|
|
881
890
|
# it as <string> in this case).
|
|
882
|
-
f =
|
|
891
|
+
f = "<string>"
|
|
883
892
|
|
|
884
|
-
if f.startswith(
|
|
893
|
+
if f.startswith("<"):
|
|
885
894
|
return f, normcase(f), f
|
|
886
895
|
|
|
887
896
|
if _abs_and_canonical_path is None: # Interpreter shutdown
|
|
888
|
-
i = max(f.rfind(
|
|
889
|
-
return (f, f, f[i + 1:])
|
|
897
|
+
i = max(f.rfind("/"), f.rfind("\\"))
|
|
898
|
+
return (f, f, f[i + 1 :])
|
|
890
899
|
|
|
891
900
|
if f is not None:
|
|
892
|
-
if f.endswith(
|
|
901
|
+
if f.endswith(".pyc"):
|
|
893
902
|
f = f[:-1]
|
|
894
|
-
elif f.endswith(
|
|
895
|
-
f = f[
|
|
903
|
+
elif f.endswith("$py.class"):
|
|
904
|
+
f = f[: -len("$py.class")] + ".py"
|
|
896
905
|
|
|
897
906
|
abs_path, canonical_normalized_filename = _abs_and_canonical_path(f)
|
|
898
907
|
|
|
@@ -900,8 +909,8 @@ def get_abs_path_real_path_and_base_from_file(
|
|
|
900
909
|
base = os_path_basename(canonical_normalized_filename)
|
|
901
910
|
except AttributeError:
|
|
902
911
|
# Error during shutdown.
|
|
903
|
-
i = max(f.rfind(
|
|
904
|
-
base = f[i + 1:]
|
|
912
|
+
i = max(f.rfind("/"), f.rfind("\\"))
|
|
913
|
+
base = f[i + 1 :]
|
|
905
914
|
ret = abs_path, canonical_normalized_filename, base
|
|
906
915
|
NORM_PATHS_AND_BASE_CONTAINER[filename] = ret
|
|
907
916
|
return ret
|
|
@@ -914,18 +923,18 @@ def get_abs_path_real_path_and_base_from_frame(frame, NORM_PATHS_AND_BASE_CONTAI
|
|
|
914
923
|
# This one is just internal (so, does not need any kind of client-server translation)
|
|
915
924
|
f = frame.f_code.co_filename
|
|
916
925
|
|
|
917
|
-
if f is not None and f.startswith
|
|
926
|
+
if f is not None and f.startswith(("build/bdist.", "build\\bdist.")):
|
|
918
927
|
# files from eggs in Python 2.7 have paths like build/bdist.linux-x86_64/egg/<path-inside-egg>
|
|
919
|
-
f = frame.f_globals[
|
|
928
|
+
f = frame.f_globals["__file__"]
|
|
920
929
|
|
|
921
930
|
if get_abs_path_real_path_and_base_from_file is None:
|
|
922
931
|
# Interpreter shutdown
|
|
923
932
|
if not f:
|
|
924
933
|
# i.e.: it's possible that the user compiled code with an empty string (consider
|
|
925
934
|
# it as <string> in this case).
|
|
926
|
-
f =
|
|
927
|
-
i = max(f.rfind(
|
|
928
|
-
return f, f, f[i + 1:]
|
|
935
|
+
f = "<string>"
|
|
936
|
+
i = max(f.rfind("/"), f.rfind("\\"))
|
|
937
|
+
return f, f, f[i + 1 :]
|
|
929
938
|
|
|
930
939
|
ret = get_abs_path_real_path_and_base_from_file(f)
|
|
931
940
|
# Also cache based on the frame.f_code.co_filename (if we had it inside build/bdist it can make a difference).
|
|
@@ -935,6 +944,7 @@ def get_abs_path_real_path_and_base_from_frame(frame, NORM_PATHS_AND_BASE_CONTAI
|
|
|
935
944
|
|
|
936
945
|
def get_fullname(mod_name):
|
|
937
946
|
import pkgutil
|
|
947
|
+
|
|
938
948
|
try:
|
|
939
949
|
loader = pkgutil.get_loader(mod_name)
|
|
940
950
|
except:
|
|
@@ -949,8 +959,19 @@ def get_fullname(mod_name):
|
|
|
949
959
|
|
|
950
960
|
def get_package_dir(mod_name):
|
|
951
961
|
for path in sys.path:
|
|
952
|
-
mod_path = join(path, mod_name.replace(
|
|
962
|
+
mod_path = join(path, mod_name.replace(".", "/"))
|
|
953
963
|
if os.path.isdir(mod_path):
|
|
954
964
|
return mod_path
|
|
955
965
|
return None
|
|
956
966
|
|
|
967
|
+
def contains_dir(path, dir_name):
|
|
968
|
+
try:
|
|
969
|
+
while path:
|
|
970
|
+
path, tail = os.path.split(path)
|
|
971
|
+
if tail == dir_name:
|
|
972
|
+
return True
|
|
973
|
+
if tail is None and path == dir_name:
|
|
974
|
+
return True
|
|
975
|
+
except:
|
|
976
|
+
pass
|
|
977
|
+
return False
|