diff --git a/python/packages/foundry_hosting/agent_framework_foundry_hosting/_responses.py b/python/packages/foundry_hosting/agent_framework_foundry_hosting/_responses.py index 94c710f5b8..11ce27a4aa 100644 --- a/python/packages/foundry_hosting/agent_framework_foundry_hosting/_responses.py +++ b/python/packages/foundry_hosting/agent_framework_foundry_hosting/_responses.py @@ -3,7 +3,7 @@ import asyncio from collections.abc import AsyncIterable -from agent_framework import Agent, ChatOptions, Content, HistoryProvider, Message +from agent_framework import ChatOptions, Content, HistoryProvider, Message, RawAgent, SupportsAgentRun from agent_framework._telemetry import append_to_user_agent from azure.ai.agentserver.responses import ( ResponseContext, @@ -31,9 +31,9 @@ from azure.ai.agentserver.responses.models import ( OutputMessageContent, OutputMessageContentOutputTextContent, OutputMessageContentRefusalContent, + ResponseStreamEvent, SummaryTextContent, TextContent, - get_input_text, ) from typing_extensions import Any, Sequence, cast @@ -45,11 +45,11 @@ class ResponsesHostServer(ResponsesAgentServerHost): def __init__( self, - agent: Agent, + agent: SupportsAgentRun, *, prefix: str = "", options: ResponsesServerOptions | None = None, - provider: ResponseProviderProtocol | None = None, + store: ResponseProviderProtocol | None = None, **kwargs: Any, ) -> None: """Initialize a ResponsesHostServer. @@ -58,44 +58,38 @@ class ResponsesHostServer(ResponsesAgentServerHost): agent: The agent to handle responses for. prefix: The URL prefix for the server. options: Optional server options. - provider: Optional response provider. + store: Optional response store. **kwargs: Additional keyword arguments. Note: The agent must not have a history provider with `load_messages=True`, because history is managed by the hosting infrastructure. """ - super().__init__(prefix=prefix, options=options, provider=provider, **kwargs) + super().__init__(prefix=prefix, options=options, store=store, **kwargs) - self._validate_agent(agent) self._agent = agent - self.create_handler(self._handle_create) # pyright: ignore[reportUnknownMemberType] - - # Append the user agent prefix for telemetry purposes - append_to_user_agent(self.USER_AGENT_PREFIX) - - def _validate_agent(self, agent: Agent) -> None: - """Validate the agent to ensure it does not have a history provider with `load_messages=True`. - - History is managed by the hosting infrastructure. - """ - for provider in agent.context_providers: + for provider in getattr(self._agent, "context_providers", []): if isinstance(provider, HistoryProvider) and provider.load_messages: raise RuntimeError( "There shouldn't be a history provider with `load_messages=True` already present. " "History is managed by the hosting infrastructure." ) + self.create_handler(self._handle_create) # pyright: ignore[reportUnknownMemberType] + + # Append the user agent prefix for telemetry purposes + append_to_user_agent(self.USER_AGENT_PREFIX) + async def _handle_create( self, request: CreateResponse, context: ResponseContext, cancellation_signal: asyncio.Event, - ) -> AsyncIterable[dict[str, Any]]: + ) -> AsyncIterable[ResponseStreamEvent | dict[str, Any]]: """Handle the creation of a response.""" - input_items = get_input_text(request) + input_text = await context.get_input_text() history = await context.get_history() - messages = [*_to_messages(history), input_items] + messages = [*_to_messages(history), input_text] chat_options = _to_chat_options(request) @@ -108,7 +102,11 @@ class ResponsesHostServer(ResponsesAgentServerHost): if request.stream is None or request.stream is False: # Run the agent in non-streaming mode - response = await self._agent.run(messages, stream=False, options=chat_options) + if isinstance(self._agent, RawAgent): + raw_agent = cast("RawAgent[Any]", self._agent) # pyright: ignore[reportUnknownMemberType] + response = await raw_agent.run(messages, stream=False, options=chat_options) + else: + response = await self._agent.run(messages, stream=False) for item in stream.output_item_message(response.text): yield item yield stream.emit_completed() @@ -121,15 +119,18 @@ class ResponsesHostServer(ResponsesAgentServerHost): yield text_content.emit_added() # Invoke the MAF agent - response_stream = self._agent.run(messages, stream=True, options=chat_options) + if isinstance(self._agent, RawAgent): + raw_agent = cast("RawAgent[Any]", self._agent) # pyright: ignore[reportUnknownMemberType] + response_stream = raw_agent.run(messages, stream=True, options=chat_options) + else: + response_stream = self._agent.run(messages, stream=True) async for update in response_stream: if update.text: yield text_content.emit_delta(update.text) # Complete the message - final = await response_stream.get_final_response() - yield text_content.emit_done(final.text) - yield message_item.emit_content_done(text_content) + yield text_content.emit_text_done() + yield text_content.emit_done() yield message_item.emit_done() yield stream.emit_completed() diff --git a/python/packages/foundry_hosting/pyproject.toml b/python/packages/foundry_hosting/pyproject.toml index 55916ac076..377e4de7e3 100644 --- a/python/packages/foundry_hosting/pyproject.toml +++ b/python/packages/foundry_hosting/pyproject.toml @@ -24,15 +24,21 @@ classifiers = [ ] dependencies = [ "agent-framework-core>=1.0.0,<2", - "azure-ai-agentserver-core", - "azure-ai-agentserver-responses", - "azure-ai-agentserver-invocations" + "azure-ai-agentserver-core==2.0.0a20260410006", + "azure-ai-agentserver-responses==1.0.0a20260410006", + "azure-ai-agentserver-invocations==1.0.0a20260410006", + "azure-monitor-opentelemetry-exporter>=1.0.0a1" ] [tool.uv.sources] -azure-ai-agentserver-responses = { git = "https://github.com/Azure/azure-sdk-for-python.git", branch = "agentserver/responses", subdirectory = "sdk/agentserver/azure-ai-agentserver-responses" } -azure-ai-agentserver-invocations = { git = "https://github.com/Azure/azure-sdk-for-python.git", branch = "agentserver/responses", subdirectory = "sdk/agentserver/azure-ai-agentserver-invocations" } -azure-ai-agentserver-core = { git = "https://github.com/Azure/azure-sdk-for-python.git", branch = "agentserver/responses", subdirectory = "sdk/agentserver/azure-ai-agentserver-core" } +azure-ai-agentserver-responses = { index = "azure-sdk-for-python" } +azure-ai-agentserver-invocations = { index = "azure-sdk-for-python" } +azure-ai-agentserver-core = { index = "azure-sdk-for-python" } +azure-monitor-opentelemetry-exporter = { index = "azure-sdk-for-python" } + +[[tool.uv.index]] +name = "azure-sdk-for-python" +url = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" [tool.uv] prerelease = "if-necessary-or-explicit" diff --git a/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/01_basic/main.py b/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/01_basic/main.py index 0be716558b..d88b7f61d2 100644 --- a/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/01_basic/main.py +++ b/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/01_basic/main.py @@ -29,7 +29,7 @@ def main(): default_options={"store": False}, ) - server = ResponsesHostServer(agent, provider=InMemoryResponseProvider()) + server = ResponsesHostServer(agent, store=InMemoryResponseProvider()) server.run() diff --git a/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/02_local_tools/main.py b/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/02_local_tools/main.py index 7c8b3f6dc8..894b0247e0 100644 --- a/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/02_local_tools/main.py +++ b/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/02_local_tools/main.py @@ -42,7 +42,7 @@ def main(): default_options={"store": False}, ) - server = ResponsesHostServer(agent, provider=InMemoryResponseProvider()) + server = ResponsesHostServer(agent, store=InMemoryResponseProvider()) server.run() diff --git a/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/03_remote_mcp/main.py b/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/03_remote_mcp/main.py index 9a244f686f..cb25d2ef96 100644 --- a/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/03_remote_mcp/main.py +++ b/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/03_remote_mcp/main.py @@ -45,7 +45,7 @@ def main(): default_options={"store": False}, ) - server = ResponsesHostServer(agent, provider=InMemoryResponseProvider()) + server = ResponsesHostServer(agent, store=InMemoryResponseProvider()) server.run() diff --git a/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/04_workflows/main.py b/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/04_workflows/main.py index 8965dc6a21..58fad23c97 100644 --- a/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/04_workflows/main.py +++ b/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/04_workflows/main.py @@ -66,7 +66,7 @@ def main(): .as_agent() ) - server = ResponsesHostServer(workflow_agent, provider=InMemoryResponseProvider()) + server = ResponsesHostServer(workflow_agent, store=InMemoryResponseProvider()) server.run() diff --git a/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/05_local_shell/main.py b/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/05_local_shell/main.py index 094eb766f4..bce794a911 100644 --- a/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/05_local_shell/main.py +++ b/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/05_local_shell/main.py @@ -55,7 +55,7 @@ def main(): default_options={"store": False}, ) - server = ResponsesHostServer(agent, provider=InMemoryResponseProvider()) + server = ResponsesHostServer(agent, store=InMemoryResponseProvider()) server.run() diff --git a/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/06_eval/main.py b/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/06_eval/main.py index 7c8b3f6dc8..894b0247e0 100644 --- a/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/06_eval/main.py +++ b/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/06_eval/main.py @@ -42,7 +42,7 @@ def main(): default_options={"store": False}, ) - server = ResponsesHostServer(agent, provider=InMemoryResponseProvider()) + server = ResponsesHostServer(agent, store=InMemoryResponseProvider()) server.run() diff --git a/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/07_foundry_memory/main.py b/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/07_foundry_memory/main.py index 1a46bdac3c..fabbfd98ef 100644 --- a/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/07_foundry_memory/main.py +++ b/python/samples/05-end-to-end/hosted_agents/foundry_hosted_responses/07_foundry_memory/main.py @@ -79,7 +79,7 @@ async def main(): default_options={"store": False}, ) - server = ResponsesHostServer(agent, provider=InMemoryResponseProvider()) + server = ResponsesHostServer(agent, store=InMemoryResponseProvider()) try: await server.run_async() diff --git a/python/uv.lock b/python/uv.lock index b9cf525334..b991a44744 100644 --- a/python/uv.lock +++ b/python/uv.lock @@ -344,7 +344,6 @@ all = [ { name = "agent-framework-devui", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, { name = "agent-framework-durabletask", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, { name = "agent-framework-foundry", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, - { name = "agent-framework-foundry-hosting", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, { name = "agent-framework-foundry-local", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, { name = "agent-framework-github-copilot", marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and sys_platform == 'linux') or (python_full_version >= '3.11' and sys_platform == 'win32')" }, { name = "agent-framework-lab", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, @@ -373,7 +372,6 @@ requires-dist = [ { name = "agent-framework-devui", marker = "extra == 'all'", editable = "packages/devui" }, { name = "agent-framework-durabletask", marker = "extra == 'all'", editable = "packages/durabletask" }, { name = "agent-framework-foundry", marker = "extra == 'all'", editable = "packages/foundry" }, - { name = "agent-framework-foundry-hosting", marker = "extra == 'all'", editable = "packages/foundry_hosting" }, { name = "agent-framework-foundry-local", marker = "extra == 'all'", editable = "packages/foundry_local" }, { name = "agent-framework-github-copilot", marker = "python_full_version >= '3.11' and extra == 'all'", editable = "packages/github_copilot" }, { name = "agent-framework-lab", marker = "extra == 'all'", editable = "packages/lab" }, @@ -502,21 +500,23 @@ requires-dist = [ [[package]] name = "agent-framework-foundry-hosting" -version = "1.0.0b260402" +version = "1.0.0a260402" source = { editable = "packages/foundry_hosting" } dependencies = [ { name = "agent-framework-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, { name = "azure-ai-agentserver-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, { name = "azure-ai-agentserver-invocations", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, { name = "azure-ai-agentserver-responses", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, + { name = "azure-monitor-opentelemetry-exporter", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, ] [package.metadata] requires-dist = [ { name = "agent-framework-core", editable = "packages/core" }, - { name = "azure-ai-agentserver-core", git = "https://github.com/Azure/azure-sdk-for-python.git?subdirectory=sdk%2Fagentserver%2Fazure-ai-agentserver-core&branch=agentserver%2Fresponses" }, - { name = "azure-ai-agentserver-invocations", git = "https://github.com/Azure/azure-sdk-for-python.git?subdirectory=sdk%2Fagentserver%2Fazure-ai-agentserver-invocations&branch=agentserver%2Fresponses" }, - { name = "azure-ai-agentserver-responses", git = "https://github.com/Azure/azure-sdk-for-python.git?subdirectory=sdk%2Fagentserver%2Fazure-ai-agentserver-responses&branch=agentserver%2Fresponses" }, + { name = "azure-ai-agentserver-core", specifier = "==2.0.0a20260410006", index = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" }, + { name = "azure-ai-agentserver-invocations", specifier = "==1.0.0a20260410006", index = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" }, + { name = "azure-ai-agentserver-responses", specifier = "==1.0.0a20260410006", index = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" }, + { name = "azure-monitor-opentelemetry-exporter", specifier = ">=1.0.0a1", index = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" }, ] [[package]] @@ -1020,8 +1020,8 @@ wheels = [ [[package]] name = "azure-ai-agentserver-core" -version = "2.0.0b1" -source = { git = "https://github.com/Azure/azure-sdk-for-python.git?subdirectory=sdk%2Fagentserver%2Fazure-ai-agentserver-core&branch=agentserver%2Fresponses#43579f686f51ebed23b066d06c90a544c0070a0b" } +version = "2.0.0a20260410006" +source = { registry = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" } dependencies = [ { name = "azure-monitor-opentelemetry-exporter", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, { name = "hypercorn", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, @@ -1030,24 +1030,37 @@ dependencies = [ { name = "opentelemetry-sdk", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, { name = "starlette", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, ] +sdist = { url = "https://pkgs.dev.azure.com/azure-sdk/29ec6040-b234-4e31-b139-33dc4287b756/_packaging/3572dbf9-b5ef-433b-9137-fc4d7768e7cc/pypi/download/azure-ai-agentserver-core/2a20260410006/azure_ai_agentserver_core-2.0.0a20260410006.tar.gz", hash = "sha256:834de1dca553ed964819faf5d1c7564e58e03c667c276d04d458c8bb81d2aac4" } +wheels = [ + { url = "https://pkgs.dev.azure.com/azure-sdk/29ec6040-b234-4e31-b139-33dc4287b756/_packaging/3572dbf9-b5ef-433b-9137-fc4d7768e7cc/pypi/download/azure-ai-agentserver-core/2a20260410006/azure_ai_agentserver_core-2.0.0a20260410006-py3-none-any.whl", hash = "sha256:d0fd251635f4b52fbf24dbba916f7e8e173043f0ba9537bb335ab3a1ead1432a" }, +] [[package]] name = "azure-ai-agentserver-invocations" -version = "1.0.0b1" -source = { git = "https://github.com/Azure/azure-sdk-for-python.git?subdirectory=sdk%2Fagentserver%2Fazure-ai-agentserver-invocations&branch=agentserver%2Fresponses#43579f686f51ebed23b066d06c90a544c0070a0b" } +version = "1.0.0a20260410006" +source = { registry = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" } dependencies = [ { name = "azure-ai-agentserver-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, ] +sdist = { url = "https://pkgs.dev.azure.com/azure-sdk/29ec6040-b234-4e31-b139-33dc4287b756/_packaging/3572dbf9-b5ef-433b-9137-fc4d7768e7cc/pypi/download/azure-ai-agentserver-invocations/1a20260410006/azure_ai_agentserver_invocations-1.0.0a20260410006.tar.gz", hash = "sha256:6419d8524fbf5e5a3d94937108f928da70d1406bdfd83cd2e6cba9f5e54f07af" } +wheels = [ + { url = "https://pkgs.dev.azure.com/azure-sdk/29ec6040-b234-4e31-b139-33dc4287b756/_packaging/3572dbf9-b5ef-433b-9137-fc4d7768e7cc/pypi/download/azure-ai-agentserver-invocations/1a20260410006/azure_ai_agentserver_invocations-1.0.0a20260410006-py3-none-any.whl", hash = "sha256:5b9e3364d73bc2bb9581540cbf3172624fbc75be7739c95e4d70c83541bde008" }, +] [[package]] name = "azure-ai-agentserver-responses" -version = "1.0.0b1" -source = { git = "https://github.com/Azure/azure-sdk-for-python.git?subdirectory=sdk%2Fagentserver%2Fazure-ai-agentserver-responses&branch=agentserver%2Fresponses#43579f686f51ebed23b066d06c90a544c0070a0b" } +version = "1.0.0a20260410006" +source = { registry = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" } dependencies = [ + { name = "aiohttp", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, { name = "azure-ai-agentserver-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, { name = "azure-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, { name = "isodate", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, ] +sdist = { url = "https://pkgs.dev.azure.com/azure-sdk/29ec6040-b234-4e31-b139-33dc4287b756/_packaging/3572dbf9-b5ef-433b-9137-fc4d7768e7cc/pypi/download/azure-ai-agentserver-responses/1a20260410006/azure_ai_agentserver_responses-1.0.0a20260410006.tar.gz", hash = "sha256:795862c6abdd2794be04f685d3995b174364f1280fe7be507bcfa64b6359ec53" } +wheels = [ + { url = "https://pkgs.dev.azure.com/azure-sdk/29ec6040-b234-4e31-b139-33dc4287b756/_packaging/3572dbf9-b5ef-433b-9137-fc4d7768e7cc/pypi/download/azure-ai-agentserver-responses/1a20260410006/azure_ai_agentserver_responses-1.0.0a20260410006-py3-none-any.whl", hash = "sha256:e877eea7b2bb31c9766c69159e799aff112741eefb178bc3a3c7a07ce0b09dbb" }, +] [[package]] name = "azure-ai-inference" @@ -1163,8 +1176,8 @@ wheels = [ [[package]] name = "azure-monitor-opentelemetry-exporter" -version = "1.0.0b51" -source = { registry = "https://pypi.org/simple" } +version = "1.0.0a20260410001" +source = { registry = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" } dependencies = [ { name = "azure-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, { name = "azure-identity", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, @@ -1173,9 +1186,9 @@ dependencies = [ { name = "opentelemetry-sdk", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, { name = "psutil", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bc/a4/a6cd2d389bc1009300bcd57c9e2ace4b7e7ae1e5dc0bda415ee803629cf2/azure_monitor_opentelemetry_exporter-1.0.0b51.tar.gz", hash = "sha256:a6171c34326bcd6216938bb40d715c15f1f22984ac1986fc97231336d8ac4c3c", size = 319837, upload-time = "2026-04-06T21:45:46.378Z" } +sdist = { url = "https://pkgs.dev.azure.com/azure-sdk/29ec6040-b234-4e31-b139-33dc4287b756/_packaging/3572dbf9-b5ef-433b-9137-fc4d7768e7cc/pypi/download/azure-monitor-opentelemetry-exporter/1a20260410001/azure_monitor_opentelemetry_exporter-1.0.0a20260410001.tar.gz", hash = "sha256:24be6d2fa88454b08f1aa82958917681ff434f8a19d64c474ac8caebe125217e" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ea/1a/6b0b7a6181b42709103a65a676c89fd5055cb1d1b281ebe10c49254a170f/azure_monitor_opentelemetry_exporter-1.0.0b51-py2.py3-none-any.whl", hash = "sha256:6572cac11f96e3b18ae1187cb35cf3b40d0004655dae8048896c41c765bea530", size = 242104, upload-time = "2026-04-06T21:45:47.856Z" }, + { url = "https://pkgs.dev.azure.com/azure-sdk/29ec6040-b234-4e31-b139-33dc4287b756/_packaging/3572dbf9-b5ef-433b-9137-fc4d7768e7cc/pypi/download/azure-monitor-opentelemetry-exporter/1a20260410001/azure_monitor_opentelemetry_exporter-1.0.0a20260410001-py2.py3-none-any.whl", hash = "sha256:77823990c3ec7f7bb400a1eb0d7edf99cad04f0b0e393d6f6dd3791bf7d0c0cf" }, ] [[package]]