debugpy 1.8.7__zip → 1.8.9__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.
Files changed (320) hide show
  1. {debugpy-1.8.7/src/debugpy.egg-info → debugpy-1.8.9}/PKG-INFO +1 -1
  2. {debugpy-1.8.7 → debugpy-1.8.9}/pyproject.toml +5 -2
  3. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py +8 -1
  4. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py +58 -24
  5. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py +1 -1
  6. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +3 -1
  7. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py +2 -1
  8. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py +1 -2
  9. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py +6 -121
  10. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py +9 -9
  11. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py +8 -0
  12. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +3395 -3365
  13. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx +7 -10
  14. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py +1 -0
  15. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py +6 -7
  16. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py +27 -24
  17. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +2 -2
  18. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py +2 -1
  19. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py +17 -2
  20. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py +1 -3
  21. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c +651 -631
  22. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py +2 -1
  23. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py +1 -2
  24. debugpy-1.8.9/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/COPYING +21 -0
  25. debugpy-1.8.9/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/INSTALLER +1 -0
  26. debugpy-1.8.9/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/METADATA +77 -0
  27. debugpy-1.8.9/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/RECORD +42 -0
  28. debugpy-1.8.9/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/WHEEL +5 -0
  29. debugpy-1.8.9/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/direct_url.json +1 -0
  30. debugpy-1.8.9/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/top_level.txt +1 -0
  31. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py +138 -100
  32. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c +7539 -5838
  33. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx +138 -100
  34. debugpy-1.8.9/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py +0 -0
  35. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py +1 -2
  36. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py +1 -1
  37. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt6.py +1 -1
  38. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_loaders.py +27 -4
  39. debugpy-1.8.9/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +50 -0
  40. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd.py +35 -38
  41. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/add_code_to_python_process.py +1 -1
  42. debugpy-1.8.9/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
  43. debugpy-1.8.9/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
  44. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_script.py +4 -0
  45. debugpy-1.8.9/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
  46. debugpy-1.8.9/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
  47. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp +11 -11
  48. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
  49. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
  50. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.exe +0 -0
  51. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
  52. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
  53. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
  54. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
  55. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
  56. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp +2 -4
  57. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat +6 -8
  58. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_file_utils.py +28 -40
  59. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py +2 -1
  60. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py +1 -1
  61. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_tracing.py +4 -1
  62. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_version.py +3 -3
  63. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/adapter/servers.py +2 -2
  64. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/__init__.py +2 -2
  65. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/launcher/debuggee.py +2 -1
  66. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/server/api.py +1 -1
  67. {debugpy-1.8.7 → debugpy-1.8.9/src/debugpy.egg-info}/PKG-INFO +1 -1
  68. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy.egg-info/SOURCES.txt +8 -0
  69. debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +0 -36
  70. debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
  71. debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
  72. debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
  73. debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
  74. {debugpy-1.8.7 → debugpy-1.8.9}/DESCRIPTION.md +0 -0
  75. {debugpy-1.8.7 → debugpy-1.8.9}/LICENSE +0 -0
  76. {debugpy-1.8.7 → debugpy-1.8.9}/MANIFEST.in +0 -0
  77. {debugpy-1.8.7 → debugpy-1.8.9}/README.md +0 -0
  78. {debugpy-1.8.7 → debugpy-1.8.9}/setup.cfg +0 -0
  79. {debugpy-1.8.7 → debugpy-1.8.9}/setup.py +0 -0
  80. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/ThirdPartyNotices.txt +0 -0
  81. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/__init__.py +0 -0
  82. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/__main__.py +0 -0
  83. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/__init__.py +0 -0
  84. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/_pydevd_packaging.py +0 -0
  85. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/_util.py +0 -0
  86. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/force_pydevd.py +0 -0
  87. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py +0 -0
  88. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py +0 -0
  89. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py +0 -0
  90. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py +0 -0
  91. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +0 -0
  92. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py +0 -0
  93. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py +0 -0
  94. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py +0 -0
  95. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py +0 -0
  96. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py +0 -0
  97. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py +0 -0
  98. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py +0 -0
  99. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py +0 -0
  100. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py +0 -0
  101. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py +0 -0
  102. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py +0 -0
  103. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py +0 -0
  104. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py +0 -0
  105. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py +0 -0
  106. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py +0 -0
  107. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py +0 -0
  108. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py +0 -0
  109. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py +0 -0
  110. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py +0 -0
  111. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py +0 -0
  112. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py +0 -0
  113. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +0 -0
  114. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py +0 -0
  115. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py +0 -0
  116. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py +0 -0
  117. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py +0 -0
  118. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py +0 -0
  119. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py +0 -0
  120. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py +0 -0
  121. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json +0 -0
  122. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json +0 -0
  123. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py +0 -0
  124. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +0 -0
  125. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py +0 -0
  126. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py +0 -0
  127. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +0 -0
  128. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +0 -0
  129. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py +0 -0
  130. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py +0 -0
  131. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py +0 -0
  132. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py +0 -0
  133. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py +0 -0
  134. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py +0 -0
  135. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py +0 -0
  136. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py +0 -0
  137. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py +0 -0
  138. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py +0 -0
  139. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd +0 -0
  140. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py +0 -0
  141. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py +0 -0
  142. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py +0 -0
  143. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py +0 -0
  144. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py +0 -0
  145. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py +0 -0
  146. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py +0 -0
  147. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py +0 -0
  148. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py +0 -0
  149. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py +0 -0
  150. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py +0 -0
  151. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +0 -0
  152. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py +0 -0
  153. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py +0 -0
  154. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py +0 -0
  155. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py +0 -0
  156. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py +0 -0
  157. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py +0 -0
  158. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py +0 -0
  159. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py +0 -0
  160. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py +0 -0
  161. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py +0 -0
  162. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py +0 -0
  163. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py +0 -0
  164. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py +0 -0
  165. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py +0 -0
  166. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py +0 -0
  167. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py +0 -0
  168. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py +0 -0
  169. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py +0 -0
  170. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py +0 -0
  171. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +0 -0
  172. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py +0 -0
  173. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore +0 -0
  174. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py +0 -0
  175. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py +0 -0
  176. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +0 -0
  177. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd +0 -0
  178. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pyx +0 -0
  179. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx +0 -0
  180. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py +0 -0
  181. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h +0 -0
  182. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt +0 -0
  183. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py +0 -0
  184. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py +0 -0
  185. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py +0 -0
  186. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py +0 -0
  187. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py +0 -0
  188. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py +0 -0
  189. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py +0 -0
  190. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py +0 -0
  191. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py +0 -0
  192. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py +0 -0
  193. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py +0 -0
  194. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py +0 -0
  195. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py +0 -0
  196. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py +0 -0
  197. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py +0 -0
  198. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py +0 -0
  199. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py +0 -0
  200. /debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py → /debugpy-1.8.9/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/REQUESTED +0 -0
  201. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py +0 -0
  202. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pxd +0 -0
  203. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/pydevd_sys_monitoring.py +0 -0
  204. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py +0 -0
  205. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_coverage.py +0 -0
  206. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/README +0 -0
  207. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhook.py +0 -0
  208. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py +0 -0
  209. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py +0 -0
  210. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py +0 -0
  211. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py +0 -0
  212. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py +0 -0
  213. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py +0 -0
  214. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py +0 -0
  215. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +0 -0
  216. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py +0 -0
  217. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_pysrc.py +0 -0
  218. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_run_in_console.py +0 -0
  219. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt +0 -0
  220. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +0 -0
  221. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevconsole.py +0 -0
  222. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt +0 -0
  223. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +0 -0
  224. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py +0 -0
  225. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +0 -0
  226. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +0 -0
  227. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +0 -0
  228. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp +0 -0
  229. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_310.hpp +0 -0
  230. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_311.hpp +0 -0
  231. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_common.hpp +0 -0
  232. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp +0 -0
  233. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp +0 -0
  234. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h +0 -0
  235. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp +0 -0
  236. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore +0 -0
  237. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp +0 -0
  238. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh +0 -0
  239. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh +0 -0
  240. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd +0 -0
  241. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py +0 -0
  242. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py +0 -0
  243. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py +0 -0
  244. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py +0 -0
  245. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py +0 -0
  246. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py +0 -0
  247. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py +0 -0
  248. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py +0 -0
  249. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py +0 -0
  250. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py +0 -0
  251. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py +0 -0
  252. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py +0 -0
  253. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py +0 -0
  254. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py +0 -0
  255. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py +0 -0
  256. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py +0 -0
  257. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py +0 -0
  258. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py +0 -0
  259. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py +0 -0
  260. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py +0 -0
  261. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py +0 -0
  262. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py +0 -0
  263. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py +0 -0
  264. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py +0 -0
  265. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +0 -0
  266. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py +0 -0
  267. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +0 -0
  268. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +0 -0
  269. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py +0 -0
  270. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py +0 -0
  271. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py +0 -0
  272. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py +0 -0
  273. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py +0 -0
  274. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py +0 -0
  275. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py +0 -0
  276. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h +0 -0
  277. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp +0 -0
  278. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp +0 -0
  279. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp +0 -0
  280. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp +0 -0
  281. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp +0 -0
  282. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h +0 -0
  283. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h +0 -0
  284. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py +0 -0
  285. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md +0 -0
  286. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/__init__.py +0 -0
  287. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__init__.py +0 -0
  288. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py +0 -0
  289. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py +0 -0
  290. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py +0 -0
  291. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py +0 -0
  292. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py +0 -0
  293. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/_vendored/pydevd/setup_pydevd_cython.py +0 -0
  294. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/adapter/__init__.py +0 -0
  295. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/adapter/__main__.py +0 -0
  296. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/adapter/clients.py +0 -0
  297. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/adapter/components.py +0 -0
  298. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/adapter/launchers.py +0 -0
  299. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/adapter/sessions.py +0 -0
  300. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/json.py +0 -0
  301. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/log.py +0 -0
  302. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/messaging.py +0 -0
  303. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/singleton.py +0 -0
  304. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/sockets.py +0 -0
  305. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/stacks.py +0 -0
  306. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/timestamp.py +0 -0
  307. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/common/util.py +0 -0
  308. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/launcher/__init__.py +0 -0
  309. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/launcher/__main__.py +0 -0
  310. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/launcher/handlers.py +0 -0
  311. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/launcher/output.py +0 -0
  312. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/launcher/winapi.py +0 -0
  313. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/public_api.py +0 -0
  314. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/server/__init__.py +0 -0
  315. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/server/attach_pid_injected.py +0 -0
  316. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy/server/cli.py +0 -0
  317. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy.egg-info/dependency_links.txt +0 -0
  318. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy.egg-info/entry_points.txt +0 -0
  319. {debugpy-1.8.7 → debugpy-1.8.9}/src/debugpy.egg-info/top_level.txt +0 -0
  320. {debugpy-1.8.7 → debugpy-1.8.9}/versioneer.py +0 -0
@@ -59,7 +59,8 @@ def _get_code_line_info(code_obj):
59
59
  last_line = None
60
60
 
61
61
  for offset, line in dis.findlinestarts(code_obj):
62
- line_to_offset[line] = offset
62
+ if line is not None:
63
+ line_to_offset[line] = offset
63
64
 
64
65
  if line_to_offset:
65
66
  first_line = min(line_to_offset)
@@ -19,7 +19,6 @@ from _pydevd_frame_eval.vendored.bytecode.instr import (
19
19
  _check_arg_int,
20
20
  )
21
21
 
22
-
23
22
  # - jumps use instruction
24
23
  # - lineno use bytes (dis.findlinestarts(code))
25
24
  # - dis displays bytes
@@ -169,7 +168,7 @@ class ConcreteBytecode(_bytecode._BaseBytecodeList):
169
168
 
170
169
  @staticmethod
171
170
  def from_code(code, *, extended_arg=False):
172
- line_starts = dict(dis.findlinestarts(code))
171
+ line_starts = dict(entry for entry in dis.findlinestarts(code) if entry[1] is not None)
173
172
 
174
173
  # find block starts
175
174
  instructions = []
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+ Copyright (c) 2016 Red Hat.
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a
5
+ copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included
13
+ in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
16
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,77 @@
1
+ Metadata-Version: 2.1
2
+ Name: bytecode
3
+ Version: 0.13.0.dev0
4
+ Summary: Python module to generate and modify bytecode
5
+ Home-page: https://github.com/MatthieuDartiailh/bytecode
6
+ Author: Victor Stinner
7
+ Author-email: victor.stinner@gmail.com
8
+ Maintainer: Matthieu C. Dartiailh
9
+ Maintainer-email: m.dartiailh@gmail.com
10
+ License: MIT license
11
+ Platform: UNKNOWN
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Natural Language :: English
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.6
19
+ Classifier: Programming Language :: Python :: 3.7
20
+ Classifier: Programming Language :: Python :: 3.8
21
+ Classifier: Programming Language :: Python :: 3.9
22
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
+ Requires-Python: >=3.6
24
+
25
+ ********
26
+ bytecode
27
+ ********
28
+
29
+ .. image:: https://img.shields.io/pypi/v/bytecode.svg
30
+ :alt: Latest release on the Python Cheeseshop (PyPI)
31
+ :target: https://pypi.python.org/pypi/bytecode
32
+
33
+ .. image:: https://github.com/MatthieuDartiailh/bytecode/workflows/Continuous%20Integration/badge.svg
34
+ :target: https://github.com/MatthieuDartiailh/bytecode/actions
35
+ :alt: Continuous integration
36
+
37
+ .. image:: https://github.com/MatthieuDartiailh/bytecode/workflows/Documentation%20building/badge.svg
38
+ :target: https://github.com/MatthieuDartiailh/bytecode/actions
39
+ :alt: Documentation building
40
+
41
+ .. image:: https://img.shields.io/codecov/c/github/MatthieuDartiailh/bytecode/master.svg
42
+ :alt: Code coverage of bytecode on codecov.io
43
+ :target: https://codecov.io/github/MatthieuDartiailh/bytecode
44
+
45
+ .. image:: https://img.shields.io/badge/code%20style-black-000000.svg
46
+ :alt: Code formatted using Black
47
+ :target: https://github.com/psf/black
48
+
49
+ ``bytecode`` is a Python module to generate and modify bytecode.
50
+
51
+ * `bytecode project homepage at GitHub
52
+ <https://github.com/MatthieuDartiailh/bytecode>`_ (code, bugs)
53
+ * `bytecode documentation
54
+ <https://bytecode.readthedocs.io/>`_
55
+ * `Download latest bytecode release at the Python Cheeseshop (PyPI)
56
+ <https://pypi.python.org/pypi/bytecode>`_
57
+
58
+ Install bytecode: ``python3 -m pip install bytecode``. It requires Python 3.6
59
+ or newer. The latest release that supports Python 3.5 is 0.12.0. For Python 2.7
60
+ support, have a look at `dead-bytecode
61
+ <https://github.com/p403n1x87/dead-bytecode>`_ instead.
62
+
63
+ Example executing ``print('Hello World!')``:
64
+
65
+ .. code:: python
66
+
67
+ from bytecode import Instr, Bytecode
68
+
69
+ bytecode = Bytecode([Instr("LOAD_NAME", 'print'),
70
+ Instr("LOAD_CONST", 'Hello World!'),
71
+ Instr("CALL_FUNCTION", 1),
72
+ Instr("POP_TOP"),
73
+ Instr("LOAD_CONST", None),
74
+ Instr("RETURN_VALUE")])
75
+ code = bytecode.to_code()
76
+ exec(code)
77
+
@@ -0,0 +1,42 @@
1
+ bytecode-0.13.0.dev0.dist-info/COPYING,sha256=baWkm-Te2LLURwK7TL0zOkMSVjVCU_ezvObHBo298Tk,1074
2
+ bytecode-0.13.0.dev0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
3
+ bytecode-0.13.0.dev0.dist-info/METADATA,sha256=9XadDK6YTQ-FPowYI5DS4ieA7hRGnRP_fM5Z9ioPkEQ,2929
4
+ bytecode-0.13.0.dev0.dist-info/RECORD,,
5
+ bytecode-0.13.0.dev0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ bytecode-0.13.0.dev0.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92
7
+ bytecode-0.13.0.dev0.dist-info/direct_url.json,sha256=s58Rb4KXRlMKxk-mzpvr_tJRQ-Hx8-DHsU6NdohCnAg,93
8
+ bytecode-0.13.0.dev0.dist-info/top_level.txt,sha256=9BhdB7HqYZ-PvHNoWX6ilwLYWQqcgEOLwdb3aXm5Gys,9
9
+ bytecode/__init__.py,sha256=d-yk4Xh4SwOWq9NgoD2rmBLG6RhUFNljeqs-NjMNSYM,3885
10
+ bytecode/__pycache__/__init__.cpython-38.pyc,,
11
+ bytecode/__pycache__/bytecode.cpython-38.pyc,,
12
+ bytecode/__pycache__/cfg.cpython-38.pyc,,
13
+ bytecode/__pycache__/concrete.cpython-38.pyc,,
14
+ bytecode/__pycache__/flags.cpython-38.pyc,,
15
+ bytecode/__pycache__/instr.cpython-38.pyc,,
16
+ bytecode/__pycache__/peephole_opt.cpython-38.pyc,,
17
+ bytecode/bytecode.py,sha256=IMCcatHMtQ7M31nwj4r3drcvQuGVJAOP0d7C0O8P_SE,6894
18
+ bytecode/cfg.py,sha256=RmJGJqwCxR-XYaPH9YGY4wNDycdtLvIBJb1OGSmxcN0,15274
19
+ bytecode/concrete.py,sha256=0eb6Yh_NDLmzJNcMs2TFom0EqFVSM1cO3inMH90YE-s,21683
20
+ bytecode/flags.py,sha256=hAvM_B2yQKRw44leHP0oCae0aaJraAbDDTpqIf4I1CM,5987
21
+ bytecode/instr.py,sha256=HYc65LjNSOB3GCWkNkCSkee1rRzUyr89rgdjbKBaTpE,11616
22
+ bytecode/peephole_opt.py,sha256=W-cFVPOZN-JKfDV3aImsYenDSZkSNBDTVQqeMrGPU18,15712
23
+ bytecode/tests/__init__.py,sha256=BAdOXXNRdMVX4D8TuRYPlG9PHU7Cb0bzvyfA9s435kM,4968
24
+ bytecode/tests/__pycache__/__init__.cpython-38.pyc,,
25
+ bytecode/tests/__pycache__/test_bytecode.cpython-38.pyc,,
26
+ bytecode/tests/__pycache__/test_cfg.cpython-38.pyc,,
27
+ bytecode/tests/__pycache__/test_code.cpython-38.pyc,,
28
+ bytecode/tests/__pycache__/test_concrete.cpython-38.pyc,,
29
+ bytecode/tests/__pycache__/test_flags.cpython-38.pyc,,
30
+ bytecode/tests/__pycache__/test_instr.cpython-38.pyc,,
31
+ bytecode/tests/__pycache__/test_misc.cpython-38.pyc,,
32
+ bytecode/tests/__pycache__/test_peephole_opt.cpython-38.pyc,,
33
+ bytecode/tests/__pycache__/util_annotation.cpython-38.pyc,,
34
+ bytecode/tests/test_bytecode.py,sha256=buvtlDC0NwoQ3zuZ7OENIIDngSqtiO9WkAa2-UvxGkI,15584
35
+ bytecode/tests/test_cfg.py,sha256=c0xT8OfV-mDHu-DIDWr6LVlZQyK4GfgLSmT5AsodbMk,28194
36
+ bytecode/tests/test_code.py,sha256=XCOH29rOXSoQz130s-AIC62r23e9qNjk8Y2xDB2LmSc,2100
37
+ bytecode/tests/test_concrete.py,sha256=qT2qvabkF0yC7inniNx53cMSDN-2Qi0IE3pwBZSzF8g,49253
38
+ bytecode/tests/test_flags.py,sha256=DY9U3c6tJdxJFm0jEm_To1Cc0I99EidQv_0guud-4oE,5684
39
+ bytecode/tests/test_instr.py,sha256=rYeF8u-L0aW8bLPBxTUSy_T7KP6SaXyJKv9OhC8k6aA,11295
40
+ bytecode/tests/test_misc.py,sha256=wyK1wpVPHRfaXgo-EqUI-F1nyB9-UACerHsHbExAo1U,6758
41
+ bytecode/tests/test_peephole_opt.py,sha256=niUfhgEbiFR7IAmdQ_N9Qgh7D3wdRQ_zS0V8mKC4EzI,32640
42
+ bytecode/tests/util_annotation.py,sha256=wKq6yPWrzkNlholl5Y10b3VjuCkoiYVgvcIjk_8jzf8,485
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.36.2)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1 @@
1
+ {"archive_info": {}, "url": "https://github.com/MatthieuDartiailh/bytecode/archive/main.zip"}
@@ -13,9 +13,9 @@ from typing import Dict, Optional, Tuple, Any
13
13
  from os.path import basename, splitext
