sunholo 0.78.5__tar.gz → 0.79.0__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 (148) hide show
  1. {sunholo-0.78.5 → sunholo-0.79.0}/PKG-INFO +2 -2
  2. {sunholo-0.78.5 → sunholo-0.79.0}/setup.py +1 -1
  3. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/chunker/doc_handling.py +4 -0
  4. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/database/alloydb.py +40 -7
  5. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/utils/config_class.py +5 -1
  6. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo.egg-info/PKG-INFO +2 -2
  7. {sunholo-0.78.5 → sunholo-0.79.0}/LICENSE.txt +0 -0
  8. {sunholo-0.78.5 → sunholo-0.79.0}/MANIFEST.in +0 -0
  9. {sunholo-0.78.5 → sunholo-0.79.0}/README.md +0 -0
  10. {sunholo-0.78.5 → sunholo-0.79.0}/setup.cfg +0 -0
  11. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/__init__.py +0 -0
  12. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/agents/__init__.py +0 -0
  13. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/agents/chat_history.py +0 -0
  14. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/agents/dispatch_to_qa.py +0 -0
  15. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/agents/fastapi/__init__.py +0 -0
  16. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/agents/fastapi/base.py +0 -0
  17. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/agents/fastapi/qna_routes.py +0 -0
  18. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/agents/flask/__init__.py +0 -0
  19. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/agents/flask/base.py +0 -0
  20. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/agents/flask/qna_routes.py +0 -0
  21. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/agents/flask/vac_routes.py +0 -0
  22. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/agents/langserve.py +0 -0
  23. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/agents/pubsub.py +0 -0
  24. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/agents/route.py +0 -0
  25. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/agents/special_commands.py +0 -0
  26. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/agents/swagger.py +0 -0
  27. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/archive/__init__.py +0 -0
  28. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/archive/archive.py +0 -0
  29. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/auth/__init__.py +0 -0
  30. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/auth/gcloud.py +0 -0
  31. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/auth/refresh.py +0 -0
  32. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/auth/run.py +0 -0
  33. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/azure/__init__.py +0 -0
  34. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/azure/auth.py +0 -0
  35. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/azure/blobs.py +0 -0
  36. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/azure/event_grid.py +0 -0
  37. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/bots/__init__.py +0 -0
  38. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/bots/discord.py +0 -0
  39. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/bots/github_webhook.py +0 -0
  40. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/bots/webapp.py +0 -0
  41. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/chunker/__init__.py +0 -0
  42. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/chunker/azure.py +0 -0
  43. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/chunker/encode_metadata.py +0 -0
  44. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/chunker/images.py +0 -0
  45. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/chunker/loaders.py +0 -0
  46. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/chunker/message_data.py +0 -0
  47. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/chunker/pdfs.py +0 -0
  48. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/chunker/process_chunker_data.py +0 -0
  49. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/chunker/publish.py +0 -0
  50. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/chunker/pubsub.py +0 -0
  51. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/chunker/splitter.py +0 -0
  52. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/cli/__init__.py +0 -0
  53. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/cli/chat_vac.py +0 -0
  54. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/cli/cli.py +0 -0
  55. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/cli/cli_init.py +0 -0
  56. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/cli/configs.py +0 -0
  57. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/cli/deploy.py +0 -0
  58. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/cli/embedder.py +0 -0
  59. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/cli/merge_texts.py +0 -0
  60. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/cli/run_proxy.py +0 -0
  61. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/cli/sun_rich.py +0 -0
  62. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/cli/swagger.py +0 -0
  63. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/cli/vertex.py +0 -0
  64. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/components/__init__.py +0 -0
  65. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/components/llm.py +0 -0
  66. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/components/retriever.py +0 -0
  67. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/components/vectorstore.py +0 -0
  68. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/database/__init__.py +0 -0
  69. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/database/alloydb_client.py +0 -0
  70. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/database/database.py +0 -0
  71. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/database/lancedb.py +0 -0
  72. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/database/sql/sb/create_function.sql +0 -0
  73. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  74. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/database/sql/sb/create_table.sql +0 -0
  75. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  76. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/database/sql/sb/return_sources.sql +0 -0
  77. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/database/sql/sb/setup.sql +0 -0
  78. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/database/static_dbs.py +0 -0
  79. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/database/uuid.py +0 -0
  80. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/discovery_engine/__init__.py +0 -0
  81. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/discovery_engine/chunker_handler.py +0 -0
  82. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/discovery_engine/create_new.py +0 -0
  83. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/discovery_engine/discovery_engine_client.py +0 -0
  84. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/embedder/__init__.py +0 -0
  85. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/embedder/embed_chunk.py +0 -0
  86. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/gcs/__init__.py +0 -0
  87. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/gcs/add_file.py +0 -0
  88. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/gcs/download_folder.py +0 -0
  89. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/gcs/download_url.py +0 -0
  90. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/gcs/metadata.py +0 -0
  91. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/invoke/__init__.py +0 -0
  92. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/invoke/direct_vac_func.py +0 -0
  93. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/invoke/invoke_vac_utils.py +0 -0
  94. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/langfuse/__init__.py +0 -0
  95. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/langfuse/callback.py +0 -0
  96. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/langfuse/prompts.py +0 -0
  97. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/llamaindex/__init__.py +0 -0
  98. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/llamaindex/generate.py +0 -0
  99. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/llamaindex/get_files.py +0 -0
  100. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/llamaindex/import_files.py +0 -0
  101. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/logging.py +0 -0
  102. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/lookup/__init__.py +0 -0
  103. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/lookup/model_lookup.yaml +0 -0
  104. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/patches/__init__.py +0 -0
  105. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/patches/langchain/__init__.py +0 -0
  106. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/patches/langchain/lancedb.py +0 -0
  107. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/patches/langchain/vertexai.py +0 -0
  108. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/pubsub/__init__.py +0 -0
  109. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/pubsub/process_pubsub.py +0 -0
  110. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/pubsub/pubsub_manager.py +0 -0
  111. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/qna/__init__.py +0 -0
  112. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/qna/parsers.py +0 -0
  113. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/qna/retry.py +0 -0
  114. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/streaming/__init__.py +0 -0
  115. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/streaming/content_buffer.py +0 -0
  116. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/streaming/langserve.py +0 -0
  117. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/streaming/stream_lookup.py +0 -0
  118. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/streaming/streaming.py +0 -0
  119. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/summarise/__init__.py +0 -0
  120. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/summarise/summarise.py +0 -0
  121. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/tools/__init__.py +0 -0
  122. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/tools/web_browser.py +0 -0
  123. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/utils/__init__.py +0 -0
  124. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/utils/api_key.py +0 -0
  125. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/utils/big_context.py +0 -0
  126. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/utils/config.py +0 -0
  127. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/utils/config_schema.py +0 -0
  128. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/utils/gcp.py +0 -0
  129. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/utils/gcp_project.py +0 -0
  130. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/utils/parsers.py +0 -0
  131. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/utils/timedelta.py +0 -0
  132. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/utils/user_ids.py +0 -0
  133. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/utils/version.py +0 -0
  134. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/vertex/__init__.py +0 -0
  135. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/vertex/extensions_call.py +0 -0
  136. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/vertex/extensions_class.py +0 -0
  137. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/vertex/genai_functions.py +0 -0
  138. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/vertex/init.py +0 -0
  139. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/vertex/memory_tools.py +0 -0
  140. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/vertex/safety.py +0 -0
  141. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo/vertex/type_dict_to_json.py +0 -0
  142. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo.egg-info/SOURCES.txt +0 -0
  143. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo.egg-info/dependency_links.txt +0 -0
  144. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo.egg-info/entry_points.txt +0 -0
  145. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo.egg-info/requires.txt +0 -0
  146. {sunholo-0.78.5 → sunholo-0.79.0}/sunholo.egg-info/top_level.txt +0 -0
  147. {sunholo-0.78.5 → sunholo-0.79.0}/tests/test_chat_history.py +0 -0
  148. {sunholo-0.78.5 → sunholo-0.79.0}/tests/test_config.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.78.5
3
+ Version: 0.79.0
4
4
  Summary: Large Language Model DevOps - a package to help deploy LLMs to the Cloud.
5
5
  Home-page: https://github.com/sunholo-data/sunholo-py
6
- Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.78.5.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.79.0.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -1,7 +1,7 @@
1
1
  from setuptools import setup, find_packages
2
2
 
3
3
  # Define your base version
4
- version = '0.78.5'
4
+ version = '0.79.0'
5
5
 
6
6
  setup(
7
7
  name='sunholo',
@@ -175,6 +175,10 @@ Be careful not to add any speculation or any details that are not covered in the
175
175
  bucket_name = os.getenv("DOC_BUCKET")
176
176
  if not bucket_name:
177
177
  raise ValueError("No DOC_BUCKET configured for summary")
178
+
179
+ if bucket_name.startswith("gs://"):
180
+ bucket_name = bucket_name[len("gs://"):]
181
+
178
182
  with tempfile.NamedTemporaryFile(mode='w+', delete=False) as temp_file:
179
183
  temp_file.write(summary)
180
184
  temp_file.flush()
@@ -232,7 +232,7 @@ async def load_alloydb_sql_async(sql, vector_name):
232
232
  return documents
233
233
 
234
234
  def and_or_ilike(sources, search_type="OR", operator="ILIKE"):
235
- unique_sources = set(sources)
235
+ unique_sources = set(sources.split())
236
236
  # Choose the delimiter based on the search_type argument
237
237
  delimiter = ' AND ' if search_type.upper() == "AND" else ' OR '
238
238
 
@@ -240,14 +240,14 @@ def and_or_ilike(sources, search_type="OR", operator="ILIKE"):
240
240
  conditions = delimiter.join(f"TRIM(source) {operator} '%{source}%'" for source in unique_sources)
241
241
  if not conditions:
242
242
  log.warning("Alloydb doc query found no like_patterns")
243
- return []
243
+ return ""
244
244
 
245
245
  return conditions
246
246
 
247
247
  def _get_sources_from_docstore(sources, vector_name, search_type="OR"):
248
248
  if not sources:
249
249
  log.warning("No sources found for alloydb fetch")
250
- return []
250
+ return ""
251
251
 
252
252
  table_name = f"{vector_name}_docstore"
253
253
 
@@ -263,10 +263,37 @@ def _get_sources_from_docstore(sources, vector_name, search_type="OR"):
263
263
 
264
264
  return query
265
265
 
266
+ def _list_sources_from_docstore(sources, vector_name, search_type="OR"):
267
+ table_name = f"{vector_name}_docstore"
268
+
269
+
270
+ if sources:
271
+ conditions = and_or_ilike(sources, search_type=search_type)
272
+ query = f"""
273
+ SELECT DISTINCT langchain_metadata->>'objectId' AS objectId
274
+ FROM {table_name}
275
+ WHERE {conditions}
276
+ ORDER BY langchain_metadata->>'objectId' ASC
277
+ LIMIT 500;
278
+ """
279
+ else:
280
+ query = f"""
281
+ SELECT DISTINCT langchain_metadata->>'objectId' AS objectId
282
+ FROM {table_name}
283
+ ORDER BY langchain_metadata->>'objectId' ASC
284
+ LIMIT 500;
285
+ """
286
+
287
+ return query
266
288
 
267
- async def get_sources_from_docstore_async(sources, vector_name, search_type="OR"):
289
+
290
+ async def get_sources_from_docstore_async(sources, vector_name, search_type="OR", just_source_name=False):
268
291
 
269
- query = _get_sources_from_docstore(sources, vector_name=vector_name, search_type=search_type)
292
+ if just_source_name:
293
+ query = _list_sources_from_docstore(sources, vector_name=vector_name, search_type=search_type)
294
+ else:
295
+ query = _get_sources_from_docstore(sources, vector_name=vector_name, search_type=search_type)
296
+
270
297
  if not query:
271
298
  return []
272
299
 
@@ -274,9 +301,13 @@ async def get_sources_from_docstore_async(sources, vector_name, search_type="OR"
274
301
 
275
302
  return documents
276
303
 
277
- def get_sources_from_docstore(sources, vector_name, search_type="OR"):
304
+ def get_sources_from_docstore(sources, vector_name, search_type="OR", just_source_name=False):
278
305
 
279
- query = _get_sources_from_docstore(sources, vector_name=vector_name, search_type=search_type)
306
+ if just_source_name:
307
+ query = _list_sources_from_docstore(sources, vector_name=vector_name, search_type=search_type)
308
+ else:
309
+ query = _get_sources_from_docstore(sources, vector_name=vector_name, search_type=search_type)
310
+
280
311
  if not query:
281
312
  return []
282
313
 
@@ -303,3 +334,5 @@ def delete_sources_from_alloydb(sources, vector_name):
303
334
  DELETE FROM {vector_name}_vectorstore_{vector_length}
304
335
  WHERE {conditions}
305
336
  """
337
+
338
+ return query
@@ -37,6 +37,10 @@ class ConfigManager:
37
37
  self.local_config_folder = local_config_folder
38
38
  self.configs_by_kind = self.load_all_configs()
39
39
 
40
+ test_agent = self.vacConfig("agent")
41
+ if not test_agent:
42
+ print(f"WARNING: No vacConfig.agent found for {self.vector_name} - are you in right folder? {local_config_folder=} {self.config_folder=}")
43
+
40
44
  def load_all_configs(self):
41
45
  """
42
46
  Load all configuration files from the specified directories into a dictionary.
@@ -121,7 +125,7 @@ class ConfigManager:
121
125
  self.config_cache[filename] = (config, datetime.now())
122
126
  log.debug(f"Loaded and cached {config_file}")
123
127
  if is_local:
124
- log.warning(f"Local configuration override for {filename}")
128
+ log.warning(f"Local configuration override for {filename} via {self.local_config_folder}")
125
129
  return config
126
130
 
127
131
  def _check_and_reload_configs(self):
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.78.5
3
+ Version: 0.79.0
4
4
  Summary: Large Language Model DevOps - a package to help deploy LLMs to the Cloud.
5
5
  Home-page: https://github.com/sunholo-data/sunholo-py
6
- Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.78.5.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.79.0.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes