Skip to content
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions dapr/aio/clients/grpc/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@
GetMetadataResponse,
GetSecretResponse,
InvokeMethodResponse,
MetadataMCPServer,
QueryResponse,
QueryResponseItem,
RegisteredComponents,
Expand Down Expand Up @@ -1723,13 +1724,15 @@ async def get_metadata(self) -> GetMetadataResponse:
for i in response.registered_components
]
extended_metadata = dict(response.extended_metadata.items())
mcp_servers = [MetadataMCPServer(name=s.name) for s in response.mcp_servers]

return GetMetadataResponse(
application_id=response.id,
active_actors_count=active_actors_count,
registered_components=registered_components,
extended_metadata=extended_metadata,
headers=await call.initial_metadata(),
mcp_servers=mcp_servers,
)

async def schedule_job_alpha1(self, job: Job, overwrite: bool = False) -> DaprResponse:
Expand Down
16 changes: 16 additions & 0 deletions dapr/clients/grpc/_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -956,6 +956,7 @@ def __init__(
registered_components: Sequence[RegisteredComponents],
extended_metadata: Dict[str, str],
headers: MetadataTuple = (),
mcp_servers: Optional[Sequence['MetadataMCPServer']] = None,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
mcp_servers: Optional[Sequence['MetadataMCPServer']] = None,
mcp_servers: Optional[Sequence[MetadataMCPServer]] = None,

):
"""Initializes GetMetadataResponse.

Expand All @@ -968,12 +969,15 @@ def __init__(
extended_metadata (Dict[str, str]): mapping of custom (extended)
attributes to their respective values.
headers (Tuple, optional): the headers from Dapr gRPC response.
mcp_servers (Sequence[MetadataMCPServer], optional): list of
loaded MCPServer resources.
"""
super().__init__(headers)
self._application_id = application_id
self._active_actors_count = active_actors_count
self._registered_components = registered_components
self._extended_metadata = extended_metadata
self._mcp_servers = mcp_servers or []

@property
def application_id(self) -> str:
Expand All @@ -995,6 +999,11 @@ def extended_metadata(self) -> Dict[str, str]:
"""Mapping of custom (extended) attributes to their respective values."""
return self._extended_metadata

@property
def mcp_servers(self) -> Sequence['MetadataMCPServer']:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
def mcp_servers(self) -> Sequence['MetadataMCPServer']:
def mcp_servers(self) -> Sequence[MetadataMCPServer]:

"""List of loaded MCPServer resources."""
return self._mcp_servers


class RegisteredComponents(NamedTuple):
"""Describes a loaded Dapr component."""
Expand All @@ -1012,6 +1021,13 @@ class RegisteredComponents(NamedTuple):
"""Supported capabilities for this component type and version."""


class MetadataMCPServer(NamedTuple):
"""Describes a loaded Dapr MCPServer resource."""

name: str
"""Name of the MCPServer resource."""


class CryptoResponse(DaprResponse, Generic[TCryptoResponse]):
"""An iterable of cryptography API responses."""

Expand Down
3 changes: 3 additions & 0 deletions dapr/clients/grpc/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
GetMetadataResponse,
GetSecretResponse,
InvokeMethodResponse,
MetadataMCPServer,
QueryResponse,
QueryResponseItem,
RegisteredComponents,
Expand Down Expand Up @@ -1828,13 +1829,15 @@ def get_metadata(self) -> GetMetadataResponse:
for i in response.registered_components
]
extended_metadata = dict(response.extended_metadata.items())
mcp_servers = [MetadataMCPServer(name=s.name) for s in response.mcp_servers]

return GetMetadataResponse(
application_id=response.id,
active_actors_count=active_actors_count,
registered_components=registered_components,
extended_metadata=extended_metadata,
headers=call.initial_metadata(),
mcp_servers=mcp_servers,
)

def set_metadata(self, attributeName: str, attributeValue: str) -> DaprResponse:
Expand Down
35 changes: 32 additions & 3 deletions dapr/proto/common/v1/common_pb2.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ import builtins as _builtins
import sys
import typing as _typing

if sys.version_info >= (3, 10):
from typing import TypeAlias as _TypeAlias
if sys.version_info >= (3, 11):
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you use a newer version to generate the protos?

from typing import TypeAlias as _TypeAlias, Never as _Never
else:
from typing_extensions import TypeAlias as _TypeAlias
from typing_extensions import TypeAlias as _TypeAlias, Never as _Never

DESCRIPTOR: _descriptor.FileDescriptor

Expand Down Expand Up @@ -91,8 +91,11 @@ class HTTPExtension(_message.Message):
verb: Global___HTTPExtension.Verb.ValueType = ...,
querystring: _builtins.str = ...,
) -> None: ...
_HasFieldArgType: _TypeAlias = _Never # noqa: Y015
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
_ClearFieldArgType: _TypeAlias = _typing.Literal["querystring", b"querystring", "verb", b"verb"] # noqa: Y015
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
def WhichOneof(self, oneof_group: _Never) -> None: ...

Global___HTTPExtension: _TypeAlias = HTTPExtension # noqa: Y015

