sunholo 0.109.3__tar.gz → 0.109.5__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.109.3 → sunholo-0.109.5}/PKG-INFO +2 -2
  2. {sunholo-0.109.3 → sunholo-0.109.5}/setup.py +1 -1
  3. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/genai/file_handling.py +9 -8
  4. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo.egg-info/PKG-INFO +2 -2
  5. {sunholo-0.109.3 → sunholo-0.109.5}/LICENSE.txt +0 -0
  6. {sunholo-0.109.3 → sunholo-0.109.5}/MANIFEST.in +0 -0
  7. {sunholo-0.109.3 → sunholo-0.109.5}/README.md +0 -0
  8. {sunholo-0.109.3 → sunholo-0.109.5}/setup.cfg +0 -0
  9. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/__init__.py +0 -0
  10. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/agents/__init__.py +0 -0
  11. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/agents/chat_history.py +0 -0
  12. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/agents/dispatch_to_qa.py +0 -0
  13. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/agents/fastapi/__init__.py +0 -0
  14. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/agents/fastapi/base.py +0 -0
  15. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/agents/fastapi/qna_routes.py +0 -0
  16. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/agents/flask/__init__.py +0 -0
  17. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/agents/flask/base.py +0 -0
  18. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/agents/flask/qna_routes.py +0 -0
  19. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/agents/flask/vac_routes.py +0 -0
  20. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/agents/langserve.py +0 -0
  21. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/agents/pubsub.py +0 -0
  22. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/agents/route.py +0 -0
  23. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/agents/special_commands.py +0 -0
  24. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/agents/swagger.py +0 -0
  25. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/archive/__init__.py +0 -0
  26. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/archive/archive.py +0 -0
  27. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/auth/__init__.py +0 -0
  28. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/auth/gcloud.py +0 -0
  29. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/auth/refresh.py +0 -0
  30. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/auth/run.py +0 -0
  31. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/azure/__init__.py +0 -0
  32. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/azure/auth.py +0 -0
  33. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/azure/blobs.py +0 -0
  34. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/azure/event_grid.py +0 -0
  35. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/bots/__init__.py +0 -0
  36. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/bots/discord.py +0 -0
  37. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/bots/github_webhook.py +0 -0
  38. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/bots/webapp.py +0 -0
  39. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/chunker/__init__.py +0 -0
  40. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/chunker/azure.py +0 -0
  41. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/chunker/doc_handling.py +0 -0
  42. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/chunker/encode_metadata.py +0 -0
  43. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/chunker/images.py +0 -0
  44. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/chunker/loaders.py +0 -0
  45. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/chunker/message_data.py +0 -0
  46. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/chunker/pdfs.py +0 -0
  47. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/chunker/process_chunker_data.py +0 -0
  48. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/chunker/publish.py +0 -0
  49. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/chunker/pubsub.py +0 -0
  50. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/chunker/splitter.py +0 -0
  51. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/cli/__init__.py +0 -0
  52. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/cli/chat_vac.py +0 -0
  53. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/cli/cli.py +0 -0
  54. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/cli/cli_init.py +0 -0
  55. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/cli/configs.py +0 -0
  56. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/cli/deploy.py +0 -0
  57. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/cli/embedder.py +0 -0
  58. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/cli/merge_texts.py +0 -0
  59. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/cli/run_proxy.py +0 -0
  60. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/cli/sun_rich.py +0 -0
  61. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/cli/swagger.py +0 -0
  62. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/cli/vertex.py +0 -0
  63. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/components/__init__.py +0 -0
  64. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/components/llm.py +0 -0
  65. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/components/retriever.py +0 -0
  66. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/components/vectorstore.py +0 -0
  67. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/custom_logging.py +0 -0
  68. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/database/__init__.py +0 -0
  69. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/database/alloydb.py +0 -0
  70. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/database/alloydb_client.py +0 -0
  71. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/database/database.py +0 -0
  72. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/database/lancedb.py +0 -0
  73. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/database/sql/sb/create_function.sql +0 -0
  74. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  75. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/database/sql/sb/create_table.sql +0 -0
  76. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  77. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/database/sql/sb/return_sources.sql +0 -0
  78. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/database/sql/sb/setup.sql +0 -0
  79. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/database/static_dbs.py +0 -0
  80. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/database/uuid.py +0 -0
  81. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/discovery_engine/__init__.py +0 -0
  82. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/discovery_engine/chunker_handler.py +0 -0
  83. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/discovery_engine/create_new.py +0 -0
  84. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/discovery_engine/discovery_engine_client.py +0 -0
  85. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/discovery_engine/get_ai_search_chunks.py +0 -0
  86. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/embedder/__init__.py +0 -0
  87. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/embedder/embed_chunk.py +0 -0
  88. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/excel/__init__.py +0 -0
  89. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/excel/plugin.py +0 -0
  90. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/gcs/__init__.py +0 -0
  91. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/gcs/add_file.py +0 -0
  92. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/gcs/download_folder.py +0 -0
  93. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/gcs/download_url.py +0 -0
  94. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/gcs/extract_and_sign.py +0 -0
  95. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/gcs/metadata.py +0 -0
  96. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/genai/__init__.py +0 -0
  97. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/genai/images.py +0 -0
  98. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/genai/init.py +0 -0
  99. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/genai/process_funcs_cls.py +0 -0
  100. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/genai/safety.py +0 -0
  101. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/invoke/__init__.py +0 -0
  102. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/invoke/async_class.py +0 -0
  103. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/invoke/direct_vac_func.py +0 -0
  104. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/invoke/invoke_vac_utils.py +0 -0
  105. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/langfuse/__init__.py +0 -0
  106. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/langfuse/callback.py +0 -0
  107. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/langfuse/evals.py +0 -0
  108. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/langfuse/prompts.py +0 -0
  109. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/llamaindex/__init__.py +0 -0
  110. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/llamaindex/get_files.py +0 -0
  111. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/llamaindex/import_files.py +0 -0
  112. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/llamaindex/llamaindex_class.py +0 -0
  113. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/llamaindex/user_history.py +0 -0
  114. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/lookup/__init__.py +0 -0
  115. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/lookup/model_lookup.yaml +0 -0
  116. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/patches/__init__.py +0 -0
  117. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/patches/langchain/__init__.py +0 -0
  118. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/patches/langchain/lancedb.py +0 -0
  119. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/patches/langchain/vertexai.py +0 -0
  120. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/pubsub/__init__.py +0 -0
  121. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/pubsub/process_pubsub.py +0 -0
  122. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/pubsub/pubsub_manager.py +0 -0
  123. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/qna/__init__.py +0 -0
  124. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/qna/parsers.py +0 -0
  125. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/qna/retry.py +0 -0
  126. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/senses/__init__.py +0 -0
  127. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/senses/stream_voice.py +0 -0
  128. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/streaming/__init__.py +0 -0
  129. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/streaming/content_buffer.py +0 -0
  130. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/streaming/langserve.py +0 -0
  131. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/streaming/stream_lookup.py +0 -0
  132. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/streaming/streaming.py +0 -0
  133. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/summarise/__init__.py +0 -0
  134. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/summarise/summarise.py +0 -0
  135. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/terraform/__init__.py +0 -0
  136. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/terraform/tfvars_editor.py +0 -0
  137. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/tools/__init__.py +0 -0
  138. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/tools/web_browser.py +0 -0
  139. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/utils/__init__.py +0 -0
  140. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/utils/api_key.py +0 -0
  141. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/utils/big_context.py +0 -0
  142. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/utils/config.py +0 -0
  143. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/utils/config_class.py +0 -0
  144. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/utils/config_schema.py +0 -0
  145. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/utils/gcp.py +0 -0
  146. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/utils/gcp_project.py +0 -0
  147. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/utils/mime.py +0 -0
  148. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/utils/parsers.py +0 -0
  149. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/utils/timedelta.py +0 -0
  150. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/utils/user_ids.py +0 -0
  151. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/utils/version.py +0 -0
  152. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/vertex/__init__.py +0 -0
  153. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/vertex/extensions_call.py +0 -0
  154. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/vertex/extensions_class.py +0 -0
  155. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/vertex/genai_functions.py +0 -0
  156. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/vertex/init.py +0 -0
  157. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/vertex/memory_tools.py +0 -0
  158. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/vertex/safety.py +0 -0
  159. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo/vertex/type_dict_to_json.py +0 -0
  160. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo.egg-info/SOURCES.txt +0 -0
  161. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo.egg-info/dependency_links.txt +0 -0
  162. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo.egg-info/entry_points.txt +0 -0
  163. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo.egg-info/requires.txt +0 -0
  164. {sunholo-0.109.3 → sunholo-0.109.5}/sunholo.egg-info/top_level.txt +0 -0
  165. {sunholo-0.109.3 → sunholo-0.109.5}/tests/test_async.py +0 -0
  166. {sunholo-0.109.3 → sunholo-0.109.5}/tests/test_chat_history.py +0 -0
  167. {sunholo-0.109.3 → sunholo-0.109.5}/tests/test_config.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.109.3
3
+ Version: 0.109.5
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.109.3.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.109.5.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.109.3'
3
+ version = '0.109.5'
4
4
 
5
5
  setup(
6
6
  name='sunholo',
@@ -82,7 +82,7 @@ def sanitize_file(filename):
82
82
  sanitized_name = re.sub(r'^-+|-+$', '', sanitized_name) # Remove leading or trailing dashes
83
83
 
84
84
  # Reattach the original extension
85
- return f"{sanitized_name}"
85
+ return sanitized_name[:40]
86
86
 
87
87
  async def construct_file_content(gs_list, bucket:str):
88
88
  """
@@ -115,6 +115,7 @@ async def construct_file_content(gs_list, bucket:str):
115
115
  tasks = []
116
116
  for file_info in file_list:
117
117
  img_url = f"gs://{bucket}/{file_info['storagePath']}"
118
+ display_url = file_info.get('url')
118
119
  mime_type = file_info['contentType']
119
120
  name = sanitize_file(file_info['name'])
120
121
  log.info(f"Processing {name=}")
@@ -123,14 +124,14 @@ async def construct_file_content(gs_list, bucket:str):
123
124
  content.append(
124
125
  {"role": "user", "parts": [
125
126
  {"file_data": myfile},
126
- {"text": f"You have been given the ability to work with file '{name}' with {mime_type=}."}
127
+ {"text": f"You have been given the ability to work with file {name=} with {mime_type=} {display_url=}"}
127
128
  ]
128
129
  })
129
130
  log.info(f"Found existing genai.get_file {name=}")
130
131
 
131
132
  except Exception as e:
132
133
  log.info(f"Not found checking genai.get_file: '{name}' {str(e)}")
133
- tasks.append(download_gcs_upload_genai(img_url, mime_type, name=name))
134
+ tasks.append(download_gcs_upload_genai(img_url, mime_type=mime_type, name=name, display_url=display_url))
134
135
 
135
136
  # Run all tasks in parallel
136
137
  if tasks:
@@ -148,7 +149,7 @@ async def download_file_with_error_handling(img_url, mime_type, name):
148
149
  log.error(msg)
149
150
  return {"role": "user", "parts": [{"text": msg}]}
150
151
 
151
- async def download_gcs_upload_genai(img_url, mime_type, name=None, retries=3, delay=2):
152
+ async def download_gcs_upload_genai(img_url, mime_type, name=None, display_url=None, retries=3, delay=2):
152
153
  import aiofiles
153
154
  from google.generativeai.types import file_types
154
155
  """
@@ -180,7 +181,7 @@ async def download_gcs_upload_genai(img_url, mime_type, name=None, retries=3, de
180
181
 
181
182
  if file_size > 19434343:
182
183
  log.warning(f"File size for {img_url}: {file_size} is too big.")
183
- msg = f"The file for {img_url} is too large ({file_size} bytes) to be used directly. Use RAG instead."
184
+ msg = f"The file for {img_url} is too large ({file_size} bytes) to be used directly. Use RAG instead or {display_url=}"
184
185
  return {"role": "user", "parts": [{"text": msg}]}
185
186
 
186
187
  extension = mimetypes.guess_extension(mime_type)
@@ -202,15 +203,15 @@ async def download_gcs_upload_genai(img_url, mime_type, name=None, retries=3, de
202
203
  sanitized_file
203
204
  )
204
205
  return {"role": "user", "parts": [{"file_data": downloaded_content},
205
- {"text": f"You have been given the ability to read and work with filename '{name}' with {mime_type=}."}
206
+ {"text": f"You have been given the ability to read and work with filename '{name=}' with {mime_type=} {display_url=}"}
206
207
  ]}
207
208
  except Exception as err:
208
- msg = f"Could not upload {sanitized_file} to genai.upload_file: {str(err)} {traceback.format_exc()}"
209
+ msg = f"Could not upload {sanitized_file} to genai.upload_file: {str(err)} {traceback.format_exc()} {display_url=}"
209
210
  log.error(msg)
210
211
  return {"role": "user", "parts": [{"text": msg}]}
211
212
 
212
213
  except Exception as err:
213
- log.error(f"Error processing file {img_url} on attempt {attempt + 1}/{retries}: {str(err)}")
214
+ log.error(f"Error processing file {img_url} {mime_type=} on attempt {attempt + 1}/{retries}: {str(err)}")
214
215
 
215
216
  if attempt < retries - 1:
216
217
  log.info(f"Retrying in {delay} seconds...")
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.109.3
3
+ Version: 0.109.5
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.109.3.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.109.5.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