arcade-mcp/toolkits/slack/arcade_slack/critics.py
Eric Gustin 66e54d7cde
Slack Tools (#162)
implements additional tools for Slack related to retrieving
conversations metadata, list of members, history of messages, as well as
sending messages to private/public channels and DMs / multi-person DMs.

---------

Co-authored-by: Eric Gustin <eric@arcade-ai.com>
Co-authored-by: Renato Byrro <rmbyrro@gmail.com>
2025-01-23 18:15:52 -08:00

34 lines
1.2 KiB
Python

from typing import Any
from arcade.sdk.eval import BinaryCritic
class RelativeTimeBinaryCritic(BinaryCritic):
def evaluate(self, expected: Any, actual: Any) -> dict[str, float | bool]:
"""
Evaluates whether the expected and actual relative time strings are equivalent after
casting.
Args:
expected: The expected value.
actual: The actual value to compare, cast to the type of expected.
Returns:
dict: A dictionary containing the match status and score.
"""
try:
actual_casted = self.cast_actual(expected, actual)
except TypeError:
actual_casted = actual
expected_parts = tuple(map(int, expected.split(":")))
actual_parts = tuple(map(int, actual_casted.split(":")))
if len(expected_parts) != 3 or len(actual_parts) != 3:
return {"match": False, "score": 0.0}
exp_days, exp_hours, exp_minutes = expected_parts
act_days, act_hours, act_minutes = actual_parts
match = exp_days == act_days and exp_hours == act_hours and exp_minutes == act_minutes
return {"match": match, "score": self.weight if match else 0.0}