unique_toolkit 0.8.33__tar.gz → 0.8.35__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 (136) hide show
  1. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/CHANGELOG.md +5 -0
  2. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/PKG-INFO +6 -1
  3. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/pyproject.toml +12 -1
  4. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/app/dev_util.py +24 -0
  5. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/app/unique_settings.py +12 -2
  6. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/content/service.py +10 -2
  7. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/embedding/service.py +7 -1
  8. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/language_model/service.py +6 -1
  9. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/a2a/service.py +3 -3
  10. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/LICENSE +0 -0
  11. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/README.md +0 -0
  12. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/__init__.py +0 -0
  13. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/_common/_base_service.py +0 -0
  14. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/_common/_time_utils.py +0 -0
  15. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  16. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  17. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  18. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  19. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  20. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/_common/default_language_model.py +0 -0
  21. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/_common/endpoint_builder.py +0 -0
  22. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/_common/exception.py +0 -0
  23. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  24. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  25. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/_common/token/token_counting.py +0 -0
  26. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  27. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/_common/validate_required_values.py +0 -0
  28. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/_common/validators.py +0 -0
  29. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/app/__init__.py +0 -0
  30. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/app/init_logging.py +0 -0
  31. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/app/init_sdk.py +0 -0
  32. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/app/performance/async_tasks.py +0 -0
  33. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  34. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/app/schemas.py +0 -0
  35. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/app/verification.py +0 -0
  36. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/chat/__init__.py +0 -0
  37. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/chat/constants.py +0 -0
  38. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/chat/functions.py +0 -0
  39. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/chat/schemas.py +0 -0
  40. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/chat/service.py +0 -0
  41. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/chat/state.py +0 -0
  42. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/chat/utils.py +0 -0
  43. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/content/__init__.py +0 -0
  44. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/content/constants.py +0 -0
  45. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/content/functions.py +0 -0
  46. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/content/schemas.py +0 -0
  47. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/content/utils.py +0 -0
  48. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/debug_info_manager/debug_info_manager.py +0 -0
  49. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/embedding/__init__.py +0 -0
  50. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/embedding/constants.py +0 -0
  51. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/embedding/functions.py +0 -0
  52. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/embedding/schemas.py +0 -0
  53. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/embedding/utils.py +0 -0
  54. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evals/config.py +0 -0
  55. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evals/context_relevancy/prompts.py +0 -0
  56. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evals/context_relevancy/schema.py +0 -0
  57. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evals/context_relevancy/service.py +0 -0
  58. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evals/evaluation_manager.py +0 -0
  59. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evals/exception.py +0 -0
  60. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evals/hallucination/constants.py +0 -0
  61. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evals/hallucination/hallucination_evaluation.py +0 -0
  62. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evals/hallucination/prompts.py +0 -0
  63. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evals/hallucination/service.py +0 -0
  64. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evals/hallucination/utils.py +0 -0
  65. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evals/output_parser.py +0 -0
  66. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evals/schemas.py +0 -0
  67. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evals/tests/test_context_relevancy_service.py +0 -0
  68. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evals/tests/test_output_parser.py +0 -0
  69. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evaluators/__init__.py +0 -0
  70. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evaluators/config.py +0 -0
  71. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evaluators/constants.py +0 -0
  72. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evaluators/context_relevancy/constants.py +0 -0
  73. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evaluators/context_relevancy/prompts.py +0 -0
  74. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evaluators/context_relevancy/service.py +0 -0
  75. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evaluators/context_relevancy/utils.py +0 -0
  76. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evaluators/exception.py +0 -0
  77. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evaluators/hallucination/constants.py +0 -0
  78. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evaluators/hallucination/prompts.py +0 -0
  79. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evaluators/hallucination/service.py +0 -0
  80. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evaluators/hallucination/utils.py +0 -0
  81. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evaluators/output_parser.py +0 -0
  82. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/evaluators/schemas.py +0 -0
  83. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/framework_utilities/__init__.py +0 -0
  84. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  85. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  86. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  87. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  88. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  89. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/framework_utilities/utils.py +0 -0
  90. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/history_manager/history_construction_with_contents.py +0 -0
  91. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/history_manager/history_manager.py +0 -0
  92. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/history_manager/loop_token_reducer.py +0 -0
  93. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/history_manager/utils.py +0 -0
  94. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/language_model/__init__.py +0 -0
  95. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/language_model/builder.py +0 -0
  96. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/language_model/constants.py +0 -0
  97. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/language_model/functions.py +0 -0
  98. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/language_model/infos.py +0 -0
  99. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/language_model/prompt.py +0 -0
  100. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/language_model/reference.py +0 -0
  101. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/language_model/schemas.py +0 -0
  102. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/language_model/utils.py +0 -0
  103. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/postprocessor/postprocessor_manager.py +0 -0
  104. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/protocols/support.py +0 -0
  105. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/reference_manager/reference_manager.py +0 -0
  106. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/short_term_memory/__init__.py +0 -0
  107. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/short_term_memory/constants.py +0 -0
  108. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/short_term_memory/functions.py +0 -0
  109. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/short_term_memory/persistent_short_term_memory_manager.py +0 -0
  110. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/short_term_memory/schemas.py +0 -0
  111. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/short_term_memory/service.py +0 -0
  112. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/smart_rules/__init__.py +0 -0
  113. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/smart_rules/compile.py +0 -0
  114. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/thinking_manager/thinking_manager.py +0 -0
  115. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/a2a/__init__.py +0 -0
  116. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/a2a/config.py +0 -0
  117. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/a2a/manager.py +0 -0
  118. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/a2a/memory.py +0 -0
  119. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/a2a/schema.py +0 -0
  120. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/agent_chunks_hanlder.py +0 -0
  121. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/config.py +0 -0
  122. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/factory.py +0 -0
  123. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/mcp/__init__.py +0 -0
  124. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/mcp/manager.py +0 -0
  125. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/mcp/models.py +0 -0
  126. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/mcp/tool_wrapper.py +0 -0
  127. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/schemas.py +0 -0
  128. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/test/test_mcp_manager.py +0 -0
  129. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/test/test_tool_progress_reporter.py +0 -0
  130. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/tool.py +0 -0
  131. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/tool_manager.py +0 -0
  132. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/tool_progress_reporter.py +0 -0
  133. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/utils/execution/execution.py +0 -0
  134. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/utils/source_handling/schema.py +0 -0
  135. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/utils/source_handling/source_formatting.py +0 -0
  136. {unique_toolkit-0.8.33 → unique_toolkit-0.8.35}/unique_toolkit/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