14
14
 
15
15
  from _pydev_bundle import pydev_log
16
- from _pydev_bundle.pydev_is_thread_alive import is_thread_alive
17
16
  from _pydevd_bundle import pydevd_dont_trace
18
17
  from _pydevd_bundle.pydevd_constants import (
18
+ IS_PY313_OR_GREATER,
19
19
  GlobalDebuggerHolder,
20
20
  ForkSafeLock,
21
21
  PYDEVD_IPYTHON_CONTEXT,
@@ -23,7 +23,6 @@ from _pydevd_bundle.pydevd_constants import (
23
23
  RETURN_VALUES_DICT,
24
24
  PYTHON_SUSPEND,
25
25
  )
26
- from _pydevd_bundle.pydevd_frame_utils import short_tb, flag_as_unwinding, short_frame
27
26
  from pydevd_file_utils import (
28
27
  NORM_PATHS_AND_BASE_CONTAINER,
29
28
  get_abs_path_real_path_and_base_from_file,
@@ -60,10 +59,8 @@ _thread_local_info = threading.local()
60
59
  _get_ident = threading.get_ident
61
60
  _thread_active = threading._active # noqa
62
61
 
63
- STATE_SUSPEND: int = 2
64
62
  CMD_STEP_INTO: int = 107
65
63
  CMD_STEP_OVER: int = 108
66
- CMD_STEP_OVER_MY_CODE: int = 159
67
64
  CMD_STEP_INTO_MY_CODE: int = 144
68
65
  CMD_STEP_INTO_COROUTINE: int = 206
69
66
  CMD_SMART_STEP_INTO: int = 128
@@ -170,67 +167,65 @@ def _get_bootstrap_frame(depth: int) -> Tuple[Optional[FrameType], bool]:
170
167
 
171
168
  return f_bootstrap, is_bootstrap_frame_internal
172
169
 
170
+
173
171
  # fmt: off
174
172
  # IFDEF CYTHON
175
- # cdef _is_user_frame(frame: FrameType):
173
+ # cdef _get_unhandled_exception_frame(exc, int depth):
176
174
  # ELSE
177
- def _is_user_frame(frame: FrameType) -> bool:
175
+ def _get_unhandled_exception_frame(exc, depth: int) -> Optional[FrameType]:
178
176
  # ENDIF
179
177
  # fmt: on
180
- if frame is None:
181
- return False
178
+ try:
179
+ # Unhandled frame has to be from the same exception.
180
+ if _thread_local_info.f_unhandled_exc is exc:
181
+ return _thread_local_info.f_unhandled_frame
182
+ else:
183
+ del _thread_local_info.f_unhandled_frame
184
+ del _thread_local_info.f_unhandled_exc
185
+ raise AttributeError('Not the same exception')
186
+ except:
187
+ f_unhandled = _getframe(depth)
182
188
 
183
- filename = frame.f_code.co_filename
184
- name = splitext(basename(filename))[0]
189
+ while f_unhandled is not None and f_unhandled.f_back is not None:
190
+ f_back = f_unhandled.f_back
191
+ filename = f_back.f_code.co_filename
192
+ name = splitext(basename(filename))[0]
185
193
 
186
- # When the frame is the bootstrap it is not a user frame.
187
- if name == "threading":
188
- if frame.f_code.co_name in ("__bootstrap", "_bootstrap", "__bootstrap_inner", "_bootstrap_inner", "run"):
189
- return False
194
+ # When the back frame is the bootstrap (or if we have no back
195
+ # frame) then use this frame as the one to track.
196
+ if name == "threading":
197
+ if f_back.f_code.co_name in ("__bootstrap", "_bootstrap", "__bootstrap_inner", "_bootstrap_inner", "run"):
198
+ break
190
199
 
191
- elif name == "pydev_monkey":
192
- if frame.f_code.co_name == "__call__":
193
- return False
200
+ elif name == "pydev_monkey":
201
+ if f_back.f_code.co_name == "__call__":
202
+ break
194
203
 
195
- elif name == "pydevd":
196
- if frame.f_code.co_name in ("_exec", "run", "main"):
197
- return False
204
+ elif name == "pydevd":
205
+ if f_back.f_code.co_name in ("_exec", "run", "main"):
206
+ break
198
207
 
199
- elif name == "pydevd_runpy":
200
- if frame.f_code.co_name.startswith(("run", "_run")):
201
- return False
208
+ elif name == "pydevd_runpy":
209
+ if f_back.f_code.co_name.startswith(("run", "_run")):
210
+ break
202
211
 
203
- elif filename == "<frozen runpy>":
204
- if frame.f_code.co_name.startswith(("run", "_run")):
205
- return False
212
+ elif name == "<frozen runpy>":
213
+ if f_back.f_code.co_name.startswith(("run", "_run")):
214
+ break
206
215
 
207
- elif name == 'runpy':
208
- if frame.f_code.co_name.startswith(("run", "_run")):
209
- return False
216
+ elif name == "runpy":
217
+ if f_back.f_code.co_name.startswith(("run", "_run")):
218
+ break
210
219
 
211
- return True
220
+ f_unhandled = f_back
221
+
222
+ if f_unhandled is not None:
223
+ _thread_local_info.f_unhandled_frame = f_unhandled
224
+ _thread_local_info.f_unhandled_exc = exc
225
+ return _thread_local_info.f_unhandled_frame
226
+
227
+ return f_unhandled
212
228
 
213
- # fmt: off
214
- # IFDEF CYTHON
215
- # cdef _is_last_user_frame(frame: FrameType):
216
- # ELSE
217
- def _is_last_user_frame(frame: FrameType) -> bool:
218
- # ENDIF
219
- # fmt: on
220
- # If this frame is not a user frame, then it can't be the last one
221
- if not _is_user_frame(frame):
222
- return False
223
-
224
- # If this frame is the last frame, then it is the last one
225
- if frame.f_back is None:
226
- return True
227
-
228
- # If the next frame is not a user frame, then this frame is the last one
229
- if not _is_user_frame(frame.f_back):
230
- return True
231
-
232
- # Otherwise if the next frame is a user frame, then this frame is not the last one
233
- return False
234
229
 
235
230
  # fmt: off
236
231
  # IFDEF CYTHON
@@ -239,6 +234,7 @@ def _is_last_user_frame(frame: FrameType) -> bool:
239
234
  # cdef PyDBAdditionalThreadInfo additional_info
240
235
  # thread: threading.Thread
241
236
  # trace: bool
237
+ # _use_is_stopped: bool
242
238
  # ELSE
243
239
  class ThreadInfo:
244
240
  additional_info: PyDBAdditionalThreadInfo
@@ -259,6 +255,19 @@ class ThreadInfo:
259
255
  self.thread_ident = thread_ident
260
256
  self.additional_info = additional_info
261
257
  self.trace = trace
258
+ self._use_is_stopped = hasattr(thread, '_is_stopped')
259
+
260
+ # fmt: off
261
+ # IFDEF CYTHON
262
+ # cdef bint is_thread_alive(self):
263
+ # ELSE
264
+ def is_thread_alive(self):
265
+ # ENDIF
266
+ # fmt: on
267
+ if self._use_is_stopped:
268
+ return not self.thread._is_stopped
269
+ else:
270
+ return not self.thread._handle.is_done()
262
271
 
263
272
 
264
273
  class _DeleteDummyThreadOnDel:
@@ -322,7 +331,7 @@ def _create_thread_info(depth):
322
331
  if t is None:
323
332
  t = _thread_active.get(thread_ident)
324
333
 
325
- if isinstance(t, threading._DummyThread):
334
+ if isinstance(t, threading._DummyThread) and not IS_PY313_OR_GREATER:
326
335
  _thread_local_info._ref = _DeleteDummyThreadOnDel(t)
327
336
 
328
337
  if t is None:
@@ -364,6 +373,7 @@ def _create_thread_info(depth):
364
373
  # cdef str co_name
365
374
  # ELSE
366
375
  class FuncCodeInfo:
376
+
367
377
  # ENDIF
368
378
  # fmt: on
369
379
  def __init__(self):
@@ -409,8 +419,9 @@ class FuncCodeInfo:
409
419
 
410
420
  def get_line_of_offset(self, offset):
411
421
  for start, end, line in self.code_obj.co_lines():
412
- if offset >= start and offset <= end:
413
- return line
422
+ if start is not None and end is not None and line is not None:
423
+ if offset >= start and offset <= end:
424
+ return line
414
425
  return -1
415
426
 
416
427
 
@@ -441,15 +452,41 @@ def _get_thread_info(create: bool, depth: int) -> Optional[ThreadInfo]:
441
452
  return _thread_local_info.thread_info
442
453
 
443
454
 
444
- _CodeLineInfo = namedtuple("_CodeLineInfo", "line_to_offset, first_line, last_line")
455
+ # fmt: off
456
+ # IFDEF CYTHON
457
+ # cdef class _CodeLineInfo:
458
+ # cdef dict line_to_offset
459
+ # cdef int first_line
460
+ # cdef int last_line
461
+ # ELSE
462
+ class _CodeLineInfo:
463
+ line_to_offset: Dict[int, Any]
464
+ first_line: int
465
+ last_line: int
466
+ # ENDIF
467
+ # fmt: on
445
468
 
469
+ # fmt: off
470
+ # IFDEF CYTHON
471
+ # def __init__(self, dict line_to_offset, int first_line, int last_line):
472
+ # self.line_to_offset = line_to_offset
473
+ # self.first_line = first_line
474
+ # self.last_line = last_line
475
+ # ELSE
476
+ def __init__(self, line_to_offset, first_line, last_line):
477
+ self.line_to_offset = line_to_offset
478
+ self.first_line = first_line
479
+ self.last_line = last_line
480
+
481
+ # ENDIF
482
+ # fmt: on
446
483
 
447
484
  # Note: this method has a version in cython too
448
485
  # fmt: off
449
486
  # IFDEF CYTHON
450
- # cdef _get_code_line_info(code_obj, _cache={}):
487
+ # cdef _CodeLineInfo _get_code_line_info(code_obj, _cache={}):
451
488
  # ELSE
452
- def _get_code_line_info(code_obj, _cache={}):
489
+ def _get_code_line_info(code_obj, _cache={}) -> _CodeLineInfo:
453
490
  # ENDIF
454
491
  # fmt: on
455
492
  try:
@@ -460,7 +497,7 @@ def _get_code_line_info(code_obj, _cache={}):
460
497
  last_line = None
461
498
 
462
499
  for offset, line in dis.findlinestarts(code_obj):
463
- if offset is not None and line is not None:
500
+ if line is not None:
464
501
  line_to_offset[line] = offset
465
502
 
466
503
  if len(line_to_offset):
@@ -832,32 +869,30 @@ def _unwind_event(code, instruction, exc):
832
869
  if thread_info is None:
833
870
  return
834
871
 
835
- frame = _getframe(1)
836
- arg = (type(exc), exc, exc.__traceback__)
837
-
838
872
  py_db: object = GlobalDebuggerHolder.global_dbg
839
873
  if py_db is None or py_db.pydb_disposed:
840
874
  return
841
875
 
842
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
876
+ if not thread_info.trace or not thread_info.is_thread_alive():
843
877
  # For thread-related stuff we can't disable the code tracing because other
844
878
  # threads may still want it...
845
879
  return
846
-
880
+
847
881
  func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
848
882
  if func_code_info.always_skip_code:
849
883
  return
850
-
884
+
851
885
  # print('_unwind_event', code, exc)
886
+ frame = _getframe(1)
887
+ arg = (type(exc), exc, exc.__traceback__)
852
888
 
853
889
  has_caught_exception_breakpoint_in_pydb = (
854
890
  py_db.break_on_caught_exceptions or py_db.break_on_user_uncaught_exceptions or py_db.has_plugin_exception_breaks
855
891
  )
856
892
 
857
-
858
893
  if has_caught_exception_breakpoint_in_pydb:
859
894
  _should_stop, frame, user_uncaught_exc_info = should_stop_on_exception(
860
- py_db, thread_info.additional_info, frame, thread_info.thread, arg, None
895
+ py_db, thread_info.additional_info, frame, thread_info.thread, arg, None, is_unwind=True
861
896
  )
862
897
  if user_uncaught_exc_info:
863
898
  # TODO: Check: this may no longer be needed as in the unwind we know it's
@@ -871,13 +906,14 @@ def _unwind_event(code, instruction, exc):
871
906
  )
872
907
 
873
908
  if is_unhandled:
874
- # print('stop in user uncaught')
875
909
  handle_exception(py_db, thread_info.thread, frame, user_uncaught_exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
876
910
  return
877
911
 
878
912
  break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions
879
- if break_on_uncaught_exceptions and _is_last_user_frame(frame):
880
- stop_on_unhandled_exception(py_db, thread_info.thread, thread_info.additional_info, arg)
913
+ if break_on_uncaught_exceptions:
914
+ if frame is _get_unhandled_exception_frame(exc, 1):
915
+ stop_on_unhandled_exception(py_db, thread_info.thread, thread_info.additional_info, arg)
916
+ return
881
917
 
882
918
 
883
919
  # fmt: off
@@ -905,15 +941,12 @@ def _raise_event(code, instruction, exc):
905
941
  thread_info = _get_thread_info(True, 1)
906
942
  if thread_info is None:
907
943
  return
908
-
909
- frame = _getframe(1)
910
- arg = (type(exc), exc, exc.__traceback__)
911
-
944
+
912
945
  py_db: object = GlobalDebuggerHolder.global_dbg
913
946
  if py_db is None or py_db.pydb_disposed:
914
947
  return
915
948
 
916
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
949
+ if not thread_info.trace or not thread_info.is_thread_alive():
917
950
  # For thread-related stuff we can't disable the code tracing because other
918
951
  # threads may still want it...
919
952
  return
@@ -922,7 +955,8 @@ def _raise_event(code, instruction, exc):
922
955
  if func_code_info.always_skip_code:
923
956
  return
924
957
 
925
- # print('_raise_event --- ', code, exc)
958
+ frame = _getframe(1)
959
+ arg = (type(exc), exc, exc.__traceback__)
926
960
 
927
961
  # Compute the previous exception info (if any). We use it to check if the exception
928
962
  # should be stopped
@@ -938,10 +972,6 @@ def _raise_event(code, instruction, exc):
938
972
  if should_stop:
939
973
  handle_exception(py_db, thread_info.thread, frame, arg, EXCEPTION_TYPE_HANDLED)
940
974
 
941
- # Once we leave the raise event, we are no longer in the state of 'just_raised', so
942
- # indicate that this traceback is for an exception in the unwinding state
943
- flag_as_unwinding(exc.__traceback__)
944
-
945
975
 
946
976
  # fmt: off
947
977
  # IFDEF CYTHON
@@ -1031,7 +1061,7 @@ def _return_event(code, instruction, retval):
1031
1061
  if py_db is None or py_db.pydb_disposed:
1032
1062
  return monitor.DISABLE
1033
1063
 
1034
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
1064
+ if not thread_info.trace or not thread_info.is_thread_alive():
1035
1065
  # For thread-related stuff we can't disable the code tracing because other
1036
1066
  # threads may still want it...
1037
1067
  return
@@ -1342,7 +1372,11 @@ def _jump_event(code, from_offset, to_offset):
1342
1372
  if py_db is None or py_db.pydb_disposed:
1343
1373
  return monitor.DISABLE
1344
1374
 
1345
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
1375
+ # If we get another jump event, remove the extra check for the line event
1376
+ if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
1377
+ del _thread_local_info.f_disable_next_line_if_match
1378
+
1379
+ if not thread_info.trace or not thread_info.is_thread_alive():
1346
1380
  # For thread-related stuff we can't disable the code tracing because other
1347
1381
  # threads may still want it...
1348
1382
  return
@@ -1358,9 +1392,8 @@ def _jump_event(code, from_offset, to_offset):
1358
1392
  if to_offset > from_offset:
1359
1393
  return monitor.DISABLE
1360
1394
 
1361
- from_line = func_code_info.get_line_of_offset(from_offset)
1362
- to_line = func_code_info.get_line_of_offset(to_offset)
1363
- # print('jump event', code.co_name, 'from line', from_line, 'to line', to_line)
1395
+ from_line = func_code_info.get_line_of_offset(from_offset or 0)
1396
+ to_line = func_code_info.get_line_of_offset(to_offset or 0)
1364
1397
 
1365
1398
  if from_line != to_line:
1366
1399
  # I.e.: use case: "yield from [j for j in a if j % 2 == 0]"
@@ -1370,7 +1403,8 @@ def _jump_event(code, from_offset, to_offset):
1370
1403
  frame = _getframe(1)
1371
1404
 
1372
1405
  # Disable the next line event as we're jumping to a line. The line event will be redundant.
1373
- _thread_local_info.f_disable_next_line_if_match = frame.f_lineno
1406
+ _thread_local_info.f_disable_next_line_if_match = (func_code_info.co_filename, frame.f_lineno)
1407
+ # pydev_log.debug('_jump_event', code.co_name, 'from line', from_line, 'to line', frame.f_lineno)
1374
1408
 
1375
1409
  return _internal_line_event(func_code_info, frame, frame.f_lineno)
1376
1410
 
@@ -1399,24 +1433,26 @@ def _line_event(code, line):
1399
1433
  if py_db is None or py_db.pydb_disposed:
1400
1434
  return monitor.DISABLE
1401
1435
 
1402
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
1436
+ # If we get another line event, remove the extra check for the line event
1437
+ if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
1438
+ (co_filename, line_to_skip) = _thread_local_info.f_disable_next_line_if_match
1439
+ del _thread_local_info.f_disable_next_line_if_match
1440
+ if line_to_skip is line and co_filename == code.co_filename:
1441
+ # The last jump already jumped to this line and we haven't had any
1442
+ # line events or jumps since then. We don't want to consider this line twice
1443
+ # pydev_log.debug('_line_event skipped', line)
1444
+ return
1445
+
1446
+ if not thread_info.trace or not thread_info.is_thread_alive():
1403
1447
  # For thread-related stuff we can't disable the code tracing because other
1404
1448
  # threads may still want it...
1405
1449
  return
1406
1450
 
1407
- if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
1408
- if _thread_local_info.f_disable_next_line_if_match is line:
1409
- # If we're in a jump, we should skip this line event. The jump would have
1410
- # been considered a line event for this same line and we don't want to
1411
- # stop twice.
1412
- del _thread_local_info.f_disable_next_line_if_match
1413
- return
1414
-
1415
1451
  func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
1416
1452
  if func_code_info.always_skip_code or func_code_info.always_filtered_out:
1417
1453
  return monitor.DISABLE
1418
1454
 
1419
- # print('line event', code.co_name, line)
1455
+ # pydev_log.debug('_line_event', code.co_name, line)
1420
1456
 
1421
1457
  # We know the frame depth.
1422
1458
  frame = _getframe(1)
@@ -1646,12 +1682,11 @@ def _start_method_event(code, instruction_offset):
1646
1682
  if py_db is None or py_db.pydb_disposed:
1647
1683
  return monitor.DISABLE
1648
1684
 
1649
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
1685
+ if not thread_info.trace or not thread_info.is_thread_alive():
1650
1686
  # For thread-related stuff we can't disable the code tracing because other
1651
1687
  # threads may still want it...
1652
1688
  return
1653
1689
 
1654
-
1655
1690
  frame = _getframe(1)
1656
1691
  func_code_info = _get_func_code_info(code, frame)
1657
1692
  if func_code_info.always_skip_code:
@@ -1699,6 +1734,7 @@ def _start_method_event(code, instruction_offset):
1699
1734
 
1700
1735
  return monitor.DISABLE
1701
1736
 
1737
+
1702
1738
  # fmt: off
1703
1739
  # IFDEF CYTHON
1704
1740
  # cpdef _ensure_monitoring():
@@ -1771,7 +1807,7 @@ def stop_monitoring(all_threads=False):
1771
1807
  thread_info.trace = False
1772
1808
 
1773
1809
 
1774
- def update_monitor_events(suspend_requested: Optional[bool] = None) -> None:
1810
+ def update_monitor_events(suspend_requested: Optional[bool]=None) -> None:
1775
1811
  """
1776
1812
  This should be called when breakpoints change.
1777
1813
 
@@ -1843,7 +1879,10 @@ def update_monitor_events(suspend_requested: Optional[bool] = None) -> None:
1843
1879
  monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, _start_method_event)
1844
1880
  # monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, _resume_method_event)
1845
1881
  monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, _line_event)
1846
- monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, _jump_event)
1882
+ if not IS_PY313_OR_GREATER:
1883
+ # In Python 3.13+ jump_events aren't necessary as we have a line_event for every
1884
+ # jump location.
1885
+ monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, _jump_event)
1847
1886
  monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, _return_event)
1848
1887
 
1849
1888
  else:
@@ -1899,7 +1938,6 @@ def _do_wait_suspend(py_db, thread_info, frame, event, arg):
1899
1938
  thread_info.additional_info.trace_suspend_type = "sys_monitor"
1900
1939
  py_db.do_wait_suspend(thread_info.thread, frame, event, arg)
1901
1940
 
1902
-
1903
1941
  # This can be used to diagnose exceptions inside of the debugger itself.
1904
1942
  #
1905
1943
  # import types