unique_toolkit 1.14.0__py3-none-any.whl → 1.14.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- unique_toolkit/test_utilities/events.py +195 -0
- {unique_toolkit-1.14.0.dist-info → unique_toolkit-1.14.1.dist-info}/METADATA +4 -1
- {unique_toolkit-1.14.0.dist-info → unique_toolkit-1.14.1.dist-info}/RECORD +5 -4
- {unique_toolkit-1.14.0.dist-info → unique_toolkit-1.14.1.dist-info}/LICENSE +0 -0
- {unique_toolkit-1.14.0.dist-info → unique_toolkit-1.14.1.dist-info}/WHEEL +0 -0
@@ -0,0 +1,195 @@
|
|
1
|
+
import random
|
2
|
+
import string
|
3
|
+
from datetime import datetime
|
4
|
+
from typing import TYPE_CHECKING
|
5
|
+
|
6
|
+
from unique_toolkit.app.schemas import (
|
7
|
+
BaseEvent,
|
8
|
+
ChatEvent,
|
9
|
+
ChatEventAdditionalParameters,
|
10
|
+
ChatEventAssistantMessage,
|
11
|
+
ChatEventPayload,
|
12
|
+
ChatEventUserMessage,
|
13
|
+
EventName,
|
14
|
+
)
|
15
|
+
|
16
|
+
if TYPE_CHECKING:
|
17
|
+
from typing import Any
|
18
|
+
|
19
|
+
from unique_toolkit.app.unique_settings import UniqueSettings
|
20
|
+
|
21
|
+
|
22
|
+
def generated_numeric_string(length: int) -> str:
|
23
|
+
return "".join(random.choices(string.digits, k=length))
|
24
|
+
|
25
|
+
|
26
|
+
def generated_alphanumeric_string(length: int) -> str:
|
27
|
+
return "".join(random.choices(string.ascii_letters + string.digits, k=length))
|
28
|
+
|
29
|
+
|
30
|
+
def generated_chat_id() -> str:
|
31
|
+
return f"chat_{generated_alphanumeric_string(16)}"
|
32
|
+
|
33
|
+
|
34
|
+
def generated_assistant_id() -> str:
|
35
|
+
return f"assistant_{generated_alphanumeric_string(16)}"
|
36
|
+
|
37
|
+
|
38
|
+
def generated_user_message_id() -> str:
|
39
|
+
return f"msg_{generated_alphanumeric_string(16)}"
|
40
|
+
|
41
|
+
|
42
|
+
class TestEventFactory:
|
43
|
+
"""Factory for creating test event objects with sensible defaults.
|
44
|
+
|
45
|
+
Simplifies test setup by providing convenient methods to generate
|
46
|
+
chat events, messages, and related objects for testing.
|
47
|
+
"""
|
48
|
+
|
49
|
+
def __init__(self, settings: UniqueSettings | None = None) -> None:
|
50
|
+
self._settings = settings
|
51
|
+
|
52
|
+
def _get_user_id(self) -> str:
|
53
|
+
if self._settings is None:
|
54
|
+
return generated_numeric_string(16)
|
55
|
+
else:
|
56
|
+
return self._settings.auth.user_id.get_secret_value()
|
57
|
+
|
58
|
+
def _get_company_id(self) -> str:
|
59
|
+
if self._settings is None:
|
60
|
+
return generated_numeric_string(16)
|
61
|
+
else:
|
62
|
+
return self._settings.auth.company_id.get_secret_value()
|
63
|
+
|
64
|
+
def get_chat_event_user_message(
|
65
|
+
self,
|
66
|
+
text: str,
|
67
|
+
*,
|
68
|
+
created_at: datetime | None = None,
|
69
|
+
language: str = "DE",
|
70
|
+
original_text: str | None = None,
|
71
|
+
) -> ChatEventUserMessage:
|
72
|
+
if created_at is None:
|
73
|
+
created_at = datetime.now()
|
74
|
+
|
75
|
+
return ChatEventUserMessage(
|
76
|
+
id=generated_user_message_id(),
|
77
|
+
text=text,
|
78
|
+
original_text=original_text or text,
|
79
|
+
created_at=created_at.isoformat(),
|
80
|
+
language=language,
|
81
|
+
)
|
82
|
+
|
83
|
+
def get_chat_event_assistant_message(
|
84
|
+
self, *, created_at: datetime | None = None
|
85
|
+
) -> ChatEventAssistantMessage:
|
86
|
+
if created_at is None:
|
87
|
+
created_at = datetime.now()
|
88
|
+
|
89
|
+
return ChatEventAssistantMessage(
|
90
|
+
id=generated_assistant_id(), created_at=created_at.isoformat()
|
91
|
+
)
|
92
|
+
|
93
|
+
def get_chat_event_additional_parameters(
|
94
|
+
self,
|
95
|
+
*,
|
96
|
+
translate_to_language: str | None = None,
|
97
|
+
content_id_to_translate: str | None = None,
|
98
|
+
) -> ChatEventAdditionalParameters:
|
99
|
+
return ChatEventAdditionalParameters(
|
100
|
+
translate_to_language=translate_to_language,
|
101
|
+
content_id_to_translate=content_id_to_translate,
|
102
|
+
)
|
103
|
+
|
104
|
+
def get_base_event(
|
105
|
+
self,
|
106
|
+
*,
|
107
|
+
event: EventName = EventName.EXTERNAL_MODULE_CHOSEN,
|
108
|
+
user_id: str | None = None,
|
109
|
+
company_id: str | None = None,
|
110
|
+
) -> BaseEvent:
|
111
|
+
return BaseEvent(
|
112
|
+
id=generated_alphanumeric_string(16),
|
113
|
+
event=event,
|
114
|
+
user_id=user_id or self._get_user_id(),
|
115
|
+
company_id=company_id or self._get_company_id(),
|
116
|
+
)
|
117
|
+
|
118
|
+
def get_chat_event_payload(
|
119
|
+
self,
|
120
|
+
*,
|
121
|
+
name: str,
|
122
|
+
description: str,
|
123
|
+
user_message_text: str,
|
124
|
+
user_message_created_at: datetime | None = None,
|
125
|
+
user_message_language: str = "DE",
|
126
|
+
user_message_original_text: str | None = None,
|
127
|
+
assistant_message_created_at: datetime | None = None,
|
128
|
+
configuration: dict[str, Any] | None = None,
|
129
|
+
chat_id: str | None = None,
|
130
|
+
assistant_id: str | None = None,
|
131
|
+
) -> ChatEventPayload:
|
132
|
+
if chat_id is None:
|
133
|
+
chat_id = generated_chat_id()
|
134
|
+
|
135
|
+
if assistant_id is None:
|
136
|
+
assistant_id = generated_assistant_id()
|
137
|
+
|
138
|
+
assistant_message = self.get_chat_event_assistant_message(
|
139
|
+
created_at=assistant_message_created_at or datetime.now()
|
140
|
+
)
|
141
|
+
user_message = self.get_chat_event_user_message(
|
142
|
+
text=user_message_text,
|
143
|
+
created_at=user_message_created_at or datetime.now(),
|
144
|
+
language=user_message_language,
|
145
|
+
original_text=user_message_original_text,
|
146
|
+
)
|
147
|
+
return ChatEventPayload(
|
148
|
+
name=name,
|
149
|
+
description=description,
|
150
|
+
configuration=configuration or {},
|
151
|
+
chat_id=chat_id,
|
152
|
+
assistant_id=assistant_id,
|
153
|
+
user_message=user_message,
|
154
|
+
assistant_message=assistant_message,
|
155
|
+
)
|
156
|
+
|
157
|
+
def get_chat_event(
|
158
|
+
self,
|
159
|
+
*,
|
160
|
+
name: str,
|
161
|
+
event_name: EventName = EventName.EXTERNAL_MODULE_CHOSEN,
|
162
|
+
description: str,
|
163
|
+
user_message_text: str,
|
164
|
+
user_message_created_at: datetime = datetime.now(),
|
165
|
+
user_message_language: str = "DE",
|
166
|
+
user_message_original_text: str | None = None,
|
167
|
+
assistant_message_created_at: datetime | None = None,
|
168
|
+
configuration: dict[str, Any] | None = None,
|
169
|
+
chat_id: str = generated_chat_id(),
|
170
|
+
assistant_id: str = generated_assistant_id(),
|
171
|
+
user_id: str | None = None,
|
172
|
+
company_id: str | None = None,
|
173
|
+
version: str = "1.0",
|
174
|
+
) -> ChatEvent:
|
175
|
+
payload = self.get_chat_event_payload(
|
176
|
+
name=name,
|
177
|
+
description=description,
|
178
|
+
user_message_text=user_message_text,
|
179
|
+
user_message_created_at=user_message_created_at,
|
180
|
+
user_message_language=user_message_language,
|
181
|
+
user_message_original_text=user_message_original_text,
|
182
|
+
assistant_message_created_at=assistant_message_created_at,
|
183
|
+
configuration=configuration or {},
|
184
|
+
chat_id=chat_id,
|
185
|
+
assistant_id=assistant_id,
|
186
|
+
)
|
187
|
+
return ChatEvent(
|
188
|
+
id=generated_alphanumeric_string(16),
|
189
|
+
event=event_name,
|
190
|
+
user_id=user_id or self._get_user_id(),
|
191
|
+
company_id=company_id or self._get_company_id(),
|
192
|
+
payload=payload,
|
193
|
+
created_at=int(datetime.now().timestamp()),
|
194
|
+
version=version,
|
195
|
+
)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: unique_toolkit
|
3
|
-
Version: 1.14.
|
3
|
+
Version: 1.14.1
|
4
4
|
Summary:
|
5
5
|
License: Proprietary
|
6
6
|
Author: Cedric Klinkert
|
@@ -118,6 +118,9 @@ All notable changes to this project will be documented in this file.
|
|
118
118
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
119
119
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
120
120
|
|
121
|
+
## [1.14.1] - 2025-10-08
|
122
|
+
- Add utilities for testing
|
123
|
+
|
121
124
|
## [1.14.0] - 2025-10-07
|
122
125
|
- Manipulate Metadata with knowledge base service
|
123
126
|
|
@@ -149,7 +149,8 @@ unique_toolkit/short_term_memory/schemas.py,sha256=OhfcXyF6ACdwIXW45sKzjtZX_gkcJ
|
|
149
149
|
unique_toolkit/short_term_memory/service.py,sha256=5PeVBu1ZCAfyDb2HLVvlmqSbyzBBuE9sI2o9Aajqjxg,8884
|
150
150
|
unique_toolkit/smart_rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
151
151
|
unique_toolkit/smart_rules/compile.py,sha256=Ozhh70qCn2yOzRWr9d8WmJeTo7AQurwd3tStgBMPFLA,1246
|
152
|
-
unique_toolkit
|
153
|
-
unique_toolkit-1.14.
|
154
|
-
unique_toolkit-1.14.
|
155
|
-
unique_toolkit-1.14.
|
152
|
+
unique_toolkit/test_utilities/events.py,sha256=fdekL7qsYJLqDpABH_scXgvF8TgHLdcyd0B_I0WQ7YM,6335
|
153
|
+
unique_toolkit-1.14.1.dist-info/LICENSE,sha256=GlN8wHNdh53xwOPg44URnwag6TEolCjoq3YD_KrWgss,193
|
154
|
+
unique_toolkit-1.14.1.dist-info/METADATA,sha256=AmlR3j-cMn7Lc8iRYzhPdCgbekpV1_hL0wWYKzX7FVY,36294
|
155
|
+
unique_toolkit-1.14.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
156
|
+
unique_toolkit-1.14.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|