sunholo 0.110.2__tar.gz → 0.110.4__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 (167) hide show
  1. {sunholo-0.110.2 → sunholo-0.110.4}/PKG-INFO +2 -2
  2. {sunholo-0.110.2 → sunholo-0.110.4}/setup.py +1 -1
  3. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/genai/file_handling.py +18 -6
  4. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/langfuse/prompts.py +29 -21
  5. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo.egg-info/PKG-INFO +2 -2
  6. {sunholo-0.110.2 → sunholo-0.110.4}/LICENSE.txt +0 -0
  7. {sunholo-0.110.2 → sunholo-0.110.4}/MANIFEST.in +0 -0
  8. {sunholo-0.110.2 → sunholo-0.110.4}/README.md +0 -0
  9. {sunholo-0.110.2 → sunholo-0.110.4}/setup.cfg +0 -0
  10. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/__init__.py +0 -0
  11. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/agents/__init__.py +0 -0
  12. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/agents/chat_history.py +0 -0
  13. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/agents/dispatch_to_qa.py +0 -0
  14. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/agents/fastapi/__init__.py +0 -0
  15. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/agents/fastapi/base.py +0 -0
  16. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/agents/fastapi/qna_routes.py +0 -0
  17. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/agents/flask/__init__.py +0 -0
  18. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/agents/flask/base.py +0 -0
  19. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/agents/flask/qna_routes.py +0 -0
  20. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/agents/flask/vac_routes.py +0 -0
  21. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/agents/langserve.py +0 -0
  22. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/agents/pubsub.py +0 -0
  23. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/agents/route.py +0 -0
  24. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/agents/special_commands.py +0 -0
  25. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/agents/swagger.py +0 -0
  26. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/archive/__init__.py +0 -0
  27. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/archive/archive.py +0 -0
  28. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/auth/__init__.py +0 -0
  29. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/auth/gcloud.py +0 -0
  30. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/auth/refresh.py +0 -0
  31. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/auth/run.py +0 -0
  32. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/azure/__init__.py +0 -0
  33. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/azure/auth.py +0 -0
  34. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/azure/blobs.py +0 -0
  35. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/azure/event_grid.py +0 -0
  36. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/bots/__init__.py +0 -0
  37. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/bots/discord.py +0 -0
  38. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/bots/github_webhook.py +0 -0
  39. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/bots/webapp.py +0 -0
  40. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/chunker/__init__.py +0 -0
  41. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/chunker/azure.py +0 -0
  42. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/chunker/doc_handling.py +0 -0
  43. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/chunker/encode_metadata.py +0 -0
  44. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/chunker/images.py +0 -0
  45. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/chunker/loaders.py +0 -0
  46. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/chunker/message_data.py +0 -0
  47. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/chunker/pdfs.py +0 -0
  48. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/chunker/process_chunker_data.py +0 -0
  49. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/chunker/publish.py +0 -0
  50. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/chunker/pubsub.py +0 -0
  51. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/chunker/splitter.py +0 -0
  52. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/cli/__init__.py +0 -0
  53. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/cli/chat_vac.py +0 -0
  54. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/cli/cli.py +0 -0
  55. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/cli/cli_init.py +0 -0
  56. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/cli/configs.py +0 -0
  57. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/cli/deploy.py +0 -0
  58. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/cli/embedder.py +0 -0
  59. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/cli/merge_texts.py +0 -0
  60. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/cli/run_proxy.py +0 -0
  61. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/cli/sun_rich.py +0 -0
  62. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/cli/swagger.py +0 -0
  63. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/cli/vertex.py +0 -0
  64. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/components/__init__.py +0 -0
  65. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/components/llm.py +0 -0
  66. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/components/retriever.py +0 -0
  67. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/components/vectorstore.py +0 -0
  68. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/custom_logging.py +0 -0
  69. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/database/__init__.py +0 -0
  70. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/database/alloydb.py +0 -0
  71. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/database/alloydb_client.py +0 -0
  72. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/database/database.py +0 -0
  73. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/database/lancedb.py +0 -0
  74. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/database/sql/sb/create_function.sql +0 -0
  75. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  76. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/database/sql/sb/create_table.sql +0 -0
  77. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  78. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/database/sql/sb/return_sources.sql +0 -0
  79. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/database/sql/sb/setup.sql +0 -0
  80. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/database/static_dbs.py +0 -0
  81. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/database/uuid.py +0 -0
  82. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/discovery_engine/__init__.py +0 -0
  83. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/discovery_engine/chunker_handler.py +0 -0
  84. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/discovery_engine/create_new.py +0 -0
  85. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/discovery_engine/discovery_engine_client.py +0 -0
  86. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/discovery_engine/get_ai_search_chunks.py +0 -0
  87. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/embedder/__init__.py +0 -0
  88. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/embedder/embed_chunk.py +0 -0
  89. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/excel/__init__.py +0 -0
  90. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/excel/plugin.py +0 -0
  91. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/gcs/__init__.py +0 -0
  92. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/gcs/add_file.py +0 -0
  93. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/gcs/download_folder.py +0 -0
  94. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/gcs/download_url.py +0 -0
  95. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/gcs/extract_and_sign.py +0 -0
  96. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/gcs/metadata.py +0 -0
  97. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/genai/__init__.py +0 -0
  98. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/genai/images.py +0 -0
  99. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/genai/init.py +0 -0
  100. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/genai/process_funcs_cls.py +0 -0
  101. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/genai/safety.py +0 -0
  102. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/invoke/__init__.py +0 -0
  103. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/invoke/async_class.py +0 -0
  104. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/invoke/direct_vac_func.py +0 -0
  105. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/invoke/invoke_vac_utils.py +0 -0
  106. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/langfuse/__init__.py +0 -0
  107. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/langfuse/callback.py +0 -0
  108. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/langfuse/evals.py +0 -0
  109. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/llamaindex/__init__.py +0 -0
  110. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/llamaindex/get_files.py +0 -0
  111. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/llamaindex/import_files.py +0 -0
  112. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/llamaindex/llamaindex_class.py +0 -0
  113. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/llamaindex/user_history.py +0 -0
  114. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/lookup/__init__.py +0 -0
  115. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/lookup/model_lookup.yaml +0 -0
  116. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/patches/__init__.py +0 -0
  117. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/patches/langchain/__init__.py +0 -0
  118. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/patches/langchain/lancedb.py +0 -0
  119. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/patches/langchain/vertexai.py +0 -0
  120. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/pubsub/__init__.py +0 -0
  121. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/pubsub/process_pubsub.py +0 -0
  122. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/pubsub/pubsub_manager.py +0 -0
  123. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/qna/__init__.py +0 -0
  124. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/qna/parsers.py +0 -0
  125. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/qna/retry.py +0 -0
  126. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/senses/__init__.py +0 -0
  127. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/senses/stream_voice.py +0 -0
  128. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/streaming/__init__.py +0 -0
  129. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/streaming/content_buffer.py +0 -0
  130. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/streaming/langserve.py +0 -0
  131. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/streaming/stream_lookup.py +0 -0
  132. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/streaming/streaming.py +0 -0
  133. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/summarise/__init__.py +0 -0
  134. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/summarise/summarise.py +0 -0
  135. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/terraform/__init__.py +0 -0
  136. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/terraform/tfvars_editor.py +0 -0
  137. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/tools/__init__.py +0 -0
  138. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/tools/web_browser.py +0 -0
  139. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/utils/__init__.py +0 -0
  140. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/utils/api_key.py +0 -0
  141. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/utils/big_context.py +0 -0
  142. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/utils/config.py +0 -0
  143. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/utils/config_class.py +0 -0
  144. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/utils/config_schema.py +0 -0
  145. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/utils/gcp.py +0 -0
  146. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/utils/gcp_project.py +0 -0
  147. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/utils/mime.py +0 -0
  148. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/utils/parsers.py +0 -0
  149. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/utils/timedelta.py +0 -0
  150. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/utils/user_ids.py +0 -0
  151. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/utils/version.py +0 -0
  152. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/vertex/__init__.py +0 -0
  153. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/vertex/extensions_call.py +0 -0
  154. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/vertex/extensions_class.py +0 -0
  155. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/vertex/genai_functions.py +0 -0
  156. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/vertex/init.py +0 -0
  157. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/vertex/memory_tools.py +0 -0
  158. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/vertex/safety.py +0 -0
  159. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo/vertex/type_dict_to_json.py +0 -0
  160. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo.egg-info/SOURCES.txt +0 -0
  161. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo.egg-info/dependency_links.txt +0 -0
  162. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo.egg-info/entry_points.txt +0 -0
  163. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo.egg-info/requires.txt +0 -0
  164. {sunholo-0.110.2 → sunholo-0.110.4}/sunholo.egg-info/top_level.txt +0 -0
  165. {sunholo-0.110.2 → sunholo-0.110.4}/tests/test_async.py +0 -0
  166. {sunholo-0.110.2 → sunholo-0.110.4}/tests/test_chat_history.py +0 -0
  167. {sunholo-0.110.2 → sunholo-0.110.4}/tests/test_config.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.110.2
