sunholo 0.89.9__tar.gz → 0.90.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.
- {sunholo-0.89.9 → sunholo-0.90.0}/PKG-INFO +2 -2
- {sunholo-0.89.9 → sunholo-0.90.0}/setup.py +1 -1
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/agents/flask/vac_routes.py +14 -10
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/langfuse/evals.py +6 -2
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/streaming/streaming.py +1 -1
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/utils/parsers.py +2 -2
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo.egg-info/PKG-INFO +2 -2
- {sunholo-0.89.9 → sunholo-0.90.0}/LICENSE.txt +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/MANIFEST.in +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/README.md +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/setup.cfg +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/agents/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/agents/chat_history.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/agents/dispatch_to_qa.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/agents/fastapi/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/agents/fastapi/base.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/agents/fastapi/qna_routes.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/agents/flask/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/agents/flask/base.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/agents/flask/qna_routes.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/agents/langserve.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/agents/pubsub.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/agents/route.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/agents/special_commands.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/agents/swagger.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/archive/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/archive/archive.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/auth/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/auth/gcloud.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/auth/refresh.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/auth/run.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/azure/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/azure/auth.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/azure/blobs.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/azure/event_grid.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/bots/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/bots/discord.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/bots/github_webhook.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/bots/webapp.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/chunker/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/chunker/azure.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/chunker/doc_handling.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/chunker/encode_metadata.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/chunker/images.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/chunker/loaders.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/chunker/message_data.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/chunker/pdfs.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/chunker/process_chunker_data.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/chunker/publish.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/chunker/pubsub.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/chunker/splitter.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/cli/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/cli/chat_vac.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/cli/cli.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/cli/cli_init.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/cli/configs.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/cli/deploy.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/cli/embedder.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/cli/merge_texts.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/cli/run_proxy.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/cli/sun_rich.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/cli/swagger.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/cli/vertex.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/components/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/components/llm.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/components/retriever.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/components/vectorstore.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/custom_logging.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/database/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/database/alloydb.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/database/alloydb_client.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/database/database.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/database/lancedb.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/database/sql/sb/create_function.sql +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/database/sql/sb/create_function_time.sql +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/database/sql/sb/create_table.sql +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/database/sql/sb/return_sources.sql +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/database/sql/sb/setup.sql +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/database/static_dbs.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/database/uuid.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/discovery_engine/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/discovery_engine/chunker_handler.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/discovery_engine/create_new.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/discovery_engine/discovery_engine_client.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/discovery_engine/get_ai_search_chunks.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/embedder/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/embedder/embed_chunk.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/excel/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/excel/plugin.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/gcs/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/gcs/add_file.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/gcs/download_folder.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/gcs/download_url.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/gcs/metadata.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/genai/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/genai/init.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/genai/process_funcs_cls.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/genai/safety.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/invoke/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/invoke/async_class.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/invoke/direct_vac_func.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/invoke/invoke_vac_utils.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/langfuse/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/langfuse/callback.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/langfuse/prompts.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/llamaindex/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/llamaindex/get_files.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/llamaindex/import_files.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/llamaindex/llamaindex_class.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/llamaindex/user_history.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/lookup/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/lookup/model_lookup.yaml +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/patches/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/patches/langchain/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/patches/langchain/lancedb.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/patches/langchain/vertexai.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/pubsub/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/pubsub/process_pubsub.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/pubsub/pubsub_manager.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/qna/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/qna/parsers.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/qna/retry.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/streaming/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/streaming/content_buffer.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/streaming/langserve.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/streaming/stream_lookup.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/summarise/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/summarise/summarise.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/terraform/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/terraform/tfvars_editor.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/tools/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/tools/web_browser.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/utils/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/utils/api_key.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/utils/big_context.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/utils/config.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/utils/config_class.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/utils/config_schema.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/utils/gcp.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/utils/gcp_project.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/utils/timedelta.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/utils/user_ids.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/utils/version.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/vertex/__init__.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/vertex/extensions_call.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/vertex/extensions_class.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/vertex/genai_functions.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/vertex/init.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/vertex/memory_tools.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/vertex/safety.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo/vertex/type_dict_to_json.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo.egg-info/SOURCES.txt +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo.egg-info/dependency_links.txt +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo.egg-info/entry_points.txt +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo.egg-info/requires.txt +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/sunholo.egg-info/top_level.txt +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/tests/test_chat_history.py +0 -0
- {sunholo-0.89.9 → sunholo-0.90.0}/tests/test_config.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sunholo
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.90.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.
|
|
6
|
+
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.90.0.tar.gz
|
|
7
7
|
Author: Holosun ApS
|
|
8
8
|
Author-email: multivac@sunholo.com
|
|
9
9
|
License: Apache License, Version 2.0
|
|
@@ -187,19 +187,20 @@ if __name__ == "__main__":
|
|
|
187
187
|
def generate_response_content():
|
|
188
188
|
|
|
189
189
|
for chunk in start_streaming_chat(question=all_input["user_input"],
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
190
|
+
vector_name=vector_name,
|
|
191
|
+
qna_func=observed_stream_interpreter,
|
|
192
|
+
chat_history=all_input["chat_history"],
|
|
193
|
+
wait_time=all_input["stream_wait_time"],
|
|
194
|
+
timeout=all_input["stream_timeout"],
|
|
195
|
+
trace_id=trace.id,
|
|
196
|
+
#kwargs
|
|
197
|
+
**all_input["kwargs"]
|
|
198
|
+
):
|
|
198
199
|
if isinstance(chunk, dict) and 'answer' in chunk:
|
|
199
200
|
# When we encounter the dictionary, we yield it as a JSON string
|
|
200
201
|
# and stop the generator.
|
|
201
202
|
if trace:
|
|
202
|
-
chunk["
|
|
203
|
+
chunk["trace_id"] = trace.id
|
|
203
204
|
chunk["trace_url"] = trace.get_trace_url()
|
|
204
205
|
archive_qa(chunk, vector_name)
|
|
205
206
|
if trace:
|
|
@@ -281,6 +282,7 @@ if __name__ == "__main__":
|
|
|
281
282
|
question=all_input["user_input"],
|
|
282
283
|
vector_name=vector_name,
|
|
283
284
|
chat_history=all_input["chat_history"],
|
|
285
|
+
trace_id=trace.id,
|
|
284
286
|
**all_input["kwargs"]
|
|
285
287
|
)
|
|
286
288
|
if span:
|
|
@@ -288,7 +290,7 @@ if __name__ == "__main__":
|
|
|
288
290
|
# {"answer": "The answer", "source_documents": [{"page_content": "The page content", "metadata": "The metadata"}]}
|
|
289
291
|
bot_output = parse_output(bot_output)
|
|
290
292
|
if trace:
|
|
291
|
-
bot_output["
|
|
293
|
+
bot_output["trace_id"] = trace.id
|
|
292
294
|
bot_output["trace_url"] = trace.get_trace_url()
|
|
293
295
|
archive_qa(bot_output, vector_name)
|
|
294
296
|
log.info(f'==LLM Q:{all_input["user_input"]} - A:{bot_output}')
|
|
@@ -409,6 +411,7 @@ if __name__ == "__main__":
|
|
|
409
411
|
chat_history=all_input["chat_history"],
|
|
410
412
|
wait_time=all_input.get("stream_wait_time", 1),
|
|
411
413
|
timeout=all_input.get("stream_timeout", 60),
|
|
414
|
+
trace_id=all_input.get("trace_id"),
|
|
412
415
|
**all_input["kwargs"]
|
|
413
416
|
):
|
|
414
417
|
if isinstance(chunk, dict) and 'answer' in chunk:
|
|
@@ -454,6 +457,7 @@ if __name__ == "__main__":
|
|
|
454
457
|
question=user_message,
|
|
455
458
|
vector_name=vector_name,
|
|
456
459
|
chat_history=all_input["chat_history"],
|
|
460
|
+
trace_id=all_input.get("trace_id"),
|
|
457
461
|
**all_input["kwargs"]
|
|
458
462
|
)
|
|
459
463
|
bot_output = parse_output(bot_output)
|
|
@@ -68,13 +68,17 @@ def do_evals(trace_id, eval_funcs: list=[eval_length], **kwargs) -> dict:
|
|
|
68
68
|
# Run the evaluation functions
|
|
69
69
|
eval_results = []
|
|
70
70
|
for eval_func in eval_funcs:
|
|
71
|
-
|
|
71
|
+
try:
|
|
72
|
+
eval_result = eval_func(trace) # Assuming eval_func returns a dict with 'score' and 'reason'
|
|
73
|
+
except Exception as e:
|
|
74
|
+
eval_result = {"score": 0, "reason":f"ERROR: {str(e)}"}
|
|
72
75
|
eval_results.append(eval_result)
|
|
73
76
|
|
|
74
77
|
eval_name = eval_func.__name__
|
|
75
78
|
|
|
76
79
|
if 'score' and 'reason' not in eval_result:
|
|
77
|
-
|
|
80
|
+
log.error(f"Trace {trace.name} using {eval_name=} did not return a dict with 'score' and 'reason': {eval_result=}")
|
|
81
|
+
eval_result = {"score": 0, "reason": f"malformed eval_result: {eval_result}"}
|
|
78
82
|
|
|
79
83
|
log.info(f"TraceId {trace.id} with name {trace.name} had {eval_name=} with score {eval_result=}")
|
|
80
84
|
|
|
@@ -22,7 +22,7 @@ from .content_buffer import ContentBuffer, BufferStreamingStdOutCallbackHandler
|
|
|
22
22
|
from ..qna.parsers import parse_output
|
|
23
23
|
|
|
24
24
|
from ..custom_logging import log
|
|
25
|
-
from ..utils import
|
|
25
|
+
from ..utils import ConfigManager
|
|
26
26
|
from ..utils.parsers import check_kwargs_support
|
|
27
27
|
|
|
28
28
|
from .langserve import parse_langserve_token, parse_langserve_token_async
|
|
@@ -217,10 +217,10 @@ def escape_braces(text):
|
|
|
217
217
|
"""
|
|
218
218
|
# First, handle cases where there might be a mix of braces
|
|
219
219
|
# Replace all `{` that are not followed by another `{` with `{{`
|
|
220
|
-
text = re.sub(r'(?<!{){(?!{)', '
|
|
220
|
+
text = re.sub(r'(?<!{){(?!{)', '<<', text)
|
|
221
221
|
|
|
222
222
|
# Replace all `}` that are not preceded by another `}` with `}}`
|
|
223
|
-
text = re.sub(r'(?<!})}(?!})', '
|
|
223
|
+
text = re.sub(r'(?<!})}(?!})', '>>', text)
|
|
224
224
|
|
|
225
225
|
# After escaping single braces, return the modified text
|
|
226
226
|
return text
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sunholo
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.90.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.
|
|
6
|
+
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.90.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
|
|
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
|