unique_toolkit 1.14.0__tar.gz → 1.14.1__tar.gz

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.
Files changed (157) hide show
  1. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/CHANGELOG.md +3 -0
  2. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/PKG-INFO +4 -1
  3. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/pyproject.toml +1 -1
  4. unique_toolkit-1.14.1/unique_toolkit/test_utilities/events.py +195 -0
  5. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/LICENSE +0 -0
  6. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/README.md +0 -0
  7. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/__init__.py +0 -0
  8. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/_base_service.py +0 -0
  9. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/_time_utils.py +0 -0
  10. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  11. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  12. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  13. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  14. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  15. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  16. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  17. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/default_language_model.py +0 -0
  18. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/endpoint_builder.py +0 -0
  19. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  20. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/exception.py +0 -0
  21. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  22. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  23. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  24. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/string_utilities.py +0 -0
  25. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  26. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/token/token_counting.py +0 -0
  27. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/utils/__init__.py +0 -0
  28. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/utils/files.py +0 -0
  29. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  30. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  31. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  32. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/validate_required_values.py +0 -0
  33. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/_common/validators.py +0 -0
  34. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/__init__.py +0 -0
  35. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  36. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/evaluation/config.py +0 -0
  37. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts.py +0 -0
  38. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  39. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  40. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  41. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  42. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  43. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  44. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/evaluation/hallucination/prompts.py +0 -0
  45. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  46. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  47. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  48. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  49. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  50. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  51. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  52. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  53. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  54. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  55. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  56. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  57. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  58. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  59. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/__init__.py +0 -0
  60. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  61. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  62. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  63. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  64. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  65. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  66. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  67. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  68. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  69. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_display.py +0 -0
  70. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_utils.py +0 -0
  71. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  72. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/postprocessing/postprocessor.py +0 -0
  73. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_consolidate_references.py +0 -0
  74. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  75. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_postprocessor_reference_functions.py +0 -0
  76. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  77. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  78. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  79. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  80. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  81. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  82. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  83. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/config.py +0 -0
  84. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/factory.py +0 -0
  85. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  86. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  87. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  88. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  89. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/schemas.py +0 -0
  90. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  91. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  92. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/tool.py +0 -0
  93. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  94. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  95. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  96. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/utils/execution/__init__.py +0 -0
  97. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/utils/execution/execution.py +0 -0
  98. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  99. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  100. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  101. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  102. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/app/__init__.py +0 -0
  103. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/app/dev_util.py +0 -0
  104. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/app/init_logging.py +0 -0
  105. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/app/init_sdk.py +0 -0
  106. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/app/performance/async_tasks.py +0 -0
  107. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  108. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/app/schemas.py +0 -0
  109. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/app/unique_settings.py +0 -0
  110. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/app/verification.py +0 -0
  111. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/chat/__init__.py +0 -0
  112. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/chat/constants.py +0 -0
  113. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/chat/deprecated/service.py +0 -0
  114. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/chat/functions.py +0 -0
  115. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/chat/schemas.py +0 -0
  116. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/chat/service.py +0 -0
  117. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/chat/state.py +0 -0
  118. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/chat/utils.py +0 -0
  119. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/content/__init__.py +0 -0
  120. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/content/constants.py +0 -0
  121. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/content/functions.py +0 -0
  122. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/content/schemas.py +0 -0
  123. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/content/service.py +0 -0
  124. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/content/smart_rules.py +0 -0
  125. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/content/utils.py +0 -0
  126. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/embedding/__init__.py +0 -0
  127. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/embedding/constants.py +0 -0
  128. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/embedding/functions.py +0 -0
  129. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/embedding/schemas.py +0 -0
  130. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/embedding/service.py +0 -0
  131. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/embedding/utils.py +0 -0
  132. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/framework_utilities/__init__.py +0 -0
  133. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  134. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  135. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  136. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  137. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  138. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/framework_utilities/utils.py +0 -0
  139. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/knowledge_base.py +0 -0
  140. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/language_model/__init__.py +0 -0
  141. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/language_model/builder.py +0 -0
  142. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/language_model/constants.py +0 -0
  143. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/language_model/functions.py +0 -0
  144. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/language_model/infos.py +0 -0
  145. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/language_model/prompt.py +0 -0
  146. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/language_model/reference.py +0 -0
  147. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/language_model/schemas.py +0 -0
  148. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/language_model/service.py +0 -0
  149. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/language_model/utils.py +0 -0
  150. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/protocols/support.py +0 -0
  151. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/short_term_memory/__init__.py +0 -0
  152. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/short_term_memory/constants.py +0 -0
  153. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/short_term_memory/functions.py +0 -0
  154. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/short_term_memory/schemas.py +0 -0
  155. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/short_term_memory/service.py +0 -0
  156. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/smart_rules/__init__.py +0 -0
  157. {unique_toolkit-1.14.0 → unique_toolkit-1.14.1}/unique_toolkit/smart_rules/compile.py +0 -0
@@ -5,6 +5,9 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.14.1] - 2025-10-08
9
+ - Add utilities for testing
10
+
8
11
  ## [1.14.0] - 2025-10-07
9
12
  - Manipulate Metadata with knowledge base service
10
13
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 1.14.0
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
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "1.14.0"
3
+ version = "1.14.1"
4
4
  description = ""
5
5
  authors = [
6
6
  "Cedric Klinkert <cedric.klinkert@unique.ch>",
@@ -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
+ )
File without changes