Expand Down Expand Up @@ -143,6 +146,7 @@ class InvokeRequest(_message.Message):
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
_ClearFieldArgType: _TypeAlias = _typing.Literal["content_type", b"content_type", "data", b"data", "http_extension", b"http_extension", "method", b"method"] # noqa: Y015
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
def WhichOneof(self, oneof_group: _Never) -> None: ...

Global___InvokeRequest: _TypeAlias = InvokeRequest # noqa: Y015

Expand Down Expand Up @@ -174,6 +178,7 @@ class InvokeResponse(_message.Message):
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
_ClearFieldArgType: _TypeAlias = _typing.Literal["content_type", b"content_type", "data", b"data"] # noqa: Y015
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
def WhichOneof(self, oneof_group: _Never) -> None: ...

Global___InvokeResponse: _TypeAlias = InvokeResponse # noqa: Y015

Expand Down Expand Up @@ -201,8 +206,11 @@ class StreamPayload(_message.Message):
data: _builtins.bytes = ...,
seq: _builtins.int = ...,
) -> None: ...
_HasFieldArgType: _TypeAlias = _Never # noqa: Y015
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
_ClearFieldArgType: _TypeAlias = _typing.Literal["data", b"data", "seq", b"seq"] # noqa: Y015
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
def WhichOneof(self, oneof_group: _Never) -> None: ...

Global___StreamPayload: _TypeAlias = StreamPayload # noqa: Y015

Expand All @@ -226,8 +234,11 @@ class StateItem(_message.Message):
key: _builtins.str = ...,
value: _builtins.str = ...,
) -> None: ...
_HasFieldArgType: _TypeAlias = _Never # noqa: Y015
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
_ClearFieldArgType: _TypeAlias = _typing.Literal["key", b"key", "value", b"value"] # noqa: Y015
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
def WhichOneof(self, oneof_group: _Never) -> None: ...

KEY_FIELD_NUMBER: _builtins.int
VALUE_FIELD_NUMBER: _builtins.int
Expand Down Expand Up @@ -265,6 +276,7 @@ class StateItem(_message.Message):
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
_ClearFieldArgType: _TypeAlias = _typing.Literal["etag", b"etag", "key", b"key", "metadata", b"metadata", "options", b"options", "value", b"value"] # noqa: Y015
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
def WhichOneof(self, oneof_group: _Never) -> None: ...

Global___StateItem: _TypeAlias = StateItem # noqa: Y015

Expand All @@ -282,8 +294,11 @@ class Etag(_message.Message):
*,
value: _builtins.str = ...,
) -> None: ...
_HasFieldArgType: _TypeAlias = _Never # noqa: Y015
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
_ClearFieldArgType: _TypeAlias = _typing.Literal["value", b"value"] # noqa: Y015
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
def WhichOneof(self, oneof_group: _Never) -> None: ...

Global___Etag: _TypeAlias = Etag # noqa: Y015

Expand Down Expand Up @@ -337,8 +352,11 @@ class StateOptions(_message.Message):
concurrency: Global___StateOptions.StateConcurrency.ValueType = ...,
consistency: Global___StateOptions.StateConsistency.ValueType = ...,
) -> None: ...
_HasFieldArgType: _TypeAlias = _Never # noqa: Y015
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
_ClearFieldArgType: _TypeAlias = _typing.Literal["concurrency", b"concurrency", "consistency", b"consistency"] # noqa: Y015
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
def WhichOneof(self, oneof_group: _Never) -> None: ...

Global___StateOptions: _TypeAlias = StateOptions # noqa: Y015

Expand All @@ -362,8 +380,11 @@ class ConfigurationItem(_message.Message):
key: _builtins.str = ...,
value: _builtins.str = ...,
) -> None: ...
_HasFieldArgType: _TypeAlias = _Never # noqa: Y015
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
_ClearFieldArgType: _TypeAlias = _typing.Literal["key", b"key", "value", b"value"] # noqa: Y015
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
def WhichOneof(self, oneof_group: _Never) -> None: ...

VALUE_FIELD_NUMBER: _builtins.int
VERSION_FIELD_NUMBER: _builtins.int
Expand All @@ -383,8 +404,11 @@ class ConfigurationItem(_message.Message):
version: _builtins.str = ...,
metadata: _abc.Mapping[_builtins.str, _builtins.str] | None = ...,
) -> None: ...
_HasFieldArgType: _TypeAlias = _Never # noqa: Y015
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
_ClearFieldArgType: _TypeAlias = _typing.Literal["metadata", b"metadata", "value", b"value", "version", b"version"] # noqa: Y015
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
def WhichOneof(self, oneof_group: _Never) -> None: ...

Global___ConfigurationItem: _TypeAlias = ConfigurationItem # noqa: Y015

Expand Down Expand Up @@ -425,6 +449,11 @@ class JobFailurePolicyDrop(_message.Message):
def __init__(
self,
) -> None: ...
_HasFieldArgType: _TypeAlias = _Never # noqa: Y015
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
_ClearFieldArgType: _TypeAlias = _Never # noqa: Y015
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
def WhichOneof(self, oneof_group: _Never) -> None: ...

Global___JobFailurePolicyDrop: _TypeAlias = JobFailurePolicyDrop # noqa: Y015

Expand Down
Loading
Loading