sunholo 0.99.11__tar.gz → 0.99.13__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.
- {sunholo-0.99.11 → sunholo-0.99.13}/PKG-INFO +2 -2
- {sunholo-0.99.11 → sunholo-0.99.13}/setup.py +1 -1
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/gcs/add_file.py +3 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/invoke/async_class.py +28 -15
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo.egg-info/PKG-INFO +2 -2
- {sunholo-0.99.11 → sunholo-0.99.13}/LICENSE.txt +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/MANIFEST.in +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/README.md +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/setup.cfg +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/agents/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/agents/chat_history.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/agents/dispatch_to_qa.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/agents/fastapi/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/agents/fastapi/base.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/agents/fastapi/qna_routes.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/agents/flask/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/agents/flask/base.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/agents/flask/qna_routes.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/agents/flask/vac_routes.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/agents/langserve.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/agents/pubsub.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/agents/route.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/agents/special_commands.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/agents/swagger.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/archive/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/archive/archive.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/auth/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/auth/gcloud.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/auth/refresh.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/auth/run.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/azure/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/azure/auth.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/azure/blobs.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/azure/event_grid.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/bots/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/bots/discord.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/bots/github_webhook.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/bots/webapp.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/chunker/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/chunker/azure.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/chunker/doc_handling.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/chunker/encode_metadata.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/chunker/images.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/chunker/loaders.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/chunker/message_data.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/chunker/pdfs.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/chunker/process_chunker_data.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/chunker/publish.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/chunker/pubsub.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/chunker/splitter.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/cli/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/cli/chat_vac.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/cli/cli.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/cli/cli_init.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/cli/configs.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/cli/deploy.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/cli/embedder.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/cli/merge_texts.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/cli/run_proxy.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/cli/sun_rich.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/cli/swagger.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/cli/vertex.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/components/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/components/llm.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/components/retriever.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/components/vectorstore.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/custom_logging.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/database/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/database/alloydb.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/database/alloydb_client.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/database/database.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/database/lancedb.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/database/sql/sb/create_function.sql +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/database/sql/sb/create_function_time.sql +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/database/sql/sb/create_table.sql +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/database/sql/sb/return_sources.sql +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/database/sql/sb/setup.sql +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/database/static_dbs.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/database/uuid.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/discovery_engine/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/discovery_engine/chunker_handler.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/discovery_engine/create_new.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/discovery_engine/discovery_engine_client.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/discovery_engine/get_ai_search_chunks.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/embedder/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/embedder/embed_chunk.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/excel/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/excel/plugin.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/gcs/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/gcs/download_folder.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/gcs/download_url.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/gcs/metadata.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/genai/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/genai/init.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/genai/process_funcs_cls.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/genai/safety.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/invoke/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/invoke/direct_vac_func.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/invoke/invoke_vac_utils.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/langfuse/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/langfuse/callback.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/langfuse/evals.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/langfuse/prompts.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/llamaindex/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/llamaindex/get_files.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/llamaindex/import_files.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/llamaindex/llamaindex_class.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/llamaindex/user_history.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/lookup/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/lookup/model_lookup.yaml +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/patches/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/patches/langchain/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/patches/langchain/lancedb.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/patches/langchain/vertexai.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/pubsub/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/pubsub/process_pubsub.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/pubsub/pubsub_manager.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/qna/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/qna/parsers.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/qna/retry.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/streaming/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/streaming/content_buffer.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/streaming/langserve.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/streaming/stream_lookup.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/streaming/streaming.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/summarise/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/summarise/summarise.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/terraform/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/terraform/tfvars_editor.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/tools/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/tools/web_browser.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/utils/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/utils/api_key.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/utils/big_context.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/utils/config.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/utils/config_class.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/utils/config_schema.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/utils/gcp.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/utils/gcp_project.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/utils/parsers.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/utils/timedelta.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/utils/user_ids.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/utils/version.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/vertex/__init__.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/vertex/extensions_call.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/vertex/extensions_class.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/vertex/genai_functions.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/vertex/init.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/vertex/memory_tools.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/vertex/safety.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo/vertex/type_dict_to_json.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo.egg-info/SOURCES.txt +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo.egg-info/dependency_links.txt +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo.egg-info/entry_points.txt +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo.egg-info/requires.txt +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/sunholo.egg-info/top_level.txt +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/tests/test_chat_history.py +0 -0
- {sunholo-0.99.11 → sunholo-0.99.13}/tests/test_config.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sunholo
|
|
3
|
-
Version: 0.99.
|
|
3
|
+
Version: 0.99.13
|
|
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.99.
|
|
6
|
+
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.99.13.tar.gz
|
|
7
7
|
Author: Holosun ApS
|
|
8
8
|
Author-email: multivac@sunholo.com
|
|
9
9
|
License: Apache License, Version 2.0
|
|
@@ -40,6 +40,9 @@ def handle_base64_image(base64_data: str, vector_name: str, extension: str):
|
|
|
40
40
|
"""
|
|
41
41
|
|
|
42
42
|
model = ConfigManager(vector_name).vacConfig("llm")
|
|
43
|
+
if "," not in base64_data:
|
|
44
|
+
raise ValueError(f"Invalid Base64 image data: Missing metadata header {base64_data}")
|
|
45
|
+
|
|
43
46
|
if model.startswith("openai"): # pass it to gpt directly
|
|
44
47
|
return base64_data, base64_data.split(",", 1)
|
|
45
48
|
|
|
@@ -9,12 +9,12 @@ class AsyncTaskRunner:
|
|
|
9
9
|
self.tasks = []
|
|
10
10
|
self.retry_enabled = retry_enabled
|
|
11
11
|
self.retry_kwargs = retry_kwargs or {}
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
def add_task(self, func: Callable[..., Any], *args: Any):
|
|
14
14
|
"""Adds a task to the list of tasks to be executed."""
|
|
15
15
|
log.info(f"Adding task: {func.__name__} with args: {args}")
|
|
16
16
|
self.tasks.append((func.__name__, func, args))
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
async def run_async_as_completed(self, callback=None) -> AsyncGenerator[Dict[str, Any], None]:
|
|
19
19
|
"""
|
|
20
20
|
Runs all tasks concurrently and yields results as they complete, while periodically sending heartbeat messages.
|
|
@@ -29,7 +29,7 @@ class AsyncTaskRunner:
|
|
|
29
29
|
coro = self._task_wrapper(name, func, args, callback)
|
|
30
30
|
task = asyncio.create_task(coro)
|
|
31
31
|
tasks[task] = name
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
log.info(f"Start async run with {len(self.tasks)} runners")
|
|
34
34
|
while tasks:
|
|
35
35
|
done, _ = await asyncio.wait(tasks.keys(), return_when=asyncio.FIRST_COMPLETED)
|
|
@@ -78,23 +78,22 @@ class AsyncTaskRunner:
|
|
|
78
78
|
# Stop the heartbeat task
|
|
79
79
|
if heartbeat_task:
|
|
80
80
|
heartbeat_task.cancel()
|
|
81
|
+
# Let the heartbeat_task finish in the background without awaiting it
|
|
81
82
|
try:
|
|
82
|
-
await heartbeat_task # Ensure
|
|
83
|
+
await asyncio.shield(heartbeat_task) # Ensure cancellation is handled cleanly
|
|
83
84
|
except asyncio.CancelledError:
|
|
84
85
|
pass
|
|
85
86
|
|
|
86
|
-
# Send a message indicating task completion
|
|
87
|
+
# Send a message indicating task completion to update the spinner's state
|
|
87
88
|
if callback:
|
|
88
89
|
completion_html = (
|
|
89
|
-
f"
|
|
90
|
-
f"document.getElementById('{name}-spinner').innerHTML = '✔️ Task {name} completed!';"
|
|
91
|
-
f"</script>"
|
|
90
|
+
f'<div style="display: none;" data-complete-id="{name}-spinner"></div>'
|
|
92
91
|
)
|
|
93
92
|
await callback.async_on_llm_new_token(token=completion_html)
|
|
94
93
|
|
|
95
94
|
async def _send_heartbeat(self, callback, func_name, interval=2):
|
|
96
95
|
"""
|
|
97
|
-
Sends periodic heartbeat
|
|
96
|
+
Sends a periodic heartbeat to keep the task alive and update the spinner with elapsed time.
|
|
98
97
|
|
|
99
98
|
Args:
|
|
100
99
|
callback: The callback to notify that the task is still working.
|
|
@@ -103,14 +102,28 @@ class AsyncTaskRunner:
|
|
|
103
102
|
"""
|
|
104
103
|
# Send the initial spinner HTML
|
|
105
104
|
spinner_html = (
|
|
106
|
-
f'<div id="{func_name}-spinner"
|
|
107
|
-
f'<div class="spinner"
|
|
108
|
-
f'
|
|
109
|
-
f'
|
|
110
|
-
f' <span>Task {func_name} is in progress...</span></div>'
|
|
105
|
+
f'<div id="{func_name}-spinner" class="spinner-container">'
|
|
106
|
+
f' <div class="spinner"></div>'
|
|
107
|
+
f' <span class="elapsed-time">Task {func_name} is still running... 0s elapsed</span>'
|
|
108
|
+
f'</div>'
|
|
111
109
|
)
|
|
112
110
|
await callback.async_on_llm_new_token(token=spinner_html)
|
|
113
111
|
|
|
112
|
+
# Keep track of elapsed time
|
|
113
|
+
elapsed_time = 0
|
|
114
|
+
|
|
114
115
|
# Keep sending heartbeats until task completes
|
|
115
116
|
while True:
|
|
116
|
-
|
|
117
|
+
try:
|
|
118
|
+
await asyncio.sleep(interval) # Sleep for the interval
|
|
119
|
+
elapsed_time += interval # Increment elapsed time
|
|
120
|
+
|
|
121
|
+
# Update spinner with the elapsed time
|
|
122
|
+
update_html = (
|
|
123
|
+
f'<div style="display: none;" data-update-id="{func_name}-spinner">'
|
|
124
|
+
f'<span class="elapsed-time">Task {func_name} is still running... {elapsed_time}s elapsed</span>'
|
|
125
|
+
f'</div>'
|
|
126
|
+
)
|
|
127
|
+
await callback.async_on_llm_new_token(token=update_html)
|
|
128
|
+
except asyncio.CancelledError:
|
|
129
|
+
break # Exit the loop if the heartbeat task is canceled
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sunholo
|
|
3
|
-
Version: 0.99.
|
|
3
|
+
Version: 0.99.13
|
|
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.99.
|
|
6
|
+
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.99.13.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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|