debugpy 1.8.7__zip → 1.8.8__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 (321) hide show
  1. {debugpy-1.8.7/src/debugpy.egg-info → debugpy-1.8.8}/PKG-INFO +1 -1
  2. {debugpy-1.8.7 → debugpy-1.8.8}/pyproject.toml +5 -2
  3. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py +8 -1
  4. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py +58 -24
  5. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py +2 -1
  6. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py +2 -0
  7. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py +12 -11
  8. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py +8 -0
  9. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +195 -187
  10. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx +4 -4
  11. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py +1 -0
  12. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py +4 -4
  13. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py +27 -24
  14. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +2 -2
  15. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py +2 -1
  16. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py +17 -2
  17. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c +651 -631
  18. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py +2 -1
  19. debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/COPYING +21 -0
  20. debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/INSTALLER +1 -0
  21. debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/METADATA +77 -0
  22. debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/RECORD +42 -0
  23. debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/WHEEL +5 -0
  24. debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/direct_url.json +1 -0
  25. debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/top_level.txt +1 -0
  26. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py +134 -94
  27. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c +7483 -5773
  28. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx +134 -94
  29. debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py +0 -0
  30. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py +1 -2
  31. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py +1 -1
  32. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt6.py +1 -1
  33. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_loaders.py +27 -4
  34. debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +50 -0
  35. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd.py +19 -28
  36. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/add_code_to_python_process.py +1 -1
  37. debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
  38. debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
  39. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_script.py +4 -0
  40. debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
  41. debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
  42. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp +11 -11
  43. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
  44. debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
  45. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.exe +0 -0
  46. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
  47. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
  48. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
  49. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
  50. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
  51. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp +2 -4
  52. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat +6 -8
  53. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_file_utils.py +28 -40
  54. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py +2 -1
  55. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py +1 -1
  56. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_tracing.py +4 -1
  57. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_version.py +3 -3
  58. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/adapter/servers.py +2 -2
  59. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/__init__.py +2 -2
  60. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/launcher/debuggee.py +2 -1
  61. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/server/api.py +1 -1
  62. {debugpy-1.8.7 → debugpy-1.8.8/src/debugpy.egg-info}/PKG-INFO +1 -1
  63. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy.egg-info/SOURCES.txt +8 -0
  64. debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +0 -36
  65. debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
  66. debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
  67. debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
  68. debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
  69. debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
  70. {debugpy-1.8.7 → debugpy-1.8.8}/DESCRIPTION.md +0 -0
  71. {debugpy-1.8.7 → debugpy-1.8.8}/LICENSE +0 -0
  72. {debugpy-1.8.7 → debugpy-1.8.8}/MANIFEST.in +0 -0
  73. {debugpy-1.8.7 → debugpy-1.8.8}/README.md +0 -0
  74. {debugpy-1.8.7 → debugpy-1.8.8}/setup.cfg +0 -0
  75. {debugpy-1.8.7 → debugpy-1.8.8}/setup.py +0 -0
  76. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/ThirdPartyNotices.txt +0 -0
  77. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/__init__.py +0 -0
  78. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/__main__.py +0 -0
  79. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/__init__.py +0 -0
  80. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/_pydevd_packaging.py +0 -0
  81. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/_util.py +0 -0
  82. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/force_pydevd.py +0 -0
  83. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py +0 -0
  84. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py +0 -0
  85. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py +0 -0
  86. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py +0 -0
  87. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +0 -0
  88. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py +0 -0
  89. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py +0 -0
  90. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py +0 -0
  91. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py +0 -0
  92. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py +0 -0
  93. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py +0 -0
  94. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py +0 -0
  95. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py +0 -0
  96. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py +0 -0
  97. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py +0 -0
  98. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py +0 -0
  99. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py +0 -0
  100. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py +0 -0
  101. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py +0 -0
  102. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py +0 -0
  103. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py +0 -0
  104. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py +0 -0
  105. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py +0 -0
  106. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py +0 -0
  107. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py +0 -0
  108. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py +0 -0
  109. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +0 -0
  110. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py +0 -0
  111. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py +0 -0
  112. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py +0 -0
  113. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py +0 -0
  114. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py +0 -0
  115. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py +0 -0
  116. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py +0 -0
  117. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py +0 -0
  118. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +0 -0
  119. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json +0 -0
  120. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json +0 -0
  121. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py +0 -0
  122. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +0 -0
  123. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py +0 -0
  124. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py +0 -0
  125. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +0 -0
  126. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +0 -0
  127. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py +0 -0
  128. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py +0 -0
  129. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py +0 -0
  130. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py +0 -0
  131. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py +0 -0
  132. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py +0 -0
  133. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py +0 -0
  134. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py +0 -0
  135. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py +0 -0
  136. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py +0 -0
  137. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py +0 -0
  138. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd +0 -0
  139. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py +0 -0
  140. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py +0 -0
  141. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py +0 -0
  142. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py +0 -0
  143. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py +0 -0
  144. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py +0 -0
  145. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py +0 -0
  146. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py +0 -0
  147. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py +0 -0
  148. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py +0 -0
  149. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py +0 -0
  150. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +0 -0
  151. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py +0 -0
  152. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py +0 -0
  153. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py +0 -0
  154. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py +0 -0
  155. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py +0 -0
  156. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py +0 -0
  157. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py +0 -0
  158. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py +0 -0
  159. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py +0 -0
  160. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py +0 -0
  161. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py +0 -0
  162. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py +0 -0
  163. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py +0 -0
  164. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py +0 -0
  165. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py +0 -0
  166. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py +0 -0
  167. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py +0 -0
  168. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py +0 -0
  169. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py +0 -0
  170. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py +0 -0
  171. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +0 -0
  172. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py +0 -0
  173. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore +0 -0
  174. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py +0 -0
  175. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py +0 -0
  176. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +0 -0
  177. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd +0 -0
  178. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pyx +0 -0
  179. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx +0 -0
  180. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py +0 -0
  181. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h +0 -0
  182. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt +0 -0
  183. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py +0 -0
  184. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py +0 -0
  185. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py +0 -0
  186. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py +0 -0
  187. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py +0 -0
  188. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py +0 -0
  189. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py +0 -0
  190. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py +0 -0
  191. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py +0 -0
  192. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py +0 -0
  193. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py +0 -0
  194. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py +0 -0
  195. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py +0 -0
  196. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py +0 -0
  197. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py +0 -0
  198. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py +0 -0
  199. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py +0 -0
  200. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py +0 -0
  201. /debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py → /debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/REQUESTED +0 -0
  202. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py +0 -0
  203. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pxd +0 -0
  204. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/pydevd_sys_monitoring.py +0 -0
  205. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py +0 -0
  206. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_coverage.py +0 -0
  207. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/README +0 -0
  208. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhook.py +0 -0
  209. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py +0 -0
  210. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py +0 -0
  211. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py +0 -0
  212. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py +0 -0
  213. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py +0 -0
  214. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py +0 -0
  215. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py +0 -0
  216. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +0 -0
  217. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py +0 -0
  218. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_pysrc.py +0 -0
  219. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_run_in_console.py +0 -0
  220. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt +0 -0
  221. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +0 -0
  222. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevconsole.py +0 -0
  223. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt +0 -0
  224. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +0 -0
  225. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py +0 -0
  226. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +0 -0
  227. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +0 -0
  228. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +0 -0
  229. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp +0 -0
  230. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_310.hpp +0 -0
  231. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_311.hpp +0 -0
  232. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_common.hpp +0 -0
  233. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp +0 -0
  234. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp +0 -0
  235. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h +0 -0
  236. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp +0 -0
  237. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore +0 -0
  238. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp +0 -0
  239. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh +0 -0
  240. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh +0 -0
  241. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd +0 -0
  242. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py +0 -0
  243. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py +0 -0
  244. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py +0 -0
  245. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py +0 -0
  246. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py +0 -0
  247. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py +0 -0
  248. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py +0 -0
  249. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py +0 -0
  250. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py +0 -0
  251. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py +0 -0
  252. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py +0 -0
  253. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py +0 -0
  254. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py +0 -0
  255. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py +0 -0
  256. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py +0 -0
  257. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py +0 -0
  258. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py +0 -0
  259. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py +0 -0
  260. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py +0 -0
  261. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py +0 -0
  262. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py +0 -0
  263. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py +0 -0
  264. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py +0 -0
  265. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py +0 -0
  266. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +0 -0
  267. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py +0 -0
  268. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +0 -0
  269. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +0 -0
  270. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py +0 -0
  271. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py +0 -0
  272. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py +0 -0
  273. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py +0 -0
  274. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py +0 -0
  275. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py +0 -0
  276. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py +0 -0
  277. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h +0 -0
  278. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp +0 -0
  279. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp +0 -0
  280. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp +0 -0
  281. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp +0 -0
  282. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp +0 -0
  283. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h +0 -0
  284. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h +0 -0
  285. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py +0 -0
  286. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md +0 -0
  287. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/__init__.py +0 -0
  288. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__init__.py +0 -0
  289. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py +0 -0
  290. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py +0 -0
  291. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py +0 -0
  292. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py +0 -0
  293. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py +0 -0
  294. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/setup_pydevd_cython.py +0 -0
  295. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/adapter/__init__.py +0 -0
  296. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/adapter/__main__.py +0 -0
  297. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/adapter/clients.py +0 -0
  298. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/adapter/components.py +0 -0
  299. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/adapter/launchers.py +0 -0
  300. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/adapter/sessions.py +0 -0
  301. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/json.py +0 -0
  302. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/log.py +0 -0
  303. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/messaging.py +0 -0
  304. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/singleton.py +0 -0
  305. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/sockets.py +0 -0
  306. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/stacks.py +0 -0
  307. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/timestamp.py +0 -0
  308. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/common/util.py +0 -0
  309. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/launcher/__init__.py +0 -0
  310. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/launcher/__main__.py +0 -0
  311. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/launcher/handlers.py +0 -0
  312. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/launcher/output.py +0 -0
  313. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/launcher/winapi.py +0 -0
  314. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/public_api.py +0 -0
  315. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/server/__init__.py +0 -0
  316. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/server/attach_pid_injected.py +0 -0
  317. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy/server/cli.py +0 -0
  318. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy.egg-info/dependency_links.txt +0 -0
  319. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy.egg-info/entry_points.txt +0 -0
  320. {debugpy-1.8.7 → debugpy-1.8.8}/src/debugpy.egg-info/top_level.txt +0 -0
  321. {debugpy-1.8.7 → debugpy-1.8.8}/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,
@@ -41,6 +40,7 @@ from _pydevd_bundle.pydevd_trace_dispatch import is_unhandled_exception
41
40
  from _pydevd_bundle.pydevd_breakpoints import stop_on_unhandled_exception
42
41
  from _pydevd_bundle.pydevd_utils import get_clsname_for_code
43
42
 
43
+
44
44
  # fmt: off
45
45
  # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
46
46
  import cython
@@ -66,10 +66,8 @@ _thread_local_info = threading.local()
66
66
  _get_ident = threading.get_ident
67
67
  _thread_active = threading._active # noqa
68
68
 
69
- STATE_SUSPEND: int = 2
70
69
  CMD_STEP_INTO: int = 107
71
70
  CMD_STEP_OVER: int = 108
72
- CMD_STEP_OVER_MY_CODE: int = 159
73
71
  CMD_STEP_INTO_MY_CODE: int = 144
74
72
  CMD_STEP_INTO_COROUTINE: int = 206
75
73
  CMD_SMART_STEP_INTO: int = 128
@@ -178,65 +176,62 @@ cdef _get_bootstrap_frame(depth):
178
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:
@@ -415,8 +424,9 @@ cdef class FuncCodeInfo:
415
424
 
416
425
  def get_line_of_offset(self, offset):
417
426
  for start, end, line in self.code_obj.co_lines():
418
- if offset >= start and offset <= end:
419
- return line
427
+ if start is not None and end is not None and line is not None:
428
+ if offset >= start and offset <= end:
429
+ return line
420
430
  return -1
421
431
 
422
432
 
@@ -447,15 +457,41 @@ cdef _get_thread_info(bint create, int depth):
447
457
  return _thread_local_info.thread_info
448
458
 
449
459
 
450
- _CodeLineInfo = namedtuple("_CodeLineInfo", "line_to_offset, first_line, last_line")
460
+ # fmt: off
461
+ # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
462
+ cdef class _CodeLineInfo:
463
+ cdef dict line_to_offset
464
+ cdef int first_line
465
+ cdef int last_line
466
+ # ELSE
467
+ # class _CodeLineInfo:
468
+ # line_to_offset: Dict[int, Any]
469
+ # first_line: int
470
+ # last_line: int
471
+ # ENDIF
472
+ # fmt: on
451
473
 
474
+ # fmt: off
475
+ # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
476
+ def __init__(self, dict line_to_offset, int first_line, int last_line):
477
+ self.line_to_offset = line_to_offset
478
+ self.first_line = first_line
479
+ self.last_line = last_line
480
+ # ELSE
481
+ # def __init__(self, line_to_offset, first_line, last_line):
482
+ # self.line_to_offset = line_to_offset
483
+ # self.first_line = first_line
484
+ # self.last_line = last_line
485
+ #
486
+ # ENDIF
487
+ # fmt: on
452
488
 
453
489
  # Note: this method has a version in cython too
454
490
  # fmt: off
455
491
  # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
456
- cdef _get_code_line_info(code_obj, _cache={}):
492
+ cdef _CodeLineInfo _get_code_line_info(code_obj, _cache={}):
457
493
  # ELSE
458
- # def _get_code_line_info(code_obj, _cache={}):
494
+ # def _get_code_line_info(code_obj, _cache={}) -> _CodeLineInfo:
459
495
  # ENDIF
460
496
  # fmt: on
461
497
  try:
@@ -838,23 +874,23 @@ cdef _unwind_event(code, instruction, exc):
838
874
  if thread_info is None:
839
875
  return
840
876
 
841
- frame = _getframe(1)
842
- arg = (type(exc), exc, exc.__traceback__)
843
877
 
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
@@ -863,7 +899,7 @@ cdef _unwind_event(code, instruction, exc):
863
899
 
864
900
  if has_caught_exception_breakpoint_in_pydb:
865
901
  _should_stop, frame, user_uncaught_exc_info = should_stop_on_exception(
866
- py_db, thread_info.additional_info, frame, thread_info.thread, arg, None
902
+ py_db, thread_info.additional_info, frame, thread_info.thread, arg, None, is_unwind=True
867
903
  )
868
904
  if user_uncaught_exc_info:
869
905
  # TODO: Check: this may no longer be needed as in the unwind we know it's
@@ -877,13 +913,14 @@ cdef _unwind_event(code, instruction, exc):
877
913
  )
878
914
 
879
915
  if is_unhandled:
880
- # print('stop in user uncaught')
881
916
  handle_exception(py_db, thread_info.thread, frame, user_uncaught_exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
882
917
  return
883
918
 
884
919
  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)
920
+ if break_on_uncaught_exceptions:
921
+ if frame is _get_unhandled_exception_frame(exc, 1):
922
+ stop_on_unhandled_exception(py_db, thread_info.thread, thread_info.additional_info, arg)
923
+ return
887
924
 
888
925
 
889
926
  # fmt: off
@@ -911,15 +948,12 @@ cdef _raise_event(code, instruction, exc):
911
948
  thread_info = _get_thread_info(True, 1)
912
949
  if thread_info is None:
913
950
  return
914
-
915
- frame = _getframe(1)
916
- arg = (type(exc), exc, exc.__traceback__)
917
-
951
+
918
952
  py_db: object = GlobalDebuggerHolder.global_dbg
919
953
  if py_db is None or py_db.pydb_disposed:
920
954
  return
921
955
 
922
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
956
+ if not thread_info.trace or not thread_info.is_thread_alive():
923
957
  # For thread-related stuff we can't disable the code tracing because other
924
958
  # threads may still want it...
925
959
  return
@@ -928,7 +962,8 @@ cdef _raise_event(code, instruction, exc):
928
962
  if func_code_info.always_skip_code:
929
963
  return
930
964
 
931
- # print('_raise_event --- ', code, exc)
965
+ frame = _getframe(1)
966
+ arg = (type(exc), exc, exc.__traceback__)
932
967
 
933
968
  # Compute the previous exception info (if any). We use it to check if the exception
934
969
  # should be stopped
@@ -944,10 +979,6 @@ cdef _raise_event(code, instruction, exc):
944
979
  if should_stop:
945
980
  handle_exception(py_db, thread_info.thread, frame, arg, EXCEPTION_TYPE_HANDLED)
946
981
 
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
982
 
952
983
  # fmt: off
953
984
  # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated)
@@ -1037,7 +1068,7 @@ cdef _return_event(code, instruction, retval):
1037
1068
  if py_db is None or py_db.pydb_disposed:
1038
1069
  return monitor.DISABLE
1039
1070
 
1040
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
1071
+ if not thread_info.trace or not thread_info.is_thread_alive():
1041
1072
  # For thread-related stuff we can't disable the code tracing because other
1042
1073
  # threads may still want it...
1043
1074
  return
@@ -1348,7 +1379,11 @@ cdef _jump_event(code, int from_offset, int to_offset):
1348
1379
  if py_db is None or py_db.pydb_disposed:
1349
1380
  return monitor.DISABLE
1350
1381
 
1351
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
1382
+ # If we get another jump event, remove the extra check for the line event
1383
+ if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
1384
+ del _thread_local_info.f_disable_next_line_if_match
1385
+
1386
+ if not thread_info.trace or not thread_info.is_thread_alive():
1352
1387
  # For thread-related stuff we can't disable the code tracing because other
1353
1388
  # threads may still want it...
1354
1389
  return
@@ -1364,9 +1399,8 @@ cdef _jump_event(code, int from_offset, int to_offset):
1364
1399
  if to_offset > from_offset:
1365
1400
  return monitor.DISABLE
1366
1401
 
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)
1402
+ from_line = func_code_info.get_line_of_offset(from_offset or 0)
1403
+ to_line = func_code_info.get_line_of_offset(to_offset or 0)
1370
1404
 
1371
1405
  if from_line != to_line:
1372
1406
  # I.e.: use case: "yield from [j for j in a if j % 2 == 0]"
@@ -1376,7 +1410,8 @@ cdef _jump_event(code, int from_offset, int to_offset):
1376
1410
  frame = _getframe(1)
1377
1411
 
1378
1412
  # 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
1413
+ _thread_local_info.f_disable_next_line_if_match = (func_code_info.co_filename, frame.f_lineno)
1414
+ # pydev_log.debug('_jump_event', code.co_name, 'from line', from_line, 'to line', frame.f_lineno)
1380
1415
 
1381
1416
  return _internal_line_event(func_code_info, frame, frame.f_lineno)
1382
1417
 
@@ -1405,24 +1440,26 @@ cdef _line_event(code, int line):
1405
1440
  if py_db is None or py_db.pydb_disposed:
1406
1441
  return monitor.DISABLE
1407
1442
 
1408
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
1443
+ # If we get another line event, remove the extra check for the line event
1444
+ if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
1445
+ (co_filename, line_to_skip) = _thread_local_info.f_disable_next_line_if_match
1446
+ del _thread_local_info.f_disable_next_line_if_match
1447
+ if line_to_skip is line and co_filename == code.co_filename:
1448
+ # The last jump already jumped to this line and we haven't had any
1449
+ # line events or jumps since then. We don't want to consider this line twice
1450
+ # pydev_log.debug('_line_event skipped', line)
1451
+ return
1452
+
1453
+ if not thread_info.trace or not thread_info.is_thread_alive():
1409
1454
  # For thread-related stuff we can't disable the code tracing because other
1410
1455
  # threads may still want it...
1411
1456
  return
1412
1457
 
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
1458
  func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
1422
1459
  if func_code_info.always_skip_code or func_code_info.always_filtered_out:
1423
1460
  return monitor.DISABLE
1424
1461
 
1425
- # print('line event', code.co_name, line)
1462
+ # pydev_log.debug('_line_event', code.co_name, line)
1426
1463
 
1427
1464
  # We know the frame depth.
1428
1465
  frame = _getframe(1)
@@ -1652,7 +1689,7 @@ cdef _start_method_event(code, instruction_offset):
1652
1689
  if py_db is None or py_db.pydb_disposed:
1653
1690
  return monitor.DISABLE
1654
1691
 
1655
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
1692
+ if not thread_info.trace or not thread_info.is_thread_alive():
1656
1693
  # For thread-related stuff we can't disable the code tracing because other
1657
1694
  # threads may still want it...
1658
1695
  return
@@ -1849,7 +1886,10 @@ def update_monitor_events(suspend_requested: Optional[bool] = None) -> None:
1849
1886
  monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, _start_method_event)
1850
1887
  # monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, _resume_method_event)
1851
1888
  monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, _line_event)
1852
- monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, _jump_event)
1889
+ if not IS_PY313_OR_GREATER:
1890
+ # In Python 3.13+ jump_events aren't necessary as we have a line_event for every
1891
+ # jump location.
1892
+ monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, _jump_event)
1853
1893
  monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, _return_event)
1854
1894
 
1855
1895
  else:
@@ -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")
@@ -3,6 +3,7 @@ Entry point module (keep at root):
3
3
 
4
4
  This module starts the debugger.
5
5
  """
6
+
6
7
  import sys # @NoMove
7
8
 
8
9
  if sys.version_info[:2] < (3, 6):
@@ -11,14 +12,11 @@ if sys.version_info[:2] < (3, 6):
11
12
  )
12
13
  import os
13
14
 
14
- try:
15
- # Just empty packages to check if they're in the PYTHONPATH.
16
- import _pydev_bundle
17
- except ImportError:
18
- # On the first import of a pydevd module, add pydevd itself to the PYTHONPATH
19
- # if its dependencies cannot be imported.
20
- sys.path.append(os.path.dirname(os.path.abspath(__file__)))
21
- import _pydev_bundle
15
+ # On the first import of a pydevd module, add pydevd itself to the PYTHONPATH
16
+ this_dir = os.path.dirname(os.path.abspath(__file__))
17
+ sys.path.insert(0, this_dir)
18
+
19
+ import _pydev_bundle
22
20
 
23
21
  # Import this first as it'll check for shadowed modules and will make sure that we import
24
22
  # things as needed for gevent.
@@ -100,7 +98,7 @@ from _pydevd_bundle.pydevd_defaults import PydevdCustomization # Note: import a
100
98
  from _pydevd_bundle.pydevd_custom_frames import CustomFramesContainer, custom_frames_container_init
101
99
  from _pydevd_bundle.pydevd_dont_trace_files import DONT_TRACE, PYDEV_FILE, LIB_FILE, DONT_TRACE_DIRS
102
100
  from _pydevd_bundle.pydevd_extension_api import DebuggerEventHandler
103
- from _pydevd_bundle.pydevd_frame_utils import add_exception_to_frame, remove_exception_from_frame
101
+ from _pydevd_bundle.pydevd_frame_utils import add_exception_to_frame, remove_exception_from_frame, short_stack
104
102
  from _pydevd_bundle.pydevd_net_command_factory_xml import NetCommandFactory
105
103
  from _pydevd_bundle.pydevd_trace_dispatch import (
106
104
  trace_dispatch as _trace_dispatch,
@@ -175,7 +173,7 @@ if SUPPORT_GEVENT:
175
173
  if USE_CUSTOM_SYS_CURRENT_FRAMES_MAP:
176
174
  from _pydevd_bundle.pydevd_constants import constructed_tid_to_last_frame
177
175
 
178
- __version_info__ = (3, 1, 0)
176
+ __version_info__ = (3, 2, 2)
179
177
  __version_info_str__ = []
180
178
  for v in __version_info__:
181
179
  __version_info_str__.append(str(v))
@@ -793,10 +791,10 @@ class PyDB(object):
793
791
  max_line = -1
794
792
  min_line = sys.maxsize
795
793
  for _, line in dis.findlinestarts(code_obj):
796
- if line > max_line:
794
+ if line is not None and line > max_line:
797
795
  max_line = line
798
796
 
799
- if line < min_line:
797
+ if line is not None and line < min_line:
800
798
  min_line = line
801
799
 
802
800
  try_except_infos = [x for x in try_except_infos if min_line <= x.try_line <= max_line]
@@ -1075,20 +1073,7 @@ class PyDB(object):
1075
1073
  return _cache_file_type[cache_key]
1076
1074
  except:
1077
1075
  if abs_real_path_and_basename[0] == "<string>":
1078
- # Consider it an untraceable file unless there's no back frame (ignoring
1079
- # internal files and runpy.py).
1080
- if frame.f_back is None:
1081
- _cache_file_type[cache_key] = None
1082
- return None
1083
-
1084
- back_basename = pydevd_file_utils.basename(frame.f_back.f_code.co_filename)
1085
- if "sys_monitoring" in back_basename or "pydevd" in back_basename:
1086
- # Special case, this is a string coming from pydevd itself
1087
- _cache_file_type[cache_key] = PYDEV_FILE
1088
- return PYDEV_FILE
1089
-
1090
1076
  f = frame.f_back
1091
- back_frames = ""
1092
1077
  while f is not None:
1093
1078
  if self.get_file_type(f) != self.PYDEV_FILE and pydevd_file_utils.basename(f.f_code.co_filename) not in (
1094
1079
  "runpy.py",
@@ -1105,8 +1090,7 @@ class PyDB(object):
1105
1090
  # to show it in the stack.
1106
1091
  _cache_file_type[cache_key] = LIB_FILE
1107
1092
  return LIB_FILE
1108
-
1109
- back_frames += " -> %s" % (pydevd_file_utils.basename(f.f_code.co_filename))
1093
+
1110
1094
  f = f.f_back
1111
1095
  else:
1112
1096
  # This is a top-level file (used in python -c), so, trace it as usual... we
@@ -2399,7 +2383,6 @@ class PyDB(object):
2399
2383
  while frame is not None:
2400
2384
  if not isinstance(frame, FrameType):
2401
2385
  # This is the case for django/jinja frames.
2402
- pydev_log.debug("Not a frame: %s", frame)
2403
2386
  frame = frame.f_back
2404
2387
  continue
2405
2388
 
@@ -3709,5 +3692,13 @@ def main():
3709
3692
  debugger.wait_for_commands(globals)
3710
3693
 
3711
3694
 
3695
+ try:
3696
+ # Remove the entry we added: it should no longer be needed as
3697
+ # what we need should've been imported already
3698
+ if sys.path[:1] == [this_dir]:
3699
+ sys.path.remove(this_dir)
3700
+ except Exception:
3701
+ pass
3702
+
3712
3703
  if __name__ == "__main__":
3713
3704
  main()