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
@@ -59,7 +59,8 @@ def _get_code_line_info(code_obj):
59
59
  last_line = None
60
60
 
61
61
  for offset, line in dis.findlinestarts(code_obj):
62
- line_to_offset[line] = offset
62
+ if line is not None and offset is not None:
63
+ line_to_offset[line] = offset
63
64
 
64
65
  if line_to_offset:
65
66
  first_line = min(line_to_offset)
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+ Copyright (c) 2016 Red Hat.
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a
5
+ copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included
13
+ in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
16
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,77 @@
1
+ Metadata-Version: 2.1
2
+ Name: bytecode
3
+ Version: 0.13.0.dev0
4
+ Summary: Python module to generate and modify bytecode
5
+ Home-page: https://github.com/MatthieuDartiailh/bytecode
6
+ Author: Victor Stinner
7
+ Author-email: victor.stinner@gmail.com
8
+ Maintainer: Matthieu C. Dartiailh
9
+ Maintainer-email: m.dartiailh@gmail.com
10
+ License: MIT license
11
+ Platform: UNKNOWN
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Natural Language :: English
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.6
19
+ Classifier: Programming Language :: Python :: 3.7
20
+ Classifier: Programming Language :: Python :: 3.8
21
+ Classifier: Programming Language :: Python :: 3.9
22
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
+ Requires-Python: >=3.6
24
+
25
+ ********
26
+ bytecode
27
+ ********
28
+
29
+ .. image:: https://img.shields.io/pypi/v/bytecode.svg
30
+ :alt: Latest release on the Python Cheeseshop (PyPI)
31
+ :target: https://pypi.python.org/pypi/bytecode
32
+
33
+ .. image:: https://github.com/MatthieuDartiailh/bytecode/workflows/Continuous%20Integration/badge.svg
34
+ :target: https://github.com/MatthieuDartiailh/bytecode/actions
35
+ :alt: Continuous integration
36
+
37
+ .. image:: https://github.com/MatthieuDartiailh/bytecode/workflows/Documentation%20building/badge.svg
38
+ :target: https://github.com/MatthieuDartiailh/bytecode/actions
39
+ :alt: Documentation building
40
+
41
+ .. image:: https://img.shields.io/codecov/c/github/MatthieuDartiailh/bytecode/master.svg
42
+ :alt: Code coverage of bytecode on codecov.io
43
+ :target: https://codecov.io/github/MatthieuDartiailh/bytecode
44
+
45
+ .. image:: https://img.shields.io/badge/code%20style-black-000000.svg
46
+ :alt: Code formatted using Black
47
+ :target: https://github.com/psf/black
48
+
49
+ ``bytecode`` is a Python module to generate and modify bytecode.
50
+
51
+ * `bytecode project homepage at GitHub
52
+ <https://github.com/MatthieuDartiailh/bytecode>`_ (code, bugs)
53
+ * `bytecode documentation
54
+ <https://bytecode.readthedocs.io/>`_
55
+ * `Download latest bytecode release at the Python Cheeseshop (PyPI)
56
+ <https://pypi.python.org/pypi/bytecode>`_
57
+
58
+ Install bytecode: ``python3 -m pip install bytecode``. It requires Python 3.6
59
+ or newer. The latest release that supports Python 3.5 is 0.12.0. For Python 2.7
60
+ support, have a look at `dead-bytecode
61
+ <https://github.com/p403n1x87/dead-bytecode>`_ instead.
62
+
63
+ Example executing ``print('Hello World!')``:
64
+
65
+ .. code:: python
66
+
67
+ from bytecode import Instr, Bytecode
68
+
69
+ bytecode = Bytecode([Instr("LOAD_NAME", 'print'),
70
+ Instr("LOAD_CONST", 'Hello World!'),
71
+ Instr("CALL_FUNCTION", 1),
72
+ Instr("POP_TOP"),
73
+ Instr("LOAD_CONST", None),
74
+ Instr("RETURN_VALUE")])
75
+ code = bytecode.to_code()
76
+ exec(code)
77
+
@@ -0,0 +1,42 @@
1
+ bytecode-0.13.0.dev0.dist-info/COPYING,sha256=baWkm-Te2LLURwK7TL0zOkMSVjVCU_ezvObHBo298Tk,1074
2
+ bytecode-0.13.0.dev0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
3
+ bytecode-0.13.0.dev0.dist-info/METADATA,sha256=9XadDK6YTQ-FPowYI5DS4ieA7hRGnRP_fM5Z9ioPkEQ,2929
4
+ bytecode-0.13.0.dev0.dist-info/RECORD,,
5
+ bytecode-0.13.0.dev0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ bytecode-0.13.0.dev0.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92
7
+ bytecode-0.13.0.dev0.dist-info/direct_url.json,sha256=s58Rb4KXRlMKxk-mzpvr_tJRQ-Hx8-DHsU6NdohCnAg,93
8
+ bytecode-0.13.0.dev0.dist-info/top_level.txt,sha256=9BhdB7HqYZ-PvHNoWX6ilwLYWQqcgEOLwdb3aXm5Gys,9
9
+ bytecode/__init__.py,sha256=d-yk4Xh4SwOWq9NgoD2rmBLG6RhUFNljeqs-NjMNSYM,3885
10
+ bytecode/__pycache__/__init__.cpython-38.pyc,,
11
+ bytecode/__pycache__/bytecode.cpython-38.pyc,,
12
+ bytecode/__pycache__/cfg.cpython-38.pyc,,
13
+ bytecode/__pycache__/concrete.cpython-38.pyc,,
14
+ bytecode/__pycache__/flags.cpython-38.pyc,,
15
+ bytecode/__pycache__/instr.cpython-38.pyc,,
16
+ bytecode/__pycache__/peephole_opt.cpython-38.pyc,,
17
+ bytecode/bytecode.py,sha256=IMCcatHMtQ7M31nwj4r3drcvQuGVJAOP0d7C0O8P_SE,6894
18
+ bytecode/cfg.py,sha256=RmJGJqwCxR-XYaPH9YGY4wNDycdtLvIBJb1OGSmxcN0,15274
19
+ bytecode/concrete.py,sha256=0eb6Yh_NDLmzJNcMs2TFom0EqFVSM1cO3inMH90YE-s,21683
20
+ bytecode/flags.py,sha256=hAvM_B2yQKRw44leHP0oCae0aaJraAbDDTpqIf4I1CM,5987
21
+ bytecode/instr.py,sha256=HYc65LjNSOB3GCWkNkCSkee1rRzUyr89rgdjbKBaTpE,11616
22
+ bytecode/peephole_opt.py,sha256=W-cFVPOZN-JKfDV3aImsYenDSZkSNBDTVQqeMrGPU18,15712
23
+ bytecode/tests/__init__.py,sha256=BAdOXXNRdMVX4D8TuRYPlG9PHU7Cb0bzvyfA9s435kM,4968
24
+ bytecode/tests/__pycache__/__init__.cpython-38.pyc,,
25
+ bytecode/tests/__pycache__/test_bytecode.cpython-38.pyc,,
26
+ bytecode/tests/__pycache__/test_cfg.cpython-38.pyc,,
27
+ bytecode/tests/__pycache__/test_code.cpython-38.pyc,,
28
+ bytecode/tests/__pycache__/test_concrete.cpython-38.pyc,,
29
+ bytecode/tests/__pycache__/test_flags.cpython-38.pyc,,
30
+ bytecode/tests/__pycache__/test_instr.cpython-38.pyc,,
31
+ bytecode/tests/__pycache__/test_misc.cpython-38.pyc,,
32
+ bytecode/tests/__pycache__/test_peephole_opt.cpython-38.pyc,,
33
+ bytecode/tests/__pycache__/util_annotation.cpython-38.pyc,,
34
+ bytecode/tests/test_bytecode.py,sha256=buvtlDC0NwoQ3zuZ7OENIIDngSqtiO9WkAa2-UvxGkI,15584
35
+ bytecode/tests/test_cfg.py,sha256=c0xT8OfV-mDHu-DIDWr6LVlZQyK4GfgLSmT5AsodbMk,28194
36
+ bytecode/tests/test_code.py,sha256=XCOH29rOXSoQz130s-AIC62r23e9qNjk8Y2xDB2LmSc,2100
37
+ bytecode/tests/test_concrete.py,sha256=qT2qvabkF0yC7inniNx53cMSDN-2Qi0IE3pwBZSzF8g,49253
38
+ bytecode/tests/test_flags.py,sha256=DY9U3c6tJdxJFm0jEm_To1Cc0I99EidQv_0guud-4oE,5684
39
+ bytecode/tests/test_instr.py,sha256=rYeF8u-L0aW8bLPBxTUSy_T7KP6SaXyJKv9OhC8k6aA,11295
40
+ bytecode/tests/test_misc.py,sha256=wyK1wpVPHRfaXgo-EqUI-F1nyB9-UACerHsHbExAo1U,6758
41
+ bytecode/tests/test_peephole_opt.py,sha256=niUfhgEbiFR7IAmdQ_N9Qgh7D3wdRQ_zS0V8mKC4EzI,32640
42
+ bytecode/tests/util_annotation.py,sha256=wKq6yPWrzkNlholl5Y10b3VjuCkoiYVgvcIjk_8jzf8,485
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.36.2)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1 @@
1
+ {"archive_info": {}, "url": "https://github.com/MatthieuDartiailh/bytecode/archive/main.zip"}
@@ -13,9 +13,9 @@ from typing import Dict, Optional, Tuple, Any
13
13
  from os.path import basename, splitext