3
+ Version: 0.110.4
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.110.2.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.110.4.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -1,6 +1,6 @@
1
1
  from setuptools import setup, find_packages
2
2
 
3
- version = '0.110.2'
3
+ version = '0.110.4'
4
4
 
5
5
  setup(
6
6
  name='sunholo',
@@ -121,20 +121,27 @@ async def construct_file_content(gs_list, bucket:str):
121
121
  display_url = file_info.get('url')
122
122
  mime_type = file_info['contentType']
123
123
  name = sanitize_file(file_info['name'])
124
- log.info(f"Processing {name=}")
124
+ display_name = file_info['name']
125
+ log.info(f"Processing {name=} {display_name=}")
125
126
  try:
126
127
  myfile = genai.get_file(name)
127
128
  content.append(
128
129
  {"role": "user", "parts": [
129
130
  {"file_data": myfile},
130
- {"text": f"You have been given the ability to work with file {name=} with {mime_type=} {display_url=}"}
131
+ {"text": f"You have been given the ability to work with file {display_name=} with {mime_type=} {display_url=}"}
131
132
  ]
132
133
  })
133
134
  log.info(f"Found existing genai.get_file {name=}")
134
135
 
135
136
  except Exception as e:
136
137
  log.info(f"Not found checking genai.get_file: '{name}' {str(e)}")
137
- tasks.append(download_gcs_upload_genai(img_url, mime_type=mime_type, name=name, display_url=display_url))
138
+ tasks.append(
139
+ download_gcs_upload_genai(img_url,
140
+ mime_type=mime_type,
141
+ name=name,
142
+ display_url=display_url,
143
+ display_name=display_name)
144
+ )
138
145
 
139
146
  # Run all tasks in parallel
140
147
  if tasks:
@@ -152,7 +159,12 @@ async def download_file_with_error_handling(img_url, mime_type, name):
152
159
  log.error(msg)
153
160
  return {"role": "user", "parts": [{"text": msg}]}
154
161
 
155
- async def download_gcs_upload_genai(img_url, mime_type, name=None, display_url=None, retries=3, delay=2):
162
+ async def download_gcs_upload_genai(img_url,
163
+ mime_type,
164
+ name=None,
165
+ display_url=None,
166
+ display_name=None,
167
+ retries=3, delay=2):
156
168
  import aiofiles
157
169
  from google.generativeai.types import file_types
158
170
  """
@@ -202,11 +214,11 @@ async def download_gcs_upload_genai(img_url, mime_type, name=None, display_url=N
202
214
  # Upload the file and get its content reference
203
215
  try:
204
216
  downloaded_content: file_types.File = await asyncio.to_thread(
205
- partial(genai.upload_file, name=name, mime_type=mime_type),
217
+ partial(genai.upload_file, name=name, mime_type=mime_type, display_name=display_name),
206
218
  sanitized_file
207
219
  )
208
220
  return {"role": "user", "parts": [{"file_data": downloaded_content},
209
- {"text": f"You have been given the ability to read and work with filename '{name=}' with {mime_type=} {display_url=}"}
221
+ {"text": f"You have been given the ability to read and work with filename '{display_name=}' with {mime_type=} {display_url=}"}
210
222
  ]}
211
223
  except Exception as err:
212
224
  msg = f"Could not upload {sanitized_file} to genai.upload_file: {str(err)} {traceback.format_exc()} {display_url=}"
@@ -1,5 +1,11 @@
1
1
  from ..custom_logging import log
2
2
  from ..utils import ConfigManager
3
+ import threading
4
+ try:
5
+ from langfuse import Langfuse
6
+ langfuse = Langfuse()
7
+ except ImportError:
8
+ langfuse = None
3
9
 
4
10
  # Load the YAML file
5
11
  def load_prompt_from_yaml(key, prefix="sunholo", load_from_file=False, f_string=True):
@@ -50,31 +56,33 @@ def load_prompt_from_yaml(key, prefix="sunholo", load_from_file=False, f_string=
50
56
  ```
51
57
 
52
58
  """
53
- config = ConfigManager(prefix)
59
+ # Initialize Langfuse client
54
60
  if load_from_file:
61
+ config = ConfigManager(prefix)
55
62
 
56
63
  return config.promptConfig(key)
57
64
 
58
-
59
- from langfuse import Langfuse
60
-
61
- # Initialize Langfuse client
62
- langfuse = Langfuse()
63
-
64
- try:
65
- if prefix is None:
66
- langfuse_template = key
67
- else:
68
- langfuse_template = f"{prefix}-{key}"
69
-
70
- langfuse_prompt = langfuse.get_prompt(langfuse_template, cache_ttl_seconds=300)
71
-
72
- if f_string:
73
- return langfuse_prompt.get_langchain_prompt()
65
+ if langfuse is None:
66
+ log.warning("No Langfuse import available - install via sunholo[http]")
67
+ else:
68
+ langfuse_result = [None]
74
69
 
75
- return langfuse_prompt
76
-
77
- except Exception as err:
78
- log.warning(f"Could not find langfuse template: {langfuse_template} - {str(err)} - attempting to load from promptConfig")
70
+ def langfuse_load():
71
+ try:
72
+ template = f"{prefix}-{key}" if prefix else key
73
+ prompt = langfuse.get_prompt(template, cache_ttl_seconds=300)
74
+ langfuse_result[0] = prompt.get_langchain_prompt() if f_string else prompt
75
+ except Exception as err:
76
+ log.warning(f"Langfuse error: {template} - {str(err)}")
77
+ config = ConfigManager(prefix)
78
+ langfuse_result[0] = config.promptConfig(key)
79
+
80
+ thread = threading.Thread(target=langfuse_load)
81
+ thread.start()
82
+ thread.join(timeout=1)
83
+
84
+ if langfuse_result[0]:
85
+ return langfuse_result[0]
79
86
 
87
+ config = ConfigManager(prefix)
80
88
  return config.promptConfig(key)
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.110.2
3
+ Version: 0.110.4
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.110.2.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.110.4.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