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
@@ -19,9 +19,9 @@ from typing import Dict, Optional, Tuple, Any
19
19
  from os.path import basename, splitext
20
20
 
21
21
  from _pydev_bundle import pydev_log
22
- from _pydev_bundle.pydev_is_thread_alive import is_thread_alive
23
22
  from _pydevd_bundle import pydevd_dont_trace
24
23
  from _pydevd_bundle.pydevd_constants import (
24
+ IS_PY313_OR_GREATER,
25
25
  GlobalDebuggerHolder,
26
26
  ForkSafeLock,
27
27
  PYDEVD_IPYTHON_CONTEXT,
@@ -29,7 +29,6 @@ from _pydevd_bundle.pydevd_constants import (
29
29
  RETURN_VALUES_DICT,
30
30
  PYTHON_SUSPEND,
31
31
  )
32
- from _pydevd_bundle.pydevd_frame_utils import short_tb, flag_as_unwinding, short_frame
33
32
  from pydevd_file_utils import (
34
33
  NORM_PATHS_AND_BASE_CONTAINER,
35
34
  get_abs_path_real_path_and_base_from_file,
@@ -66,10 +65,8 @@ _thread_local_info = threading.local()
66
65
  _get_ident = threading.get_ident
67
66
  _thread_active = threading._active # noqa
68
67
 
69
- STATE_SUSPEND: int = 2
70
68
  CMD_STEP_INTO: int = 107
71
69
  CMD_STEP_OVER: int = 108
72
- CMD_STEP_OVER_MY_CODE: int = 159
73
70
  CMD_STEP_INTO_MY_CODE: int = 144
74
71
  CMD_STEP_INTO_COROUTINE: int = 206
75
72
  CMD_SMART_STEP_INTO: int = 128
@@ -176,67 +173,65 @@ cdef _get_bootstrap_frame(depth):
176
173
 
177
174
  return f_bootstrap, is_bootstrap_frame_internal
178
175
 
176
+
179
177
  # fmt: off
180
178
  # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
181
- cdef _is_user_frame(frame: FrameType):
179
+ cdef _get_unhandled_exception_frame(exc, int depth):
182
180
  # ELSE
183
- # def _is_user_frame(frame: FrameType) -> bool:
181
+ # def _get_unhandled_exception_frame(exc, depth: int) -> Optional[FrameType]:
184
182
  # ENDIF
185
183
  # fmt: on
186
- if frame is None:
187
- return False
184
+ try:
185
+ # Unhandled frame has to be from the same exception.
186
+ if _thread_local_info.f_unhandled_exc is exc:
187
+ return _thread_local_info.f_unhandled_frame
188
+ else:
189
+ del _thread_local_info.f_unhandled_frame
190
+ del _thread_local_info.f_unhandled_exc
191
+ raise AttributeError('Not the same exception')
192
+ except:
193
+ f_unhandled = _getframe(depth)
188
194
 
189
- filename = frame.f_code.co_filename
190
- name = splitext(basename(filename))[0]
195
+ while f_unhandled is not None and f_unhandled.f_back is not None:
196
+ f_back = f_unhandled.f_back
197
+ filename = f_back.f_code.co_filename
198
+ name = splitext(basename(filename))[0]
191
199
 
192
- # When the frame is the bootstrap it is not a user frame.
193
- if name == "threading":
194
- if frame.f_code.co_name in ("__bootstrap", "_bootstrap", "__bootstrap_inner", "_bootstrap_inner", "run"):
195
- return False
200
+ # When the back frame is the bootstrap (or if we have no back
201
+ # frame) then use this frame as the one to track.
202
+ if name == "threading":
203
+ if f_back.f_code.co_name in ("__bootstrap", "_bootstrap", "__bootstrap_inner", "_bootstrap_inner", "run"):
204
+ break
196
205
 
197
- elif name == "pydev_monkey":
198
- if frame.f_code.co_name == "__call__":
199
- return False
206
+ elif name == "pydev_monkey":
207
+ if f_back.f_code.co_name == "__call__":
208
+ break
200
209
 
201
- elif name == "pydevd":
202
- if frame.f_code.co_name in ("_exec", "run", "main"):
203
- return False
210
+ elif name == "pydevd":
211
+ if f_back.f_code.co_name in ("_exec", "run", "main"):
212
+ break
204
213
 
205
- elif name == "pydevd_runpy":
206
- if frame.f_code.co_name.startswith(("run", "_run")):
207
- return False
214
+ elif name == "pydevd_runpy":
215
+ if f_back.f_code.co_name.startswith(("run", "_run")):
216
+ break
208
217
 
209
- elif filename == "<frozen runpy>":
210
- if frame.f_code.co_name.startswith(("run", "_run")):
211
- return False
218
+ elif name == "<frozen runpy>":
219
+ if f_back.f_code.co_name.startswith(("run", "_run")):
220
+ break
212
221
 
213
- elif name == 'runpy':
214
- if frame.f_code.co_name.startswith(("run", "_run")):
215
- return False
222
+ elif name == "runpy":
223
+ if f_back.f_code.co_name.startswith(("run", "_run")):
224
+ break
216
225
 
217
- return True
226
+ f_unhandled = f_back
227
+
228
+ if f_unhandled is not None:
229
+ _thread_local_info.f_unhandled_frame = f_unhandled
230
+ _thread_local_info.f_unhandled_exc = exc
231
+ return _thread_local_info.f_unhandled_frame
232
+
233
+ return f_unhandled
218
234
 
219
- # fmt: off
220
- # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
221
- cdef _is_last_user_frame(frame: FrameType):
222
- # ELSE
223
- # def _is_last_user_frame(frame: FrameType) -> bool:
224
- # ENDIF
225
- # fmt: on
226
- # If this frame is not a user frame, then it can't be the last one
227
- if not _is_user_frame(frame):
228
- return False
229
-
230
- # If this frame is the last frame, then it is the last one
231
- if frame.f_back is None:
232
- return True
233
-
234
- # If the next frame is not a user frame, then this frame is the last one
235
- if not _is_user_frame(frame.f_back):
236
- return True
237
-
238
- # Otherwise if the next frame is a user frame, then this frame is not the last one
239
- return False
240
235
 
241
236
  # fmt: off
242
237
  # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
@@ -245,6 +240,7 @@ cdef class ThreadInfo:
245
240
  cdef PyDBAdditionalThreadInfo additional_info
246
241
  thread: threading.Thread
247
242
  trace: bool
243
+ _use_is_stopped: bool
248
244
  # ELSE
249
245
  # class ThreadInfo:
250
246
  # additional_info: PyDBAdditionalThreadInfo
@@ -265,6 +261,19 @@ cdef class ThreadInfo:
265
261
  self.thread_ident = thread_ident
266
262
  self.additional_info = additional_info
267
263
  self.trace = trace
264
+ self._use_is_stopped = hasattr(thread, '_is_stopped')
265
+
266
+ # fmt: off
267
+ # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
268
+ cdef bint is_thread_alive(self):
269
+ # ELSE
270
+ # def is_thread_alive(self):
271
+ # ENDIF
272
+ # fmt: on
273
+ if self._use_is_stopped:
274
+ return not self.thread._is_stopped
275
+ else:
276
+ return not self.thread._handle.is_done()
268
277
 
269
278
 
270
279
  class _DeleteDummyThreadOnDel:
@@ -328,7 +337,7 @@ cdef _create_thread_info(depth):
328
337
  if t is None:
329
338
  t = _thread_active.get(thread_ident)
330
339
 
331
- if isinstance(t, threading._DummyThread):
340
+ if isinstance(t, threading._DummyThread) and not IS_PY313_OR_GREATER:
332
341
  _thread_local_info._ref = _DeleteDummyThreadOnDel(t)
333
342
 
334
343
  if t is None:
@@ -370,6 +379,7 @@ cdef class FuncCodeInfo:
370
379
  cdef str co_name
371
380
  # ELSE
372
381
  # class FuncCodeInfo:
382
+ #
373
383
  # ENDIF
374
384
  # fmt: on
375
385
  def __init__(self):
@@ -415,8 +425,9 @@ cdef class FuncCodeInfo:
415
425
 
416
426
  def get_line_of_offset(self, offset):
417
427
  for start, end, line in self.code_obj.co_lines():
418
- if offset >= start and offset <= end:
419
- return line
428
+ if start is not None and end is not None and line is not None:
429
+ if offset >= start and offset <= end:
430
+ return line
420
431
  return -1
421
432
 
422
433
 
@@ -447,15 +458,41 @@ cdef _get_thread_info(bint create, int depth):
447
458
  return _thread_local_info.thread_info
448
459
 
449
460
 
450
- _CodeLineInfo = namedtuple("_CodeLineInfo", "line_to_offset, first_line, last_line")
461
+ # fmt: off
462
+ # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
463
+ cdef class _CodeLineInfo:
464
+ cdef dict line_to_offset
465
+ cdef int first_line
466
+ cdef int last_line
467
+ # ELSE
468
+ # class _CodeLineInfo:
469
+ # line_to_offset: Dict[int, Any]
470
+ # first_line: int
471
+ # last_line: int
472
+ # ENDIF
473
+ # fmt: on
451
474
 
475
+ # fmt: off
476
+ # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
477
+ def __init__(self, dict line_to_offset, int first_line, int last_line):
478
+ self.line_to_offset = line_to_offset
479
+ self.first_line = first_line
480
+ self.last_line = last_line
481
+ # ELSE
482
+ # def __init__(self, line_to_offset, first_line, last_line):
483
+ # self.line_to_offset = line_to_offset
484
+ # self.first_line = first_line
485
+ # self.last_line = last_line
486
+ #
487
+ # ENDIF
488
+ # fmt: on
452
489
 
453
490
  # Note: this method has a version in cython too
454
491
  # fmt: off
455
492
  # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
456
- cdef _get_code_line_info(code_obj, _cache={}):
493
+ cdef _CodeLineInfo _get_code_line_info(code_obj, _cache={}):
457
494
  # ELSE
458
- # def _get_code_line_info(code_obj, _cache={}):
495
+ # def _get_code_line_info(code_obj, _cache={}) -> _CodeLineInfo:
459
496
  # ENDIF
460
497
  # fmt: on
461
498
  try:
@@ -466,7 +503,7 @@ cdef _get_code_line_info(code_obj, _cache={}):
466
503
  last_line = None
467
504
 
468
505
  for offset, line in dis.findlinestarts(code_obj):
469
- if offset is not None and line is not None:
506
+ if line is not None:
470
507
  line_to_offset[line] = offset
471
508
 
472
509
  if len(line_to_offset):
@@ -838,32 +875,30 @@ cdef _unwind_event(code, instruction, exc):
838
875
  if thread_info is None:
839
876
  return
840
877
 
841
- frame = _getframe(1)
842
- arg = (type(exc), exc, exc.__traceback__)
843
-
844
878
  py_db: object = GlobalDebuggerHolder.global_dbg
845
879
  if py_db is None or py_db.pydb_disposed:
846
880
  return
847
881
 
848
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
882
+ if not thread_info.trace or not thread_info.is_thread_alive():
849
883
  # For thread-related stuff we can't disable the code tracing because other
850
884
  # threads may still want it...
851
885
  return
852
-
886
+
853
887
  func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
854
888
  if func_code_info.always_skip_code:
855
889
  return
856
-
890
+
857
891
  # print('_unwind_event', code, exc)
892
+ frame = _getframe(1)
893
+ arg = (type(exc), exc, exc.__traceback__)
858
894
 
859
895
  has_caught_exception_breakpoint_in_pydb = (
860
896
  py_db.break_on_caught_exceptions or py_db.break_on_user_uncaught_exceptions or py_db.has_plugin_exception_breaks
861
897
  )
862
898
 
863
-
864
899
  if has_caught_exception_breakpoint_in_pydb:
865
900
  _should_stop, frame, user_uncaught_exc_info = should_stop_on_exception(
866
- py_db, thread_info.additional_info, frame, thread_info.thread, arg, None
901
+ py_db, thread_info.additional_info, frame, thread_info.thread, arg, None, is_unwind=True
867
902
  )
868
903
  if user_uncaught_exc_info:
869
904
  # TODO: Check: this may no longer be needed as in the unwind we know it's
@@ -877,13 +912,14 @@ cdef _unwind_event(code, instruction, exc):
877
912
  )
878
913
 
879
914
  if is_unhandled:
880
- # print('stop in user uncaught')
881
915
  handle_exception(py_db, thread_info.thread, frame, user_uncaught_exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
882
916
  return
883
917
 
884
918
  break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions
885
- if break_on_uncaught_exceptions and _is_last_user_frame(frame):
886
- stop_on_unhandled_exception(py_db, thread_info.thread, thread_info.additional_info, arg)
919
+ if break_on_uncaught_exceptions:
920
+ if frame is _get_unhandled_exception_frame(exc, 1):
921
+ stop_on_unhandled_exception(py_db, thread_info.thread, thread_info.additional_info, arg)
922
+ return
887
923
 
888
924
 
889
925
  # fmt: off
@@ -911,15 +947,12 @@ cdef _raise_event(code, instruction, exc):
911
947
  thread_info = _get_thread_info(True, 1)
912
948
  if thread_info is None:
913
949
  return
914
-
915
- frame = _getframe(1)
916
- arg = (type(exc), exc, exc.__traceback__)
917
-
950
+
918
951
  py_db: object = GlobalDebuggerHolder.global_dbg
919
952
  if py_db is None or py_db.pydb_disposed:
920
953
  return
921
954
 
922
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
955
+ if not thread_info.trace or not thread_info.is_thread_alive():
923
956
  # For thread-related stuff we can't disable the code tracing because other
924
957
  # threads may still want it...
925
958
  return
@@ -928,7 +961,8 @@ cdef _raise_event(code, instruction, exc):
928
961
  if func_code_info.always_skip_code:
929
962
  return
930
963
 
931
- # print('_raise_event --- ', code, exc)
964
+ frame = _getframe(1)
965
+ arg = (type(exc), exc, exc.__traceback__)
932
966
 
933
967
  # Compute the previous exception info (if any). We use it to check if the exception
934
968
  # should be stopped
@@ -944,10 +978,6 @@ cdef _raise_event(code, instruction, exc):
944
978
  if should_stop:
945
979
  handle_exception(py_db, thread_info.thread, frame, arg, EXCEPTION_TYPE_HANDLED)
946
980
 
947
- # Once we leave the raise event, we are no longer in the state of 'just_raised', so
948
- # indicate that this traceback is for an exception in the unwinding state
949
- flag_as_unwinding(exc.__traceback__)
950
-
951
981
 
952
982
  # fmt: off
953
983
  # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
@@ -1037,7 +1067,7 @@ cdef _return_event(code, instruction, retval):
1037
1067
  if py_db is None or py_db.pydb_disposed:
1038
1068
  return monitor.DISABLE
1039
1069
 
1040
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
1070
+ if not thread_info.trace or not thread_info.is_thread_alive():
1041
1071
  # For thread-related stuff we can't disable the code tracing because other
1042
1072
  # threads may still want it...
1043
1073
  return
@@ -1348,7 +1378,11 @@ cdef _jump_event(code, int from_offset, int to_offset):
1348
1378
  if py_db is None or py_db.pydb_disposed:
1349
1379
  return monitor.DISABLE
1350
1380
 
1351
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
1381
+ # If we get another jump event, remove the extra check for the line event
1382
+ if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
1383
+ del _thread_local_info.f_disable_next_line_if_match
1384
+
1385
+ if not thread_info.trace or not thread_info.is_thread_alive():
1352
1386
  # For thread-related stuff we can't disable the code tracing because other
1353
1387
  # threads may still want it...
1354
1388
  return
@@ -1364,9 +1398,8 @@ cdef _jump_event(code, int from_offset, int to_offset):
1364
1398
  if to_offset > from_offset:
1365
1399
  return monitor.DISABLE
1366
1400
 
1367
- from_line = func_code_info.get_line_of_offset(from_offset)
1368
- to_line = func_code_info.get_line_of_offset(to_offset)
1369
- # print('jump event', code.co_name, 'from line', from_line, 'to line', to_line)
1401
+ from_line = func_code_info.get_line_of_offset(from_offset or 0)
1402
+ to_line = func_code_info.get_line_of_offset(to_offset or 0)
1370
1403
 
1371
1404
  if from_line != to_line:
1372
1405
  # I.e.: use case: "yield from [j for j in a if j % 2 == 0]"
@@ -1376,7 +1409,8 @@ cdef _jump_event(code, int from_offset, int to_offset):
1376
1409
  frame = _getframe(1)
1377
1410
 
1378
1411
  # Disable the next line event as we're jumping to a line. The line event will be redundant.
1379
- _thread_local_info.f_disable_next_line_if_match = frame.f_lineno
1412
+ _thread_local_info.f_disable_next_line_if_match = (func_code_info.co_filename, frame.f_lineno)
1413
+ # pydev_log.debug('_jump_event', code.co_name, 'from line', from_line, 'to line', frame.f_lineno)
1380
1414
 
1381
1415
  return _internal_line_event(func_code_info, frame, frame.f_lineno)
1382
1416
 
@@ -1405,24 +1439,26 @@ cdef _line_event(code, int line):
1405
1439
  if py_db is None or py_db.pydb_disposed:
1406
1440
  return monitor.DISABLE
1407
1441
 
1408
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
1442
+ # If we get another line event, remove the extra check for the line event
1443
+ if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
1444
+ (co_filename, line_to_skip) = _thread_local_info.f_disable_next_line_if_match
1445
+ del _thread_local_info.f_disable_next_line_if_match
1446
+ if line_to_skip is line and co_filename == code.co_filename:
1447
+ # The last jump already jumped to this line and we haven't had any
1448
+ # line events or jumps since then. We don't want to consider this line twice
1449
+ # pydev_log.debug('_line_event skipped', line)
1450
+ return
1451
+
1452
+ if not thread_info.trace or not thread_info.is_thread_alive():
1409
1453
  # For thread-related stuff we can't disable the code tracing because other
1410
1454
  # threads may still want it...
1411
1455
  return
1412
1456
 
1413
- if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
1414
- if _thread_local_info.f_disable_next_line_if_match is line:
1415
- # If we're in a jump, we should skip this line event. The jump would have
1416
- # been considered a line event for this same line and we don't want to
1417
- # stop twice.
1418
- del _thread_local_info.f_disable_next_line_if_match
1419
- return
1420
-
1421
1457
  func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
1422
1458
  if func_code_info.always_skip_code or func_code_info.always_filtered_out:
1423
1459
  return monitor.DISABLE
1424
1460
 
1425
- # print('line event', code.co_name, line)
1461
+ # pydev_log.debug('_line_event', code.co_name, line)
1426
1462
 
1427
1463
  # We know the frame depth.
1428
1464
  frame = _getframe(1)
@@ -1652,12 +1688,11 @@ cdef _start_method_event(code, instruction_offset):
1652
1688
  if py_db is None or py_db.pydb_disposed:
1653
1689
  return monitor.DISABLE
1654
1690
 
1655
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
1691
+ if not thread_info.trace or not thread_info.is_thread_alive():
1656
1692
  # For thread-related stuff we can't disable the code tracing because other
1657
1693
  # threads may still want it...
1658
1694
  return
1659
1695
 
1660
-
1661
1696
  frame = _getframe(1)
1662
1697
  func_code_info = _get_func_code_info(code, frame)
1663
1698
  if func_code_info.always_skip_code:
@@ -1705,6 +1740,7 @@ cdef _start_method_event(code, instruction_offset):
1705
1740
 
1706
1741
  return monitor.DISABLE
1707
1742
 
1743
+
1708
1744
  # fmt: off
1709
1745
  # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
1710
1746
  cpdef _ensure_monitoring():
@@ -1777,7 +1813,7 @@ cpdef stop_monitoring(all_threads=False):
1777
1813
  thread_info.trace = False
1778
1814
 
1779
1815
 
1780
- def update_monitor_events(suspend_requested: Optional[bool] = None) -> None:
1816
+ def update_monitor_events(suspend_requested: Optional[bool]=None) -> None:
1781
1817
  """
1782
1818
  This should be called when breakpoints change.
1783
1819
 
@@ -1849,7 +1885,10 @@ def update_monitor_events(suspend_requested: Optional[bool] = None) -> None:
1849
1885
  monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, _start_method_event)
1850
1886
  # monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, _resume_method_event)
1851
1887
  monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, _line_event)
1852
- monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, _jump_event)
1888
+ if not IS_PY313_OR_GREATER:
1889
+ # In Python 3.13+ jump_events aren't necessary as we have a line_event for every
1890
+ # jump location.
1891
+ monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, _jump_event)
1853
1892
  monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, _return_event)
1854
1893
 
1855
1894
  else:
@@ -1905,7 +1944,6 @@ def _do_wait_suspend(py_db, ThreadInfo thread_info, frame, event, arg):
1905
1944
  thread_info.additional_info.trace_suspend_type = "sys_monitor"
1906
1945
  py_db.do_wait_suspend(thread_info.thread, frame, event, arg)
1907
1946
 
1908
-
1909
1947
  # This can be used to diagnose exceptions inside of the debugger itself.
1910
1948
  #
1911
1949
  # import types
@@ -19,8 +19,7 @@ Author: Christian Boos
19
19
  import os
20
20
  import signal
21
21
 
22
- import threading
23
-
22
+ from _pydev_bundle._pydev_saved_modules import threading
24
23
 
25
24
  from pydev_ipython.qt_for_kernel import QtCore, QtGui
26
25
  from pydev_ipython.inputhook import allow_CTRL_C, ignore_CTRL_C, stdin_ready
@@ -19,7 +19,7 @@ Author: Christian Boos
19
19
  import os
20
20
  import signal
21
21
 
22
- import threading
22
+ from _pydev_bundle._pydev_saved_modules import threading
23
23
 
24
24
  from pydev_ipython.qt_for_kernel import QtCore, QtGui
25
25
  from pydev_ipython.inputhook import allow_CTRL_C, ignore_CTRL_C, stdin_ready
@@ -19,7 +19,7 @@ Author: Christian Boos, Marijn van Vliet
19
19
  import os
20
20
  import signal
21
21
 
22
- import threading
22
+ from _pydev_bundle._pydev_saved_modules import threading
23
23
 
24
24
  from pydev_ipython.qt_for_kernel import QtCore, QtGui
25
25
  from pydev_ipython.inputhook import allow_CTRL_C, ignore_CTRL_C, stdin_ready
@@ -127,21 +127,44 @@ def has_binding(api):
127
127
  }
128
128
  module_name = module_name[api]
129
129
 
130
- import imp
130
+ import importlib
131
131
 
132
132
  try:
133
133
  # importing top level PyQt4/PySide module is ok...
134
134
  mod = __import__(module_name)
135
135
  # ...importing submodules is not
136
- imp.find_module("QtCore", mod.__path__)
137
- imp.find_module("QtGui", mod.__path__)
138
- imp.find_module("QtSvg", mod.__path__)
136
+
137
+ for check in ("QtCore", "QtGui", "QtSvg"):
138
+ if importlib.util.find_spec("%s.%s" % (module_name, check)) is None:
139
+ return False
139
140
 
140
141
  # we can also safely check PySide version
141
142
  if api == QT_API_PYSIDE:
142
143
  return check_version(mod.__version__, "1.0.3")
143
144
  else:
144
145
  return True
146
+
147
+ except ModuleNotFoundError:
148
+ from importlib import machinery
149
+
150
+ # importing top level PyQt4/PySide module is ok...
151
+ mod = __import__(module_name)
152
+
153
+ # ...importing submodules is not
154
+ loader_details = (machinery.ExtensionFileLoader, machinery.EXTENSION_SUFFIXES)
155
+ submod_finder = machinery.FileFinder(mod.__path__[0], loader_details)
156
+ submod_check = (
157
+ submod_finder.find_spec("QtCore") is not None
158
+ and submod_finder.find_spec("QtGui") is not None
159
+ and submod_finder.find_spec("QtSvg") is not None
160
+ )
161
+
162
+ # we can also safely check PySide version
163
+ if api == QT_API_PYSIDE:
164
+ return check_version(mod.__version__, '1.0.3') and submod_check
165
+ else:
166
+ return submod_check
167
+
145
168
  except ImportError:
146
169
  return False
147
170
 
@@ -0,0 +1,50 @@
1
+ """
2
+ Utility for version comparison
3
+ """
4
+
5
+
6
+ class _Version:
7
+ def __init__(self, s):
8
+ parts = s.split(".")
9
+ version_parts = []
10
+ for p in parts:
11
+ try:
12
+ version_parts.append(int(p))
13
+ except ValueError:
14
+ version_parts.append(p)
15
+
16
+ self._version_parts = tuple(version_parts)
17
+
18
+ def __ge__(self, v):
19
+ this_parts = self._version_parts
20
+ other_parts = v._version_parts
21
+
22
+ while len(this_parts) < len(other_parts):
23
+ this_parts = this_parts + (0,)
24
+
25
+ return this_parts >= other_parts
26
+
27
+
28
+ def check_version(found_version, expected_min_or_eq_to_version):
29
+ """check version string found_version >= expected_min_or_eq_to_version
30
+
31
+ If dev/prerelease tags result in TypeError for string-number comparison,
32
+ it is assumed that the dependency is satisfied.
33
+ Users on dev branches are responsible for keeping their own packages up to date.
34
+ """
35
+ try:
36
+ return _Version(found_version) >= _Version(expected_min_or_eq_to_version)
37
+ except TypeError:
38
+ return True
39
+
40
+
41
+ if __name__ == "__main__":
42
+ assert check_version("1.2.3", "1.2.3")
43
+ assert check_version("1.2.4", "1.2.3")
44
+ assert check_version("1.2", "1.2.bar")
45
+ assert check_version("1.3", "1.2.bar")
46
+ assert check_version("1.3", "1.2b")
47
+ assert not check_version("1.2", "1.3")
48
+ assert not check_version("1.2.0", "1.2.1")
49
+ assert not check_version("1.2", "1.2.1")
50
+ print("Ok, checks passed")