Files
semantic-kernel/python/semantic_kernel/processes/dapr_runtime/interfaces/process_interface.py
T
Eduard van Valkenburg 7bdf55028c Python: experimental py3.13 support (#10276)
### Motivation and Context

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->
Some small fixes in uv setup within actions
Added experimental unit tests runs for py3.13
First typing improvement from pyright and pyright config.

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [x] The code builds clean without any errors or warnings
- [x] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [x] All unit tests pass, and I have added new tests where possible
- [x] I didn't break anyone 😄
2025-02-12 13:05:39 +00:00

71 lines
2.3 KiB
Python

# Copyright (c) Microsoft. All rights reserved.
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING
from dapr.actor import ActorInterface, actormethod
from semantic_kernel.utils.experimental_decorator import experimental_class
if TYPE_CHECKING:
from semantic_kernel.processes.dapr_runtime.dapr_process_info import DaprProcessInfo
from semantic_kernel.processes.kernel_process.kernel_process_event import KernelProcessEvent
@experimental_class
class ProcessInterface(ActorInterface, ABC):
"""Abstract base class for a process that follows the ActorInterface."""
@abstractmethod
@actormethod(name="initialize_process")
async def initialize_process(self, input: dict) -> None:
"""Initializes the process with the specified instance of DaprProcessInfo.
:param process_info: Used to initialize the process.
:param parent_process_id: The parent ID of the process if one exists.
"""
...
@abstractmethod
@actormethod(name="start")
async def start(self, keep_alive: bool) -> None:
"""Starts an initialized process.
:param keep_alive: Indicates if the process should wait for external events after it's finished processing.
"""
...
@abstractmethod
@actormethod(name="run_once")
async def run_once(self, process_event: "KernelProcessEvent | str | None") -> None:
"""Starts the process with an initial event and then waits for the process to finish.
:param process_event: Required. The KernelProcessEvent to start the process with.
"""
...
@abstractmethod
@actormethod(name="stop")
async def stop(self) -> None:
"""Stops a running process, canceling and waiting for it to complete before returning."""
...
@abstractmethod
@actormethod(name="send_message")
async def send_message(self, process_event: "KernelProcessEvent") -> None:
"""Sends a message to the process without starting it if it is not already running.
:param process_event: Required. The KernelProcessEvent to queue for the process.
"""
...
@abstractmethod
@actormethod(name="get_process_info")
async def get_process_info(self) -> "DaprProcessInfo":
"""Retrieves the process information.
:return: An instance of DaprProcessInfo.
"""
...