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
|
@@ -18,7 +18,7 @@ dummy_tracing_holder = DummyTracingHolder()
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
def update_globals_dict(globals_dict):
|
|
21
|
-
new_globals = {
|
|
21
|
+
new_globals = {"_pydev_stop_at_break": _pydev_stop_at_break}
|
|
22
22
|
globals_dict.update(new_globals)
|
|
23
23
|
|
|
24
24
|
|
|
@@ -50,9 +50,9 @@ def _pydev_stop_at_break(line):
|
|
|
50
50
|
return
|
|
51
51
|
|
|
52
52
|
pydev_log.debug("Setting f_trace due to frame eval mode in file: %s on line %s", frame.f_code.co_filename, line)
|
|
53
|
-
additional_info.trace_suspend_type =
|
|
53
|
+
additional_info.trace_suspend_type = "frame_eval"
|
|
54
54
|
|
|
55
|
-
pydevd_frame_eval_cython_wrapper = sys.modules[
|
|
55
|
+
pydevd_frame_eval_cython_wrapper = sys.modules["_pydevd_frame_eval.pydevd_frame_eval_cython_wrapper"]
|
|
56
56
|
thread_info = pydevd_frame_eval_cython_wrapper.get_thread_info_py()
|
|
57
57
|
if thread_info.thread_trace_func is not None:
|
|
58
58
|
frame.f_trace = thread_info.thread_trace_func
|
|
@@ -63,7 +63,7 @@ def _pydev_stop_at_break(line):
|
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
def _pydev_needs_stop_at_break(line):
|
|
66
|
-
|
|
66
|
+
"""
|
|
67
67
|
We separate the functionality into 2 functions so that we can generate a bytecode which
|
|
68
68
|
generates a spurious line change so that we can do:
|
|
69
69
|
|
|
@@ -72,7 +72,7 @@ def _pydev_needs_stop_at_break(line):
|
|
|
72
72
|
_pydev_stop_at_break()
|
|
73
73
|
# then, proceed to go to the current line
|
|
74
74
|
# (which will then trigger a line event).
|
|
75
|
-
|
|
75
|
+
"""
|
|
76
76
|
t = threading.current_thread()
|
|
77
77
|
try:
|
|
78
78
|
additional_info = t.additional_info
|
|
@@ -119,4 +119,3 @@ def _pydev_needs_stop_at_break(line):
|
|
|
119
119
|
additional_info.is_tracing -= 1
|
|
120
120
|
|
|
121
121
|
return False
|
|
122
|
-
|
|
@@ -14,43 +14,42 @@ DEBUG = False
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class DebugHelper(object):
|
|
17
|
-
|
|
18
17
|
def __init__(self):
|
|
19
|
-
self._debug_dir = os.path.join(os.path.dirname(__file__),
|
|
18
|
+
self._debug_dir = os.path.join(os.path.dirname(__file__), "debug_info")
|
|
20
19
|
try:
|
|
21
20
|
os.makedirs(self._debug_dir)
|
|
22
21
|
except:
|
|
23
22
|
pass
|
|
24
23
|
self._next = partial(next, itertools.count(0))
|
|
25
24
|
|
|
26
|
-
def _get_filename(self, op_number=None, prefix=
|
|
25
|
+
def _get_filename(self, op_number=None, prefix=""):
|
|
27
26
|
if op_number is None:
|
|
28
27
|
op_number = self._next()
|
|
29
|
-
name =
|
|
28
|
+
name = "%03d_before.txt" % op_number
|
|
30
29
|
else:
|
|
31
|
-
name =
|
|
30
|
+
name = "%03d_change.txt" % op_number
|
|
32
31
|
|
|
33
32
|
filename = os.path.join(self._debug_dir, prefix + name)
|
|
34
33
|
return filename, op_number
|
|
35
34
|
|
|
36
|
-
def write_bytecode(self, b, op_number=None, prefix=
|
|
35
|
+
def write_bytecode(self, b, op_number=None, prefix=""):
|
|
37
36
|
filename, op_number = self._get_filename(op_number, prefix)
|
|
38
|
-
with open(filename,
|
|
37
|
+
with open(filename, "w") as stream:
|
|
39
38
|
bytecode.dump_bytecode(b, stream=stream, lineno=True)
|
|
40
39
|
return op_number
|
|
41
40
|
|
|
42
|
-
def write_dis(self, code_to_modify, op_number=None, prefix=
|
|
41
|
+
def write_dis(self, code_to_modify, op_number=None, prefix=""):
|
|
43
42
|
filename, op_number = self._get_filename(op_number, prefix)
|
|
44
|
-
with open(filename,
|
|
45
|
-
stream.write(
|
|
46
|
-
stream.write(
|
|
47
|
-
stream.write(
|
|
48
|
-
stream.write(
|
|
43
|
+
with open(filename, "w") as stream:
|
|
44
|
+
stream.write("-------- ")
|
|
45
|
+
stream.write("-------- ")
|
|
46
|
+
stream.write("id(code_to_modify): %s" % id(code_to_modify))
|
|
47
|
+
stream.write("\n\n")
|
|
49
48
|
dis.dis(code_to_modify, file=stream)
|
|
50
49
|
return op_number
|
|
51
50
|
|
|
52
51
|
|
|
53
|
-
_CodeLineInfo = namedtuple(
|
|
52
|
+
_CodeLineInfo = namedtuple("_CodeLineInfo", "line_to_offset, first_line, last_line")
|
|
54
53
|
|
|
55
54
|
|
|
56
55
|
# Note: this method has a version in cython too (that one is usually used, this is just for tests).
|
|
@@ -72,19 +71,15 @@ if DEBUG:
|
|
|
72
71
|
debug_helper = DebugHelper()
|
|
73
72
|
|
|
74
73
|
|
|
75
|
-
def get_instructions_to_add(
|
|
76
|
-
|
|
77
|
-
_pydev_stop_at_break=_pydev_stop_at_break,
|
|
78
|
-
_pydev_needs_stop_at_break=_pydev_needs_stop_at_break
|
|
79
|
-
):
|
|
80
|
-
'''
|
|
74
|
+
def get_instructions_to_add(stop_at_line, _pydev_stop_at_break=_pydev_stop_at_break, _pydev_needs_stop_at_break=_pydev_needs_stop_at_break):
|
|
75
|
+
"""
|
|
81
76
|
This is the bytecode for something as:
|
|
82
77
|
|
|
83
78
|
if _pydev_needs_stop_at_break():
|
|
84
79
|
_pydev_stop_at_break()
|
|
85
80
|
|
|
86
81
|
but with some special handling for lines.
|
|
87
|
-
|
|
82
|
+
"""
|
|
88
83
|
# Good reference to how things work regarding line numbers and jumps:
|
|
89
84
|
# https://github.com/python/cpython/blob/3.6/Objects/lnotab_notes.txt
|
|
90
85
|
|
|
@@ -100,7 +95,6 @@ def get_instructions_to_add(
|
|
|
100
95
|
Instr("LOAD_CONST", stop_at_line, lineno=stop_at_line),
|
|
101
96
|
Instr("CALL_FUNCTION", 1, lineno=stop_at_line),
|
|
102
97
|
Instr("POP_JUMP_IF_FALSE", label, lineno=stop_at_line),
|
|
103
|
-
|
|
104
98
|
# -- _pydev_stop_at_break()
|
|
105
99
|
#
|
|
106
100
|
# Note that this has line numbers -1 so that when the NOP just below
|
|
@@ -109,7 +103,6 @@ def get_instructions_to_add(
|
|
|
109
103
|
Instr("LOAD_CONST", stop_at_line, lineno=spurious_line),
|
|
110
104
|
Instr("CALL_FUNCTION", 1, lineno=spurious_line),
|
|
111
105
|
Instr("POP_TOP", lineno=spurious_line),
|
|
112
|
-
|
|
113
106
|
# Reason for the NOP: Python will give us a 'line' trace event whenever we forward jump to
|
|
114
107
|
# the first instruction of a line, so, in the case where we haven't added a programmatic
|
|
115
108
|
# breakpoint (either because we didn't hit a breakpoint anymore or because it was already
|
|
@@ -122,7 +115,6 @@ def get_instructions_to_add(
|
|
|
122
115
|
|
|
123
116
|
|
|
124
117
|
class _Node(object):
|
|
125
|
-
|
|
126
118
|
def __init__(self, data):
|
|
127
119
|
self.prev = None
|
|
128
120
|
self.next = None
|
|
@@ -158,11 +150,11 @@ class _Node(object):
|
|
|
158
150
|
|
|
159
151
|
|
|
160
152
|
class _HelperBytecodeList(object):
|
|
161
|
-
|
|
153
|
+
"""
|
|
162
154
|
A helper double-linked list to make the manipulation a bit easier (so that we don't need
|
|
163
155
|
to keep track of indices that change) and performant (because adding multiple items to
|
|
164
156
|
the middle of a regular list isn't ideal).
|
|
165
|
-
|
|
157
|
+
"""
|
|
166
158
|
|
|
167
159
|
def __init__(self, lst=None):
|
|
168
160
|
self._head = None
|
|
@@ -206,16 +198,24 @@ class _HelperBytecodeList(object):
|
|
|
206
198
|
|
|
207
199
|
|
|
208
200
|
_PREDICT_TABLE = {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
201
|
+
"LIST_APPEND": ("JUMP_ABSOLUTE",),
|
|
202
|
+
"SET_ADD": ("JUMP_ABSOLUTE",),
|
|
203
|
+
"GET_ANEXT": ("LOAD_CONST",),
|
|
204
|
+
"GET_AWAITABLE": ("LOAD_CONST",),
|
|
205
|
+
"DICT_MERGE": ("CALL_FUNCTION_EX",),
|
|
206
|
+
"MAP_ADD": ("JUMP_ABSOLUTE",),
|
|
207
|
+
"COMPARE_OP": (
|
|
208
|
+
"POP_JUMP_IF_FALSE",
|
|
209
|
+
"POP_JUMP_IF_TRUE",
|
|
210
|
+
),
|
|
211
|
+
"IS_OP": (
|
|
212
|
+
"POP_JUMP_IF_FALSE",
|
|
213
|
+
"POP_JUMP_IF_TRUE",
|
|
214
|
+
),
|
|
215
|
+
"CONTAINS_OP": (
|
|
216
|
+
"POP_JUMP_IF_FALSE",
|
|
217
|
+
"POP_JUMP_IF_TRUE",
|
|
218
|
+
),
|
|
219
219
|
# Note: there are some others with PREDICT on ceval, but they have more logic
|
|
220
220
|
# and it needs more experimentation to know how it behaves in the static generated
|
|
221
221
|
# code (and it's only an issue for us if there's actually a line change between
|
|
@@ -236,12 +236,12 @@ FIX_PREDICT = sys.version_info[:2] >= (3, 10)
|
|
|
236
236
|
|
|
237
237
|
|
|
238
238
|
def insert_pydevd_breaks(
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
239
|
+
code_to_modify,
|
|
240
|
+
breakpoint_lines,
|
|
241
|
+
code_line_info=None,
|
|
242
|
+
_pydev_stop_at_break=_pydev_stop_at_break,
|
|
243
|
+
_pydev_needs_stop_at_break=_pydev_needs_stop_at_break,
|
|
244
|
+
):
|
|
245
245
|
"""
|
|
246
246
|
Inserts pydevd programmatic breaks into the code (at the given lines).
|
|
247
247
|
|
|
@@ -268,14 +268,14 @@ def insert_pydevd_breaks(
|
|
|
268
268
|
for line in breakpoint_lines:
|
|
269
269
|
if line <= 0:
|
|
270
270
|
# The first line is line 1, so, a break at line 0 is not valid.
|
|
271
|
-
pydev_log.info(
|
|
271
|
+
pydev_log.info("Trying to add breakpoint in invalid line: %s", line)
|
|
272
272
|
return False, code_to_modify
|
|
273
273
|
|
|
274
274
|
try:
|
|
275
275
|
b = bytecode.Bytecode.from_code(code_to_modify)
|
|
276
276
|
|
|
277
277
|
if DEBUG:
|
|
278
|
-
op_number_bytecode = debug_helper.write_bytecode(b, prefix=
|
|
278
|
+
op_number_bytecode = debug_helper.write_bytecode(b, prefix="bytecode.")
|
|
279
279
|
|
|
280
280
|
helper_list = _HelperBytecodeList(b)
|
|
281
281
|
|
|
@@ -286,8 +286,8 @@ def insert_pydevd_breaks(
|
|
|
286
286
|
last_lineno = None
|
|
287
287
|
while curr_node is not None:
|
|
288
288
|
instruction = curr_node.data
|
|
289
|
-
instruction_lineno = getattr(instruction,
|
|
290
|
-
curr_name = getattr(instruction,
|
|
289
|
+
instruction_lineno = getattr(instruction, "lineno", None)
|
|
290
|
+
curr_name = getattr(instruction, "name", None)
|
|
291
291
|
|
|
292
292
|
if FIX_PREDICT:
|
|
293
293
|
predict_targets = _PREDICT_TABLE.get(curr_name)
|
|
@@ -297,9 +297,9 @@ def insert_pydevd_breaks(
|
|
|
297
297
|
# that it does things the way that ceval actually interprets it.
|
|
298
298
|
# See: https://mail.python.org/archives/list/python-dev@python.org/thread/CP2PTFCMTK57KM3M3DLJNWGO66R5RVPB/
|
|
299
299
|
next_instruction = curr_node.next.data
|
|
300
|
-
next_name = getattr(next_instruction,
|
|
300
|
+
next_name = getattr(next_instruction, "name", None)
|
|
301
301
|
if next_name in predict_targets:
|
|
302
|
-
next_instruction_lineno = getattr(next_instruction,
|
|
302
|
+
next_instruction_lineno = getattr(next_instruction, "lineno", None)
|
|
303
303
|
if next_instruction_lineno:
|
|
304
304
|
next_instruction.lineno = None
|
|
305
305
|
|
|
@@ -323,9 +323,7 @@ def insert_pydevd_breaks(
|
|
|
323
323
|
|
|
324
324
|
if instruction_lineno in modified_breakpoint_lines:
|
|
325
325
|
added_breaks_in_lines.add(instruction_lineno)
|
|
326
|
-
if curr_node.prev is not None and curr_node.prev.data.__class__ == Label
|
|
327
|
-
and curr_name == 'POP_TOP':
|
|
328
|
-
|
|
326
|
+
if curr_node.prev is not None and curr_node.prev.data.__class__ == Label and curr_name == "POP_TOP":
|
|
329
327
|
# If we have a SETUP_FINALLY where the target is a POP_TOP, we can't change
|
|
330
328
|
# the target to be the breakpoint instruction (this can crash the interpreter).
|
|
331
329
|
|
|
@@ -333,7 +331,7 @@ def insert_pydevd_breaks(
|
|
|
333
331
|
instruction_lineno,
|
|
334
332
|
_pydev_stop_at_break=_pydev_stop_at_break,
|
|
335
333
|
_pydev_needs_stop_at_break=_pydev_needs_stop_at_break,
|
|
336
|
-
|
|
334
|
+
):
|
|
337
335
|
curr_node = curr_node.append(new_instruction)
|
|
338
336
|
|
|
339
337
|
else:
|
|
@@ -341,7 +339,7 @@ def insert_pydevd_breaks(
|
|
|
341
339
|
instruction_lineno,
|
|
342
340
|
_pydev_stop_at_break=_pydev_stop_at_break,
|
|
343
341
|
_pydev_needs_stop_at_break=_pydev_needs_stop_at_break,
|
|
344
|
-
|
|
342
|
+
):
|
|
345
343
|
curr_node.prepend(new_instruction)
|
|
346
344
|
|
|
347
345
|
curr_node = curr_node.next
|
|
@@ -349,12 +347,12 @@ def insert_pydevd_breaks(
|
|
|
349
347
|
b[:] = helper_list
|
|
350
348
|
|
|
351
349
|
if DEBUG:
|
|
352
|
-
debug_helper.write_bytecode(b, op_number_bytecode, prefix=
|
|
350
|
+
debug_helper.write_bytecode(b, op_number_bytecode, prefix="bytecode.")
|
|
353
351
|
|
|
354
352
|
new_code = b.to_code()
|
|
355
353
|
|
|
356
354
|
except:
|
|
357
|
-
pydev_log.exception(
|
|
355
|
+
pydev_log.exception("Error inserting pydevd breaks.")
|
|
358
356
|
return False, code_to_modify
|
|
359
357
|
|
|
360
358
|
if DEBUG:
|
|
@@ -362,4 +360,3 @@ def insert_pydevd_breaks(
|
|
|
362
360
|
debug_helper.write_dis(new_code, op_number)
|
|
363
361
|
|
|
364
362
|
return True, new_code
|
|
365
|
-
|
|
@@ -37,6 +37,7 @@ from _pydevd_frame_eval.vendored.bytecode.concrete import (
|
|
|
37
37
|
from _pydevd_frame_eval.vendored.bytecode.cfg import BasicBlock, ControlFlowGraph # noqa
|
|
38
38
|
import sys
|
|
39
39
|
|
|
40
|
+
|
|
40
41
|
def dump_bytecode(bytecode, *, lineno=False, stream=sys.stdout):
|
|
41
42
|
def format_line(index, line):
|
|
42
43
|
nonlocal cur_lineno, prev_lineno
|
|
@@ -176,9 +176,7 @@ class Bytecode(_InstrList, _BaseBytecodeList):
|
|
|
176
176
|
def _check_instr(self, instr):
|
|
177
177
|
if not isinstance(instr, (Label, SetLineno, Instr)):
|
|
178
178
|
raise ValueError(
|
|
179
|
-
"Bytecode must only contain Label, "
|
|
180
|
-
"SetLineno, and Instr objects, "
|
|
181
|
-
"but %s was found" % type(instr).__name__
|
|
179
|
+
"Bytecode must only contain Label, " "SetLineno, and Instr objects, " "but %s was found" % type(instr).__name__
|
|
182
180
|
)
|
|
183
181
|
|
|
184
182
|
def _copy_attr_from(self, bytecode):
|
|
@@ -188,6 +186,8 @@ class Bytecode(_InstrList, _BaseBytecodeList):
|
|
|
188
186
|
|
|
189
187
|
@staticmethod
|
|
190
188
|
def from_code(code):
|
|
189
|
+
if sys.version_info[:2] >= (3, 11):
|
|
190
|
+
raise RuntimeError("This is not updated for Python 3.11 onwards, use only up to Python 3.10!!")
|
|
191
191
|
concrete = _bytecode.ConcreteBytecode.from_code(code)
|
|
192
192
|
return concrete.to_bytecode()
|
|
193
193
|
|
|
@@ -195,9 +195,7 @@ class Bytecode(_InstrList, _BaseBytecodeList):
|
|
|
195
195
|
cfg = _bytecode.ControlFlowGraph.from_bytecode(self)
|
|
196
196
|
return cfg.compute_stacksize(check_pre_and_post=check_pre_and_post)
|
|
197
197
|
|
|
198
|
-
def to_code(
|
|
199
|
-
self, compute_jumps_passes=None, stacksize=None, *, check_pre_and_post=True
|
|
200
|
-
):
|
|
198
|
+
def to_code(self, compute_jumps_passes=None, stacksize=None, *, check_pre_and_post=True):
|
|
201
199
|
# Prevent reconverting the concrete bytecode to bytecode and cfg to do the
|
|
202
200
|
# calculation if we need to do it.
|
|
203
201
|
if stacksize is None:
|
|
@@ -21,16 +21,11 @@ class BasicBlock(_bytecode._InstrList):
|
|
|
21
21
|
index += 1
|
|
22
22
|
|
|
23
23
|
if not isinstance(instr, (SetLineno, Instr)):
|
|
24
|
-
raise ValueError(
|
|
25
|
-
"BasicBlock must only contain SetLineno and Instr objects, "
|
|
26
|
-
"but %s was found" % instr.__class__.__name__
|
|
27
|
-
)
|
|
24
|
+
raise ValueError("BasicBlock must only contain SetLineno and Instr objects, " "but %s was found" % instr.__class__.__name__)
|
|
28
25
|
|
|
29
26
|
if isinstance(instr, Instr) and instr.has_jump():
|
|
30
27
|
if index < len(self):
|
|
31
|
-
raise ValueError(
|
|
32
|
-
"Only the last instruction of a basic " "block can be a jump"
|
|
33
|
-
)
|
|
28
|
+
raise ValueError("Only the last instruction of a basic " "block can be a jump")
|
|
34
29
|
|
|
35
30
|
if not isinstance(instr.arg, BasicBlock):
|
|
36
31
|
raise ValueError(
|
|
@@ -135,7 +130,6 @@ def _compute_stack_size(block, size, maxsize, *, check_pre_and_post=True):
|
|
|
135
130
|
block.startsize = size
|
|
136
131
|
|
|
137
132
|
for instr in block:
|
|
138
|
-
|
|
139
133
|
# Ignore SetLineno
|
|
140
134
|
if isinstance(instr, SetLineno):
|
|
141
135
|
continue
|
|
@@ -143,11 +137,7 @@ def _compute_stack_size(block, size, maxsize, *, check_pre_and_post=True):
|
|
|
143
137
|
# For instructions with a jump first compute the stacksize required when the
|
|
144
138
|
# jump is taken.
|
|
145
139
|
if instr.has_jump():
|
|
146
|
-
effect = (
|
|
147
|
-
instr.pre_and_post_stack_effect(jump=True)
|
|
148
|
-
if check_pre_and_post
|
|
149
|
-
else (instr.stack_effect(jump=True), 0)
|
|
150
|
-
)
|
|
140
|
+
effect = instr.pre_and_post_stack_effect(jump=True) if check_pre_and_post else (instr.stack_effect(jump=True), 0)
|
|
151
141
|
taken_size, maxsize = update_size(*effect, size, maxsize)
|
|
152
142
|
# Yield the parameters required to compute the stacksize required
|
|
153
143
|
# by the block to which the jumnp points to and resume when we now
|
|
@@ -161,11 +151,7 @@ def _compute_stack_size(block, size, maxsize, *, check_pre_and_post=True):
|
|
|
161
151
|
yield maxsize
|
|
162
152
|
|
|
163
153
|
# jump=False: non-taken path of jumps, or any non-jump
|
|
164
|
-
effect = (
|
|
165
|
-
instr.pre_and_post_stack_effect(jump=False)
|
|
166
|
-
if check_pre_and_post
|
|
167
|
-
else (instr.stack_effect(jump=False), 0)
|
|
168
|
-
)
|
|
154
|
+
effect = instr.pre_and_post_stack_effect(jump=False) if check_pre_and_post else (instr.stack_effect(jump=False), 0)
|
|
169
155
|
size, maxsize = update_size(*effect, size, maxsize)
|
|
170
156
|
|
|
171
157
|
if block.next_block:
|
|
@@ -225,17 +211,11 @@ class ControlFlowGraph(_bytecode.BaseBytecode):
|
|
|
225
211
|
# Starting with Python 3.10, generator and coroutines start with one object
|
|
226
212
|
# on the stack (None, anything is an error).
|
|
227
213
|
initial_stack_size = 0
|
|
228
|
-
if sys.version_info >= (3, 10) and self.flags & (
|
|
229
|
-
CompilerFlags.GENERATOR
|
|
230
|
-
| CompilerFlags.COROUTINE
|
|
231
|
-
| CompilerFlags.ASYNC_GENERATOR
|
|
232
|
-
):
|
|
214
|
+
if sys.version_info >= (3, 10) and self.flags & (CompilerFlags.GENERATOR | CompilerFlags.COROUTINE | CompilerFlags.ASYNC_GENERATOR):
|
|
233
215
|
initial_stack_size = 1
|
|
234
216
|
|
|
235
217
|
# Create a generator/coroutine responsible of dealing with the first block
|
|
236
|
-
coro = _compute_stack_size(
|
|
237
|
-
self[0], initial_stack_size, 0, check_pre_and_post=check_pre_and_post
|
|
238
|
-
)
|
|
218
|
+
coro = _compute_stack_size(self[0], initial_stack_size, 0, check_pre_and_post=check_pre_and_post)
|
|
239
219
|
|
|
240
220
|
# Create a list of generator that have not yet been exhausted
|
|
241
221
|
coroutines = []
|
|
@@ -138,9 +138,7 @@ class ConcreteBytecode(_bytecode._BaseBytecodeList):
|
|
|
138
138
|
def _check_instr(self, instr):
|
|
139
139
|
if not isinstance(instr, (ConcreteInstr, SetLineno)):
|
|
140
140
|
raise ValueError(
|
|
141
|
-
"ConcreteBytecode must only contain "
|
|
142
|
-
"ConcreteInstr and SetLineno objects, "
|
|
143
|
-
"but %s was found" % type(instr).__name__
|
|
141
|
+
"ConcreteBytecode must only contain " "ConcreteInstr and SetLineno objects, " "but %s was found" % type(instr).__name__
|
|
144
142
|
)
|
|
145
143
|
|
|
146
144
|
def _copy_attr_from(self, bytecode):
|
|
@@ -236,9 +234,7 @@ class ConcreteBytecode(_bytecode._BaseBytecodeList):
|
|
|
236
234
|
for lineno, instr in self._normalize_lineno(self, self.first_lineno):
|
|
237
235
|
code_str.append(instr.assemble())
|
|
238
236
|
i_size = instr.size
|
|
239
|
-
linenos.append(
|
|
240
|
-
((offset * 2) if OFFSET_AS_INSTRUCTION else offset, i_size, lineno)
|
|
241
|
-
)
|
|
237
|
+
linenos.append(((offset * 2) if OFFSET_AS_INSTRUCTION else offset, i_size, lineno))
|
|
242
238
|
offset += (i_size // 2) if OFFSET_AS_INSTRUCTION else i_size
|
|
243
239
|
code_str = b"".join(code_str)
|
|
244
240
|
return (code_str, linenos)
|
|
@@ -254,9 +250,7 @@ class ConcreteBytecode(_bytecode._BaseBytecodeList):
|
|
|
254
250
|
continue
|
|
255
251
|
# FIXME: be kind, force monotonic line numbers? add an option?
|
|
256
252
|
if dlineno < 0 and sys.version_info < (3, 6):
|
|
257
|
-
raise ValueError(
|
|
258
|
-
"negative line number delta is not supported " "on Python < 3.6"
|
|
259
|
-
)
|
|
253
|
+
raise ValueError("negative line number delta is not supported " "on Python < 3.6")
|
|
260
254
|
old_lineno = lineno
|
|
261
255
|
|
|
262
256
|
doff = offset - old_offset
|
|
@@ -285,7 +279,6 @@ class ConcreteBytecode(_bytecode._BaseBytecodeList):
|
|
|
285
279
|
|
|
286
280
|
@staticmethod
|
|
287
281
|
def _pack_linetable(doff, dlineno, linetable):
|
|
288
|
-
|
|
289
282
|
while dlineno < -127:
|
|
290
283
|
linetable.append(struct.pack("Bb", 0, -127))
|
|
291
284
|
dlineno -= -127
|
|
@@ -309,16 +302,15 @@ class ConcreteBytecode(_bytecode._BaseBytecodeList):
|
|
|
309
302
|
assert 0 <= doff <= 254
|
|
310
303
|
assert -127 <= dlineno <= 127
|
|
311
304
|
|
|
312
|
-
|
|
313
305
|
def _assemble_linestable(self, first_lineno, linenos):
|
|
314
306
|
if not linenos:
|
|
315
307
|
return b""
|
|
316
308
|
|
|
317
309
|
linetable = []
|
|
318
310
|
old_offset = 0
|
|
319
|
-
|
|
311
|
+
|
|
320
312
|
iter_in = iter(linenos)
|
|
321
|
-
|
|
313
|
+
|
|
322
314
|
offset, i_size, old_lineno = next(iter_in)
|
|
323
315
|
old_dlineno = old_lineno - first_lineno
|
|
324
316
|
for offset, i_size, lineno in iter_in:
|
|
@@ -442,7 +434,6 @@ class ConcreteBytecode(_bytecode._BaseBytecodeList):
|
|
|
442
434
|
)
|
|
443
435
|
|
|
444
436
|
def to_bytecode(self):
|
|
445
|
-
|
|
446
437
|
# Copy instruction and remove extended args if any (in-place)
|
|
447
438
|
c_instructions = self[:]
|
|
448
439
|
self._remove_extended_args(c_instructions)
|
|
@@ -527,7 +518,6 @@ class ConcreteBytecode(_bytecode._BaseBytecodeList):
|
|
|
527
518
|
|
|
528
519
|
|
|
529
520
|
class _ConvertBytecodeToConcrete:
|
|
530
|
-
|
|
531
521
|
# Default number of passes of compute_jumps() before giving up. Refer to
|
|
532
522
|
# assemble_jump_offsets() in compile.c for background.
|
|
533
523
|
_compute_jumps_passes = 10
|
|
@@ -631,9 +621,7 @@ class _ConvertBytecodeToConcrete:
|
|
|
631
621
|
|
|
632
622
|
if instr.opcode in _opcode.hasjrel:
|
|
633
623
|
instr_offset = offsets[index]
|
|
634
|
-
target_offset -= instr_offset + (
|
|
635
|
-
instr.size // 2 if OFFSET_AS_INSTRUCTION else instr.size
|
|
636
|
-
)
|
|
624
|
+
target_offset -= instr_offset + (instr.size // 2 if OFFSET_AS_INSTRUCTION else instr.size)
|
|
637
625
|
|
|
638
626
|
old_size = instr.size
|
|
639
627
|
# FIXME: better error report if target_offset is negative
|
|
@@ -659,9 +647,7 @@ class _ConvertBytecodeToConcrete:
|
|
|
659
647
|
if not modified:
|
|
660
648
|
break
|
|
661
649
|
else:
|
|
662
|
-
raise RuntimeError(
|
|
663
|
-
"compute_jumps() failed to converge after" " %d passes" % (pas + 1)
|
|
664
|
-
)
|
|
650
|
+
raise RuntimeError("compute_jumps() failed to converge after" " %d passes" % (pas + 1))
|
|
665
651
|
|
|
666
652
|
concrete = ConcreteBytecode(
|
|
667
653
|
self.instructions,
|
|
@@ -62,22 +62,11 @@ def infer_flags(bytecode, is_async=None):
|
|
|
62
62
|
bytecode,
|
|
63
63
|
(_bytecode.Bytecode, _bytecode.ConcreteBytecode, _bytecode.ControlFlowGraph),
|
|
64
64
|
):
|
|
65
|
-
msg =
|
|
66
|
-
"Expected a Bytecode, ConcreteBytecode or ControlFlowGraph "
|
|
67
|
-
"instance not %s"
|
|
68
|
-
)
|
|
65
|
+
msg = "Expected a Bytecode, ConcreteBytecode or ControlFlowGraph " "instance not %s"
|
|
69
66
|
raise ValueError(msg % bytecode)
|
|
70
67
|
|
|
71
|
-
instructions = (
|
|
72
|
-
|
|
73
|
-
if isinstance(bytecode, _bytecode.ControlFlowGraph)
|
|
74
|
-
else bytecode
|
|
75
|
-
)
|
|
76
|
-
instr_names = {
|
|
77
|
-
i.name
|
|
78
|
-
for i in instructions
|
|
79
|
-
if not isinstance(i, (_bytecode.SetLineno, _bytecode.Label))
|
|
80
|
-
}
|
|
68
|
+
instructions = bytecode.get_instructions() if isinstance(bytecode, _bytecode.ControlFlowGraph) else bytecode
|
|
69
|
+
instr_names = {i.name for i in instructions if not isinstance(i, (_bytecode.SetLineno, _bytecode.Label))}
|
|
81
70
|
|
|
82
71
|
# Identify optimized code
|
|
83
72
|
if not (instr_names & {"STORE_NAME", "LOAD_NAME", "DELETE_NAME"}):
|
|
@@ -97,12 +86,7 @@ def infer_flags(bytecode, is_async=None):
|
|
|
97
86
|
flags |= CompilerFlags.NOFREE
|
|
98
87
|
|
|
99
88
|
# Copy flags for which we cannot infer the right value
|
|
100
|
-
flags |= bytecode.flags & (
|
|
101
|
-
CompilerFlags.NEWLOCALS
|
|
102
|
-
| CompilerFlags.VARARGS
|
|
103
|
-
| CompilerFlags.VARKEYWORDS
|
|
104
|
-
| CompilerFlags.NESTED
|
|
105
|
-
)
|
|
89
|
+
flags |= bytecode.flags & (CompilerFlags.NEWLOCALS | CompilerFlags.VARARGS | CompilerFlags.VARKEYWORDS | CompilerFlags.NESTED)
|
|
106
90
|
|
|
107
91
|
sure_generator = instr_names & {"YIELD_VALUE"}
|
|
108
92
|
maybe_generator = instr_names & {"YIELD_VALUE", "YIELD_FROM"}
|
|
@@ -119,7 +103,6 @@ def infer_flags(bytecode, is_async=None):
|
|
|
119
103
|
# If performing inference or forcing an async behavior, first inspect
|
|
120
104
|
# the flags since this is the only way to identify iterable coroutines
|
|
121
105
|
if is_async in (None, True):
|
|
122
|
-
|
|
123
106
|
if bytecode.flags & CompilerFlags.COROUTINE:
|
|
124
107
|
if sure_generator:
|
|
125
108
|
flags |= CompilerFlags.ASYNC_GENERATOR
|
|
@@ -168,9 +151,7 @@ def infer_flags(bytecode, is_async=None):
|
|
|
168
151
|
else:
|
|
169
152
|
if sure_async:
|
|
170
153
|
raise ValueError(
|
|
171
|
-
"The is_async argument is False but bytecodes "
|
|
172
|
-
"that can only be used in async functions have "
|
|
173
|
-
"been detected."
|
|
154
|
+
"The is_async argument is False but bytecodes " "that can only be used in async functions have " "been detected."
|
|
174
155
|
)
|
|
175
156
|
|
|
176
157
|
if maybe_generator:
|
|
@@ -123,15 +123,10 @@ class FreeVar(_Variable):
|
|
|
123
123
|
|
|
124
124
|
def _check_arg_int(name, arg):
|
|
125
125
|
if not isinstance(arg, int):
|
|
126
|
-
raise TypeError(
|
|
127
|
-
"operation %s argument must be an int, "
|
|
128
|
-
"got %s" % (name, type(arg).__name__)
|
|
129
|
-
)
|
|
126
|
+
raise TypeError("operation %s argument must be an int, " "got %s" % (name, type(arg).__name__))
|
|
130
127
|
|
|
131
128
|
if not (0 <= arg <= 2147483647):
|
|
132
|
-
raise ValueError(
|
|
133
|
-
"operation %s argument must be in " "the range 0..2,147,483,647" % name
|
|
134
|
-
)
|
|
129
|
+
raise ValueError("operation %s argument must be in " "the range 0..2,147,483,647" % name)
|
|
135
130
|
|
|
136
131
|
|
|
137
132
|
if sys.version_info < (3, 8):
|
|
@@ -174,8 +169,7 @@ class Instr:
|
|
|
174
169
|
def _check_arg(self, name, opcode, arg):
|
|
175
170
|
if name == "EXTENDED_ARG":
|
|
176
171
|
raise ValueError(
|
|
177
|
-
"only concrete instruction can contain EXTENDED_ARG, "
|
|
178
|
-
"highlevel instruction can represent arbitrary argument without it"
|
|
172
|
+
"only concrete instruction can contain EXTENDED_ARG, " "highlevel instruction can represent arbitrary argument without it"
|
|
179
173
|
)
|
|
180
174
|
|
|
181
175
|
if opcode >= _opcode.HAVE_ARGUMENT:
|
|
@@ -187,41 +181,25 @@ class Instr:
|
|
|
187
181
|
|
|
188
182
|
if self._has_jump(opcode):
|
|
189
183
|
if not isinstance(arg, (Label, _bytecode.BasicBlock)):
|
|
190
|
-
raise TypeError(
|
|
191
|
-
"operation %s argument type must be "
|
|
192
|
-
"Label or BasicBlock, got %s" % (name, type(arg).__name__)
|
|
193
|
-
)
|
|
184
|
+
raise TypeError("operation %s argument type must be " "Label or BasicBlock, got %s" % (name, type(arg).__name__))
|
|
194
185
|
|
|
195
186
|
elif opcode in _opcode.hasfree:
|
|
196
187
|
if not isinstance(arg, (CellVar, FreeVar)):
|
|
197
|
-
raise TypeError(
|
|
198
|
-
"operation %s argument must be CellVar "
|
|
199
|
-
"or FreeVar, got %s" % (name, type(arg).__name__)
|
|
200
|
-
)
|
|
188
|
+
raise TypeError("operation %s argument must be CellVar " "or FreeVar, got %s" % (name, type(arg).__name__))
|
|
201
189
|
|
|
202
190
|
elif opcode in _opcode.haslocal or opcode in _opcode.hasname:
|
|
203
191
|
if not isinstance(arg, str):
|
|
204
|
-
raise TypeError(
|
|
205
|
-
"operation %s argument must be a str, "
|
|
206
|
-
"got %s" % (name, type(arg).__name__)
|
|
207
|
-
)
|
|
192
|
+
raise TypeError("operation %s argument must be a str, " "got %s" % (name, type(arg).__name__))
|
|
208
193
|
|
|
209
194
|
elif opcode in _opcode.hasconst:
|
|
210
195
|
if isinstance(arg, Label):
|
|
211
|
-
raise ValueError(
|
|
212
|
-
"label argument cannot be used " "in %s operation" % name
|
|
213
|
-
)
|
|
196
|
+
raise ValueError("label argument cannot be used " "in %s operation" % name)
|
|
214
197
|
if isinstance(arg, _bytecode.BasicBlock):
|
|
215
|
-
raise ValueError(
|
|
216
|
-
"block argument cannot be used " "in %s operation" % name
|
|
217
|
-
)
|
|
198
|
+
raise ValueError("block argument cannot be used " "in %s operation" % name)
|
|
218
199
|
|
|
219
200
|
elif opcode in _opcode.hascompare:
|
|
220
201
|
if not isinstance(arg, Compare):
|
|
221
|
-
raise TypeError(
|
|
222
|
-
"operation %s argument type must be "
|
|
223
|
-
"Compare, got %s" % (name, type(arg).__name__)
|
|
224
|
-
)
|
|
202
|
+
raise TypeError("operation %s argument type must be " "Compare, got %s" % (name, type(arg).__name__))
|
|
225
203
|
|
|
226
204
|
elif opcode >= _opcode.HAVE_ARGUMENT:
|
|
227
205
|
_check_arg_int(name, arg)
|
|
@@ -340,9 +318,7 @@ class Instr:
|
|
|
340
318
|
return -1, 2
|
|
341
319
|
if _opname == "ROT_N":
|
|
342
320
|
return (-self._arg, self._arg)
|
|
343
|
-
return {"ROT_TWO": (-2, 2), "ROT_THREE": (-3, 3), "ROT_FOUR": (-4, 4)}.get(
|
|
344
|
-
_opname, (_effect, 0)
|
|
345
|
-
)
|
|
321
|
+
return {"ROT_TWO": (-2, 2), "ROT_THREE": (-3, 3), "ROT_FOUR": (-4, 4)}.get(_opname, (_effect, 0))
|
|
346
322
|
|
|
347
323
|
def copy(self):
|
|
348
324
|
return self.__class__(self._name, self._arg, lineno=self._lineno, offset=self.offset)
|
|
@@ -483,9 +483,6 @@ class CodeTransformer:
|
|
|
483
483
|
|
|
484
484
|
def code_transformer(self, code, context):
|
|
485
485
|
if sys.flags.verbose:
|
|
486
|
-
print(
|
|
487
|
-
"Optimize %s:%s: %s"
|
|
488
|
-
% (code.co_filename, code.co_firstlineno, code.co_name)
|
|
489
|
-
)
|
|
486
|
+
print("Optimize %s:%s: %s" % (code.co_filename, code.co_firstlineno, code.co_name))
|
|
490
487
|
optimizer = PeepholeOptimizer()
|
|
491
488
|
return optimizer.optimize(code)
|