debugpy 1.8.5__zip → 1.8.6__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 (339) hide show
  1. {debugpy-1.8.5/src/debugpy.egg-info → debugpy-1.8.6}/PKG-INFO +1 -1
  2. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py +19 -21
  3. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py +30 -30
  4. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py +3 -1
  5. debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +43 -0
  6. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py +35 -32
  7. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py +83 -84
  8. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py +92 -99
  9. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py +2 -3
  10. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py +51 -27
  11. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py +11 -7
  12. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py +6 -5
  13. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py +34 -38
  14. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py +71 -69
  15. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py +1 -3
  16. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py +0 -1
  17. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py +14 -16
  18. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py +81 -93
  19. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py +3 -3
  20. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py +9 -8
  21. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py +33 -25
  22. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py +183 -170
  23. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py +33 -29
  24. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py +6 -4
  25. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py +19 -18
  26. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py +3 -3
  27. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py +165 -138
  28. debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +77 -0
  29. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py +35 -36
  30. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py +22 -23
  31. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py +37 -57
  32. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py +54 -52
  33. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py +28 -37
  34. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py +56 -53
  35. debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +604 -0
  36. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json +551 -445
  37. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py +25 -29
  38. debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +17458 -0
  39. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py +11 -12
  40. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py +18 -19
  41. debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +41 -0
  42. debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +327 -0
  43. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py +263 -214
  44. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py +7 -10
  45. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py +187 -92
  46. debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py +105 -0
  47. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py +46 -51
  48. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py +239 -176
  49. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py +370 -297
  50. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py +78 -86
  51. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py +55 -59
  52. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py +194 -58
  53. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py +2 -3
  54. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py +18 -23
  55. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py +157 -127
  56. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py +10 -12
  57. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +35217 -23106
  58. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd +15 -0
  59. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx +802 -511
  60. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py +18 -7
  61. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py +32 -24
  62. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py +11 -13
  63. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py +16 -16
  64. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py +27 -2
  65. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py +1 -1
  66. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py +4 -5
  67. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py +8 -10
  68. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py +50 -45
  69. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py +462 -407
  70. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py +63 -61
  71. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py +14 -16
  72. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py +27 -25
  73. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py +40 -42
  74. debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +200 -0
  75. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py +20 -19
  76. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py +199 -108
  77. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py +121 -73
  78. debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +208 -0
  79. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py +206 -159
  80. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py +346 -334
  81. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py +75 -80
  82. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py +35 -35
  83. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py +116 -124
  84. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py +44 -58
  85. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py +51 -55
  86. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py +4 -2
  87. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py +24 -24
  88. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py +19 -20
  89. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py +45 -49
  90. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py +61 -58
  91. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py +23 -13
  92. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py +29 -31
  93. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py +41 -11
  94. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py +117 -55
  95. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py +11 -14
  96. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py +90 -89
  97. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py +106 -97
  98. debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +40 -0
  99. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py +56 -46
  100. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py +5 -5
  101. debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +71 -0
  102. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c +11165 -5326
  103. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py +5 -6
  104. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py +53 -56
  105. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py +1 -0
  106. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py +4 -6
  107. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py +6 -26
  108. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py +7 -21
  109. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py +5 -24
  110. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py +10 -34
  111. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py +1 -4
  112. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py +2 -6
  113. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py +3 -5
  114. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py +11 -31
  115. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py +2 -2
  116. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py +14 -41
  117. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py +2 -4
  118. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py +7 -18
  119. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py +6 -18
  120. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py +7 -18
  121. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py +1 -3
  122. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py +14 -19
  123. debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py +1927 -0
  124. debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c +43058 -0
  125. debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pxd +46 -0
  126. debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx +1934 -0
  127. debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/pydevd_sys_monitoring.py +16 -0
  128. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py +12 -11
  129. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_coverage.py +30 -32
  130. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhook.py +58 -54
  131. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py +20 -24
  132. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py +8 -7
  133. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py +8 -6
  134. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py +11 -8
  135. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py +21 -18
  136. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py +17 -15
  137. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt6.py +17 -15
  138. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py +6 -4
  139. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py +14 -10
  140. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py +30 -26
  141. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +24 -0
  142. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py +37 -34
  143. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_loaders.py +86 -73
  144. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +7 -7
  145. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydev_pysrc.py +1 -0
  146. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_run_in_console.py +23 -24
  147. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +267 -0
  148. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevconsole.py +55 -47
  149. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd.py +732 -508
  150. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +40 -0
  151. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py +1 -0
  152. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +11 -0
  153. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +75 -0
  154. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/add_code_to_python_process.py +130 -125
  155. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
  156. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
  157. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +89 -0
  158. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_script.py +41 -32
  159. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
  160. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
  161. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp +1 -0
  162. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp +9 -1
  163. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
  164. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
  165. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.exe +0 -0
  166. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
  167. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py +10 -9
  168. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
  169. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
  170. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
  171. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
  172. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py +103 -119
  173. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py +457 -516
  174. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py +33 -15
  175. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py +336 -281
  176. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py +101 -131
  177. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py +148 -153
  178. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py +310 -302
  179. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py +235 -208
  180. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py +185 -218
  181. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py +428 -564
  182. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py +54 -53
  183. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py +69 -73
  184. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py +158 -170
  185. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py +143 -213
  186. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py +302 -333
  187. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py +220 -239
  188. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py +198 -177
  189. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py +11 -11
  190. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py +1191 -713
  191. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py +248 -194
  192. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py +132 -120
  193. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py +450 -346
  194. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py +305 -286
  195. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +526 -0
  196. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py +1479 -1097
  197. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +579 -0
  198. debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +3517 -0
  199. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py +54 -31
  200. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py +170 -149
  201. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py +190 -108
  202. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py +542 -437
  203. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py +489 -442
  204. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py +83 -65
  205. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py +70 -76
  206. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp +17 -9
  207. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat +1 -1
  208. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_file_utils.py +141 -120
  209. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py +1 -0
  210. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py +175 -149
  211. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/__init__.py +1 -0
  212. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__init__.py +1 -0
  213. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py +5 -5
  214. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py +28 -28
  215. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py +22 -30
  216. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py +3 -2
  217. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py +130 -108
  218. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py +27 -14
  219. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_tracing.py +85 -66
  220. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/setup_pydevd_cython.py +96 -59
  221. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_version.py +3 -3
  222. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/messaging.py +2 -1
  223. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/server/cli.py +32 -17
  224. {debugpy-1.8.5 → debugpy-1.8.6/src/debugpy.egg-info}/PKG-INFO +1 -1
  225. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy.egg-info/SOURCES.txt +6 -1
  226. debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +0 -41
  227. debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +0 -76
  228. debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +0 -592
  229. debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +0 -19514
  230. debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +0 -19
  231. debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +0 -153
  232. debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +0 -204
  233. debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +0 -91
  234. debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_api.py +0 -62
  235. debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +0 -41
  236. debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +0 -48
  237. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +0 -23
  238. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydev_pysrc.py +0 -1
  239. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +0 -237
  240. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +0 -32
  241. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +0 -9
  242. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +0 -74
  243. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
  244. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
  245. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +0 -79
  246. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
  247. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
  248. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
  249. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
  250. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
  251. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
  252. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
  253. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
  254. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
  255. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +0 -507
  256. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +0 -539
  257. debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +0 -3435
  258. {debugpy-1.8.5 → debugpy-1.8.6}/DESCRIPTION.md +0 -0
  259. {debugpy-1.8.5 → debugpy-1.8.6}/LICENSE +0 -0
  260. {debugpy-1.8.5 → debugpy-1.8.6}/MANIFEST.in +0 -0
  261. {debugpy-1.8.5 → debugpy-1.8.6}/README.md +0 -0
  262. {debugpy-1.8.5 → debugpy-1.8.6}/pyproject.toml +0 -0
  263. {debugpy-1.8.5 → debugpy-1.8.6}/setup.cfg +0 -0
  264. {debugpy-1.8.5 → debugpy-1.8.6}/setup.py +0 -0
  265. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/ThirdPartyNotices.txt +0 -0
  266. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/__init__.py +0 -0
  267. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/__main__.py +0 -0
  268. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/__init__.py +0 -0
  269. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/_pydevd_packaging.py +0 -0
  270. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/_util.py +0 -0
  271. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/force_pydevd.py +0 -0
  272. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py +0 -0
  273. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py +0 -0
  274. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py +0 -0
  275. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py +0 -0
  276. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json +0 -0
  277. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py +0 -0
  278. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore +0 -0
  279. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py +0 -0
  280. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd +0 -0
  281. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pyx +0 -0
  282. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx +0 -0
  283. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h +0 -0
  284. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt +0 -0
  285. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py +0 -0
  286. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/README +0 -0
  287. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py +0 -0
  288. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt +0 -0
  289. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt +0 -0
  290. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp +0 -0
  291. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_310.hpp +0 -0
  292. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_311.hpp +0 -0
  293. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_common.hpp +0 -0
  294. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp +0 -0
  295. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h +0 -0
  296. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp +0 -0
  297. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore +0 -0
  298. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp +0 -0
  299. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh +0 -0
  300. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh +0 -0
  301. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd +0 -0
  302. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h +0 -0
  303. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp +0 -0
  304. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp +0 -0
  305. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp +0 -0
  306. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp +0 -0
  307. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp +0 -0
  308. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h +0 -0
  309. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h +0 -0
  310. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md +0 -0
  311. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/__init__.py +0 -0
  312. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/__main__.py +0 -0
  313. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/clients.py +0 -0
  314. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/components.py +0 -0
  315. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/launchers.py +0 -0
  316. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/servers.py +0 -0
  317. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/sessions.py +0 -0
  318. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/__init__.py +0 -0
  319. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/json.py +0 -0
  320. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/log.py +0 -0
  321. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/singleton.py +0 -0
  322. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/sockets.py +0 -0
  323. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/stacks.py +0 -0
  324. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/timestamp.py +0 -0
  325. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/util.py +0 -0
  326. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/__init__.py +0 -0
  327. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/__main__.py +0 -0
  328. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/debuggee.py +0 -0
  329. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/handlers.py +0 -0
  330. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/output.py +0 -0
  331. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/winapi.py +0 -0
  332. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/public_api.py +0 -0
  333. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/server/__init__.py +0 -0
  334. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/server/api.py +0 -0
  335. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/server/attach_pid_injected.py +0 -0
  336. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy.egg-info/dependency_links.txt +0 -0
  337. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy.egg-info/entry_points.txt +0 -0
  338. {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy.egg-info/top_level.txt +0 -0
  339. {debugpy-1.8.5 → debugpy-1.8.6}/versioneer.py +0 -0
@@ -39,7 +39,7 @@ from __future__ import with_statement
39
39
 
40
40
  __revision__ = "$Id$"
41
41
 
42
- __all__ = ['Registry']
42
+ __all__ = ["Registry"]
43
43
 
44
44
  import sys
45
45
  from winappdbg import win32
@@ -47,9 +47,10 @@ from winappdbg import compat
47
47
  import collections
48
48
  import warnings
49
49
 
50
- #==============================================================================
50
+ # ==============================================================================
51
51
 
52
- class _RegistryContainer (object):
52
+
53
+ class _RegistryContainer(object):
53
54
  """
54
55
  Base class for L{Registry} and L{RegistryKey}.
55
56
  """
@@ -57,6 +58,7 @@ class _RegistryContainer (object):
57
58
  # Dummy object to detect empty arguments.
58
59
  class __EmptyArgument:
59
60
  pass
61
+
60
62
  __emptyArgument = __EmptyArgument()
61
63
 
62
64
  def __init__(self):
@@ -79,9 +81,11 @@ class _RegistryContainer (object):
79
81
  def __iter__(self):
80
82
  return compat.iterkeys(self)
81
83
 
82
- #==============================================================================
83
84
 
84
- class RegistryKey (_RegistryContainer):
85
+ # ==============================================================================
86
+
87
+
88
+ class RegistryKey(_RegistryContainer):
85
89
  """
86
90
  Exposes a single Windows Registry key as a dictionary-like object.
87
91
 
@@ -103,9 +107,9 @@ class RegistryKey (_RegistryContainer):
103
107
  @param handle: Registry key handle.
104
108
  """
105
109
  super(RegistryKey, self).__init__()
106
- if path.endswith('\\'):
110
+ if path.endswith("\\"):
107
111
  path = path[:-1]
108
- self._path = path
112
+ self._path = path
109
113
  self._handle = handle
110
114
 
111
115
  @property
@@ -114,12 +118,12 @@ class RegistryKey (_RegistryContainer):
114
118
 
115
119
  @property
116
120
  def handle(self):
117
- #if not self._handle:
121
+ # if not self._handle:
118
122
  # msg = "This Registry key handle has already been closed."
119
123
  # raise RuntimeError(msg)
120
124
  return self._handle
121
125
 
122
- #def close(self):
126
+ # def close(self):
123
127
  # """
124
128
  # Close the Registry key handle, freeing its resources. It cannot be
125
129
  # used again after calling this method.
@@ -131,13 +135,13 @@ class RegistryKey (_RegistryContainer):
131
135
  # """
132
136
  # self.handle.close()
133
137
  #
134
- #def __enter__(self):
138
+ # def __enter__(self):
135
139
  # """
136
140
  # Compatibility with the "C{with}" Python statement.
137
141
  # """
138
142
  # return self
139
143
  #
140
- #def __exit__(self, type, value, traceback):
144
+ # def __exit__(self, type, value, traceback):
141
145
  # """
142
146
  # Compatibility with the "C{with}" Python statement.
143
147
  # """
@@ -236,7 +240,7 @@ class RegistryKey (_RegistryContainer):
236
240
  resp = win32.RegEnumValue(handle, index)
237
241
  if resp is None:
238
242
  break
239
- items.append( (resp[0], resp[2]) )
243
+ items.append((resp[0], resp[2]))
240
244
  index += 1
241
245
  return items
242
246
 
@@ -281,11 +285,11 @@ class RegistryKey (_RegistryContainer):
281
285
  win32.RegDeleteValue(handle, resp[0])
282
286
 
283
287
  def __str__(self):
284
- default = self['']
288
+ default = self[""]
285
289
  return str(default)
286
290
 
287
291
  def __unicode__(self):
288
- default = self[u'']
292
+ default = self[""]
289
293
  return compat.unicode(default)
290
294
 
291
295
  def __repr__(self):
@@ -322,7 +326,7 @@ class RegistryKey (_RegistryContainer):
322
326
  subkey = win32.RegEnumKey(handle, index)
323
327
  if subkey is None:
324
328
  break
325
- result.append( self.child(subkey) )
329
+ result.append(self.child(subkey))
326
330
  index += 1
327
331
  return result
328
332
 
@@ -336,7 +340,7 @@ class RegistryKey (_RegistryContainer):
336
340
  @rtype: L{RegistryKey}
337
341
  @return: Subkey.
338
342
  """
339
- path = self._path + '\\' + subkey
343
+ path = self._path + "\\" + subkey
340
344
  handle = win32.RegOpenKey(self.handle, subkey)
341
345
  return RegistryKey(path, handle)
342
346
 
@@ -352,7 +356,8 @@ class RegistryKey (_RegistryContainer):
352
356
  """
353
357
  win32.RegFlushKey(self.handle)
354
358
 
355
- #==============================================================================
359
+
360
+ # ==============================================================================
356
361
 
357
362
  # TODO: possibly cache the RegistryKey objects
358
363
  # to avoid opening and closing handles many times on code sequences like this:
@@ -372,7 +377,8 @@ class RegistryKey (_RegistryContainer):
372
377
  # Apparently RegDeleteTree won't work remotely from Win7 to WinXP, and the only
373
378
  # solution is to recursively call RegDeleteKey.
374
379
 
375
- class Registry (_RegistryContainer):
380
+
381
+ class Registry(_RegistryContainer):
376
382
  """
377
383
  Exposes the Windows Registry as a Python container.
378
384
 
@@ -382,36 +388,34 @@ class Registry (_RegistryContainer):
382
388
  """
383
389
 
384
390
  _hives_by_name = {
385
-
386
391
  # Short names
387
- 'HKCR' : win32.HKEY_CLASSES_ROOT,
388
- 'HKCU' : win32.HKEY_CURRENT_USER,
389
- 'HKLM' : win32.HKEY_LOCAL_MACHINE,
390
- 'HKU' : win32.HKEY_USERS,
391
- 'HKPD' : win32.HKEY_PERFORMANCE_DATA,
392
- 'HKCC' : win32.HKEY_CURRENT_CONFIG,
393
-
392
+ "HKCR": win32.HKEY_CLASSES_ROOT,
393
+ "HKCU": win32.HKEY_CURRENT_USER,
394
+ "HKLM": win32.HKEY_LOCAL_MACHINE,
395
+ "HKU": win32.HKEY_USERS,
396
+ "HKPD": win32.HKEY_PERFORMANCE_DATA,
397
+ "HKCC": win32.HKEY_CURRENT_CONFIG,
394
398
  # Long names
395
- 'HKEY_CLASSES_ROOT' : win32.HKEY_CLASSES_ROOT,
396
- 'HKEY_CURRENT_USER' : win32.HKEY_CURRENT_USER,
397
- 'HKEY_LOCAL_MACHINE' : win32.HKEY_LOCAL_MACHINE,
398
- 'HKEY_USERS' : win32.HKEY_USERS,
399
- 'HKEY_PERFORMANCE_DATA' : win32.HKEY_PERFORMANCE_DATA,
400
- 'HKEY_CURRENT_CONFIG' : win32.HKEY_CURRENT_CONFIG,
399
+ "HKEY_CLASSES_ROOT": win32.HKEY_CLASSES_ROOT,
400
+ "HKEY_CURRENT_USER": win32.HKEY_CURRENT_USER,
401
+ "HKEY_LOCAL_MACHINE": win32.HKEY_LOCAL_MACHINE,
402
+ "HKEY_USERS": win32.HKEY_USERS,
403
+ "HKEY_PERFORMANCE_DATA": win32.HKEY_PERFORMANCE_DATA,
404
+ "HKEY_CURRENT_CONFIG": win32.HKEY_CURRENT_CONFIG,
401
405
  }
402
406
 
403
407
  _hives_by_value = {
404
- win32.HKEY_CLASSES_ROOT : 'HKEY_CLASSES_ROOT',
405
- win32.HKEY_CURRENT_USER : 'HKEY_CURRENT_USER',
406
- win32.HKEY_LOCAL_MACHINE : 'HKEY_LOCAL_MACHINE',
407
- win32.HKEY_USERS : 'HKEY_USERS',
408
- win32.HKEY_PERFORMANCE_DATA : 'HKEY_PERFORMANCE_DATA',
409
- win32.HKEY_CURRENT_CONFIG : 'HKEY_CURRENT_CONFIG',
408
+ win32.HKEY_CLASSES_ROOT: "HKEY_CLASSES_ROOT",
409
+ win32.HKEY_CURRENT_USER: "HKEY_CURRENT_USER",
410
+ win32.HKEY_LOCAL_MACHINE: "HKEY_LOCAL_MACHINE",
411
+ win32.HKEY_USERS: "HKEY_USERS",
412
+ win32.HKEY_PERFORMANCE_DATA: "HKEY_PERFORMANCE_DATA",
413
+ win32.HKEY_CURRENT_CONFIG: "HKEY_CURRENT_CONFIG",
410
414
  }
411
415
 
412
416
  _hives = sorted(compat.itervalues(_hives_by_value))
413
417
 
414
- def __init__(self, machine = None):
418
+ def __init__(self, machine=None):
415
419
  """
416
420
  Opens a local or remote registry.
417
421
 
@@ -443,14 +447,14 @@ class Registry (_RegistryContainer):
443
447
  - L{win32.HKEY_PERFORMANCE_DATA}
444
448
  - L{win32.HKEY_CURRENT_CONFIG}
445
449
  """
446
- if '\\' in path:
447
- p = path.find('\\')
450
+ if "\\" in path:
451
+ p = path.find("\\")
448
452
  hive = path[:p]
449
- path = path[p+1:]
453
+ path = path[p + 1 :]
450
454
  else:
451
455
  hive = path
452
456
  path = None
453
- handle = self._hives_by_name[ hive.upper() ]
457
+ handle = self._hives_by_name[hive.upper()]
454
458
  return handle, path
455
459
 
456
460
  def _parse_path(self, path):
@@ -492,7 +496,7 @@ class Registry (_RegistryContainer):
492
496
  """
493
497
  path = self._hives_by_value[hive]
494
498
  if subkey:
495
- path = path + '\\' + subkey
499
+ path = path + "\\" + subkey
496
500
  return path
497
501
 
498
502
  def _sanitize_path(self, path):
@@ -505,7 +509,7 @@ class Registry (_RegistryContainer):
505
509
  @rtype: str
506
510
  @return: Registry path.
507
511
  """
508
- return self._join_path( *self._split_path(path) )
512
+ return self._join_path(*self._split_path(path))
509
513
 
510
514
  def _connect_hive(self, hive):
511
515
  """
@@ -560,7 +564,7 @@ class Registry (_RegistryContainer):
560
564
  def __repr__(self):
561
565
  if self._machine:
562
566
  return '<Remote Registry at "%s">' % self._machine
563
- return '<Local Registry>'
567
+ return "<Local Registry>"
564
568
 
565
569
  def __contains__(self, path):
566
570
  hive, subpath = self._parse_path(path)
@@ -587,8 +591,7 @@ class Registry (_RegistryContainer):
587
591
 
588
592
  def __setitem__(self, path, value):
589
593
  do_copy = isinstance(value, RegistryKey)
590
- if not do_copy and not isinstance(value, str) \
591
- and not isinstance(value, compat.unicode):
594
+ if not do_copy and not isinstance(value, str) and not isinstance(value, compat.unicode):
592
595
  if isinstance(value, object):
593
596
  t = value.__class__.__name__
594
597
  else:
@@ -606,9 +609,7 @@ class Registry (_RegistryContainer):
606
609
  def __delitem__(self, path):
607
610
  hive, subpath = self._parse_path(path)
608
611
  if not subpath:
609
- raise TypeError(
610
- "Are you SURE you want to wipe out an entire hive?!"
611
- " Call win32.RegDeleteTree() directly if you must...")
612
+ raise TypeError("Are you SURE you want to wipe out an entire hive?!" " Call win32.RegDeleteTree() directly if you must...")
612
613
  try:
613
614
  win32.RegDeleteTree(hive, subpath)
614
615
  except WindowsError:
@@ -666,7 +667,7 @@ class Registry (_RegistryContainer):
666
667
 
667
668
  @raise KeyError: The specified path does not exist.
668
669
  """
669
- if path.endswith('\\'):
670
+ if path.endswith("\\"):
670
671
  path = path[:-1]
671
672
  if not self.has_key(path):
672
673
  raise KeyError(path)
@@ -690,6 +691,6 @@ class Registry (_RegistryContainer):
690
691
  subkeys = self.subkeys(path)
691
692
  except WindowsError:
692
693
  continue
693
- prefix = path + '\\'
694
+ prefix = path + "\\"
694
695
  subkeys = [prefix + name for name in subkeys]
695
696
  stack.extendleft(subkeys)
@@ -43,14 +43,14 @@ Process memory search.
43
43
 
44
44
  __revision__ = "$Id$"
45
45
 
46
- __all__ = [
47
- 'Search',
48
- 'Pattern',
49
- 'BytePattern',
50
- 'TextPattern',
51
- 'RegExpPattern',
52
- 'HexPattern',
53
- ]
46
+ __all__ = [
47
+ "Search",
48
+ "Pattern",
49
+ "BytePattern",
50
+ "TextPattern",
51
+ "RegExpPattern",
52
+ "HexPattern",
53
+ ]
54
54
 
55
55
  from winappdbg.textio import HexInput
56
56
  from winappdbg.util import StaticClass, MemoryAddresses
@@ -64,9 +64,10 @@ try:
64
64
  except ImportError:
65
65
  import re
66
66
 
67
- #==============================================================================
67
+ # ==============================================================================
68
68
 
69
- class Pattern (object):
69
+
70
+ class Pattern(object):
70
71
  """
71
72
  Base class for search patterns.
72
73
 
@@ -116,7 +117,7 @@ class Pattern (object):
116
117
  """
117
118
  return process.read(address, size)
118
119
 
119
- def find(self, buffer, pos = None):
120
+ def find(self, buffer, pos=None):
120
121
  """
121
122
  Searches for the pattern in the given buffer, optionally starting at
122
123
  the given position within the buffer.
@@ -169,9 +170,11 @@ class Pattern (object):
169
170
  """
170
171
  return (address, size, data)
171
172
 
172
- #------------------------------------------------------------------------------
173
173
 
174
- class BytePattern (Pattern):
174
+ # ------------------------------------------------------------------------------
175
+
176
+
177
+ class BytePattern(Pattern):
175
178
  """
176
179
  Fixed byte pattern.
177
180
 
@@ -188,7 +191,7 @@ class BytePattern (Pattern):
188
191
  @param pattern: Byte string to search for.
189
192
  """
190
193
  self.pattern = str(pattern)
191
- self.length = len(pattern)
194
+ self.length = len(pattern)
192
195
 
193
196
  def __len__(self):
194
197
  """
@@ -198,14 +201,16 @@ class BytePattern (Pattern):
198
201
  """
199
202
  return self.length
200
203
 
201
- def find(self, buffer, pos = None):
204
+ def find(self, buffer, pos=None):
202
205
  return buffer.find(self.pattern, pos), self.length
203
206
 
204
- #------------------------------------------------------------------------------
207
+
208
+ # ------------------------------------------------------------------------------
205
209
 
206
210
  # FIXME: case insensitive compat.unicode searches are probably buggy!
207
211
 
208
- class TextPattern (BytePattern):
212
+
213
+ class TextPattern(BytePattern):
209
214
  """
210
215
  Text pattern.
211
216
 
@@ -223,7 +228,7 @@ class TextPattern (BytePattern):
223
228
  C{False} otherwise.
224
229
  """
225
230
 
226
- def __init__(self, text, encoding = "utf-16le", caseSensitive = False):
231
+ def __init__(self, text, encoding="utf-16le", caseSensitive=False):
227
232
  """
228
233
  @type text: str or compat.unicode
229
234
  @param text: Text to search for.
@@ -270,13 +275,15 @@ class TextPattern (BytePattern):
270
275
  try:
271
276
  data = compat.unicode(data, self.encoding)
272
277
  except Exception:
273
- ## traceback.print_exc() # XXX DEBUG
278
+ ## traceback.print_exc() # XXX DEBUG
274
279
  return None
275
280
  return (address, size, data)
276
281
 
277
- #------------------------------------------------------------------------------
278
282
 
279
- class RegExpPattern (Pattern):
283
+ # ------------------------------------------------------------------------------
284
+
285
+
286
+ class RegExpPattern(Pattern):
280
287
  """
281
288
  Regular expression pattern.
282
289
 
@@ -305,7 +312,7 @@ class RegExpPattern (Pattern):
305
312
  buffered search.
306
313
  """
307
314
 
308
- def __init__(self, regexp, flags = 0, maxLength = None):
315
+ def __init__(self, regexp, flags=0, maxLength=None):
309
316
  """
310
317
  @type regexp: str
311
318
  @param regexp: Regular expression string.
@@ -327,9 +334,9 @@ class RegExpPattern (Pattern):
327
334
  cause an exception to be raised if this pattern is used in a
328
335
  buffered search.
329
336
  """
330
- self.pattern = regexp
331
- self.flags = flags
332
- self.regexp = re.compile(regexp, flags)
337
+ self.pattern = regexp
338
+ self.flags = flags
339
+ self.regexp = re.compile(regexp, flags)
333
340
  self.maxLength = maxLength
334
341
 
335
342
  def __len__(self):
@@ -350,8 +357,8 @@ class RegExpPattern (Pattern):
350
357
  raise NotImplementedError()
351
358
  return self.maxLength
352
359
 
353
- def find(self, buffer, pos = None):
354
- if not pos: # make sure pos is an int
360
+ def find(self, buffer, pos=None):
361
+ if not pos: # make sure pos is an int
355
362
  pos = 0
356
363
  match = self.regexp.search(buffer, pos)
357
364
  if match:
@@ -359,9 +366,11 @@ class RegExpPattern (Pattern):
359
366
  return start, end - start
360
367
  return -1, 0
361
368
 
362
- #------------------------------------------------------------------------------
363
369
 
364
- class HexPattern (RegExpPattern):
370
+ # ------------------------------------------------------------------------------
371
+
372
+
373
+ class HexPattern(RegExpPattern):
365
374
  """
366
375
  Hexadecimal pattern.
367
376
 
@@ -386,8 +395,8 @@ class HexPattern (RegExpPattern):
386
395
  L{BytePattern} is created instead. That's because searching for a
387
396
  fixed byte pattern is faster than searching for a regular expression.
388
397
  """
389
- if '?' not in pattern:
390
- return BytePattern( HexInput.hexadecimal(pattern) )
398
+ if "?" not in pattern:
399
+ return BytePattern(HexInput.hexadecimal(pattern))
391
400
  return object.__new__(cls, pattern)
392
401
 
393
402
  def __init__(self, hexa):
@@ -406,14 +415,14 @@ class HexPattern (RegExpPattern):
406
415
  @type hexa: str
407
416
  @param hexa: Pattern to search for.
408
417
  """
409
- maxLength = len([x for x in hexa
410
- if x in "?0123456789ABCDEFabcdef"]) / 2
411
- super(HexPattern, self).__init__(HexInput.pattern(hexa),
412
- maxLength = maxLength)
418
+ maxLength = len([x for x in hexa if x in "?0123456789ABCDEFabcdef"]) / 2
419
+ super(HexPattern, self).__init__(HexInput.pattern(hexa), maxLength=maxLength)
413
420
 
414
- #==============================================================================
415
421
 
416
- class Search (StaticClass):
422
+ # ==============================================================================
423
+
424
+
425
+ class Search(StaticClass):
417
426
  """
418
427
  Static class to group the search functionality.
419
428
 
@@ -426,10 +435,7 @@ class Search (StaticClass):
426
435
  # TODO: search non-ascii C strings
427
436
 
428
437
  @staticmethod
429
- def search_process(process, pattern, minAddr = None,
430
- maxAddr = None,
431
- bufferPages = None,
432
- overlapping = False):
438
+ def search_process(process, pattern, minAddr=None, maxAddr=None, bufferPages=None, overlapping=False):
433
439
  """
434
440
  Search for the given pattern within the process memory.
435
441
 
@@ -517,38 +523,35 @@ class Search (StaticClass):
517
523
  # Calculate the buffer size from the number of pages.
518
524
  if bufferPages is None:
519
525
  try:
520
- size = MemoryAddresses.\
521
- align_address_to_page_end(len(pattern)) + page
526
+ size = MemoryAddresses.align_address_to_page_end(len(pattern)) + page
522
527
  except NotImplementedError:
523
528
  size = None
524
529
  elif bufferPages > 0:
525
- size = page * (bufferPages + 1)
530
+ size = page * (bufferPages + 1)
526
531
  else:
527
- size = None
532
+ size = None
528
533
 
529
534
  # Get the memory map of the process.
530
535
  memory_map = process.iter_memory_map(minAddr, maxAddr)
531
536
 
532
537
  # Perform search with buffering enabled.
533
538
  if size:
534
-
535
539
  # Loop through all memory blocks containing data.
536
- buffer = "" # buffer to hold the memory data
537
- prev_addr = 0 # previous memory block address
538
- last = 0 # position of the last match
539
- delta = 0 # delta of last read address and start of buffer
540
+ buffer = "" # buffer to hold the memory data
541
+ prev_addr = 0 # previous memory block address
542
+ last = 0 # position of the last match
543
+ delta = 0 # delta of last read address and start of buffer
540
544
  for mbi in memory_map:
541
-
542
545
  # Skip blocks with no data to search on.
543
546
  if not mbi.has_content():
544
547
  continue
545
548
 
546
549
  # Get the address and size of this block.
547
- address = mbi.BaseAddress # current address to search on
548
- block_size = mbi.RegionSize # total size of the block
550
+ address = mbi.BaseAddress # current address to search on
551
+ block_size = mbi.RegionSize # total size of the block
549
552
  if address >= maxAddr:
550
553
  break
551
- end = address + block_size # end address of the block
554
+ end = address + block_size # end address of the block
552
555
 
553
556
  # If the block is contiguous to the previous block,
554
557
  # coalesce the new data in the buffer.
@@ -558,20 +561,17 @@ class Search (StaticClass):
558
561
  # If not, clear the buffer and read new data.
559
562
  else:
560
563
  buffer = read(process, address, min(size, block_size))
561
- last = 0
562
- delta = 0
564
+ last = 0
565
+ delta = 0
563
566
 
564
567
  # Search for the pattern in this block.
565
568
  while 1:
566
-
567
569
  # Yield each match of the pattern in the buffer.
568
570
  pos, length = find(buffer, last)
569
571
  while pos >= last:
570
572
  match_addr = address + pos - delta
571
573
  if minAddr <= match_addr < maxAddr:
572
- result = pattern.found(
573
- match_addr, length,
574
- buffer [ pos : pos + length ] )
574
+ result = pattern.found(match_addr, length, buffer[pos : pos + length])
575
575
  if result is not None:
576
576
  yield result
577
577
  if overlapping:
@@ -581,9 +581,9 @@ class Search (StaticClass):
581
581
  pos, length = find(buffer, last)
582
582
 
583
583
  # Advance to the next page.
584
- address = address + page
584
+ address = address + page
585
585
  block_size = block_size - page
586
- prev_addr = address
586
+ prev_addr = address
587
587
 
588
588
  # Fix the position of the last match.
589
589
  last = last - page
@@ -591,8 +591,8 @@ class Search (StaticClass):
591
591
  last = 0
592
592
 
593
593
  # Remove the first page in the buffer.
594
- buffer = buffer[ page : ]
595
- delta = page
594
+ buffer = buffer[page:]
595
+ delta = page
596
596
 
597
597
  # If we haven't reached the end of the block yet,
598
598
  # read the next page in the block and keep seaching.
@@ -605,19 +605,17 @@ class Search (StaticClass):
605
605
 
606
606
  # Perform search with buffering disabled.
607
607
  else:
608
-
609
608
  # Loop through all memory blocks containing data.
610
609
  for mbi in memory_map:
611
-
612
610
  # Skip blocks with no data to search on.
613
611
  if not mbi.has_content():
614
612
  continue
615
613
 
616
614
  # Get the address and size of this block.
617
- address = mbi.BaseAddress
615
+ address = mbi.BaseAddress
618
616
  block_size = mbi.RegionSize
619
617
  if address >= maxAddr:
620
- break;
618
+ break
621
619
 
622
620
  # Read the whole memory region.
623
621
  buffer = process.read(address, block_size)
@@ -628,9 +626,7 @@ class Search (StaticClass):
628
626
  while pos >= last:
629
627
  match_addr = address + pos
630
628
  if minAddr <= match_addr < maxAddr:
631
- result = pattern.found(
632
- match_addr, length,
633
- buffer [ pos : pos + length ] )
629
+ result = pattern.found(match_addr, length, buffer[pos : pos + length])
634
630
  if result is not None:
635
631
  yield result
636
632
  if overlapping:
@@ -640,7 +636,7 @@ class Search (StaticClass):
640
636
  pos, length = find(buffer, last)
641
637
 
642
638
  @classmethod
643
- def extract_ascii_strings(cls, process, minSize = 4, maxSize = 1024):
639
+ def extract_ascii_strings(cls, process, minSize=4, maxSize=1024):
644
640
  """
645
641
  Extract ASCII strings from the process memory.
646
642
 
@@ -662,4 +658,4 @@ class Search (StaticClass):
662
658
  """
663
659
  regexp = r"[\s\w\!\@\#\$\%%\^\&\*\(\)\{\}\[\]\~\`\'\"\:\;\.\,\\\/\-\+\=\_\<\>]{%d,%d}\0" % (minSize, maxSize)
664
660
  pattern = RegExpPattern(regexp, 0, maxSize)
665
- return cls.search_process(process, pattern, overlapping = False)
661
+ return cls.search_process(process, pattern, overlapping=False)