chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# Copyright (c) Microsoft. All rights reserved.
|
||||
|
||||
import base64
|
||||
import hashlib
|
||||
from collections.abc import Iterable
|
||||
|
||||
from semantic_kernel.exceptions.agent_exceptions import AgentExecutionException
|
||||
from semantic_kernel.utils.feature_stage_decorator import experimental
|
||||
|
||||
|
||||
@experimental
|
||||
class KeyEncoder:
|
||||
"""A class for encoding keys."""
|
||||
|
||||
@staticmethod
|
||||
def generate_hash(keys: Iterable[str]) -> str:
|
||||
"""Generate a hash from a list of keys.
|
||||
|
||||
Args:
|
||||
keys: A list of keys to generate the hash from.
|
||||
|
||||
Returns:
|
||||
str: The generated hash.
|
||||
|
||||
Raises:
|
||||
AgentExecutionException: If the keys are empty
|
||||
"""
|
||||
if not keys:
|
||||
raise AgentExecutionException("Channel Keys must not be empty. Unable to generate channel hash.")
|
||||
joined_keys = ":".join(keys)
|
||||
buffer = joined_keys.encode("utf-8")
|
||||
sha256_hash = hashlib.sha256(buffer).digest()
|
||||
return base64.b64encode(sha256_hash).decode("utf-8")
|
||||
Reference in New Issue
Block a user