debugpy 1.8.6__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.6/src/debugpy.egg-info → debugpy-1.8.8}/PKG-INFO +1 -1
  2. {debugpy-1.8.6 → debugpy-1.8.8}/pyproject.toml +5 -2
  3. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py +8 -1
  4. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py +58 -24
  5. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +2 -1
  6. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py +2 -1
  7. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py +2 -0
  8. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py +12 -11
  9. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py +12 -2
  10. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +3999 -3952
  11. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx +6 -5
  12. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py +1 -0
  13. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py +4 -4
  14. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py +28 -19
  15. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +2 -2
  16. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py +2 -1
  17. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py +17 -2
  18. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c +651 -631
  19. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py +2 -1
  20. debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/COPYING +21 -0
  21. debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/INSTALLER +1 -0
  22. debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/METADATA +77 -0
  23. debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/RECORD +42 -0
  24. debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/WHEEL +5 -0
  25. debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/direct_url.json +1 -0
  26. debugpy-1.8.8/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/top_level.txt +1 -0
  27. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py +137 -95
  28. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c +7619 -5714
  29. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx +137 -96
  30. debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py +0 -0
  31. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py +1 -2
  32. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py +1 -1
  33. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt6.py +1 -1
  34. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_loaders.py +27 -4
  35. debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +50 -0
  36. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd.py +19 -28
  37. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/add_code_to_python_process.py +1 -1
  38. debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
  39. debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
  40. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_script.py +4 -0
  41. debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
  42. debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
  43. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp +11 -11
  44. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
  45. debugpy-1.8.8/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
  46. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.exe +0 -0
  47. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
  48. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
  49. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
  50. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
  51. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
  52. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp +2 -4
  53. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat +6 -8
  54. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_file_utils.py +28 -40
  55. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py +2 -1
  56. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py +1 -1
  57. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_tracing.py +4 -1
  58. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_version.py +3 -3
  59. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/adapter/servers.py +2 -2
  60. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/__init__.py +2 -2
  61. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/launcher/debuggee.py +2 -1
  62. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/server/api.py +1 -1
  63. {debugpy-1.8.6 → debugpy-1.8.8/src/debugpy.egg-info}/PKG-INFO +1 -1
  64. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy.egg-info/SOURCES.txt +8 -0
  65. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +0 -36
  66. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
  67. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
  68. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
  69. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
  70. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
  71. {debugpy-1.8.6 → debugpy-1.8.8}/DESCRIPTION.md +0 -0
  72. {debugpy-1.8.6 → debugpy-1.8.8}/LICENSE +0 -0
  73. {debugpy-1.8.6 → debugpy-1.8.8}/MANIFEST.in +0 -0
  74. {debugpy-1.8.6 → debugpy-1.8.8}/README.md +0 -0
  75. {debugpy-1.8.6 → debugpy-1.8.8}/setup.cfg +0 -0
  76. {debugpy-1.8.6 → debugpy-1.8.8}/setup.py +0 -0
  77. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/ThirdPartyNotices.txt +0 -0
  78. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/__init__.py +0 -0
  79. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/__main__.py +0 -0
  80. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/__init__.py +0 -0
  81. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/_pydevd_packaging.py +0 -0
  82. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/_util.py +0 -0
  83. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/force_pydevd.py +0 -0
  84. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py +0 -0
  85. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py +0 -0
  86. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py +0 -0
  87. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py +0 -0
  88. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +0 -0
  89. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py +0 -0
  90. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py +0 -0
  91. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py +0 -0
  92. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py +0 -0
  93. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py +0 -0
  94. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py +0 -0
  95. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py +0 -0
  96. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py +0 -0
  97. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py +0 -0
  98. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py +0 -0
  99. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py +0 -0
  100. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py +0 -0
  101. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py +0 -0
  102. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py +0 -0
  103. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py +0 -0
  104. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py +0 -0
  105. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py +0 -0
  106. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py +0 -0
  107. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py +0 -0
  108. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py +0 -0
  109. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py +0 -0
  110. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +0 -0
  111. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py +0 -0
  112. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py +0 -0
  113. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py +0 -0
  114. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py +0 -0
  115. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py +0 -0
  116. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py +0 -0
  117. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py +0 -0
  118. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py +0 -0
  119. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +0 -0
  120. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json +0 -0
  121. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json +0 -0
  122. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py +0 -0
  123. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +0 -0
  124. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py +0 -0
  125. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py +0 -0
  126. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +0 -0
  127. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py +0 -0
  128. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py +0 -0
  129. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py +0 -0
  130. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py +0 -0
  131. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py +0 -0
  132. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py +0 -0
  133. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py +0 -0
  134. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py +0 -0
  135. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py +0 -0
  136. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py +0 -0
  137. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py +0 -0
  138. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd +0 -0
  139. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py +0 -0
  140. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py +0 -0
  141. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py +0 -0
  142. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py +0 -0
  143. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py +0 -0
  144. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py +0 -0
  145. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py +0 -0
  146. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py +0 -0
  147. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py +0 -0
  148. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py +0 -0
  149. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py +0 -0
  150. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +0 -0
  151. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py +0 -0
  152. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py +0 -0
  153. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py +0 -0
  154. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py +0 -0
  155. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py +0 -0
  156. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py +0 -0
  157. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py +0 -0
  158. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py +0 -0
  159. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py +0 -0
  160. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py +0 -0
  161. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py +0 -0
  162. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py +0 -0
  163. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py +0 -0
  164. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py +0 -0
  165. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py +0 -0
  166. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py +0 -0
  167. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py +0 -0
  168. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py +0 -0
  169. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py +0 -0
  170. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py +0 -0
  171. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +0 -0
  172. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py +0 -0
  173. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore +0 -0
  174. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py +0 -0
  175. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py +0 -0
  176. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +0 -0
  177. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd +0 -0
  178. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pyx +0 -0
  179. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx +0 -0
  180. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py +0 -0
  181. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h +0 -0
  182. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt +0 -0
  183. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py +0 -0
  184. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py +0 -0
  185. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py +0 -0
  186. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py +0 -0
  187. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py +0 -0
  188. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py +0 -0
  189. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py +0 -0
  190. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py +0 -0
  191. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py +0 -0
  192. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py +0 -0
  193. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py +0 -0
  194. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py +0 -0
  195. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py +0 -0
  196. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py +0 -0
  197. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py +0 -0
  198. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py +0 -0
  199. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py +0 -0
  200. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py +0 -0
  201. /debugpy-1.8.6/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.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py +0 -0
  203. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pxd +0 -0
  204. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/pydevd_sys_monitoring.py +0 -0
  205. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py +0 -0
  206. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_coverage.py +0 -0
  207. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/README +0 -0
  208. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhook.py +0 -0
  209. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py +0 -0
  210. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py +0 -0
  211. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py +0 -0
  212. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py +0 -0
  213. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py +0 -0
  214. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py +0 -0
  215. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py +0 -0
  216. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +0 -0
  217. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py +0 -0
  218. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_pysrc.py +0 -0
  219. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_run_in_console.py +0 -0
  220. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt +0 -0
  221. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +0 -0
  222. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevconsole.py +0 -0
  223. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt +0 -0
  224. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +0 -0
  225. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py +0 -0
  226. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +0 -0
  227. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +0 -0
  228. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +0 -0
  229. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp +0 -0
  230. {debugpy-1.8.6 → 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.6 → 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.6 → 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.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp +0 -0
  234. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp +0 -0
  235. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h +0 -0
  236. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp +0 -0
  237. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore +0 -0
  238. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp +0 -0
  239. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh +0 -0
  240. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh +0 -0
  241. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd +0 -0
  242. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py +0 -0
  243. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py +0 -0
  244. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py +0 -0
  245. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py +0 -0
  246. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py +0 -0
  247. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py +0 -0
  248. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py +0 -0
  249. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py +0 -0
  250. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py +0 -0
  251. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py +0 -0
  252. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py +0 -0
  253. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py +0 -0
  254. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py +0 -0
  255. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py +0 -0
  256. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py +0 -0
  257. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py +0 -0
  258. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py +0 -0
  259. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py +0 -0
  260. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py +0 -0
  261. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py +0 -0
  262. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py +0 -0
  263. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py +0 -0
  264. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py +0 -0
  265. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py +0 -0
  266. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +0 -0
  267. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py +0 -0
  268. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +0 -0
  269. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +0 -0
  270. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py +0 -0
  271. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py +0 -0
  272. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py +0 -0
  273. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py +0 -0
  274. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py +0 -0
  275. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py +0 -0
  276. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py +0 -0
  277. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h +0 -0
  278. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp +0 -0
  279. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp +0 -0
  280. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp +0 -0
  281. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp +0 -0
  282. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp +0 -0
  283. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h +0 -0
  284. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h +0 -0
  285. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py +0 -0
  286. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md +0 -0
  287. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/__init__.py +0 -0
  288. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__init__.py +0 -0
  289. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py +0 -0
  290. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py +0 -0
  291. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py +0 -0
  292. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py +0 -0
  293. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py +0 -0
  294. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/_vendored/pydevd/setup_pydevd_cython.py +0 -0
  295. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/adapter/__init__.py +0 -0
  296. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/adapter/__main__.py +0 -0
  297. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/adapter/clients.py +0 -0
  298. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/adapter/components.py +0 -0
  299. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/adapter/launchers.py +0 -0
  300. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/adapter/sessions.py +0 -0
  301. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/json.py +0 -0
  302. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/log.py +0 -0
  303. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/messaging.py +0 -0
  304. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/singleton.py +0 -0
  305. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/sockets.py +0 -0
  306. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/stacks.py +0 -0
  307. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/timestamp.py +0 -0
  308. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/common/util.py +0 -0
  309. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/launcher/__init__.py +0 -0
  310. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/launcher/__main__.py +0 -0
  311. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/launcher/handlers.py +0 -0
  312. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/launcher/output.py +0 -0
  313. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/launcher/winapi.py +0 -0
  314. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/public_api.py +0 -0
  315. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/server/__init__.py +0 -0
  316. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/server/attach_pid_injected.py +0 -0
  317. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy/server/cli.py +0 -0
  318. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy.egg-info/dependency_links.txt +0 -0
  319. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy.egg-info/entry_points.txt +0 -0
  320. {debugpy-1.8.6 → debugpy-1.8.8}/src/debugpy.egg-info/top_level.txt +0 -0
  321. {debugpy-1.8.6 → 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"}
@@ -15,6 +15,7 @@ from os.path import basename, splitext
15
15
  from _pydev_bundle import pydev_log
16
16
  from _pydevd_bundle import pydevd_dont_trace
17
17
  from _pydevd_bundle.pydevd_constants import (
18
+ IS_PY313_OR_GREATER,
18
19
  GlobalDebuggerHolder,
19
20
  ForkSafeLock,
20
21
  PYDEVD_IPYTHON_CONTEXT,
@@ -22,7 +23,6 @@ from _pydevd_bundle.pydevd_constants import (
22
23
  RETURN_VALUES_DICT,
23
24
  PYTHON_SUSPEND,
24
25
  )
25
- from _pydevd_bundle.pydevd_frame_utils import short_tb, flag_as_unwinding, short_frame
26
26
  from pydevd_file_utils import (
27
27
  NORM_PATHS_AND_BASE_CONTAINER,
28
28
  get_abs_path_real_path_and_base_from_file,
@@ -34,6 +34,7 @@ from _pydevd_bundle.pydevd_trace_dispatch import is_unhandled_exception
34
34
  from _pydevd_bundle.pydevd_breakpoints import stop_on_unhandled_exception
35
35
  from _pydevd_bundle.pydevd_utils import get_clsname_for_code
36
36
 
37
+
37
38
  # fmt: off
38
39
  # IFDEF CYTHON
39
40
  # import cython
@@ -59,10 +60,8 @@ _thread_local_info = threading.local()
59
60
  _get_ident = threading.get_ident
60
61
  _thread_active = threading._active # noqa
61
62
 
62
- STATE_SUSPEND: int = 2
63
63
  CMD_STEP_INTO: int = 107
64
64
  CMD_STEP_OVER: int = 108
65
- CMD_STEP_OVER_MY_CODE: int = 159
66
65
  CMD_STEP_INTO_MY_CODE: int = 144
67
66
  CMD_STEP_INTO_COROUTINE: int = 206
68
67
  CMD_SMART_STEP_INTO: int = 128
@@ -171,65 +170,62 @@ def _get_bootstrap_frame(depth: int) -> Tuple[Optional[FrameType], bool]:
171
170
 
172
171
  # fmt: off
173
172
  # IFDEF CYTHON
174
- # cdef _is_user_frame(frame: FrameType):
173
+ # cdef _get_unhandled_exception_frame(exc, int depth):
175
174
  # ELSE
176
- def _is_user_frame(frame: FrameType) -> bool:
175
+ def _get_unhandled_exception_frame(exc, depth: int) -> Optional[FrameType]:
177
176
  # ENDIF
178
177
  # fmt: on
179
- if frame is None:
180
- 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)
181
188
 
182
- filename = frame.f_code.co_filename
183
- 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]
184
193
 
185
- # When the frame is the bootstrap it is not a user frame.
186
- if name == "threading":
187
- if frame.f_code.co_name in ("__bootstrap", "_bootstrap", "__bootstrap_inner", "_bootstrap_inner", "run"):
188
- 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
189
199
 
190
- elif name == "pydev_monkey":
191
- if frame.f_code.co_name == "__call__":
192
- return False
200
+ elif name == "pydev_monkey":
201
+ if f_back.f_code.co_name == "__call__":
202
+ break
193
203
 
194
- elif name == "pydevd":
195
- if frame.f_code.co_name in ("_exec", "run", "main"):
196
- return False
204
+ elif name == "pydevd":
205
+ if f_back.f_code.co_name in ("_exec", "run", "main"):
206
+ break
197
207
 
198
- elif name == "pydevd_runpy":
199
- if frame.f_code.co_name.startswith(("run", "_run")):
200
- return False
208
+ elif name == "pydevd_runpy":
209
+ if f_back.f_code.co_name.startswith(("run", "_run")):
210
+ break
201
211
 
202
- elif filename == "<frozen runpy>":
203
- if frame.f_code.co_name.startswith(("run", "_run")):
204
- return False
212
+ elif name == "<frozen runpy>":
213
+ if f_back.f_code.co_name.startswith(("run", "_run")):
214
+ break
205
215
 
206
- elif name == 'runpy':
207
- if frame.f_code.co_name.startswith(("run", "_run")):
208
- return False
216
+ elif name == "runpy":
217
+ if f_back.f_code.co_name.startswith(("run", "_run")):
218
+ break
209
219
 
210
- 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
211
228
 
212
- # fmt: off
213
- # IFDEF CYTHON
214
- # cdef _is_last_user_frame(frame: FrameType):
215
- # ELSE
216
- def _is_last_user_frame(frame: FrameType) -> bool:
217
- # ENDIF
218
- # fmt: on
219
- # If this frame is not a user frame, then it can't be the last one
220
- if not _is_user_frame(frame):
221
- return False
222
-
223
- # If this frame is the last frame, then it is the last one
224
- if frame.f_back is None:
225
- return True
226
-
227
- # If the next frame is not a user frame, then this frame is the last one
228
- if not _is_user_frame(frame.f_back):
229
- return True
230
-
231
- # Otherwise if the next frame is a user frame, then this frame is not the last one
232
- return False
233
229
 
234
230
  # fmt: off
235
231
  # IFDEF CYTHON
@@ -238,6 +234,7 @@ def _is_last_user_frame(frame: FrameType) -> bool:
238
234
  # cdef PyDBAdditionalThreadInfo additional_info
239
235
  # thread: threading.Thread
240
236
  # trace: bool
237
+ # _use_is_stopped: bool
241
238
  # ELSE
242
239
  class ThreadInfo:
243
240
  additional_info: PyDBAdditionalThreadInfo
@@ -258,6 +255,19 @@ class ThreadInfo:
258
255
  self.thread_ident = thread_ident
259
256
  self.additional_info = additional_info
260
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()
261
271
 
262
272
 
263
273
  class _DeleteDummyThreadOnDel:
@@ -321,7 +331,7 @@ def _create_thread_info(depth):
321
331
  if t is None:
322
332
  t = _thread_active.get(thread_ident)
323
333
 
324
- if isinstance(t, threading._DummyThread):
334
+ if isinstance(t, threading._DummyThread) and not IS_PY313_OR_GREATER:
325
335
  _thread_local_info._ref = _DeleteDummyThreadOnDel(t)
326
336
 
327
337
  if t is None:
@@ -408,8 +418,9 @@ class FuncCodeInfo:
408
418
 
409
419
  def get_line_of_offset(self, offset):
410
420
  for start, end, line in self.code_obj.co_lines():
411
- if offset >= start and offset <= end:
412
- 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
413
424
  return -1
414
425
 
415
426
 
@@ -440,15 +451,41 @@ def _get_thread_info(create: bool, depth: int) -> Optional[ThreadInfo]:
440
451
  return _thread_local_info.thread_info
441
452
 
442
453
 
443
- _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
444
479
 
480
+ # ENDIF
481
+ # fmt: on
445
482
 
446
483
  # Note: this method has a version in cython too
447
484
  # fmt: off
448
485
  # IFDEF CYTHON
449
- # cdef _get_code_line_info(code_obj, _cache={}):
486
+ # cdef _CodeLineInfo _get_code_line_info(code_obj, _cache={}):
450
487
  # ELSE
451
- def _get_code_line_info(code_obj, _cache={}):
488
+ def _get_code_line_info(code_obj, _cache={}) -> _CodeLineInfo:
452
489
  # ENDIF
453
490
  # fmt: on
454
491
  try:
@@ -459,9 +496,10 @@ def _get_code_line_info(code_obj, _cache={}):
459
496
  last_line = None
460
497
 
461
498
  for offset, line in dis.findlinestarts(code_obj):
462
- line_to_offset[line] = offset
499
+ if offset is not None and line is not None:
500
+ line_to_offset[line] = offset
463
501
 
464
- if line_to_offset:
502
+ if len(line_to_offset):
465
503
  first_line = min(line_to_offset)
466
504
  last_line = max(line_to_offset)
467
505
  ret = _CodeLineInfo(line_to_offset, first_line, last_line)
@@ -830,23 +868,23 @@ def _unwind_event(code, instruction, exc):
830
868
  if thread_info is None:
831
869
  return
832
870
 
833
- frame = _getframe(1)
834
- arg = (type(exc), exc, exc.__traceback__)
835
871
 
836
872
  py_db: object = GlobalDebuggerHolder.global_dbg
837
873
  if py_db is None or py_db.pydb_disposed:
838
874
  return
839
875
 
840
- if not thread_info.trace or thread_info.thread._is_stopped:
876
+ if not thread_info.trace or not thread_info.is_thread_alive():
841
877
  # For thread-related stuff we can't disable the code tracing because other
842
878
  # threads may still want it...
843
879
  return
844
-
880
+
845
881
  func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
846
882
  if func_code_info.always_skip_code:
847
883
  return
848
-
884
+
849
885
  # print('_unwind_event', code, exc)
886
+ frame = _getframe(1)
887
+ arg = (type(exc), exc, exc.__traceback__)
850
888
 
851
889
  has_caught_exception_breakpoint_in_pydb = (
852
890
  py_db.break_on_caught_exceptions or py_db.break_on_user_uncaught_exceptions or py_db.has_plugin_exception_breaks
@@ -855,7 +893,7 @@ def _unwind_event(code, instruction, exc):
855
893
 
856
894
  if has_caught_exception_breakpoint_in_pydb:
857
895
  _should_stop, frame, user_uncaught_exc_info = should_stop_on_exception(
858
- 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
859
897
  )
860
898
  if user_uncaught_exc_info:
861
899
  # TODO: Check: this may no longer be needed as in the unwind we know it's
@@ -869,13 +907,14 @@ def _unwind_event(code, instruction, exc):
869
907
  )
870
908
 
871
909
  if is_unhandled:
872
- # print('stop in user uncaught')
873
910
  handle_exception(py_db, thread_info.thread, frame, user_uncaught_exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED)
874
911
  return
875
912
 
876
913
  break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions
877
- if break_on_uncaught_exceptions and _is_last_user_frame(frame):
878
- 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
879
918
 
880
919
 
881
920
  # fmt: off
@@ -903,15 +942,12 @@ def _raise_event(code, instruction, exc):
903
942
  thread_info = _get_thread_info(True, 1)
904
943
  if thread_info is None:
905
944
  return
906
-
907
- frame = _getframe(1)
908
- arg = (type(exc), exc, exc.__traceback__)
909
-
945
+
910
946
  py_db: object = GlobalDebuggerHolder.global_dbg
911
947
  if py_db is None or py_db.pydb_disposed:
912
948
  return
913
949
 
914
- if not thread_info.trace or thread_info.thread._is_stopped:
950
+ if not thread_info.trace or not thread_info.is_thread_alive():
915
951
  # For thread-related stuff we can't disable the code tracing because other
916
952
  # threads may still want it...
917
953
  return
@@ -920,7 +956,8 @@ def _raise_event(code, instruction, exc):
920
956
  if func_code_info.always_skip_code:
921
957
  return
922
958
 
923
- # print('_raise_event --- ', code, exc)
959
+ frame = _getframe(1)
960
+ arg = (type(exc), exc, exc.__traceback__)
924
961
 
925
962
  # Compute the previous exception info (if any). We use it to check if the exception
926
963
  # should be stopped
@@ -936,10 +973,6 @@ def _raise_event(code, instruction, exc):
936
973
  if should_stop:
937
974
  handle_exception(py_db, thread_info.thread, frame, arg, EXCEPTION_TYPE_HANDLED)
938
975
 
939
- # Once we leave the raise event, we are no longer in the state of 'just_raised', so
940
- # indicate that this traceback is for an exception in the unwinding state
941
- flag_as_unwinding(exc.__traceback__)
942
-
943
976
 
944
977
  # fmt: off
945
978
  # IFDEF CYTHON
@@ -1029,7 +1062,7 @@ def _return_event(code, instruction, retval):
1029
1062
  if py_db is None or py_db.pydb_disposed:
1030
1063
  return monitor.DISABLE
1031
1064
 
1032
- if not thread_info.trace or thread_info.thread._is_stopped:
1065
+ if not thread_info.trace or not thread_info.is_thread_alive():
1033
1066
  # For thread-related stuff we can't disable the code tracing because other
1034
1067
  # threads may still want it...
1035
1068
  return
@@ -1340,7 +1373,11 @@ def _jump_event(code, from_offset, to_offset):
1340
1373
  if py_db is None or py_db.pydb_disposed:
1341
1374
  return monitor.DISABLE
1342
1375
 
1343
- if not thread_info.trace or thread_info.thread._is_stopped:
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():
1344
1381
  # For thread-related stuff we can't disable the code tracing because other
1345
1382
  # threads may still want it...
1346
1383
  return
@@ -1356,9 +1393,8 @@ def _jump_event(code, from_offset, to_offset):
1356
1393
  if to_offset > from_offset:
1357
1394
  return monitor.DISABLE
1358
1395
 
1359
- from_line = func_code_info.get_line_of_offset(from_offset)
1360
- to_line = func_code_info.get_line_of_offset(to_offset)
1361
- # 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)
1362
1398
 
1363
1399
  if from_line != to_line:
1364
1400
  # I.e.: use case: "yield from [j for j in a if j % 2 == 0]"
@@ -1368,7 +1404,8 @@ def _jump_event(code, from_offset, to_offset):
1368
1404
  frame = _getframe(1)
1369
1405
 
1370
1406
  # Disable the next line event as we're jumping to a line. The line event will be redundant.
1371
- _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)
1372
1409
 
1373
1410
  return _internal_line_event(func_code_info, frame, frame.f_lineno)
1374
1411
 
@@ -1397,24 +1434,26 @@ def _line_event(code, line):
1397
1434
  if py_db is None or py_db.pydb_disposed:
1398
1435
  return monitor.DISABLE
1399
1436
 
1400
- if not thread_info.trace or thread_info.thread._is_stopped:
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():
1401
1448
  # For thread-related stuff we can't disable the code tracing because other
1402
1449
  # threads may still want it...
1403
1450
  return
1404
1451
 
1405
- if hasattr(_thread_local_info, "f_disable_next_line_if_match"):
1406
- if _thread_local_info.f_disable_next_line_if_match is line:
1407
- # If we're in a jump, we should skip this line event. The jump would have
1408
- # been considered a line event for this same line and we don't want to
1409
- # stop twice.
1410
- del _thread_local_info.f_disable_next_line_if_match
1411
- return
1412
-
1413
1452
  func_code_info: FuncCodeInfo = _get_func_code_info(code, 1)
1414
1453
  if func_code_info.always_skip_code or func_code_info.always_filtered_out:
1415
1454
  return monitor.DISABLE
1416
1455
 
1417
- # print('line event', code.co_name, line)
1456
+ # pydev_log.debug('_line_event', code.co_name, line)
1418
1457
 
1419
1458
  # We know the frame depth.
1420
1459
  frame = _getframe(1)
@@ -1644,7 +1683,7 @@ def _start_method_event(code, instruction_offset):
1644
1683
  if py_db is None or py_db.pydb_disposed:
1645
1684
  return monitor.DISABLE
1646
1685
 
1647
- if not thread_info.trace or thread_info.thread._is_stopped:
1686
+ if not thread_info.trace or not thread_info.is_thread_alive():
1648
1687
  # For thread-related stuff we can't disable the code tracing because other
1649
1688
  # threads may still want it...
1650
1689
  return
@@ -1841,7 +1880,10 @@ def update_monitor_events(suspend_requested: Optional[bool] = None) -> None:
1841
1880
  monitor.register_callback(DEBUGGER_ID, monitor.events.PY_START, _start_method_event)
1842
1881
  # monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RESUME, _resume_method_event)
1843
1882
  monitor.register_callback(DEBUGGER_ID, monitor.events.LINE, _line_event)
1844
- 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)
1845
1887
  monitor.register_callback(DEBUGGER_ID, monitor.events.PY_RETURN, _return_event)
1846
1888
 
1847
1889
  else: