debugpy 1.8.0__zip → 1.8.2__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 (644) hide show
  1. {debugpy-1.8.0/src/debugpy.egg-info → debugpy-1.8.2}/PKG-INFO +2 -1
  2. debugpy-1.8.2/pyproject.toml +76 -0
  3. {debugpy-1.8.0 → debugpy-1.8.2}/setup.py +9 -1
  4. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py +3 -3
  5. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/add_code_to_python_process.py +7 -1
  6. debugpy-1.8.2/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
  7. debugpy-1.8.2/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
  8. debugpy-1.8.2/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
  9. debugpy-1.8.2/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
  10. debugpy-1.8.2/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
  11. debugpy-1.8.2/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
  12. debugpy-1.8.2/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.exe +0 -0
  13. debugpy-1.8.2/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
  14. debugpy-1.8.2/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
  15. debugpy-1.8.2/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
  16. debugpy-1.8.2/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
  17. debugpy-1.8.2/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
  18. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat +10 -6
  19. debugpy-1.8.2/src/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py +2 -0
  20. debugpy-1.8.2/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/__init__.py +2 -0
  21. debugpy-1.8.2/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__init__.py +2 -0
  22. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_version.py +3 -3
  23. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/adapter/clients.py +29 -5
  24. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/adapter/launchers.py +8 -1
  25. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/adapter/servers.py +3 -1
  26. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/adapter/sessions.py +9 -0
  27. {debugpy-1.8.0 → debugpy-1.8.2/src/debugpy.egg-info}/PKG-INFO +2 -1
  28. debugpy-1.8.2/src/debugpy.egg-info/SOURCES.txt +307 -0
  29. debugpy-1.8.0/pyproject.toml +0 -24
  30. debugpy-1.8.0/src/debugpy/_vendored/pydevd/build_tools/build.py +0 -177
  31. debugpy-1.8.0/src/debugpy/_vendored/pydevd/build_tools/build_binaries_osx.py +0 -60
  32. debugpy-1.8.0/src/debugpy/_vendored/pydevd/build_tools/build_binaries_windows.py +0 -85
  33. debugpy-1.8.0/src/debugpy/_vendored/pydevd/build_tools/check_no_git_modifications.py +0 -32
  34. debugpy-1.8.0/src/debugpy/_vendored/pydevd/build_tools/generate_code.py +0 -233
  35. debugpy-1.8.0/src/debugpy/_vendored/pydevd/build_tools/names_to_rename.py +0 -318
  36. debugpy-1.8.0/src/debugpy/_vendored/pydevd/build_tools/rename_pep8.py +0 -131
  37. debugpy-1.8.0/src/debugpy/_vendored/pydevd/conftest.py +0 -369
  38. debugpy-1.8.0/src/debugpy/_vendored/pydevd/interpreterInfo.py +0 -255
  39. debugpy-1.8.0/src/debugpy/_vendored/pydevd/pycompletionserver.py +0 -372
  40. debugpy-1.8.0/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
  41. debugpy-1.8.0/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
  42. debugpy-1.8.0/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
  43. debugpy-1.8.0/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
  44. debugpy-1.8.0/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
  45. debugpy-1.8.0/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
  46. debugpy-1.8.0/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.exe +0 -0
  47. debugpy-1.8.0/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
  48. debugpy-1.8.0/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
  49. debugpy-1.8.0/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
  50. debugpy-1.8.0/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
  51. debugpy-1.8.0/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
  52. debugpy-1.8.0/src/debugpy/_vendored/pydevd/runfiles.py +0 -317
  53. debugpy-1.8.0/src/debugpy/_vendored/pydevd/setup.py +0 -186
  54. debugpy-1.8.0/src/debugpy/_vendored/pydevd/stubs/_django_manager_body.py +0 -414
  55. debugpy-1.8.0/src/debugpy/_vendored/pydevd/test_pydevd_reload/__init__.py +0 -0
  56. debugpy-1.8.0/src/debugpy/_vendored/pydevd/test_pydevd_reload/test_pydevd_reload.py +0 -573
  57. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests/__init__.py +0 -0
  58. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests/test_check_pydevconsole.py +0 -113
  59. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests/test_get_referrers.py +0 -125
  60. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests/test_jyserver.py +0 -140
  61. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests/test_jysimpleTipper.py +0 -242
  62. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests/test_pydev_ipython_011.py +0 -308
  63. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests/test_pydevconsole.py +0 -277
  64. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests/test_pyserver.py +0 -155
  65. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests/test_simpleTipper.py +0 -243
  66. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_mainloop/__init__.py +0 -0
  67. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_mainloop/gui-glut.py +0 -52
  68. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_mainloop/gui-gtk.py +0 -35
  69. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_mainloop/gui-gtk3.py +0 -33
  70. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_mainloop/gui-pyglet.py +0 -28
  71. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_mainloop/gui-qt.py +0 -36
  72. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_mainloop/gui-tk.py +0 -33
  73. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_mainloop/gui-wx.py +0 -103
  74. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/__init__.py +0 -0
  75. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/check_debug_python.py +0 -38
  76. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/debug_constants.py +0 -45
  77. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/debugger_fixtures.py +0 -575
  78. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/debugger_unittest.py +0 -1491
  79. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/flask1/app.py +0 -60
  80. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_17/manage.py +0 -10
  81. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_17/my_app/__init__.py +0 -0
  82. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_17/my_app/admin.py +0 -3
  83. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_17/my_app/forms.py +0 -4
  84. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_17/my_app/models.py +0 -3
  85. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_17/my_app/tests.py +0 -3
  86. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_17/my_app/urls.py +0 -12
  87. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_17/my_app/views.py +0 -73
  88. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_17/my_django_proj_17/__init__.py +0 -0
  89. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_17/my_django_proj_17/settings.py +0 -86
  90. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_17/my_django_proj_17/urls.py +0 -11
  91. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_17/my_django_proj_17/wsgi.py +0 -14
  92. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_21/manage.py +0 -15
  93. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_21/my_app/__init__.py +0 -0
  94. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_21/my_app/admin.py +0 -3
  95. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_21/my_app/apps.py +0 -5
  96. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_21/my_app/forms.py +0 -4
  97. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_21/my_app/migrations/__init__.py +0 -0
  98. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_21/my_app/models.py +0 -3
  99. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_21/my_app/tests.py +0 -72
  100. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_21/my_app/urls.py +0 -15
  101. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_21/my_app/views.py +0 -80
  102. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_21/my_django_proj_21/__init__.py +0 -0
  103. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_21/my_django_proj_21/settings.py +0 -120
  104. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_21/my_django_proj_21/urls.py +0 -23
  105. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_django_proj_21/my_django_proj_21/wsgi.py +0 -16
  106. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_extensions/pydevd_plugins/extensions/pydevd_plugin_test_events.py +0 -18
  107. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/my_extensions/pydevd_plugins/extensions/pydevd_plugin_test_exttype.py +0 -20
  108. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/performance_check.py +0 -245
  109. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/regression_check.py +0 -240
  110. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resource_path_translation/__init__.py +0 -0
  111. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resource_path_translation/other.py +0 -6
  112. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/__init__.py +0 -0
  113. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_bytecode_big_method.py +0 -331
  114. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_bytecode_constructs.py +0 -126
  115. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_bytecode_many_names_example.py +0 -268
  116. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_bytecode_overflow_example.py +0 -89
  117. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_bytecode_super.py +0 -22
  118. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case1.py +0 -61
  119. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case13.py +0 -43
  120. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case14.py +0 -29
  121. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case15.py +0 -29
  122. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case15_execfile.py +0 -1
  123. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case16.py +0 -12
  124. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case17.py +0 -44
  125. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case17a.py +0 -18
  126. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case18.py +0 -23
  127. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case19.py +0 -10
  128. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case2.py +0 -24
  129. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case20.py +0 -38
  130. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case3.py +0 -8
  131. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case4.py +0 -22
  132. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case56.py +0 -9
  133. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case89.py +0 -16
  134. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_adjust_breakpoint.py +0 -11
  135. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_async.py +0 -21
  136. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_asyncio.py +0 -37
  137. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_attach_to_pid_multiple_threads.py +0 -47
  138. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_attach_to_pid_simple.py +0 -17
  139. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_breakpoint.py +0 -7
  140. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_breakpoint2.py +0 -7
  141. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_breakpoint_condition_exc.py +0 -8
  142. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_breakpoint_remote.py +0 -15
  143. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_breakpoint_remote_no_import.py +0 -14
  144. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_change_breaks.py +0 -12
  145. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_check_tracer.py +0 -100
  146. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_completions.py +0 -23
  147. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_custom_frames.py +0 -23
  148. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_custom_message.py +0 -14
  149. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_deadlock_thread_eval.py +0 -72
  150. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_debug_options.py +0 -11
  151. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_deep_stacks.py +0 -16
  152. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_dir_exception.py +0 -13
  153. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_dont_trace.py +0 -3
  154. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_dont_trace_test.py +0 -18
  155. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_evaluate.py +0 -8
  156. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_event_ext.py +0 -1
  157. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_exceptions.py +0 -22
  158. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_frame_eval.py +0 -70
  159. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_generator.py +0 -18
  160. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_generator2.py +0 -17
  161. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_generator3.py +0 -13
  162. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_generator_py2.py +0 -16
  163. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_generator_py3.py +0 -14
  164. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_generator_step_in.py +0 -13
  165. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_get_next_statement_targets.py +0 -26
  166. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_get_thread_stack.py +0 -21
  167. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_gevent.py +0 -60
  168. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_gevent_simple.py +0 -21
  169. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_gevent_subprocess.py +0 -16
  170. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_globals.py +0 -12
  171. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_gui_event_loop.py +0 -26
  172. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_gui_event_loop_qt5.py +0 -51
  173. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_hasattr_crash.py +0 -10
  174. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_hit_count.py +0 -6
  175. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_ignore_exceptions.py +0 -25
  176. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_import_imported.py +0 -2
  177. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_import_main.py +0 -3
  178. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_lambda_multiline.py +0 -8
  179. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_lamda.py +0 -5
  180. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_large_exception_stack.py +0 -16
  181. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_linecache.py +0 -26
  182. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_linecache_existing_file.py +0 -12
  183. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_listen_dap_messages.py +0 -59
  184. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_local_variables.py +0 -14
  185. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_local_variables2.py +0 -12
  186. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_local_variables3.py +0 -82
  187. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_local_variables_hex.py +0 -12
  188. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_logging.py +0 -63
  189. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_m_switch.py +0 -3
  190. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_m_switch_2.py +0 -2
  191. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_matplotlib.py +0 -23
  192. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_method_single_line.py +0 -5
  193. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_module.py +0 -17
  194. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_module_entry_point.py +0 -2
  195. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_multi_threads_stepping.py +0 -55
  196. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_multiple_threads.py +0 -32
  197. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_multiprocessing.py +0 -15
  198. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_multiprocessing_2.py +0 -20
  199. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_multiprocessing_pool.py +0 -17
  200. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_multiprocessing_stopped_threads.py +0 -32
  201. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_namedtuple.py +0 -6
  202. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_no_subprocess_patching.py +0 -35
  203. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_odict.py +0 -14
  204. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_path_translation.py +0 -14
  205. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_pause_continue.py +0 -13
  206. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_print.py +0 -1
  207. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_pydevd_customization.py +0 -62
  208. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_python_c.py +0 -21
  209. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_qthread1.py +0 -31
  210. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_qthread2.py +0 -40
  211. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_qthread3.py +0 -35
  212. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_qthread4.py +0 -47
  213. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_quoting.py +0 -26
  214. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_raise_with_cause.py +0 -23
  215. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_raise_with_cause_msg.py +0 -12
  216. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_redirect.py +0 -26
  217. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_remote.py +0 -17
  218. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_remote_1.py +0 -47
  219. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_remote_2.py +0 -11
  220. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_remote_threads.py +0 -31
  221. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_remote_unhandled_exceptions.py +0 -15
  222. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_remote_unhandled_exceptions2.py +0 -21
  223. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_remove_breakpoint.py +0 -14
  224. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_replace_process.py +0 -18
  225. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_return_value.py +0 -16
  226. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_return_value_asyncio.py +0 -26
  227. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_scapy.py +0 -2
  228. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_scoped_stepping.py +0 -145
  229. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_scoped_stepping_print.py +0 -7
  230. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_scoped_stepping_target.py +0 -3
  231. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_scoped_stepping_target2.py +0 -9
  232. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_scoped_stepping_target_async.py +0 -9
  233. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_set_next_statement.py +0 -10
  234. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_settrace.py +0 -26
  235. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_show_bytecode.py +0 -25
  236. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_simple_calls.py +0 -18
  237. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_skip_breakpoint_in_exceptions.py +0 -8
  238. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_smart_step_into.py +0 -20
  239. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_smart_step_into2.py +0 -17
  240. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_smart_step_into3.py +0 -21
  241. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_source_map_goto_target.py +0 -24
  242. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_source_mapping.py +0 -31
  243. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_source_mapping_and_reference.py +0 -57
  244. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_source_mapping_jmc.py +0 -35
  245. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_source_reference.py +0 -32
  246. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_stepping.py +0 -19
  247. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_stop_async_iteration.py +0 -14
  248. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_subprocess_and_fork.py +0 -47
  249. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_subprocess_zip.py +0 -34
  250. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_suspend_all.py +0 -33
  251. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_suspend_policy.py +0 -29
  252. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_sysexit.py +0 -9
  253. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_sysexit_0.py +0 -9
  254. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_sysexit_none.py +0 -9
  255. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_terminate.py +0 -37
  256. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_thread_creation_deadlock.py +0 -26
  257. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_thread_started_exited.py +0 -18
  258. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_trace_dispatch.py +0 -18
  259. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_tracing.py +0 -14
  260. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_trio.py +0 -30
  261. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_type_ext.py +0 -8
  262. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_unhandled_exception_get_stack.py +0 -12
  263. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_unhandled_exceptions.py +0 -47
  264. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_unhandled_exceptions_custom.py +0 -53
  265. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_unhandled_exceptions_generator.py +0 -19
  266. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_unhandled_exceptions_listcomp.py +0 -19
  267. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_unhandled_exceptions_on_top_level.py +0 -1
  268. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_unhandled_exceptions_on_top_level2.py +0 -6
  269. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_unhandled_just_my_code.py +0 -13
  270. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_user_unhandled.py +0 -14
  271. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_user_unhandled2.py +0 -5
  272. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_variables_with_same_name.py +0 -15
  273. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_wait_for_attach.py +0 -3
  274. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_wait_for_attach_debugpy_mode.py +0 -45
  275. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_wait_for_attach_impl.py +0 -52
  276. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_warnings.py +0 -22
  277. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_yield_from.py +0 -12
  278. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_debugger_case_zip_files.py +0 -17
  279. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_performance_1.py +0 -34
  280. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_performance_2.py +0 -25
  281. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_performance_3.py +0 -15
  282. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_pydev_coverage_cyrillic_encoding_py2.py +0 -8
  283. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_pydev_coverage_cyrillic_encoding_py3.py +0 -8
  284. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_pydev_coverage_syntax_error.py +0 -8
  285. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/_pydevd_test_find_main_thread_id.py +0 -159
  286. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/launch/foo/__main__.py +0 -6
  287. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/launch/foo/bar.py +0 -0
  288. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/launch_py2/__init__.py +0 -0
  289. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/launch_py2/foo/__init__.py +0 -0
  290. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/launch_py2/foo/__main__.py +0 -6
  291. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/launch_py2/foo/bar.py +0 -0
  292. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/my_code/__init__.py +0 -0
  293. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/my_code/my_code.py +0 -15
  294. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/my_code/my_code_coroutine.py +0 -27
  295. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/my_code/my_code_coroutine_user_unhandled.py +0 -34
  296. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/my_code/my_code_coroutine_user_unhandled_no_stop.py +0 -34
  297. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/my_code/my_code_double_step.py +0 -8
  298. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/my_code/my_code_exception.py +0 -14
  299. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/my_code/my_code_exception_on_other.py +0 -14
  300. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/my_code/my_code_exception_user_unhandled.py +0 -22
  301. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/my_code/my_code_on_entry.py +0 -1
  302. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/not_my_code/__init__.py +0 -0
  303. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/not_my_code/empty_file.py +0 -0
  304. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/not_my_code/main_on_entry.py +0 -7
  305. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/not_my_code/main_on_entry2.py +0 -24
  306. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/not_my_code/not_my_coroutine.py +0 -5
  307. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/not_my_code/other.py +0 -15
  308. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/not_my_code/other_noop.py +0 -2
  309. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/wrong_bytecode/_debugger_case_wrong_bytecode.py +0 -47
  310. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/wrong_bytecode/helper/__init__.py +0 -58
  311. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/wrong_bytecode/helper/helper/__init__.py +0 -56
  312. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/resources/wrong_bytecode/helper/helper/helper/__init__.py +0 -56
  313. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_additional_thread_info.py +0 -82
  314. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_bytecode_manipulation.py +0 -279
  315. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_code_obj_to_source_code.py +0 -95
  316. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_collect_bytecode_info.py +0 -698
  317. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_console.py +0 -201
  318. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_convert_utilities.py +0 -588
  319. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_debugger.py +0 -4511
  320. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_debugger_json.py +0 -6653
  321. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_dump_threads.py +0 -8
  322. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_evaluate_expression.py +0 -321
  323. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_extract_token.py +0 -49
  324. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_fixtures.py +0 -113
  325. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_frame_eval_and_tracing.py +0 -278
  326. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_frame_evaluator.py +0 -131
  327. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_frame_utils.py +0 -251
  328. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_null.py +0 -8
  329. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_process_command_line.py +0 -28
  330. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_pydev_monkey.py +0 -526
  331. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_pydevcoverage.py +0 -68
  332. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_pydevd_api.py +0 -43
  333. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_pydevd_filtering.py +0 -266
  334. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_pydevd_io.py +0 -225
  335. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_resolvers.py +0 -499
  336. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_run.py +0 -115
  337. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_safe_repr.py +0 -690
  338. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_save_locals.py +0 -101
  339. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_schema.py +0 -142
  340. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_single_notification.py +0 -297
  341. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_smart_step_into_bytecode.py +0 -1132
  342. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_suspended_frames_manager.py +0 -134
  343. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_timeout_tracker.py +0 -128
  344. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_tracing_gotchas.py +0 -101
  345. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_tracing_on_top_level.py +0 -485
  346. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_python/test_utilities.py +0 -550
  347. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/samples/nested_dir/__init__.py +0 -1
  348. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/samples/nested_dir/nested2/__init__.py +0 -1
  349. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/samples/nested_dir/nested2/deep_nest_test.py +0 -22
  350. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/samples/nested_dir/nested2/non_test_file.py +0 -3
  351. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/samples/nested_dir/nested3/__init__.py +0 -1
  352. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/samples/nested_dir/nested3/non_test_file.py +0 -3
  353. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/samples/nested_dir/non_test_file.py +0 -3
  354. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/samples/nested_dir/simple4_test.py +0 -16
  355. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/samples/non_test_file.py +0 -3
  356. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/samples/simple2_test.py +0 -16
  357. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/samples/simple3_test.py +0 -16
  358. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/samples/simpleClass_test.py +0 -14
  359. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/samples/simpleModule_test.py +0 -16
  360. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/samples/simple_test.py +0 -45
  361. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/test_pydevd_property.py +0 -124
  362. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/test_pydevdio.py +0 -36
  363. debugpy-1.8.0/src/debugpy/_vendored/pydevd/tests_runfiles/test_runfiles.py +0 -437
  364. debugpy-1.8.0/src/debugpy.egg-info/SOURCES.txt +0 -626
  365. {debugpy-1.8.0 → debugpy-1.8.2}/DESCRIPTION.md +0 -0
  366. {debugpy-1.8.0 → debugpy-1.8.2}/LICENSE +0 -0
  367. {debugpy-1.8.0 → debugpy-1.8.2}/MANIFEST.in +0 -0
  368. {debugpy-1.8.0 → debugpy-1.8.2}/README.md +0 -0
  369. {debugpy-1.8.0 → debugpy-1.8.2}/setup.cfg +0 -0
  370. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/ThirdPartyNotices.txt +0 -0
  371. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/__init__.py +0 -0
  372. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/__main__.py +0 -0
  373. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/__init__.py +0 -0
  374. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/_pydevd_packaging.py +0 -0
  375. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/_util.py +0 -0
  376. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/force_pydevd.py +0 -0
  377. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py +0 -0
  378. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py +0 -0
  379. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py +0 -0
  380. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py +0 -0
  381. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +0 -0
  382. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py +0 -0
  383. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py +0 -0
  384. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py +0 -0
  385. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py +0 -0
  386. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py +0 -0
  387. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py +0 -0
  388. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py +0 -0
  389. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py +0 -0
  390. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py +0 -0
  391. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py +0 -0
  392. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py +0 -0
  393. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py +0 -0
  394. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py +0 -0
  395. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py +0 -0
  396. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py +0 -0
  397. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py +0 -0
  398. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py +0 -0
  399. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py +0 -0
  400. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py +0 -0
  401. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py +0 -0
  402. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py +0 -0
  403. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py +0 -0
  404. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py +0 -0
  405. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +0 -0
  406. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py +0 -0
  407. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py +0 -0
  408. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py +0 -0
  409. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py +0 -0
  410. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py +0 -0
  411. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py +0 -0
  412. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py +0 -0
  413. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py +0 -0
  414. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +0 -0
  415. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json +0 -0
  416. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json +0 -0
  417. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py +0 -0
  418. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +0 -0
  419. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py +0 -0
  420. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py +0 -0
  421. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +0 -0
  422. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +0 -0
  423. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py +0 -0
  424. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py +0 -0
  425. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py +0 -0
  426. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py +0 -0
  427. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py +0 -0
  428. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py +0 -0
  429. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py +0 -0
  430. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py +0 -0
  431. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py +0 -0
  432. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py +0 -0
  433. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py +0 -0
  434. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py +0 -0
  435. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py +0 -0
  436. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py +0 -0
  437. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +0 -0
  438. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd +0 -0
  439. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx +0 -0
  440. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py +0 -0
  441. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py +0 -0
  442. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py +0 -0
  443. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py +0 -0
  444. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py +0 -0
  445. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py +0 -0
  446. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py +0 -0
  447. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py +0 -0
  448. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py +0 -0
  449. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py +0 -0
  450. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py +0 -0
  451. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py +0 -0
  452. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py +0 -0
  453. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py +0 -0
  454. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +0 -0
  455. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py +0 -0
  456. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py +0 -0
  457. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py +0 -0
  458. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +0 -0
  459. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py +0 -0
  460. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py +0 -0
  461. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py +0 -0
  462. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py +0 -0
  463. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py +0 -0
  464. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py +0 -0
  465. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py +0 -0
  466. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py +0 -0
  467. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py +0 -0
  468. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py +0 -0
  469. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py +0 -0
  470. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py +0 -0
  471. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py +0 -0
  472. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_api.py +0 -0
  473. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py +0 -0
  474. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py +0 -0
  475. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py +0 -0
  476. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py +0 -0
  477. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py +0 -0
  478. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +0 -0
  479. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py +0 -0
  480. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore +0 -0
  481. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py +0 -0
  482. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py +0 -0
  483. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +0 -0
  484. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c +0 -0
  485. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd +0 -0
  486. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pyx +0 -0
  487. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx +0 -0
  488. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py +0 -0
  489. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py +0 -0
  490. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h +0 -0
  491. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt +0 -0
  492. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py +0 -0
  493. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py +0 -0
  494. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py +0 -0
  495. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py +0 -0
  496. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py +0 -0
  497. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py +0 -0
  498. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py +0 -0
  499. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py +0 -0
  500. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py +0 -0
  501. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py +0 -0
  502. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py +0 -0
  503. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py +0 -0
  504. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py +0 -0
  505. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py +0 -0
  506. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py +0 -0
  507. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py +0 -0
  508. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py +0 -0
  509. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py +0 -0
  510. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/COPYING +0 -0
  511. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/INSTALLER +0 -0
  512. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/METADATA +0 -0
  513. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/RECORD +0 -0
  514. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/REQUESTED +0 -0
  515. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/WHEEL +0 -0
  516. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/direct_url.json +0 -0
  517. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/top_level.txt +0 -0
  518. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py +0 -0
  519. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py +0 -0
  520. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_coverage.py +0 -0
  521. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_ipython/README +0 -0
  522. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py +0 -0
  523. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhook.py +0 -0
  524. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py +0 -0
  525. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py +0 -0
  526. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py +0 -0
  527. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py +0 -0
  528. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py +0 -0
  529. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py +0 -0
  530. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py +0 -0
  531. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py +0 -0
  532. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py +0 -0
  533. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +0 -0
  534. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py +0 -0
  535. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_loaders.py +0 -0
  536. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +0 -0
  537. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_pysrc.py +0 -0
  538. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_run_in_console.py +0 -0
  539. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt +0 -0
  540. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +0 -0
  541. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevconsole.py +0 -0
  542. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd.py +0 -0
  543. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt +0 -0
  544. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +0 -0
  545. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py +0 -0
  546. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +0 -0
  547. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +0 -0
  548. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +0 -0
  549. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_script.py +0 -0
  550. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp +0 -0
  551. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_310.hpp +0 -0
  552. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_311.hpp +0 -0
  553. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_common.hpp +0 -0
  554. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp +0 -0
  555. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp +0 -0
  556. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp +0 -0
  557. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h +0 -0
  558. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp +0 -0
  559. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore +0 -0
  560. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp +0 -0
  561. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh +0 -0
  562. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh +0 -0
  563. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd +0 -0
  564. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py +0 -0
  565. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py +0 -0
  566. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py +0 -0
  567. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py +0 -0
  568. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py +0 -0
  569. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py +0 -0
  570. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py +0 -0
  571. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py +0 -0
  572. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py +0 -0
  573. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py +0 -0
  574. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py +0 -0
  575. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py +0 -0
  576. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py +0 -0
  577. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py +0 -0
  578. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py +0 -0
  579. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py +0 -0
  580. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py +0 -0
  581. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py +0 -0
  582. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py +0 -0
  583. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py +0 -0
  584. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py +0 -0
  585. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py +0 -0
  586. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py +0 -0
  587. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py +0 -0
  588. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +0 -0
  589. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py +0 -0
  590. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +0 -0
  591. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +0 -0
  592. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py +0 -0
  593. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py +0 -0
  594. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py +0 -0
  595. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py +0 -0
  596. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py +0 -0
  597. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py +0 -0
  598. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py +0 -0
  599. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp +0 -0
  600. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h +0 -0
  601. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp +0 -0
  602. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp +0 -0
  603. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp +0 -0
  604. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp +0 -0
  605. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp +0 -0
  606. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h +0 -0
  607. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h +0 -0
  608. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_file_utils.py +0 -0
  609. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py +0 -0
  610. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md +0 -0
  611. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py +0 -0
  612. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py +0 -0
  613. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py +0 -0
  614. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py +0 -0
  615. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py +0 -0
  616. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py +0 -0
  617. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/pydevd_tracing.py +0 -0
  618. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/_vendored/pydevd/setup_pydevd_cython.py +0 -0
  619. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/adapter/__init__.py +0 -0
  620. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/adapter/__main__.py +0 -0
  621. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/adapter/components.py +0 -0
  622. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/common/__init__.py +0 -0
  623. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/common/json.py +0 -0
  624. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/common/log.py +0 -0
  625. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/common/messaging.py +0 -0
  626. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/common/singleton.py +0 -0
  627. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/common/sockets.py +0 -0
  628. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/common/stacks.py +0 -0
  629. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/common/timestamp.py +0 -0
  630. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/common/util.py +0 -0
  631. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/launcher/__init__.py +0 -0
  632. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/launcher/__main__.py +0 -0
  633. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/launcher/debuggee.py +0 -0
  634. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/launcher/handlers.py +0 -0
  635. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/launcher/output.py +0 -0
  636. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/launcher/winapi.py +0 -0
  637. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/public_api.py +0 -0
  638. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/server/__init__.py +0 -0
  639. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/server/api.py +0 -0
  640. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/server/attach_pid_injected.py +0 -0
  641. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy/server/cli.py +0 -0
  642. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy.egg-info/dependency_links.txt +0 -0
  643. {debugpy-1.8.0 → debugpy-1.8.2}/src/debugpy.egg-info/top_level.txt +0 -0
  644. {debugpy-1.8.0 → debugpy-1.8.2}/versioneer.py +0 -0
@@ -1,1491 +0,0 @@
1
- from collections import namedtuple
2
- from contextlib import contextmanager
3
- import json
4
- from urllib.parse import quote, quote_plus, unquote_plus
5
-
6
- import re
7
- import socket
8
- import subprocess
9
- import threading
10
- import time
11
- import traceback
12
- from tests_python.debug_constants import *
13
-
14
- from _pydev_bundle import pydev_localhost, pydev_log
15
-
16
- # Note: copied (don't import because we want it to be independent on the actual code because of backward compatibility).
17
- CMD_RUN = 101
18
- CMD_LIST_THREADS = 102
19
- CMD_THREAD_CREATE = 103
20
- CMD_THREAD_KILL = 104
21
- CMD_THREAD_SUSPEND = 105
22
- CMD_THREAD_RUN = 106
23
- CMD_STEP_INTO = 107
24
- CMD_STEP_OVER = 108
25
- CMD_STEP_RETURN = 109
26
- CMD_GET_VARIABLE = 110
27
- CMD_SET_BREAK = 111
28
- CMD_REMOVE_BREAK = 112
29
- CMD_EVALUATE_EXPRESSION = 113
30
- CMD_GET_FRAME = 114
31
- CMD_EXEC_EXPRESSION = 115
32
- CMD_WRITE_TO_CONSOLE = 116
33
- CMD_CHANGE_VARIABLE = 117
34
- CMD_RUN_TO_LINE = 118
35
- CMD_RELOAD_CODE = 119
36
- CMD_GET_COMPLETIONS = 120
37
-
38
- # Note: renumbered (conflicted on merge)
39
- CMD_CONSOLE_EXEC = 121
40
- CMD_ADD_EXCEPTION_BREAK = 122
41
- CMD_REMOVE_EXCEPTION_BREAK = 123
42
- CMD_LOAD_SOURCE = 124
43
- CMD_ADD_DJANGO_EXCEPTION_BREAK = 125
44
- CMD_REMOVE_DJANGO_EXCEPTION_BREAK = 126
45
- CMD_SET_NEXT_STATEMENT = 127
46
- CMD_SMART_STEP_INTO = 128
47
- CMD_EXIT = 129
48
- CMD_SIGNATURE_CALL_TRACE = 130
49
-
50
- CMD_SET_PY_EXCEPTION = 131
51
- CMD_GET_FILE_CONTENTS = 132
52
- CMD_SET_PROPERTY_TRACE = 133
53
- # Pydev debug console commands
54
- CMD_EVALUATE_CONSOLE_EXPRESSION = 134
55
- CMD_RUN_CUSTOM_OPERATION = 135
56
- CMD_GET_BREAKPOINT_EXCEPTION = 136
57
- CMD_STEP_CAUGHT_EXCEPTION = 137
58
- CMD_SEND_CURR_EXCEPTION_TRACE = 138
59
- CMD_SEND_CURR_EXCEPTION_TRACE_PROCEEDED = 139
60
- CMD_IGNORE_THROWN_EXCEPTION_AT = 140
61
- CMD_ENABLE_DONT_TRACE = 141
62
- CMD_SHOW_CONSOLE = 142
63
-
64
- CMD_GET_ARRAY = 143
65
- CMD_STEP_INTO_MY_CODE = 144
66
- CMD_GET_CONCURRENCY_EVENT = 145
67
- CMD_SHOW_RETURN_VALUES = 146
68
-
69
- CMD_GET_THREAD_STACK = 152
70
- CMD_THREAD_DUMP_TO_STDERR = 153 # This is mostly for unit-tests to diagnose errors on ci.
71
- CMD_STOP_ON_START = 154
72
- CMD_GET_EXCEPTION_DETAILS = 155
73
- CMD_PYDEVD_JSON_CONFIG = 156
74
-
75
- CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION = 157
76
- CMD_THREAD_RESUME_SINGLE_NOTIFICATION = 158
77
-
78
- CMD_STEP_OVER_MY_CODE = 159
79
- CMD_STEP_RETURN_MY_CODE = 160
80
-
81
- CMD_SET_PY_EXCEPTION = 161
82
- CMD_SET_PATH_MAPPING_JSON = 162
83
-
84
- CMD_GET_SMART_STEP_INTO_VARIANTS = 163 # XXX: PyCharm has 160 for this (we're currently incompatible anyways).
85
-
86
- CMD_REDIRECT_OUTPUT = 200
87
- CMD_GET_NEXT_STATEMENT_TARGETS = 201
88
- CMD_SET_PROJECT_ROOTS = 202
89
-
90
- CMD_AUTHENTICATE = 205
91
-
92
- CMD_VERSION = 501
93
- CMD_RETURN = 502
94
- CMD_SET_PROTOCOL = 503
95
- CMD_ERROR = 901
96
-
97
- REASON_CAUGHT_EXCEPTION = CMD_STEP_CAUGHT_EXCEPTION
98
- REASON_UNCAUGHT_EXCEPTION = CMD_ADD_EXCEPTION_BREAK
99
- REASON_STOP_ON_BREAKPOINT = CMD_SET_BREAK
100
- REASON_THREAD_SUSPEND = CMD_THREAD_SUSPEND
101
- REASON_STEP_INTO = CMD_STEP_INTO
102
- REASON_STEP_INTO_MY_CODE = CMD_STEP_INTO_MY_CODE
103
- REASON_STOP_ON_START = CMD_STOP_ON_START
104
- REASON_STEP_RETURN = CMD_STEP_RETURN
105
- REASON_STEP_RETURN_MY_CODE = CMD_STEP_RETURN_MY_CODE
106
- REASON_STEP_OVER = CMD_STEP_OVER
107
- REASON_STEP_OVER_MY_CODE = CMD_STEP_OVER_MY_CODE
108
-
109
- # Always True (because otherwise when we do have an error, it's hard to diagnose).
110
- SHOW_WRITES_AND_READS = True
111
- SHOW_OTHER_DEBUG_INFO = True
112
- SHOW_STDOUT = True
113
-
114
- import platform
115
-
116
- IS_CPYTHON = platform.python_implementation() == 'CPython'
117
- IS_IRONPYTHON = platform.python_implementation() == 'IronPython'
118
- IS_JYTHON = platform.python_implementation() == 'Jython'
119
- IS_PYPY = platform.python_implementation() == 'PyPy'
120
- IS_APPVEYOR = os.environ.get('APPVEYOR', '') in ('True', 'true', '1')
121
-
122
- try:
123
- from thread import start_new_thread
124
- except ImportError:
125
- from _thread import start_new_thread # @UnresolvedImport
126
-
127
- Hit = namedtuple('Hit', 'thread_id, frame_id, line, suspend_type, name, file')
128
-
129
-
130
- def overrides(method):
131
- '''
132
- Helper to check that one method overrides another (redeclared in unit-tests to avoid importing pydevd).
133
- '''
134
-
135
- def wrapper(func):
136
- if func.__name__ != method.__name__:
137
- msg = "Wrong @override: %r expected, but overwriting %r."
138
- msg = msg % (func.__name__, method.__name__)
139
- raise AssertionError(msg)
140
-
141
- if func.__doc__ is None:
142
- func.__doc__ = method.__doc__
143
-
144
- return func
145
-
146
- return wrapper
147
-
148
-
149
- TIMEOUT = 20
150
-
151
- try:
152
- TimeoutError = TimeoutError # @ReservedAssignment
153
- except NameError:
154
-
155
- class TimeoutError(RuntimeError): # @ReservedAssignment
156
- pass
157
-
158
-
159
- def wait_for_condition(condition, msg=None, timeout=TIMEOUT, sleep=.05):
160
- curtime = time.time()
161
- while True:
162
- if condition():
163
- break
164
- if time.time() - curtime > timeout:
165
- error_msg = 'Condition not reached in %s seconds' % (timeout,)
166
- if msg is not None:
167
- error_msg += '\n'
168
- if callable(msg):
169
- error_msg += msg()
170
- else:
171
- error_msg += str(msg)
172
-
173
- raise TimeoutError(error_msg)
174
- time.sleep(sleep)
175
-
176
-
177
- class IgnoreFailureError(RuntimeError):
178
- pass
179
-
180
-
181
- #=======================================================================================================================
182
- # ReaderThread
183
- #=======================================================================================================================
184
- class ReaderThread(threading.Thread):
185
-
186
- MESSAGES_TIMEOUT = 15
187
-
188
- def __init__(self, sock):
189
- threading.Thread.__init__(self)
190
- self.name = 'Test Reader Thread'
191
- try:
192
- from queue import Queue
193
- except ImportError:
194
- from Queue import Queue
195
-
196
- self.daemon = True
197
- self._buffer = b''
198
- self.sock = sock
199
- self._queue = Queue()
200
- self._kill = False
201
- self.accept_xml_messages = True
202
- self.on_message_found = lambda msg: None
203
-
204
- def set_messages_timeout(self, timeout):
205
- self.MESSAGES_TIMEOUT = timeout
206
-
207
- def get_next_message(self, context_message, timeout=None):
208
- if timeout is None:
209
- timeout = self.MESSAGES_TIMEOUT
210
- try:
211
- msg = self._queue.get(block=True, timeout=timeout)
212
- self.on_message_found(msg)
213
- except:
214
- raise TimeoutError('No message was written in %s seconds. Error message:\n%s' % (timeout, context_message,))
215
- else:
216
- frame = sys._getframe().f_back.f_back
217
- frame_info = ''
218
- while frame:
219
- if not frame.f_code.co_name.startswith('test_'):
220
- frame = frame.f_back
221
- continue
222
-
223
- if frame.f_code.co_filename.endswith('debugger_unittest.py'):
224
- frame = frame.f_back
225
- continue
226
-
227
- stack_msg = ' -- File "%s", line %s, in %s\n' % (frame.f_code.co_filename, frame.f_lineno, frame.f_code.co_name)
228
- if 'run' == frame.f_code.co_name:
229
- frame_info = stack_msg # Ok, found the writer thread 'run' method (show only that).
230
- break
231
- frame_info += stack_msg
232
- frame = frame.f_back
233
- # Just print the first which is not debugger_unittest.py
234
- break
235
-
236
- frame = None
237
- sys.stdout.write('Message returned in get_next_message(): %s -- ctx: %s, asked at:\n%s\n' % (unquote_plus(unquote_plus(msg)), context_message, frame_info))
238
-
239
- if not self.accept_xml_messages:
240
- if '<xml' in msg:
241
- raise AssertionError('Xml messages disabled. Received: %s' % (msg,))
242
- return msg
243
-
244
- def _read(self, size):
245
- while True:
246
- buffer_len = len(self._buffer)
247
- if buffer_len == size:
248
- ret = self._buffer
249
- self._buffer = b''
250
- return ret
251
-
252
- if buffer_len > size:
253
- ret = self._buffer[:size]
254
- self._buffer = self._buffer[size:]
255
- return ret
256
-
257
- r = self.sock.recv(max(size - buffer_len, 1024))
258
- if not r:
259
- return b''
260
- self._buffer += r
261
-
262
- def _read_line(self):
263
- while True:
264
- i = self._buffer.find(b'\n')
265
- if i != -1:
266
- i += 1 # Add the newline to the return
267
- ret = self._buffer[:i]
268
- self._buffer = self._buffer[i:]
269
- return ret
270
- else:
271
- r = self.sock.recv(1024)
272
- if not r:
273
- return b''
274
- self._buffer += r
275
-
276
- def run(self):
277
- try:
278
- content_len = -1
279
-
280
- while not self._kill:
281
- line = self._read_line()
282
-
283
- if not line:
284
- break
285
-
286
- if SHOW_WRITES_AND_READS:
287
- show_line = line
288
- show_line = line.decode('utf-8')
289
-
290
- print('%s Received %s' % (self.name, show_line,))
291
-
292
- if line.startswith(b'Content-Length:'):
293
- content_len = int(line.strip().split(b':', 1)[1])
294
- continue
295
-
296
- if content_len != -1:
297
- # If we previously received a content length, read until a '\r\n'.
298
- if line == b'\r\n':
299
- json_contents = self._read(content_len)
300
- content_len = -1
301
-
302
- if len(json_contents) == 0:
303
- self.handle_except()
304
- return # Finished communication.
305
-
306
- msg = json_contents
307
- msg = msg.decode('utf-8')
308
- print('Test Reader Thread Received %s' % (msg,))
309
- self._queue.put(msg)
310
-
311
- continue
312
- else:
313
- # No content len, regular line-based protocol message (remove trailing new-line).
314
- if line.endswith(b'\n\n'):
315
- line = line[:-2]
316
-
317
- elif line.endswith(b'\n'):
318
- line = line[:-1]
319
-
320
- elif line.endswith(b'\r'):
321
- line = line[:-1]
322
-
323
- msg = line
324
- msg = msg.decode('utf-8')
325
- print('Test Reader Thread Received %s' % (msg,))
326
- self._queue.put(msg)
327
-
328
- except:
329
- pass # ok, finished it
330
- finally:
331
- # When the socket from pydevd is closed the client should shutdown to notify
332
- # it acknowledged it.
333
- try:
334
- self.sock.shutdown(socket.SHUT_RDWR)
335
- except:
336
- pass
337
- try:
338
- self.sock.close()
339
- except:
340
- pass
341
-
342
- def do_kill(self):
343
- self._kill = True
344
- if hasattr(self, 'sock'):
345
- from socket import SHUT_RDWR
346
- try:
347
- self.sock.shutdown(SHUT_RDWR)
348
- except:
349
- pass
350
- try:
351
- self.sock.close()
352
- except:
353
- pass
354
- delattr(self, 'sock')
355
-
356
-
357
- def read_process(stream, buffer, debug_stream, stream_name, finish):
358
- while True:
359
- line = stream.readline()
360
- if not line:
361
- break
362
-
363
- line = line.decode('utf-8', errors='replace')
364
-
365
- if SHOW_STDOUT:
366
- debug_stream.write('%s: %s' % (stream_name, line,))
367
- buffer.append(line)
368
-
369
- if finish[0]:
370
- return
371
-
372
-
373
- def start_in_daemon_thread(target, args):
374
- t0 = threading.Thread(target=target, args=args)
375
- t0.daemon = True
376
- t0.start()
377
-
378
-
379
- class DebuggerRunner(object):
380
-
381
- def __init__(self, tmpdir):
382
- if tmpdir is not None:
383
- self.pydevd_debug_file = os.path.join(str(tmpdir), 'pydevd_debug_file_%s.txt' % (os.getpid(),))
384
- else:
385
- self.pydevd_debug_file = None
386
-
387
- def get_command_line(self):
388
- '''
389
- Returns the base command line (i.e.: ['python.exe', '-u'])
390
- '''
391
- raise NotImplementedError
392
-
393
- def add_command_line_args(self, args, dap=False):
394
- writer = self.writer
395
- port = int(writer.port)
396
-
397
- localhost = pydev_localhost.get_localhost()
398
- ret = [
399
- writer.get_pydevd_file(),
400
- ]
401
-
402
- if not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON:
403
- # i.e.: in frame-eval mode we support native threads, whereas
404
- # on other cases we need the qt monkeypatch.
405
- ret += ['--qt-support']
406
-
407
- ret += [
408
- '--client',
409
- localhost,
410
- '--port',
411
- str(port),
412
- ]
413
-
414
- if dap:
415
- ret += ['--debug-mode', 'debugpy-dap']
416
- ret += ['--json-dap-http']
417
-
418
- if writer.IS_MODULE:
419
- ret += ['--module']
420
-
421
- ret += ['--file'] + writer.get_command_line_args()
422
- ret = writer.update_command_line_args(ret) # Provide a hook for the writer
423
- return args + ret
424
-
425
- @contextmanager
426
- def check_case(self, writer_class, wait_for_port=True, wait_for_initialization=True, dap=False):
427
- try:
428
- if callable(writer_class):
429
- writer = writer_class()
430
- else:
431
- writer = writer_class
432
- try:
433
- writer.start()
434
- if wait_for_port:
435
- wait_for_condition(lambda: hasattr(writer, 'port'))
436
- self.writer = writer
437
-
438
- args = self.get_command_line()
439
-
440
- args = self.add_command_line_args(args, dap=dap)
441
-
442
- if SHOW_OTHER_DEBUG_INFO:
443
- print('executing: %s' % (' '.join(args),))
444
-
445
- with self.run_process(args, writer) as dct_with_stdout_stder:
446
- try:
447
- if not wait_for_initialization:
448
- # The use-case for this is that the debugger can't even start-up in this
449
- # scenario, as such, sleep a bit so that the output can be collected.
450
- time.sleep(1)
451
- elif wait_for_port:
452
- wait_for_condition(lambda: writer.finished_initialization)
453
- except TimeoutError:
454
- sys.stderr.write('Timed out waiting for initialization\n')
455
- sys.stderr.write('stdout:\n%s\n\nstderr:\n%s\n' % (
456
- ''.join(dct_with_stdout_stder['stdout']),
457
- ''.join(dct_with_stdout_stder['stderr']),
458
- ))
459
- raise
460
- finally:
461
- writer.get_stdout = lambda: ''.join(dct_with_stdout_stder['stdout'])
462
- writer.get_stderr = lambda: ''.join(dct_with_stdout_stder['stderr'])
463
-
464
- yield writer
465
- finally:
466
- writer.do_kill()
467
- writer.log = []
468
-
469
- stdout = dct_with_stdout_stder['stdout']
470
- stderr = dct_with_stdout_stder['stderr']
471
- writer.additional_output_checks(''.join(stdout), ''.join(stderr))
472
- except IgnoreFailureError:
473
- sys.stderr.write('Test finished with ignored failure.\n')
474
- return
475
-
476
- def create_process(self, args, writer):
477
- env = writer.get_environ() if writer is not None else None
478
- if env is None:
479
- env = os.environ.copy()
480
-
481
- if self.pydevd_debug_file:
482
- env['PYDEVD_DEBUG'] = 'True'
483
- env['PYDEVD_DEBUG_FILE'] = self.pydevd_debug_file
484
- print('Logging to: %s' % (self.pydevd_debug_file,))
485
- process = subprocess.Popen(
486
- args,
487
- stdout=subprocess.PIPE,
488
- stderr=subprocess.PIPE,
489
- stdin=subprocess.PIPE,
490
- cwd=writer.get_cwd() if writer is not None else '.',
491
- env=env,
492
- )
493
- return process
494
-
495
- @contextmanager
496
- def run_process(self, args, writer):
497
- process = self.create_process(args, writer)
498
- writer.process = process
499
- stdout = []
500
- stderr = []
501
- finish = [False]
502
- dct_with_stdout_stder = {}
503
- fail_with_message = False
504
-
505
- try:
506
- start_in_daemon_thread(read_process, (process.stdout, stdout, sys.stdout, 'stdout', finish))
507
- start_in_daemon_thread(read_process, (process.stderr, stderr, sys.stderr, 'stderr', finish))
508
-
509
- if SHOW_OTHER_DEBUG_INFO:
510
- print('Both processes started')
511
-
512
- # polls can fail (because the process may finish and the thread still not -- so, we give it some more chances to
513
- # finish successfully).
514
- initial_time = time.time()
515
- shown_intermediate = False
516
- dumped_threads = False
517
-
518
- dct_with_stdout_stder['stdout'] = stdout
519
- dct_with_stdout_stder['stderr'] = stderr
520
- try:
521
- yield dct_with_stdout_stder
522
- except:
523
- fail_with_message = True
524
- # Let's print the actuayl exception here (it doesn't appear properly on Python 2 and
525
- # on Python 3 it's hard to find because pytest output is too verbose).
526
- sys.stderr.write('***********\n')
527
- sys.stderr.write('***********\n')
528
- sys.stderr.write('***********\n')
529
- traceback.print_exc()
530
- sys.stderr.write('***********\n')
531
- sys.stderr.write('***********\n')
532
- sys.stderr.write('***********\n')
533
- raise
534
-
535
- if not writer.finished_ok:
536
- self.fail_with_message(
537
- "The thread that was doing the tests didn't finish successfully (writer.finished_ok = True not set).",
538
- stdout,
539
- stderr,
540
- writer
541
- )
542
-
543
- while True:
544
- if process.poll() is not None:
545
- if writer.EXPECTED_RETURNCODE != 'any':
546
- expected_returncode = writer.EXPECTED_RETURNCODE
547
- if not isinstance(expected_returncode, (list, tuple)):
548
- expected_returncode = (expected_returncode,)
549
-
550
- if process.returncode not in expected_returncode:
551
- self.fail_with_message('Expected process.returncode to be %s. Found: %s' % (
552
- writer.EXPECTED_RETURNCODE, process.returncode), stdout, stderr, writer)
553
- break
554
- else:
555
- if writer is not None:
556
- if writer.FORCE_KILL_PROCESS_WHEN_FINISHED_OK:
557
- process.kill()
558
- continue
559
-
560
- if not shown_intermediate and (time.time() - initial_time > (TIMEOUT / 3.)): # 1/3 of timeout
561
- print('Warning: writer thread exited and process still did not (%.2f seconds elapsed).' % (time.time() - initial_time,))
562
- shown_intermediate = True
563
-
564
- if time.time() - initial_time > ((TIMEOUT / 3.) * 2.): # 2/3 of timeout
565
- if not dumped_threads:
566
- dumped_threads = True
567
- # It still didn't finish. Ask for a thread dump
568
- # (we'll be able to see it later on the test output stderr).
569
- try:
570
- writer.write_dump_threads()
571
- except:
572
- traceback.print_exc()
573
-
574
- if time.time() - initial_time > TIMEOUT: # timed out
575
- process.kill()
576
- time.sleep(.2)
577
- self.fail_with_message(
578
- "The other process should've exited but still didn't (%.2f seconds timeout for process to exit)." % (time.time() - initial_time,),
579
- stdout, stderr, writer
580
- )
581
- time.sleep(.2)
582
-
583
- if writer is not None:
584
- if not writer.FORCE_KILL_PROCESS_WHEN_FINISHED_OK:
585
- if stdout is None:
586
- self.fail_with_message(
587
- "The other process may still be running -- and didn't give any output.", stdout, stderr, writer)
588
-
589
- check = 0
590
- while not writer.check_test_suceeded_msg(stdout, stderr):
591
- check += 1
592
- if check == 50:
593
- self.fail_with_message("TEST SUCEEDED not found.", stdout, stderr, writer)
594
- time.sleep(.1)
595
-
596
- except TimeoutError:
597
- msg = 'TimeoutError'
598
- try:
599
- writer.write_dump_threads()
600
- except:
601
- msg += ' (note: error trying to dump threads on timeout).'
602
- time.sleep(.2)
603
- self.fail_with_message(msg, stdout, stderr, writer)
604
- except Exception as e:
605
- if fail_with_message:
606
- self.fail_with_message(str(e), stdout, stderr, writer)
607
- else:
608
- raise
609
- finally:
610
- try:
611
- if process.poll() is None:
612
- process.kill()
613
- except:
614
- traceback.print_exc()
615
- finish[0] = True
616
-
617
- def fail_with_message(self, msg, stdout, stderr, writerThread):
618
- log_contents = ''
619
- for f in pydev_log.list_log_files(self.pydevd_debug_file):
620
- if os.path.exists(f):
621
- with open(f, 'r') as stream:
622
- log_contents += '\n-------------------- %s ------------------\n\n' % (f,)
623
- log_contents += stream.read()
624
- msg += ("\n\n===========================\nStdout: \n" + ''.join(stdout) +
625
- "\n\n===========================\nStderr:" + ''.join(stderr) +
626
- "\n\n===========================\nWriter Log:\n" + '\n'.join(getattr(writerThread, 'log', [])) +
627
- "\n\n===========================\nLog:" + log_contents)
628
-
629
- if IS_JYTHON:
630
- # It seems we have some spurious errors which make Jython tests flaky (on a test run it's
631
- # not unusual for one test among all the tests to fail with this error on Jython).
632
- # The usual traceback in this case is:
633
- #
634
- # Traceback (most recent call last):
635
- # File "/home/travis/build/fabioz/PyDev.Debugger/_pydevd_bundle/pydevd_comm.py", line 287, in _on_run
636
- # line = self._read_line()
637
- # File "/home/travis/build/fabioz/PyDev.Debugger/_pydevd_bundle/pydevd_comm.py", line 270, in _read_line
638
- # r = self.sock.recv(1024)
639
- # File "/home/travis/build/fabioz/PyDev.Debugger/_pydevd_bundle/pydevd_comm.py", line 270, in _read_line
640
- # r = self.sock.recv(1024)
641
- # File "/home/travis/jython/Lib/_socket.py", line 1270, in recv
642
- # data, _ = self._get_message(bufsize, "recv")
643
- # File "/home/travis/jython/Lib/_socket.py", line 384, in handle_exception
644
- # raise _map_exception(jlx)
645
- # error: [Errno -1] Unmapped exception: java.lang.NullPointerException
646
- #
647
- # So, ignore errors in this situation.
648
-
649
- if 'error: [Errno -1] Unmapped exception: java.lang.NullPointerException' in msg:
650
- raise IgnoreFailureError()
651
- raise AssertionError(msg)
652
-
653
-
654
- #=======================================================================================================================
655
- # AbstractWriterThread
656
- #=======================================================================================================================
657
- class AbstractWriterThread(threading.Thread):
658
-
659
- FORCE_KILL_PROCESS_WHEN_FINISHED_OK = False
660
- IS_MODULE = False
661
- TEST_FILE = None
662
- EXPECTED_RETURNCODE = 0
663
-
664
- def __init__(self, *args, **kwargs):
665
- threading.Thread.__init__(self, *args, **kwargs)
666
- self.process = None # Set after the process is created.
667
- self.daemon = True
668
- self.finished_ok = False
669
- self.finished_initialization = False
670
- self._next_breakpoint_id = 0
671
- self.log = []
672
-
673
- def run(self):
674
- self.start_socket()
675
-
676
- def check_test_suceeded_msg(self, stdout, stderr):
677
- return 'TEST SUCEEDED' in ''.join(stdout)
678
-
679
- def update_command_line_args(self, args):
680
- return args
681
-
682
- def _ignore_stderr_line(self, line):
683
- if line.startswith((
684
- 'debugger: ',
685
- '>>',
686
- '<<',
687
- 'warning: Debugger speedups',
688
- 'pydev debugger: New process is launching',
689
- 'pydev debugger: To debug that process',
690
- '*** Multiprocess',
691
- )):
692
- return True
693
-
694
- for expected in (
695
- 'PyDev console: using IPython',
696
- 'Attempting to work in a virtualenv. If you encounter problems, please',
697
- 'Unable to create basic Accelerated OpenGL', # Issue loading qt5
698
- 'Core Image is now using the software OpenGL', # Issue loading qt5
699
- 'XDG_RUNTIME_DIR not set', # Issue loading qt5
700
- ):
701
- if expected in line:
702
- return True
703
-
704
- if re.match(r'^(\d+)\t(\d)+', line):
705
- return True
706
-
707
- if IS_JYTHON:
708
- for expected in (
709
- 'org.python.netty.util.concurrent.DefaultPromise',
710
- 'org.python.netty.util.concurrent.SingleThreadEventExecutor',
711
- 'Failed to submit a listener notification task. Event loop shut down?',
712
- 'java.util.concurrent.RejectedExecutionException',
713
- 'An event executor terminated with non-empty task',
714
- 'java.lang.UnsupportedOperationException',
715
- "RuntimeWarning: Parent module '_pydevd_bundle' not found while handling absolute import",
716
- 'from _pydevd_bundle.pydevd_additional_thread_info_regular import _current_frames',
717
- 'from _pydevd_bundle.pydevd_additional_thread_info import _current_frames',
718
- 'import org.python.core as PyCore #@UnresolvedImport',
719
- 'from _pydevd_bundle.pydevd_additional_thread_info import set_additional_thread_info',
720
- "RuntimeWarning: Parent module '_pydevd_bundle._debug_adapter' not found while handling absolute import",
721
- 'import json',
722
-
723
- # Issues with Jython and Java 9.
724
- 'WARNING: Illegal reflective access by org.python.core.PySystemState',
725
- 'WARNING: Please consider reporting this to the maintainers of org.python.core.PySystemState',
726
- 'WARNING: An illegal reflective access operation has occurred',
727
- 'WARNING: Illegal reflective access by jnr.posix.JavaLibCHelper',
728
- 'WARNING: Please consider reporting this to the maintainers of jnr.posix.JavaLibCHelper',
729
- 'WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations',
730
- 'WARNING: All illegal access operations will be denied in a future release',
731
- ):
732
- if expected in line:
733
- return True
734
-
735
- if line.strip().startswith('at '):
736
- return True
737
-
738
- return False
739
-
740
- def additional_output_checks(self, stdout, stderr):
741
- lines_with_error = []
742
- for line in stderr.splitlines():
743
- line = line.strip()
744
- if not line:
745
- continue
746
- if not self._ignore_stderr_line(line):
747
- lines_with_error.append(line)
748
-
749
- if lines_with_error:
750
- raise AssertionError('Did not expect to have line(s) in stderr:\n\n%s\n\nFull stderr:\n\n%s' % (
751
- '\n'.join(lines_with_error), stderr))
752
-
753
- def get_environ(self):
754
- return None
755
-
756
- def get_pydevd_file(self):
757
- dirname = os.path.dirname(__file__)
758
- dirname = os.path.dirname(dirname)
759
- return os.path.abspath(os.path.join(dirname, 'pydevd.py'))
760
-
761
- def get_pydevconsole_file(self):
762
- dirname = os.path.dirname(__file__)
763
- dirname = os.path.dirname(dirname)
764
- return os.path.abspath(os.path.join(dirname, 'pydevconsole.py'))
765
-
766
- def get_line_index_with_content(self, line_content, filename=None):
767
- '''
768
- :return the line index which has the given content (1-based).
769
- '''
770
- if filename is None:
771
- filename = self.TEST_FILE
772
- with open(filename, 'r') as stream:
773
- for i_line, line in enumerate(stream):
774
- if line_content in line:
775
- return i_line + 1
776
- raise AssertionError('Did not find: %s in %s' % (line_content, self.TEST_FILE))
777
-
778
- def get_cwd(self):
779
- return os.path.dirname(self.get_pydevd_file())
780
-
781
- def get_command_line_args(self):
782
- return [self.TEST_FILE]
783
-
784
- def do_kill(self):
785
- if hasattr(self, 'server_socket'):
786
- self.server_socket.close()
787
- delattr(self, 'server_socket')
788
-
789
- if hasattr(self, 'reader_thread'):
790
- # if it's not created, it's not there...
791
- self.reader_thread.do_kill()
792
- delattr(self, 'reader_thread')
793
-
794
- if hasattr(self, 'sock'):
795
- self.sock.close()
796
- delattr(self, 'sock')
797
-
798
- if hasattr(self, 'port'):
799
- delattr(self, 'port')
800
-
801
- def write_with_content_len(self, msg):
802
- self.log.append('write: %s' % (msg,))
803
-
804
- if SHOW_WRITES_AND_READS:
805
- print('Test Writer Thread Written %s' % (msg,))
806
-
807
- if not hasattr(self, 'sock'):
808
- print('%s.sock not available when sending: %s' % (self, msg))
809
- return
810
-
811
- if not isinstance(msg, bytes):
812
- msg = msg.encode('utf-8')
813
-
814
- self.sock.sendall((u'Content-Length: %s\r\n\r\n' % len(msg)).encode('ascii'))
815
- self.sock.sendall(msg)
816
-
817
- _WRITE_LOG_PREFIX = 'write: '
818
-
819
- def write(self, s):
820
- from _pydevd_bundle.pydevd_comm import ID_TO_MEANING
821
- meaning = ID_TO_MEANING.get(re.search(r'\d+', s).group(), '')
822
- if meaning:
823
- meaning += ': '
824
-
825
- self.log.append(self._WRITE_LOG_PREFIX + '%s%s' % (meaning, s,))
826
-
827
- if SHOW_WRITES_AND_READS:
828
- print('Test Writer Thread Written %s%s' % (meaning, s,))
829
- msg = s + '\n'
830
-
831
- if not hasattr(self, 'sock'):
832
- print('%s.sock not available when sending: %s' % (self, msg))
833
- return
834
-
835
- msg = msg.encode('utf-8')
836
-
837
- self.sock.send(msg)
838
-
839
- def get_next_message(self, context_message, timeout=None):
840
- return self.reader_thread.get_next_message(context_message, timeout=timeout)
841
-
842
- def start_socket(self, port=None):
843
- assert not hasattr(self, 'port'), 'Socket already initialized.'
844
- from _pydev_bundle.pydev_localhost import get_socket_name
845
- if SHOW_WRITES_AND_READS:
846
- print('start_socket')
847
-
848
- self._sequence = -1
849
- if port is None:
850
- socket_name = get_socket_name(close=True)
851
- else:
852
- socket_name = (pydev_localhost.get_localhost(), port)
853
- server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
854
- server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
855
- server_socket.bind(socket_name)
856
- self.port = socket_name[1]
857
- server_socket.listen(1)
858
- if SHOW_WRITES_AND_READS:
859
- print('Waiting in socket.accept()')
860
- self.server_socket = server_socket
861
- new_socket, addr = server_socket.accept()
862
- if SHOW_WRITES_AND_READS:
863
- print('Test Writer Thread Socket:', new_socket, addr)
864
-
865
- self._set_socket(new_socket)
866
-
867
- def _set_socket(self, new_socket):
868
- curr_socket = getattr(self, 'sock', None)
869
- if curr_socket:
870
- try:
871
- curr_socket.shutdown(socket.SHUT_WR)
872
- except:
873
- pass
874
- try:
875
- curr_socket.close()
876
- except:
877
- pass
878
-
879
- reader_thread = self.reader_thread = ReaderThread(new_socket)
880
- self.sock = new_socket
881
- reader_thread.start()
882
-
883
- # initial command is always the version
884
- self.write_version()
885
- self.log.append('start_socket')
886
- self.finished_initialization = True
887
-
888
- def start_socket_client(self, host, port):
889
- self._sequence = -1
890
- if SHOW_WRITES_AND_READS:
891
- print("Connecting to %s:%s" % (host, port))
892
-
893
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
894
-
895
- # Set TCP keepalive on an open socket.
896
- # It activates after 1 second (TCP_KEEPIDLE,) of idleness,
897
- # then sends a keepalive ping once every 3 seconds (TCP_KEEPINTVL),
898
- # and closes the connection after 5 failed ping (TCP_KEEPCNT), or 15 seconds
899
- try:
900
- from socket import IPPROTO_TCP, SO_KEEPALIVE, TCP_KEEPIDLE, TCP_KEEPINTVL, TCP_KEEPCNT
901
- s.setsockopt(socket.SOL_SOCKET, SO_KEEPALIVE, 1)
902
- s.setsockopt(IPPROTO_TCP, TCP_KEEPIDLE, 1)
903
- s.setsockopt(IPPROTO_TCP, TCP_KEEPINTVL, 3)
904
- s.setsockopt(IPPROTO_TCP, TCP_KEEPCNT, 5)
905
- except ImportError:
906
- pass # May not be available everywhere.
907
-
908
- # 10 seconds default timeout
909
- timeout = int(os.environ.get('PYDEVD_CONNECT_TIMEOUT', 10))
910
- s.settimeout(timeout)
911
- for _i in range(20):
912
- try:
913
- s.connect((host, port))
914
- break
915
- except:
916
- time.sleep(.5) # We may have to wait a bit more and retry (especially on PyPy).
917
- s.settimeout(None) # no timeout after connected
918
- if SHOW_WRITES_AND_READS:
919
- print("Connected.")
920
- self._set_socket(s)
921
- return s
922
-
923
- def next_breakpoint_id(self):
924
- self._next_breakpoint_id += 1
925
- return self._next_breakpoint_id
926
-
927
- def next_seq(self):
928
- self._sequence += 2
929
- return self._sequence
930
-
931
- def wait_for_new_thread(self):
932
- # wait for hit breakpoint
933
- last = ''
934
- while not '<xml><thread name="' in last or '<xml><thread name="pydevd.' in last:
935
- last = self.get_next_message('wait_for_new_thread')
936
-
937
- # we have something like <xml><thread name="MainThread" id="12103472" /></xml>
938
- splitted = last.split('"')
939
- thread_id = splitted[3]
940
- return thread_id
941
-
942
- def wait_for_output(self):
943
- # Something as:
944
- # <xml><io s="TEST SUCEEDED%2521" ctx="1"/></xml>
945
- while True:
946
- msg = self.get_next_message('wait_output')
947
- if "<xml><io s=" in msg:
948
- if 'ctx="1"' in msg:
949
- ctx = 'stdout'
950
- elif 'ctx="2"' in msg:
951
- ctx = 'stderr'
952
- else:
953
- raise AssertionError('IO message without ctx.')
954
-
955
- msg = unquote_plus(unquote_plus(msg.split('"')[1]))
956
- return msg, ctx
957
-
958
- def get_current_stack_hit(self, thread_id, **kwargs):
959
- self.write_get_thread_stack(thread_id)
960
- msg = self.wait_for_message(CMD_GET_THREAD_STACK)
961
- return self._get_stack_as_hit(msg, **kwargs)
962
-
963
- def wait_for_single_notification_as_hit(self, reason=REASON_STOP_ON_BREAKPOINT, **kwargs):
964
- dct = self.wait_for_json_message(CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION)
965
- assert dct['stop_reason'] == reason
966
-
967
- line = kwargs.pop('line', None)
968
- file = kwargs.pop('file', None)
969
- assert not kwargs, 'Unexpected kwargs: %s' % (kwargs,)
970
-
971
- return self.get_current_stack_hit(dct['thread_id'], line=line, file=file)
972
-
973
- def wait_for_breakpoint_hit(self, reason=REASON_STOP_ON_BREAKPOINT, timeout=None, **kwargs):
974
- '''
975
- 108 is over
976
- 109 is return
977
- 111 is breakpoint
978
-
979
- :param reason: may be the actual reason (int or string) or a list of reasons.
980
- '''
981
- # note: those must be passed in kwargs.
982
- line = kwargs.get('line')
983
- file = kwargs.get('file')
984
- name = kwargs.get('name')
985
-
986
- self.log.append('Start: wait_for_breakpoint_hit')
987
- # wait for hit breakpoint
988
- if not isinstance(reason, (list, tuple)):
989
- reason = (reason,)
990
-
991
- def accept_message(last):
992
- for r in reason:
993
- if ('stop_reason="%s"' % (r,)) in last:
994
- return True
995
-
996
- return False
997
-
998
- msg = self.wait_for_message(accept_message, timeout=timeout)
999
- return self._get_stack_as_hit(msg, file, line, name)
1000
-
1001
- def _get_stack_as_hit(self, msg, file=None, line=None, name=None):
1002
- # we have something like <xml><thread id="12152656" stop_reason="111"><frame id="12453120" name="encode" ...
1003
- if len(msg.thread.frame) == 0:
1004
- frame = msg.thread.frame
1005
- else:
1006
- frame = msg.thread.frame[0]
1007
- thread_id = msg.thread['id']
1008
- frame_id = frame['id']
1009
- suspend_type = msg.thread['suspend_type']
1010
- hit_name = frame['name']
1011
- frame_line = int(frame['line'])
1012
- frame_file = frame['file']
1013
-
1014
- if file is not None:
1015
- assert frame_file.endswith(file), 'Expected hit to be in file %s, was: %s' % (file, frame_file)
1016
-
1017
- if line is not None:
1018
- assert line == frame_line, 'Expected hit to be in line %s, was: %s (in file: %s)' % (line, frame_line, frame_file)
1019
-
1020
- if name is not None:
1021
- if not isinstance(name, (list, tuple, set)):
1022
- assert name == hit_name
1023
- else:
1024
- assert hit_name in name
1025
-
1026
- self.log.append('End(1): wait_for_breakpoint_hit: %s' % (msg.original_xml,))
1027
-
1028
- return Hit(
1029
- thread_id=thread_id, frame_id=frame_id, line=frame_line, suspend_type=suspend_type, name=hit_name, file=frame_file)
1030
-
1031
- def wait_for_get_next_statement_targets(self):
1032
- last = ''
1033
- while not '<xml><line>' in last:
1034
- last = self.get_next_message('wait_for_get_next_statement_targets')
1035
-
1036
- matches = re.finditer(r"(<line>([0-9]*)<\/line>)", last, re.IGNORECASE)
1037
- lines = []
1038
- for _, match in enumerate(matches):
1039
- try:
1040
- lines.append(int(match.group(2)))
1041
- except ValueError:
1042
- pass
1043
- return set(lines)
1044
-
1045
- def wait_for_custom_operation(self, expected):
1046
- # wait for custom operation response, the response is double encoded
1047
- expected_encoded = quote(quote_plus(expected))
1048
- last = ''
1049
- while not expected_encoded in last:
1050
- last = self.get_next_message('wait_for_custom_operation. Expected (encoded): %s' % (expected_encoded,))
1051
-
1052
- return True
1053
-
1054
- def _is_var_in_last(self, expected, last):
1055
- if expected in last:
1056
- return True
1057
-
1058
- last = unquote_plus(last)
1059
- if expected in last:
1060
- return True
1061
-
1062
- # We actually quote 2 times on the backend...
1063
- last = unquote_plus(last)
1064
- if expected in last:
1065
- return True
1066
-
1067
- return False
1068
-
1069
- def wait_for_multiple_vars(self, expected_vars):
1070
- if not isinstance(expected_vars, (list, tuple)):
1071
- expected_vars = [expected_vars]
1072
-
1073
- all_found = []
1074
- ignored = []
1075
-
1076
- while True:
1077
- try:
1078
- last = self.get_next_message('wait_for_multiple_vars: %s' % (expected_vars,))
1079
- except:
1080
- missing = []
1081
- for v in expected_vars:
1082
- if v not in all_found:
1083
- missing.append(v)
1084
- raise ValueError('Not Found:\n%s\nNot found messages: %s\nFound messages: %s\nExpected messages: %s\nIgnored messages:\n%s' % (
1085
- '\n'.join(str(x) for x in missing), len(missing), len(all_found), len(expected_vars), '\n'.join(str(x) for x in ignored)))
1086
-
1087
- was_message_used = False
1088
- new_expected = []
1089
- for expected in expected_vars:
1090
- found_expected = False
1091
- if isinstance(expected, (tuple, list)):
1092
- for e in expected:
1093
- if self._is_var_in_last(e, last):
1094
- was_message_used = True
1095
- found_expected = True
1096
- all_found.append(expected)
1097
- break
1098
- else:
1099
- if self._is_var_in_last(expected, last):
1100
- was_message_used = True
1101
- found_expected = True
1102
- all_found.append(expected)
1103
-
1104
- if not found_expected:
1105
- new_expected.append(expected)
1106
-
1107
- expected_vars = new_expected
1108
-
1109
- if not expected_vars:
1110
- return True
1111
-
1112
- if not was_message_used:
1113
- ignored.append(last)
1114
-
1115
- wait_for_var = wait_for_multiple_vars
1116
- wait_for_vars = wait_for_multiple_vars
1117
- wait_for_evaluation = wait_for_multiple_vars
1118
-
1119
- def write_make_initial_run(self):
1120
- self.write("101\t%s\t" % self.next_seq())
1121
- self.log.append('write_make_initial_run')
1122
-
1123
- def write_set_protocol(self, protocol):
1124
- self.write("%s\t%s\t%s" % (CMD_SET_PROTOCOL, self.next_seq(), protocol))
1125
-
1126
- def write_authenticate(self, access_token, client_access_token):
1127
- msg = "%s\t%s\t%s" % (CMD_AUTHENTICATE, self.next_seq(), access_token)
1128
- self.write(msg)
1129
-
1130
- self.wait_for_message(lambda msg:client_access_token in msg, expect_xml=False)
1131
-
1132
- def write_version(self):
1133
- from _pydevd_bundle.pydevd_constants import IS_WINDOWS
1134
- self.write("%s\t%s\t1.0\t%s\tID" % (CMD_VERSION, self.next_seq(), 'WINDOWS' if IS_WINDOWS else 'UNIX'))
1135
-
1136
- def get_main_filename(self):
1137
- return self.TEST_FILE
1138
-
1139
- def write_show_return_vars(self, show=1):
1140
- self.write("%s\t%s\tCMD_SHOW_RETURN_VALUES\t%s" % (CMD_SHOW_RETURN_VALUES, self.next_seq(), show))
1141
-
1142
- def write_add_breakpoint(self, line, func='None', filename=None, hit_condition=None, is_logpoint=False, suspend_policy=None, condition=None):
1143
- '''
1144
- :param line: starts at 1
1145
- :param func: if None, may hit in any context, empty string only top level, otherwise must be method name.
1146
- '''
1147
- if filename is None:
1148
- filename = self.get_main_filename()
1149
- breakpoint_id = self.next_breakpoint_id()
1150
- if hit_condition is None and not is_logpoint and suspend_policy is None and condition is None:
1151
- # Format kept for backward compatibility tests
1152
- self.write("%s\t%s\t%s\t%s\t%s\t%s\t%s\tNone\tNone" % (
1153
- CMD_SET_BREAK, self.next_seq(), breakpoint_id, 'python-line', filename, line, func))
1154
- else:
1155
- # Format: breakpoint_id, type, file, line, func_name, condition, expression, hit_condition, is_logpoint, suspend_policy
1156
- self.write("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\tNone\t%s\t%s\t%s" % (
1157
- CMD_SET_BREAK, self.next_seq(), breakpoint_id, 'python-line', filename, line, func, condition, hit_condition, is_logpoint, suspend_policy))
1158
- self.log.append('write_add_breakpoint: %s line: %s func: %s' % (breakpoint_id, line, func))
1159
- return breakpoint_id
1160
-
1161
- def write_multi_threads_single_notification(self, multi_threads_single_notification):
1162
- self.write_json_config(dict(
1163
- multi_threads_single_notification=multi_threads_single_notification,
1164
- ))
1165
-
1166
- def write_suspend_on_breakpoint_exception(self, skip_suspend_on_breakpoint_exception, skip_print_breakpoint_exception):
1167
- self.write_json_config(dict(
1168
- skip_suspend_on_breakpoint_exception=skip_suspend_on_breakpoint_exception,
1169
- skip_print_breakpoint_exception=skip_print_breakpoint_exception
1170
- ))
1171
-
1172
- def write_json_config(self, config_dict):
1173
- self.write("%s\t%s\t%s" % (CMD_PYDEVD_JSON_CONFIG, self.next_seq(),
1174
- json.dumps(config_dict)
1175
- ))
1176
-
1177
- def write_stop_on_start(self, stop=True):
1178
- self.write("%s\t%s\t%s" % (CMD_STOP_ON_START, self.next_seq(), stop))
1179
-
1180
- def write_dump_threads(self):
1181
- self.write("%s\t%s\t" % (CMD_THREAD_DUMP_TO_STDERR, self.next_seq()))
1182
-
1183
- def write_add_exception_breakpoint(self, exception):
1184
- self.write("%s\t%s\t%s" % (CMD_ADD_EXCEPTION_BREAK, self.next_seq(), exception))
1185
- self.log.append('write_add_exception_breakpoint: %s' % (exception,))
1186
-
1187
- def write_get_current_exception(self, thread_id):
1188
- self.write("%s\t%s\t%s" % (CMD_GET_EXCEPTION_DETAILS, self.next_seq(), thread_id))
1189
-
1190
- def write_set_py_exception_globals(
1191
- self,
1192
- break_on_uncaught,
1193
- break_on_caught,
1194
- skip_on_exceptions_thrown_in_same_context,
1195
- ignore_exceptions_thrown_in_lines_with_ignore_exception,
1196
- ignore_libraries,
1197
- exceptions=()
1198
- ):
1199
- # Only set the globals, others
1200
- self.write("131\t%s\t%s" % (self.next_seq(), '%s;%s;%s;%s;%s;%s' % (
1201
- 'true' if break_on_uncaught else 'false',
1202
- 'true' if break_on_caught else 'false',
1203
- 'true' if skip_on_exceptions_thrown_in_same_context else 'false',
1204
- 'true' if ignore_exceptions_thrown_in_lines_with_ignore_exception else 'false',
1205
- 'true' if ignore_libraries else 'false',
1206
- ';'.join(exceptions)
1207
- )))
1208
- self.log.append('write_set_py_exception_globals')
1209
-
1210
- def write_start_redirect(self):
1211
- self.write("%s\t%s\t%s" % (CMD_REDIRECT_OUTPUT, self.next_seq(), 'STDERR STDOUT'))
1212
-
1213
- def write_set_project_roots(self, project_roots):
1214
- self.write("%s\t%s\t%s" % (CMD_SET_PROJECT_ROOTS, self.next_seq(), '\t'.join(str(x) for x in project_roots)))
1215
-
1216
- def write_add_exception_breakpoint_with_policy(
1217
- self, exception, notify_on_handled_exceptions, notify_on_unhandled_exceptions, ignore_libraries):
1218
- self.write("%s\t%s\t%s" % (CMD_ADD_EXCEPTION_BREAK, self.next_seq(), '\t'.join(str(x) for x in [
1219
- exception, notify_on_handled_exceptions, notify_on_unhandled_exceptions, ignore_libraries])))
1220
- self.log.append('write_add_exception_breakpoint: %s' % (exception,))
1221
-
1222
- def write_remove_exception_breakpoint(self, exception):
1223
- self.write('%s\t%s\t%s' % (CMD_REMOVE_EXCEPTION_BREAK, self.next_seq(), exception))
1224
-
1225
- def write_remove_breakpoint(self, breakpoint_id):
1226
- self.write("%s\t%s\t%s\t%s\t%s" % (
1227
- CMD_REMOVE_BREAK, self.next_seq(), 'python-line', self.get_main_filename(), breakpoint_id))
1228
-
1229
- def write_change_variable(self, thread_id, frame_id, varname, value):
1230
- self.write("%s\t%s\t%s\t%s\t%s\t%s\t%s" % (
1231
- CMD_CHANGE_VARIABLE, self.next_seq(), thread_id, frame_id, 'FRAME', varname, value))
1232
-
1233
- def write_get_frame(self, thread_id, frame_id):
1234
- self.write("%s\t%s\t%s\t%s\tFRAME" % (CMD_GET_FRAME, self.next_seq(), thread_id, frame_id))
1235
- self.log.append('write_get_frame')
1236
-
1237
- def write_get_variable(self, thread_id, frame_id, var_attrs):
1238
- self.write("%s\t%s\t%s\t%s\tFRAME\t%s" % (CMD_GET_VARIABLE, self.next_seq(), thread_id, frame_id, var_attrs))
1239
-
1240
- def write_step_over(self, thread_id):
1241
- self.write("%s\t%s\t%s" % (CMD_STEP_OVER, self.next_seq(), thread_id,))
1242
-
1243
- def write_step_in(self, thread_id):
1244
- self.write("%s\t%s\t%s" % (CMD_STEP_INTO, self.next_seq(), thread_id,))
1245
-
1246
- def write_step_in_my_code(self, thread_id):
1247
- self.write("%s\t%s\t%s" % (CMD_STEP_INTO_MY_CODE, self.next_seq(), thread_id,))
1248
-
1249
- def write_step_return(self, thread_id):
1250
- self.write("%s\t%s\t%s" % (CMD_STEP_RETURN, self.next_seq(), thread_id,))
1251
-
1252
- def write_step_return_my_code(self, thread_id):
1253
- self.write("%s\t%s\t%s" % (CMD_STEP_RETURN_MY_CODE, self.next_seq(), thread_id,))
1254
-
1255
- def write_step_over_my_code(self, thread_id):
1256
- self.write("%s\t%s\t%s" % (CMD_STEP_OVER_MY_CODE, self.next_seq(), thread_id,))
1257
-
1258
- def write_suspend_thread(self, thread_id):
1259
- self.write("%s\t%s\t%s" % (CMD_THREAD_SUSPEND, self.next_seq(), thread_id,))
1260
-
1261
- def write_reload(self, module_name):
1262
- self.log.append('write_reload')
1263
- self.write("%s\t%s\t%s" % (CMD_RELOAD_CODE, self.next_seq(), module_name,))
1264
-
1265
- def write_run_thread(self, thread_id):
1266
- self.log.append('write_run_thread')
1267
- self.write("%s\t%s\t%s" % (CMD_THREAD_RUN, self.next_seq(), thread_id,))
1268
-
1269
- def write_get_thread_stack(self, thread_id):
1270
- self.log.append('write_get_thread_stack')
1271
- self.write("%s\t%s\t%s" % (CMD_GET_THREAD_STACK, self.next_seq(), thread_id,))
1272
-
1273
- def write_load_source(self, filename):
1274
- self.log.append('write_load_source')
1275
- self.write("%s\t%s\t%s" % (CMD_LOAD_SOURCE, self.next_seq(), filename,))
1276
-
1277
- def write_load_source_from_frame_id(self, frame_id):
1278
- from _pydevd_bundle.pydevd_comm_constants import CMD_LOAD_SOURCE_FROM_FRAME_ID
1279
- self.log.append('write_load_source_from_frame_id')
1280
- self.write("%s\t%s\t%s" % (CMD_LOAD_SOURCE_FROM_FRAME_ID, self.next_seq(), frame_id,))
1281
-
1282
- def write_kill_thread(self, thread_id):
1283
- self.write("%s\t%s\t%s" % (CMD_THREAD_KILL, self.next_seq(), thread_id,))
1284
-
1285
- def write_set_next_statement(self, thread_id, line, func_name):
1286
- self.write("%s\t%s\t%s\t%s\t%s" % (CMD_SET_NEXT_STATEMENT, self.next_seq(), thread_id, line, func_name,))
1287
-
1288
- def write_smart_step_into(self, thread_id, line, func_name):
1289
- self.write("%s\t%s\t%s\t%s\t%s" % (CMD_SMART_STEP_INTO, self.next_seq(), thread_id, line, func_name,))
1290
-
1291
- def write_debug_console_expression(self, locator):
1292
- self.write("%s\t%s\t%s" % (CMD_EVALUATE_CONSOLE_EXPRESSION, self.next_seq(), locator))
1293
-
1294
- def write_custom_operation(self, locator, style, codeOrFile, operation_fn_name):
1295
- self.write("%s\t%s\t%s||%s\t%s\t%s" % (
1296
- CMD_RUN_CUSTOM_OPERATION, self.next_seq(), locator, style, quote_plus(codeOrFile), operation_fn_name))
1297
-
1298
- def write_evaluate_expression(self, locator, expression):
1299
- self.write("%s\t%s\t%s\t%s\t1" % (CMD_EVALUATE_EXPRESSION, self.next_seq(), locator, expression))
1300
-
1301
- def write_enable_dont_trace(self, enable):
1302
- if enable:
1303
- enable = 'true'
1304
- else:
1305
- enable = 'false'
1306
- self.write("%s\t%s\t%s" % (CMD_ENABLE_DONT_TRACE, self.next_seq(), enable))
1307
-
1308
- def write_get_next_statement_targets(self, thread_id, frame_id):
1309
- self.write("201\t%s\t%s\t%s" % (self.next_seq(), thread_id, frame_id))
1310
- self.log.append('write_get_next_statement_targets')
1311
-
1312
- def write_list_threads(self):
1313
- seq = self.next_seq()
1314
- self.write("%s\t%s\t" % (CMD_LIST_THREADS, seq))
1315
- return seq
1316
-
1317
- def wait_for_list_threads(self, seq):
1318
- return self.wait_for_message('502')
1319
-
1320
- def wait_for_get_thread_stack_message(self):
1321
- return self.wait_for_message(CMD_GET_THREAD_STACK)
1322
-
1323
- def wait_for_curr_exc_stack(self):
1324
- return self.wait_for_message(CMD_SEND_CURR_EXCEPTION_TRACE)
1325
-
1326
- def wait_for_json_message(self, accept_message, unquote_msg=True, timeout=None):
1327
- last = self.wait_for_message(accept_message, unquote_msg, expect_xml=False, timeout=timeout)
1328
- json_msg = last.split('\t', 2)[-1] # We have something as: CMD\tSEQ\tJSON
1329
- if isinstance(json_msg, bytes):
1330
- json_msg = json_msg.decode('utf-8')
1331
- try:
1332
- return json.loads(json_msg)
1333
- except:
1334
- traceback.print_exc()
1335
- raise AssertionError('Unable to parse:\n%s\njson:\n%s' % (last, json_msg))
1336
-
1337
- def wait_for_message(self, accept_message, unquote_msg=True, expect_xml=True, timeout=None, double_unquote=True):
1338
- if isinstance(accept_message, (str, int)):
1339
- msg_starts_with = '%s\t' % (accept_message,)
1340
-
1341
- def accept_message(msg):
1342
- return msg.startswith(msg_starts_with)
1343
-
1344
- import untangle
1345
- from io import StringIO
1346
- prev = None
1347
- while True:
1348
- last = self.get_next_message('wait_for_message', timeout=timeout)
1349
- if unquote_msg:
1350
- last = unquote_plus(last)
1351
- if double_unquote:
1352
- # This is useful if the checking will be done without needing to unpack the
1353
- # actual xml (in which case we'll be unquoting things inside of attrs --
1354
- # this could actually make the xml invalid though).
1355
- last = unquote_plus(last)
1356
- if accept_message(last):
1357
- if expect_xml:
1358
- # Extract xml and return untangled.
1359
- xml = ''
1360
- try:
1361
- xml = last[last.index('<xml>'):]
1362
- if isinstance(xml, bytes):
1363
- xml = xml.decode('utf-8')
1364
- xml = untangle.parse(StringIO(xml))
1365
- except:
1366
- traceback.print_exc()
1367
- raise AssertionError('Unable to parse:\n%s\nxml:\n%s' % (last, xml))
1368
- ret = xml.xml
1369
- ret.original_xml = last
1370
- return ret
1371
- else:
1372
- return last
1373
- if prev != last:
1374
- sys.stderr.write('Ignored message: %r\n' % (last,))
1375
- # Uncomment to know where in the stack it was ignored.
1376
- # import traceback
1377
- # traceback.print_stack(limit=7)
1378
-
1379
- prev = last
1380
-
1381
- def wait_for_untangled_message(self, accept_message, timeout=None, double_unquote=False):
1382
- import untangle
1383
- from io import StringIO
1384
- prev = None
1385
- while True:
1386
- last = self.get_next_message('wait_for_message', timeout=timeout)
1387
- last = unquote_plus(last)
1388
- if double_unquote:
1389
- last = unquote_plus(last)
1390
- # Extract xml with untangled.
1391
- xml = ''
1392
- try:
1393
- xml = last[last.index('<xml>'):]
1394
- except:
1395
- traceback.print_exc()
1396
- raise AssertionError('Unable to find xml in: %s' % (last,))
1397
-
1398
- try:
1399
- if isinstance(xml, bytes):
1400
- xml = xml.decode('utf-8')
1401
- xml = untangle.parse(StringIO(xml))
1402
- except:
1403
- traceback.print_exc()
1404
- raise AssertionError('Unable to parse:\n%s\nxml:\n%s' % (last, xml))
1405
- untangled = xml.xml
1406
- cmd_id = last.split('\t', 1)[0]
1407
- if accept_message(int(cmd_id), untangled):
1408
- return untangled
1409
- if prev != last:
1410
- print('Ignored message: %r' % (last,))
1411
-
1412
- prev = last
1413
-
1414
- def get_frame_names(self, thread_id):
1415
- self.write_get_thread_stack(thread_id)
1416
- msg = self.wait_for_message(CMD_GET_THREAD_STACK)
1417
- if msg.thread.frame:
1418
- frame_names = [frame['name'] for frame in msg.thread.frame]
1419
- return frame_names
1420
- return [msg.thread.frame['name']]
1421
-
1422
- def get_step_into_variants(self, thread_id, frame_id, start_line, end_line):
1423
- self.write("%s\t%s\t%s\t%s\t%s\t%s" % (CMD_GET_SMART_STEP_INTO_VARIANTS, self.next_seq(), thread_id, frame_id, start_line, end_line))
1424
- msg = self.wait_for_message(CMD_GET_SMART_STEP_INTO_VARIANTS)
1425
- if msg.variant:
1426
- variant_info = [
1427
- (variant['name'], variant['isVisited'], variant['line'], variant['callOrder'], variant['offset'], variant['childOffset'])
1428
- for variant in msg.variant
1429
- ]
1430
- return variant_info
1431
- return []
1432
-
1433
- def wait_for_thread_join(self, main_thread_id):
1434
-
1435
- def condition():
1436
- return self.get_frame_names(main_thread_id) in (
1437
- ['wait', 'join', '<module>'],
1438
- ['_wait_for_tstate_lock', 'join', '<module>'],
1439
- ['_wait_for_tstate_lock', 'join', '<module>', '_run_code', '_run_module_code', 'run_path'],
1440
- )
1441
-
1442
- def msg():
1443
- return 'Found stack: %s' % (self.get_frame_names(main_thread_id),)
1444
-
1445
- wait_for_condition(condition, msg, timeout=5, sleep=.5)
1446
-
1447
- def create_request_thread(self, full_url):
1448
-
1449
- class T(threading.Thread):
1450
-
1451
- def wait_for_contents(self):
1452
- for _ in range(10):
1453
- if hasattr(self, 'contents'):
1454
- break
1455
- time.sleep(.3)
1456
- else:
1457
- raise AssertionError('Unable to get contents from server. Url: %s' % (full_url,))
1458
- return self.contents
1459
-
1460
- def run(self):
1461
- try:
1462
- from urllib.request import urlopen
1463
- except ImportError:
1464
- from urllib import urlopen
1465
- for _ in range(10):
1466
- try:
1467
- stream = urlopen(full_url)
1468
- contents = stream.read()
1469
- contents = contents.decode('utf-8')
1470
- self.contents = contents
1471
- break
1472
- except IOError:
1473
- continue
1474
-
1475
- t = T()
1476
- t.daemon = True
1477
- return t
1478
-
1479
-
1480
- def _get_debugger_test_file(filename):
1481
- ret = os.path.abspath(os.path.join(os.path.dirname(__file__), filename))
1482
- if not os.path.exists(ret):
1483
- ret = os.path.join(os.path.dirname(__file__), 'resources', filename)
1484
- if not os.path.exists(ret):
1485
- raise AssertionError('Expected: %s to exist.' % (ret,))
1486
- return ret
1487
-
1488
-
1489
- def get_free_port():
1490
- from _pydev_bundle.pydev_localhost import get_socket_name
1491
- return get_socket_name(close=True)[1]