14
14
 
15
15
  from _pydev_bundle import pydev_log
16
- from _pydev_bundle.pydev_is_thread_alive import is_thread_alive
17
16
  from _pydevd_bundle import pydevd_dont_trace
18
17
  from _pydevd_bundle.pydevd_constants import (
18
+ IS_PY313_OR_GREATER,
19
19
  GlobalDebuggerHolder,
20
20
  ForkSafeLock,
21
21
  PYDEVD_IPYTHON_CONTEXT,
@@ -23,7 +23,6 @@ from _pydevd_bundle.pydevd_constants import (
23
23
  RETURN_VALUES_DICT,
24
24
  PYTHON_SUSPEND,
25
25
  )
26
- from _pydevd_bundle.pydevd_frame_utils import short_tb, flag_as_unwinding, short_frame
27
26
  from pydevd_file_utils import (
28
27
  NORM_PATHS_AND_BASE_CONTAINER,
29
28
  get_abs_path_real_path_and_base_from_file,
@@ -35,6 +34,7 @@ from _pydevd_bundle.pydevd_trace_dispatch import is_unhandled_exception
35
34
  from _pydevd_bundle.pydevd_breakpoints import stop_on_unhandled_exception
36
35
  from _pydevd_bundle.pydevd_utils import get_clsname_for_code
37
36
 
37
+
38
38
  # fmt: off
39
39
  # IFDEF CYTHON
40
40
  # import cython
@@ -60,10 +60,8 @@ _thread_local_info = threading.local()
60
60
  _get_ident = threading.get_ident
61
61
  _thread_active = threading._active # noqa
62
62
 
63
- STATE_SUSPEND: int = 2
64
63
  CMD_STEP_INTO: int = 107
65
64
  CMD_STEP_OVER: int = 108
66
- CMD_STEP_OVER_MY_CODE: int = 159
67
65
  CMD_STEP_INTO_MY_CODE: int = 144
68
66
  CMD_STEP_INTO_COROUTINE: int = 206
69
67
  CMD_SMART_STEP_INTO: int = 128
@@ -172,65 +170,62 @@ def _get_bootstrap_frame(depth: int) -> Tuple[Optional[FrameType], bool]:
172
170
 
173
171
  # fmt: off
174
172
  # IFDEF CYTHON
175
- # cdef _is_user_frame(frame: FrameType):
173
+ # cdef _get_unhandled_exception_frame(exc, int depth):
176
174
  # ELSE
177
- def _is_user_frame(frame: FrameType) -> bool:
175
+ def _get_unhandled_exception_frame(exc, depth: int) -> Optional[FrameType]:
178
176
  # ENDIF
179
177
  # fmt: on
180
- if frame is None:
181
- return False
178
+ try:
179
+ # Unhandled frame has to be from the same exception.
180
+ if _thread_local_info.f_unhandled_exc is exc:
181
+ return _thread_local_info.f_unhandled_frame
182
+ else:
183
+ del _thread_local_info.f_unhandled_frame
184
+ del _thread_local_info.f_unhandled_exc
185
+ raise AttributeError('Not the same exception')
186
+ except:
187
+ f_unhandled = _getframe(depth)
182
188
 
183
- filename = frame.f_code.co_filename
184
- name = splitext(basename(filename))[0]
189
+ while f_unhandled is not None and f_unhandled.f_back is not None:
190
+ f_back = f_unhandled.f_back
191
+ filename = f_back.f_code.co_filename
192
+ name = splitext(basename(filename))[0]
185
193
 
186
- # When the frame is the bootstrap it is not a user frame.
187
- if name == "threading":
188
- if frame.f_code.co_name in ("__bootstrap", "_bootstrap", "__bootstrap_inner", "_bootstrap_inner", "run"):
189
- return False
194
+ # When the back frame is the bootstrap (or if we have no back
195
+ # frame) then use this frame as the one to track.
196
+ if name == "threading":
197
+ if f_back.f_code.co_name in ("__bootstrap", "_bootstrap", "__bootstrap_inner", "_bootstrap_inner", "run"):
198
+ break
190
199
 
191
- elif name == "pydev_monkey":
192
- if frame.f_code.co_name == "__call__":
193
- return False
200
+ elif name == "pydev_monkey":
201
+ if f_back.f_code.co_name == "__call__":
202
+ break
194
203
 
195
- elif name == "pydevd":
196
- if frame.f_code.co_name in ("_exec", "run", "main"):
197
- return False
204
+ elif name == "pydevd":
205
+ if f_back.f_code.co_name in ("_exec", "run", "main"):
206
+ break
198
207
 
199
- elif name == "pydevd_runpy":
200
- if frame.f_code.co_name.startswith(("run", "_run")):
201
- return False
208
+ elif name == "pydevd_runpy":
209
+ if f_back.f_code.co_name.startswith(("run", "_run")):
210
+ break
202
211
 
203
- elif filename == "<frozen runpy>":
204
- if frame.f_code.co_name.startswith(("run", "_run")):
205
- return False
212
+ elif name == "<frozen runpy>":
213
+ if f_back.f_code.co_name.startswith(("run", "_run")):
214
+ break
206
215
 
207
- elif name == 'runpy':
208
- if frame.f_code.co_name.startswith(("run", "_run")):
209
- return False
216
+ elif name == "runpy":
217
+ if f_back.f_code.co_name.startswith(("run", "_run")):
218
+ break
210
219
 
211
- return True
220
+ f_unhandled = f_back
221
+
222
+ if f_unhandled is not None:
223
+ _thread_local_info.f_unhandled_frame = f_unhandled
224
+ _thread_local_info.f_unhandled_exc = exc
225
+ return _thread_local_info.f_unhandled_frame
226
+
227
+ return f_unhandled
212
228
 
213
- # fmt: off
214
- # IFDEF CYTHON
215
- # cdef _is_last_user_frame(frame: FrameType):
216
- # ELSE
217
- def _is_last_user_frame(frame: FrameType) -> bool:
218
- # ENDIF
219
- # fmt: on
220
- # If this frame is not a user frame, then it can't be the last one
221
- if not _is_user_frame(frame):
222
- return False
223
-
224
- # If this frame is the last frame, then it is the last one
225
- if frame.f_back is None:
226
- return True
227
-
228
- # If the next frame is not a user frame, then this frame is the last one
229
- if not _is_user_frame(frame.f_back):
230
- return True
231
-
232
- # Otherwise if the next frame is a user frame, then this frame is not the last one
233
- return False
234
229
 
235
230
  # fmt: off
236
231
  # IFDEF CYTHON
@@ -239,6 +234,7 @@ def _is_last_user_frame(frame: FrameType) -> bool:
239
234
  # cdef PyDBAdditionalThreadInfo additional_info
240
235
  # thread: threading.Thread
241
236
  # trace: bool
237
+ # _use_is_stopped: bool
242
238
  # ELSE
243
239
  class ThreadInfo:
244
240
  additional_info: PyDBAdditionalThreadInfo
@@ -259,6 +255,19 @@ class ThreadInfo:
259
255
  self.thread_ident = thread_ident
260
256
  self.additional_info = additional_info
261
257
  self.trace = trace
258
+ self._use_is_stopped = hasattr(thread, '_is_stopped')
259
+
260
+ # fmt: off
261
+ # IFDEF CYTHON
262
+ # cdef bint is_thread_alive(self):
263
+ # ELSE
264
+ def is_thread_alive(self):
265
+ # ENDIF
266
+ # fmt: on
267
+ if self._use_is_stopped:
268
+ return not self.thread._is_stopped
269
+ else:
270
+ return not self.thread._handle.is_done()
262
271
 
263
272
 
264
273
  class _DeleteDummyThreadOnDel:
@@ -322,7 +331,7 @@ def _create_thread_info(depth):
322
331
  if t is None:
323
332
  t = _thread_active.get(thread_ident)
324
333
 
325
- if isinstance(t, threading._DummyThread):
334
+ if isinstance(t, threading._DummyThread) and not IS_PY313_OR_GREATER:
326
335
  _thread_local_info._ref = _DeleteDummyThreadOnDel(t)
327
336
 
328
337
  if t is None:
@@ -409,8 +418,9 @@ class FuncCodeInfo:
409
418
 
410
419
  def get_line_of_offset(self, offset):
411
420
  for start, end, line in self.code_obj.co_lines():
412
- if offset >= start and offset <= end:
413
- return line
421
+ if start is not None and end is not None and line is not None:
422
+ if offset >= start and offset <= end:
423
+ return line
414
424
  return -1
415
425
 
416
426
 
@@ -441,15 +451,41 @@ def _get_thread_info(create: bool, depth: int) -> Optional[ThreadInfo]:
441
451
  return _thread_local_info.thread_info
442
452
 
443
453
 
444
- _CodeLineInfo = namedtuple("_CodeLineInfo", "line_to_offset, first_line, last_line")
454
+ # fmt: off
455
+ # IFDEF CYTHON
456
+ # cdef class _CodeLineInfo:
457
+ # cdef dict line_to_offset
458
+ # cdef int first_line
459
+ # cdef int last_line
460
+ # ELSE
461
+ class _CodeLineInfo:
462
+ line_to_offset: Dict[int, Any]
463
+ first_line: int
464
+ last_line: int
465
+ # ENDIF
466
+ # fmt: on
467
+
468
+ # fmt: off
469
+ # IFDEF CYTHON
470
+ # def __init__(self, dict line_to_offset, int first_line, int last_line):
471
+ # self.line_to_offset = line_to_offset
472
+ # self.first_line = first_line
473
+ # self.last_line = last_line
474
+ # ELSE
475
+ def __init__(self, line_to_offset, first_line, last_line):
476
+ self.line_to_offset = line_to_offset
477
+ self.first_line = first_line
478
+ self.last_line = last_line
445
479
 
480
+ # ENDIF
481
+ # fmt: on
446
482
 
447
483
  # Note: this method has a version in cython too
448
484
  # fmt: off
449
485
  # IFDEF CYTHON
450
- # cdef _get_code_line_info(code_obj, _cache={}):
486
+ # cdef _CodeLineInfo _get_code_line_info(code_obj, _cache={}):
451
487
  # ELSE
452
- def _get_code_line_info(code_obj, _cache={}):
488
+ def _get_code_line_info(code_obj, _cache={}) -> _CodeLineInfo:
453
489
  # ENDIF
454
490
  # fmt: on
455
491
  try:
@@ -832,23 +868,23 @@ def _unwind_event(code, instruction, exc):
832
868
  if thread_info is None:
833
869
  return
834
870
 
835
- frame = _getframe(1)
836
- arg = (type(exc), exc, exc.__traceback__)
837
871
 
838
872
  py_db: object = GlobalDebuggerHolder.global_dbg
839
873
  if py_db is None or py_db.pydb_disposed:
840
874
  return
841
875
 
842
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
876
+ if not thread_info.trace or not thread_info.is_thread_alive():
843
877
  # For thread-related stuff we can't disable the code tracing because other
844
878
  # threads may still want it...
845
879
  return
846
-
880
+
847
881
  func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
848
882
  if func_code_info.always_skip_code:
849
883
  return
850
-
884
+
851
885
  # print('_unwind_event', code, exc)
886
+ frame = _getframe(1)
887
+ arg = (type(exc), exc, exc.__traceback__)
852
888
 
853
889
  has_caught_exception_breakpoint_in_pydb = (
854
890
  py_db.break_on_caught_exceptions or py_db.break_on_user_uncaught_exceptions or py_db.has_plugin_exception_breaks
@@ -857,7 +893,7 @@ def _unwind_event(code, instruction, exc):
857
893
 
858
894
  if has_caught_exception_breakpoint_in_pydb:
859
895
  _should_stop, frame, user_uncaught_exc_info = should_stop_on_exception(
860
- py_db, thread_info.additional_info, frame, thread_info.thread, arg, None
896
+ py_db, thread_info.additional_info, frame, thread_info.thread, arg, None, is_unwind=True
861
897
  )
862
898
  if user_uncaught_exc_info:
863
899
  # TODO: Check: this may no longer be needed as in the unwind we know it's
@@ -871,13 +907,14 @@ def _unwind_event(code, instruction, exc):
871
907
  )
872
908
 
873
909
  if is_unhandled:
874
- # print('stop in user uncaught')
875
910
  handle_exception(py_db, thread_info.thread, frame, user_uncaught_exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
876
911
  return
877
912
 
878
913
  break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions
879
- if break_on_uncaught_exceptions and _is_last_user_frame(frame):
880
- stop_on_unhandled_exception(py_db, thread_info.thread, thread_info.additional_info, arg)
914
+ if break_on_uncaught_exceptions:
915
+ if frame is _get_unhandled_exception_frame(exc, 1):
916
+ stop_on_unhandled_exception(py_db, thread_info.thread, thread_info.additional_info, arg)
917
+ return
881
918
 
882
919
 
883
920
  # fmt: off
@@ -905,15 +942,12 @@ def _raise_event(code, instruction, exc):
905
942
  thread_info = _get_thread_info(True, 1)
906
943
  if thread_info is None:
907
944
  return
908
-
909
- frame = _getframe(1)
910
- arg = (type(exc), exc, exc.__traceback__)
911
-
945
+
912
946
  py_db: object = GlobalDebuggerHolder.global_dbg
913
947
  if py_db is None or py_db.pydb_disposed:
914
948
  return
915
949
 
916
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
950
+ if not thread_info.trace or not thread_info.is_thread_alive():
917
951
  # For thread-related stuff we can't disable the code tracing because other
918
952
  # threads may still want it...
919
953
  return
@@ -922,7 +956,8 @@ def _raise_event(code, instruction, exc):
922
956
  if func_code_info.always_skip_code:
923
957
  return
924
958
 
925
- # print('_raise_event --- ', code, exc)
959
+ frame = _getframe(1)
960
+ arg = (type(exc), exc, exc.__traceback__)
926
961
 
927
962
  # Compute the previous exception info (if any). We use it to check if the exception
928
963
  # should be stopped
@@ -938,10 +973,6 @@ def _raise_event(code, instruction, exc):
938
973
  if should_stop:
939
974
  handle_exception(py_db, thread_info.thread, frame, arg, EXCEPTION_TYPE_HANDLED)
940
975
 
941
- # Once we leave the raise event, we are no longer in the state of 'just_raised', so
942
- # indicate that this traceback is for an exception in the unwinding state
943
- flag_as_unwinding(exc.__traceback__)
944
-
945
976
 
946
977
  # fmt: off
947
978
  # IFDEF CYTHON
@@ -1031,7 +1062,7 @@ def _return_event(code, instruction, retval):
1031
1062
  if py_db is None or py_db.pydb_disposed:
1032
1063
  return monitor.DISABLE
1033
1064
 
1034
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
1065
+ if not thread_info.trace or not thread_info.is_thread_alive():
1035
1066
  # For thread-related stuff we can't disable the code tracing because other
1036
1067
  # threads may still want it...
1037
1068
  return
@@ -1342,7 +1373,11 @@ def _jump_event(code, from_offset, to_offset):
1342
1373
  if py_db is None or py_db.pydb_disposed:
1343
1374
  return monitor.DISABLE
1344
1375
 
1345
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
1376
+ # If we get another jump event, remove the extra check for the line event
1377
+ if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
1378
+ del _thread_local_info.f_disable_next_line_if_match
1379
+
1380
+ if not thread_info.trace or not thread_info.is_thread_alive():
1346
1381
  # For thread-related stuff we can't disable the code tracing because other
1347
1382
  # threads may still want it...
1348
1383
  return
@@ -1358,9 +1393,8 @@ def _jump_event(code, from_offset, to_offset):
1358
1393
  if to_offset > from_offset:
1359
1394
  return monitor.DISABLE
1360
1395
 
1361
- from_line = func_code_info.get_line_of_offset(from_offset)
1362
- to_line = func_code_info.get_line_of_offset(to_offset)
1363
- # print('jump event', code.co_name, 'from line', from_line, 'to line', to_line)
1396
+ from_line = func_code_info.get_line_of_offset(from_offset or 0)
1397
+ to_line = func_code_info.get_line_of_offset(to_offset or 0)
1364
1398
 
1365
1399
  if from_line != to_line:
1366
1400
  # I.e.: use case: "yield from [j for j in a if j % 2 == 0]"
@@ -1370,7 +1404,8 @@ def _jump_event(code, from_offset, to_offset):
1370
1404
  frame = _getframe(1)
1371
1405
 
1372
1406
  # Disable the next line event as we're jumping to a line. The line event will be redundant.
1373
- _thread_local_info.f_disable_next_line_if_match = frame.f_lineno
1407
+ _thread_local_info.f_disable_next_line_if_match = (func_code_info.co_filename, frame.f_lineno)
1408
+ # pydev_log.debug('_jump_event', code.co_name, 'from line', from_line, 'to line', frame.f_lineno)
1374
1409
 
1375
1410
  return _internal_line_event(func_code_info, frame, frame.f_lineno)
1376
1411
 
@@ -1399,24 +1434,26 @@ def _line_event(code, line):
1399
1434
  if py_db is None or py_db.pydb_disposed:
1400
1435
  return monitor.DISABLE
1401
1436
 
1402
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
1437
+ # If we get another line event, remove the extra check for the line event
1438
+ if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
1439
+ (co_filename, line_to_skip) = _thread_local_info.f_disable_next_line_if_match
1440
+ del _thread_local_info.f_disable_next_line_if_match
1441
+ if line_to_skip is line and co_filename == code.co_filename:
1442
+ # The last jump already jumped to this line and we haven't had any
1443
+ # line events or jumps since then. We don't want to consider this line twice
1444
+ # pydev_log.debug('_line_event skipped', line)
1445
+ return
1446
+
1447
+ if not thread_info.trace or not thread_info.is_thread_alive():
1403
1448
  # For thread-related stuff we can't disable the code tracing because other
1404
1449
  # threads may still want it...
1405
1450
  return
1406
1451
 
1407
- if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
1408
- if _thread_local_info.f_disable_next_line_if_match is line:
1409
- # If we're in a jump, we should skip this line event. The jump would have
1410
- # been considered a line event for this same line and we don't want to
1411
- # stop twice.
1412
- del _thread_local_info.f_disable_next_line_if_match
1413
- return
1414
-
1415
1452
  func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
1416
1453
  if func_code_info.always_skip_code or func_code_info.always_filtered_out:
1417
1454
  return monitor.DISABLE
1418
1455
 
1419
- # print('line event', code.co_name, line)
1456
+ # pydev_log.debug('_line_event', code.co_name, line)
1420
1457
 
1421
1458
  # We know the frame depth.
1422
1459
  frame = _getframe(1)
@@ -1646,7 +1683,7 @@ def _start_method_event(code, instruction_offset):
1646
1683
  if py_db is None or py_db.pydb_disposed:
1647
1684
  return monitor.DISABLE
1648
1685
 
1649
- if not thread_info.trace or not is_thread_alive(thread_info.thread):
1686
+ if not thread_info.trace or not thread_info.is_thread_alive():
1650
1687
  # For thread-related stuff we can't disable the code tracing because other
1651
1688
  # threads may still want it...
1652
1689
  return
@@ -1843,7 +1880,10 @@ def update_monitor_events(suspend_requested: Optional[bool] = None) -> None:
1843
1880
  monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, _start_method_event)
1844
1881
  # monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, _resume_method_event)
1845
1882
  monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, _line_event)
1846
- monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, _jump_event)
1883
+ if not IS_PY313_OR_GREATER:
1884
+ # In Python 3.13+ jump_events aren't necessary as we have a line_event for every
1885
+ # jump location.
1886
+ monitor.register_callback(DEBUGGER_ID, monitor.events.JUMP, _jump_event)
1847
1887
  monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, _return_event)
1848
1888
 
1849
1889
  else: