async def METHOD_NAME(
    field_set: PythonSourceFieldSet,
    debugpy: DebugPy,
    debug_adapter: DebugAdapterSubsystem,
    pex_env: PexEnvironment,
    python_setup: PythonSetup,
) -> RunDebugAdapterRequest:
    debugpy_pex = await Get(
        # NB: We fold the debugpy PEX into the normally constructed VenvPex so that debugpy is in the
        # venv, but isn't the main entrypoint. Then we use PEX_* env vars to dynamically have debugpy
        # be invoked in that VenvPex. Hence, a vanilla Pex.
        Pex,
        PexRequest,
        debugpy.to_pex_request(
            interpreter_constraints=InterpreterConstraints.create_from_compatibility_fields(
                [field_set.interpreter_constraints], python_setup
            )
        ),
    )
    run_in_sandbox = field_set.should_use_sandbox(python_setup)
    run_request = await _create_python_source_run_request(
        field_set.address,
        entry_point_field=PexEntryPointField(field_set.source.value, field_set.address),
        pex_env=pex_env,
        pex_path=[debugpy_pex],
        run_in_sandbox=run_in_sandbox,
    )
    return await _create_python_source_run_dap_request(
        run_request,
        debugpy=debugpy,
        debug_adapter=debug_adapter,
        run_in_sandbox=run_in_sandbox,
    )