|
| 1 | +import sys |
1 | 2 | import os
|
2 | 3 | import re
|
3 | 4 | import threading
|
@@ -265,7 +266,8 @@ class Debugger:
|
265 | 266 |
|
266 | 267 | # Requests that can be handled even if the debugger is not running
|
267 | 268 | static_debug_msg_types = [
|
268 |
| - 'debugInfo', 'inspectVariables', 'richInspectVariables' |
| 269 | + 'debugInfo', 'inspectVariables', |
| 270 | + 'richInspectVariables', 'modules' |
269 | 271 | ]
|
270 | 272 |
|
271 | 273 | def __init__(self, log, debugpy_stream, event_callback, shell_socket, session):
|
@@ -591,6 +593,20 @@ async def richInspectVariables(self, message):
|
591 | 593 | reply["success"] = True
|
592 | 594 | return reply
|
593 | 595 |
|
| 596 | + async def modules(self, message): |
| 597 | + modules = list(sys.modules.values()) |
| 598 | + startModule = message.get('startModule', 0) |
| 599 | + moduleCount = message.get('moduleCount', len(modules)) |
| 600 | + mods = [] |
| 601 | + for i in range(startModule, moduleCount): |
| 602 | + module = modules[i] |
| 603 | + filename = getattr(getattr(module, "__spec__", None), "origin", None) |
| 604 | + if filename and filename.endswith(".py"): |
| 605 | + mods.append({module.__name__: filename}) |
| 606 | + |
| 607 | + reply = {"body": {"modules": mods, "totalModules": len(modules)}} |
| 608 | + return reply |
| 609 | + |
594 | 610 | async def process_request(self, message):
|
595 | 611 | reply = {}
|
596 | 612 |
|
|
0 commit comments