@@ -5,6 +5,11 @@ 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
+ ## [0.8.35] - 2025-09-01
9
+ - Initial toolkit documentation (WIP)
10
+
11
+ ## [0.8.34] - 2025-09-01
12
+ - Automatic initializations of services and event generator
8
13
 
9
14
  ## [0.8.33] - 2025-08-31
10
15
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 0.8.33
3
+ Version: 0.8.35
4
4
  Summary:
5
5
  License: Proprietary
6
6
  Author: Martin Fadler
@@ -115,6 +115,11 @@ All notable changes to this project will be documented in this file.
115
115
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
116
116
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
117
117
 
118
+ ## [0.8.35] - 2025-09-01
119
+ - Initial toolkit documentation (WIP)
120
+
121
+ ## [0.8.34] - 2025-09-01
122
+ - Automatic initializations of services and event generator
118
123
 
119
124
  ## [0.8.33] - 2025-08-31
120
125
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "0.8.33"
3
+ version = "0.8.35"
4
4
  description = ""
5
5
  authors = [
6
6
  "Martin Fadler <martin.fadler@unique.ch>",
@@ -45,6 +45,15 @@ pytest-asyncio = "^0.23.8"
45
45
  pytest-mock = "^3.14.0"
46
46
  unique-sdk = { path = "../unique_sdk" }
47
47
  ipykernel = "^6.29.5"
48
+ mkdocs = "^1.6.1"
49
+ mkdocs-material = "^9.6.11"
50
+ mkdocs-include-markdown-plugin = "^7.1.5"
51
+ mkdocs-callouts = "^1.16.0"
52
+ mkdocstrings-python = "^1.16.10"
53
+ entangled-cli = "^2.1.13"
54
+ mkdocs-entangled-plugin = "^0.4.0"
55
+ isort = "^6.0.1"
56
+ mkdocs-codeinclude-plugin = "^0.2.1"
48
57
 
49
58
  [build-system]
50
59
  requires = ["poetry-core"]
@@ -52,6 +61,8 @@ build-backend = "poetry.core.masonry.api"
52
61
 
53
62
  [tool.ruff]
54
63
  target-version = "py311"
64
+ exclude = [".venv", "docs"]
65
+
55
66
 
56
67
  [tool.ruff.lint]
57
68
  extend-select = ["I"]
@@ -78,6 +78,30 @@ def get_event_generator(
78
78
  continue
79
79
 
80
80
 
81
+ def get_event_stream(
82
+ event_type: type[T] = BaseEvent,
83
+ settings_config: UniqueSettings | str | None = None,
84
+ ) -> Generator[T, None, None]:
85
+ """
86
+ Get an event stream from the SSE client.
87
+
88
+ Args:
89
+ event_type: The type of event to get
90
+ settings_or_filename: The settings or filename to use to setup the Unique settings object
91
+ """
92
+
93
+ if isinstance(settings_config, str):
94
+ unique_settings = UniqueSettings.from_env_auto_with_sdk_init(
95
+ filename=settings_config
96
+ )
97
+ elif isinstance(settings_config, UniqueSettings):
98
+ unique_settings = settings_config
99
+ else:
100
+ unique_settings = UniqueSettings.from_env_auto_with_sdk_init()
101
+
102
+ return get_event_generator(unique_settings, event_type)
103
+
104
+
81
105
  def run_demo_with_sse_client(
82
106
  unique_settings: UniqueSettings,
83
107
  handler: Callable[[BaseEvent], Awaitable[None] | None],
@@ -158,10 +158,19 @@ class EnvFileNotFoundError(FileNotFoundError):
158
158
 
159
159
 
160
160
  class UniqueSettings:
161
- def __init__(self, auth: UniqueAuth, app: UniqueApp, api: UniqueApi):
161
+ def __init__(
162
+ self,
163
+ auth: UniqueAuth,
164
+ app: UniqueApp,
165
+ api: UniqueApi,
166
+ env_file: Path | None = None,
167
+ ):
162
168
  self.app = app
163
169
  self.auth = auth
164
170
  self.api = api
171
+ self._env_file: Path | None = (
172
+ env_file if (env_file and env_file.exists()) else None
173
+ )
165
174
 
166
175
  @classmethod
167
176
  def _find_env_file(cls, filename: str = "unique.env") -> Path:
@@ -226,7 +235,7 @@ class UniqueSettings:
226
235
  auth = UniqueAuth(_env_file=env_file_str) # type: ignore[call-arg]
227
236
  app = UniqueApp(_env_file=env_file_str) # type: ignore[call-arg]
228
237
  api = UniqueApi(_env_file=env_file_str) # type: ignore[call-arg]
229
- return cls(auth=auth, app=app, api=api)
238
+ return cls(auth=auth, app=app, api=api, env_file=env_file)
230
239
 
231
240
  @classmethod
232
241
  def from_env_auto(cls, filename: str = "unique.env") -> "UniqueSettings":
@@ -243,6 +252,7 @@ class UniqueSettings:
243
252
  """
244
253
  try:
245
254
  env_file = cls._find_env_file(filename)
255
+ logger.info(f"Environment file found at {env_file}")
246
256
  return cls.from_env(env_file=env_file)
247
257
  except EnvFileNotFoundError:
248
258
  logger.warning(
@@ -135,11 +135,19 @@ class ContentService:
135
135
 
136
136
  @classmethod
137
137
  def from_settings(
138
- cls, settings: UniqueSettings, metadata_filter: dict | None = None
138
+ cls,
139
+ settings: UniqueSettings | str | None = None,
140
+ metadata_filter: dict | None = None,
139
141
  ):
140
142
  """
141
- Initialize the ContentService with a settings object.
143
+ Initialize the ContentService with a settings object and metadata filter.
142
144
  """
145
+
146
+ if settings is None:
147
+ settings = UniqueSettings.from_env_auto_with_sdk_init()
148
+ elif isinstance(settings, str):
149
+ settings = UniqueSettings.from_env_auto_with_sdk_init(filename=settings)
150
+
143
151
  return cls(
144
152
  company_id=settings.auth.company_id.get_secret_value(),
145
153
  user_id=settings.auth.user_id.get_secret_value(),
@@ -56,10 +56,16 @@ class EmbeddingService(BaseService):
56
56
  return cls(company_id=event.company_id, user_id=event.user_id)
57
57
 
58
58
  @classmethod
59
- def from_settings(cls, settings: UniqueSettings):
59
+ def from_settings(cls, settings: UniqueSettings | str | None = None):
60
60
  """
61
61
  Initialize the EmbeddingService with a settings object.
62
62
  """
63
+
64
+ if settings is None:
65
+ settings = UniqueSettings.from_env_auto_with_sdk_init()
66
+ elif isinstance(settings, str):
67
+ settings = UniqueSettings.from_env_auto_with_sdk_init(filename=settings)
68
+
63
69
  return cls(
64
70
  company_id=settings.auth.company_id.get_secret_value(),
65
71
  user_id=settings.auth.user_id.get_secret_value(),
@@ -91,10 +91,15 @@ class LanguageModelService:
91
91
  return cls(company_id=event.company_id, user_id=event.user_id)
92
92
 
93
93
  @classmethod
94
- def from_settings(cls, settings: UniqueSettings):
94
+ def from_settings(cls, settings: UniqueSettings | str | None = None):
95
95
  """
96
96
  Initialize the LanguageModelService with a settings object.
97
97
  """
98
+ if settings is None:
99
+ settings = UniqueSettings.from_env_auto_with_sdk_init()
100
+ elif isinstance(settings, str):
101
+ settings = UniqueSettings.from_env_auto_with_sdk_init(filename=settings)
102
+
98
103
  return cls(
99
104
  company_id=settings.auth.company_id.get_secret_value(),
100
105
  user_id=settings.auth.user_id.get_secret_value(),
@@ -2,7 +2,7 @@ from pydantic import Field, create_model
2
2
  from unique_sdk.utils.chat_in_space import send_message_and_wait_for_completion
3
3
 
4
4
  from unique_toolkit.app import ChatEvent
5
- from unique_toolkit.evaluators.schemas import EvaluationMetricName
5
+ from unique_toolkit.evals.schemas import EvaluationMetricName
6
6
  from unique_toolkit.language_model import (
7
7
  LanguageModelFunction,
8
8
  LanguageModelMessage,
@@ -146,7 +146,7 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
146
146
  tool_response: ToolCallResponse,
147
147
  ) -> LanguageModelMessage:
148
148
  return ToolCallResponse(
149
- id=tool_response.id,
149
+ id=tool_response.id, # type: ignore
150
150
  name=tool_response.name,
151
- content=tool_response["content"],
151
+ content=tool_response.content,
152
152
  )
File without changes