File: __init__.py

package info (click to toggle)
debugpy 1.6.6%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,264 kB
  • sloc: python: 13,833; sh: 244; makefile: 25
file content (37 lines) | stat: -rw-r--r-- 1,392 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See LICENSE in the project root
# for license information.

"""Makes sure that the code is run under debugger, using the appropriate method
to establish connection back to DebugSession in the test process, depending on
DebugSession.start_method used by the test.

This module MUST be imported, and setup() must be called, by all test scripts that
are run via debug.Session and the standard runners.
"""

__all__ = ["debugpy", "pydevd", "session_id"]

import os


# Used by backchannel.
session_id = int(os.getenv("DEBUGPY_TEST_SESSION_ID"))
name = "Debuggee-" + str(session_id)


# For non-blocking communication between the test and the debuggee. The debuggee
# can access this as a normal dict - scratchpad["foo"] etc. The test should assign
# to session.scratchpad[...], which will automatically perform "evaluate" requests
# as needed to assign the value.
scratchpad = {}


# Some runners require code to be executed in the debuggee process, either to set up
# the debug server, or to ensure that it doesn't run any other code until the debugger
# is attached. This provides a facility to inject such code.
def setup():
    _code = os.environ.pop("DEBUGPY_TEST_DEBUGGEE_SETUP", None)
    if _code:
        _code = compile(_code, "<DEBUGPY_TEST_DEBUGGEE_SETUP>", "exec")
        eval(_code, {})