sunholo 0.101.7__tar.gz → 0.101.10__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 (165) hide show
  1. {sunholo-0.101.7 → sunholo-0.101.10}/PKG-INFO +2 -2
  2. {sunholo-0.101.7 → sunholo-0.101.10}/setup.py +1 -1
  3. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/gcs/add_file.py +2 -35
  4. sunholo-0.101.10/sunholo/genai/images.py +48 -0
  5. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo.egg-info/PKG-INFO +2 -2
  6. sunholo-0.101.7/sunholo/genai/images.py +0 -38
  7. {sunholo-0.101.7 → sunholo-0.101.10}/LICENSE.txt +0 -0
  8. {sunholo-0.101.7 → sunholo-0.101.10}/MANIFEST.in +0 -0
  9. {sunholo-0.101.7 → sunholo-0.101.10}/README.md +0 -0
  10. {sunholo-0.101.7 → sunholo-0.101.10}/setup.cfg +0 -0
  11. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/__init__.py +0 -0
  12. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/agents/__init__.py +0 -0
  13. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/agents/chat_history.py +0 -0
  14. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/agents/dispatch_to_qa.py +0 -0
  15. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/agents/fastapi/__init__.py +0 -0
  16. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/agents/fastapi/base.py +0 -0
  17. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/agents/fastapi/qna_routes.py +0 -0
  18. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/agents/flask/__init__.py +0 -0
  19. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/agents/flask/base.py +0 -0
  20. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/agents/flask/qna_routes.py +0 -0
  21. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/agents/flask/vac_routes.py +0 -0
  22. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/agents/langserve.py +0 -0
  23. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/agents/pubsub.py +0 -0
  24. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/agents/route.py +0 -0
  25. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/agents/special_commands.py +0 -0
  26. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/agents/swagger.py +0 -0
  27. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/archive/__init__.py +0 -0
  28. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/archive/archive.py +0 -0
  29. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/auth/__init__.py +0 -0
  30. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/auth/gcloud.py +0 -0
  31. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/auth/refresh.py +0 -0
  32. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/auth/run.py +0 -0
  33. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/azure/__init__.py +0 -0
  34. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/azure/auth.py +0 -0
  35. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/azure/blobs.py +0 -0
  36. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/azure/event_grid.py +0 -0
  37. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/bots/__init__.py +0 -0
  38. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/bots/discord.py +0 -0
  39. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/bots/github_webhook.py +0 -0
  40. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/bots/webapp.py +0 -0
  41. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/chunker/__init__.py +0 -0
  42. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/chunker/azure.py +0 -0
  43. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/chunker/doc_handling.py +0 -0
  44. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/chunker/encode_metadata.py +0 -0
  45. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/chunker/images.py +0 -0
  46. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/chunker/loaders.py +0 -0
  47. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/chunker/message_data.py +0 -0
  48. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/chunker/pdfs.py +0 -0
  49. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/chunker/process_chunker_data.py +0 -0
  50. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/chunker/publish.py +0 -0
  51. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/chunker/pubsub.py +0 -0
  52. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/chunker/splitter.py +0 -0
  53. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/cli/__init__.py +0 -0
  54. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/cli/chat_vac.py +0 -0
  55. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/cli/cli.py +0 -0
  56. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/cli/cli_init.py +0 -0
  57. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/cli/configs.py +0 -0
  58. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/cli/deploy.py +0 -0
  59. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/cli/embedder.py +0 -0
  60. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/cli/merge_texts.py +0 -0
  61. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/cli/run_proxy.py +0 -0
  62. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/cli/sun_rich.py +0 -0
  63. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/cli/swagger.py +0 -0
  64. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/cli/vertex.py +0 -0
  65. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/components/__init__.py +0 -0
  66. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/components/llm.py +0 -0
  67. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/components/retriever.py +0 -0
  68. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/components/vectorstore.py +0 -0
  69. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/custom_logging.py +0 -0
  70. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/database/__init__.py +0 -0
  71. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/database/alloydb.py +0 -0
  72. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/database/alloydb_client.py +0 -0
  73. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/database/database.py +0 -0
  74. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/database/lancedb.py +0 -0
  75. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/database/sql/sb/create_function.sql +0 -0
  76. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  77. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/database/sql/sb/create_table.sql +0 -0
  78. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  79. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/database/sql/sb/return_sources.sql +0 -0
  80. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/database/sql/sb/setup.sql +0 -0
  81. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/database/static_dbs.py +0 -0
  82. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/database/uuid.py +0 -0
  83. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/discovery_engine/__init__.py +0 -0
  84. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/discovery_engine/chunker_handler.py +0 -0
  85. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/discovery_engine/create_new.py +0 -0
  86. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/discovery_engine/discovery_engine_client.py +0 -0
  87. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/discovery_engine/get_ai_search_chunks.py +0 -0
  88. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/embedder/__init__.py +0 -0
  89. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/embedder/embed_chunk.py +0 -0
  90. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/excel/__init__.py +0 -0
  91. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/excel/plugin.py +0 -0
  92. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/gcs/__init__.py +0 -0
  93. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/gcs/download_folder.py +0 -0
  94. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/gcs/download_url.py +0 -0
  95. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/gcs/extract_and_sign.py +0 -0
  96. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/gcs/metadata.py +0 -0
  97. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/genai/__init__.py +0 -0
  98. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/genai/init.py +0 -0
  99. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/genai/process_funcs_cls.py +0 -0
  100. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/genai/safety.py +0 -0
  101. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/invoke/__init__.py +0 -0
  102. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/invoke/async_class.py +0 -0
  103. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/invoke/direct_vac_func.py +0 -0
  104. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/invoke/invoke_vac_utils.py +0 -0
  105. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/langfuse/__init__.py +0 -0
  106. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/langfuse/callback.py +0 -0
  107. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/langfuse/evals.py +0 -0
  108. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/langfuse/prompts.py +0 -0
  109. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/llamaindex/__init__.py +0 -0
  110. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/llamaindex/get_files.py +0 -0
  111. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/llamaindex/import_files.py +0 -0
  112. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/llamaindex/llamaindex_class.py +0 -0
  113. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/llamaindex/user_history.py +0 -0
  114. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/lookup/__init__.py +0 -0
  115. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/lookup/model_lookup.yaml +0 -0
  116. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/patches/__init__.py +0 -0
  117. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/patches/langchain/__init__.py +0 -0
  118. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/patches/langchain/lancedb.py +0 -0
  119. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/patches/langchain/vertexai.py +0 -0
  120. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/pubsub/__init__.py +0 -0
  121. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/pubsub/process_pubsub.py +0 -0
  122. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/pubsub/pubsub_manager.py +0 -0
  123. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/qna/__init__.py +0 -0
  124. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/qna/parsers.py +0 -0
  125. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/qna/retry.py +0 -0
  126. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/streaming/__init__.py +0 -0
  127. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/streaming/content_buffer.py +0 -0
  128. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/streaming/langserve.py +0 -0
  129. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/streaming/stream_lookup.py +0 -0
  130. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/streaming/streaming.py +0 -0
  131. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/summarise/__init__.py +0 -0
  132. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/summarise/summarise.py +0 -0
  133. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/terraform/__init__.py +0 -0
  134. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/terraform/tfvars_editor.py +0 -0
  135. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/tools/__init__.py +0 -0
  136. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/tools/web_browser.py +0 -0
  137. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/utils/__init__.py +0 -0
  138. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/utils/api_key.py +0 -0
  139. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/utils/big_context.py +0 -0
  140. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/utils/config.py +0 -0
  141. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/utils/config_class.py +0 -0
  142. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/utils/config_schema.py +0 -0
  143. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/utils/gcp.py +0 -0
  144. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/utils/gcp_project.py +0 -0
  145. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/utils/mime.py +0 -0
  146. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/utils/parsers.py +0 -0
  147. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/utils/timedelta.py +0 -0
  148. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/utils/user_ids.py +0 -0
  149. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/utils/version.py +0 -0
  150. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/vertex/__init__.py +0 -0
  151. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/vertex/extensions_call.py +0 -0
  152. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/vertex/extensions_class.py +0 -0
  153. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/vertex/genai_functions.py +0 -0
  154. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/vertex/init.py +0 -0
  155. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/vertex/memory_tools.py +0 -0
  156. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/vertex/safety.py +0 -0
  157. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo/vertex/type_dict_to_json.py +0 -0
  158. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo.egg-info/SOURCES.txt +0 -0
  159. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo.egg-info/dependency_links.txt +0 -0
  160. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo.egg-info/entry_points.txt +0 -0
  161. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo.egg-info/requires.txt +0 -0
  162. {sunholo-0.101.7 → sunholo-0.101.10}/sunholo.egg-info/top_level.txt +0 -0
  163. {sunholo-0.101.7 → sunholo-0.101.10}/tests/test_async.py +0 -0
  164. {sunholo-0.101.7 → sunholo-0.101.10}/tests/test_chat_history.py +0 -0
  165. {sunholo-0.101.7 → sunholo-0.101.10}/tests/test_config.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.101.7
3
+ Version: 0.101.10
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.101.7.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.101.10.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.101.7'
3
+ version = '0.101.10'
4
4
 
5
5
  setup(
6
6
  name='sunholo',
@@ -24,40 +24,7 @@ except ImportError:
24
24
 
25
25
  from ..custom_logging import log
26
26
  from ..utils import ConfigManager
27
-
28
- def guess_image_type(file_path: str) -> str:
29
- """
30
- Guess the image type based on the file extension.
31
-
32
- Args:
33
- file_path (str): The path or URL of the image file.
34
-
35
- Returns:
36
- str: The guessed image type (e.g., "jpeg", "png", "gif", etc.)
37
- or None if the extension is not recognized.
38
- """
39
- # Extract the file extension
40
- _, ext = os.path.splitext(file_path)
41
-
42
- # Normalize and remove the leading dot
43
- ext = ext.lower().strip('.')
44
-
45
- # Mapping of common file extensions to image types
46
- extension_to_type = {
47
- "jpg": "image/jpeg",
48
- "jpeg": "image/jpeg",
49
- "png": "image/png",
50
- "gif": "image/gif",
51
- "bmp": "image/bmp",
52
- "tiff": "image/tiff",
53
- "tif": "image/tiff",
54
- "webp": "image/webp",
55
- "ico": "image/ico",
56
- "svg": "image/svg",
57
- "pdf": "application/pdf",
58
- }
59
-
60
- return extension_to_type.get(ext.lower(), None)
27
+ from ..utils.mime import guess_mime_type
61
28
 
62
29
 
63
30
  def handle_base64_image(base64_data: str, vector_name: str, extension: str):
@@ -92,7 +59,7 @@ def handle_base64_image(base64_data: str, vector_name: str, extension: str):
92
59
  os.remove(filename) # Clean up the saved file
93
60
 
94
61
  # Determine MIME type based on extension
95
- mime_type = guess_image_type(extension) or "application/octet-stream"
62
+ mime_type = guess_mime_type(extension) or "application/octet-stream"
96
63
 
97
64
  return image_uri, mime_type
98
65
  except Exception as e:
@@ -0,0 +1,48 @@
1
+ import re
2
+ from ..utils.mime import guess_mime_type
3
+ from ..gcs import get_bytes_from_gcs
4
+ from ..custom_logging import log
5
+ import os
6
+ import tempfile
7
+ try:
8
+ import google.generativeai as genai
9
+ except ImportError:
10
+ genai = None
11
+
12
+ def extract_gs_images_and_genai_upload(content: str):
13
+ # Regular expression to find gs:// URLs
14
+ pattern = r'gs://[^ ]+\.(?:png|jpg|jpeg|pdf)'
15
+
16
+ gs_matches = re.findall(pattern, content)
17
+ unique_gs_matches = set(gs_matches)
18
+ output_gs_images = []
19
+
20
+ for gs_uri in unique_gs_matches:
21
+ mime_type = guess_mime_type(gs_uri)
22
+ if mime_type is None:
23
+ continue
24
+
25
+ log.info(f"Getting bytes from GCS: {gs_uri}")
26
+ image_bytes = get_bytes_from_gcs(gs_uri)
27
+ if image_bytes is None:
28
+ continue
29
+
30
+ # Get the basename from the gs_uri to use as the file name
31
+ file_name = os.path.basename(gs_uri)
32
+
33
+ # Create a temporary directory and write the file with the basename
34
+ with tempfile.TemporaryDirectory() as temp_dir:
35
+ temp_file_path = os.path.join(temp_dir, file_name)
36
+
37
+ # Write the BytesIO object to the file
38
+ with open(temp_file_path, 'wb') as temp_file:
39
+ temp_file.write(image_bytes)
40
+
41
+ # Pass the temporary file's path to the upload function
42
+ try:
43
+ uploaded_file = genai.upload_file(temp_file_path)
44
+ output_gs_images.append(uploaded_file)
45
+ except Exception as e:
46
+ log.error(f"Error adding {gs_uri} to base64: {str(e)}")
47
+
48
+ return output_gs_images
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.101.7
3
+ Version: 0.101.10
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.101.7.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.101.10.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -1,38 +0,0 @@
1
- import re
2
- from ..utils.mime import guess_mime_type
3
- from ..gcs import get_bytes_from_gcs
4
- from ..custom_logging import log
5
- import io
6
- import os
7
- try:
8
- import google.generativeai as genai
9
- except ImportError:
10
- genai = None
11
-
12
- def extract_gs_images_and_genai_upload(content:str):
13
- # Regular expression to find gs:// URLs
14
- pattern = r'gs://[^ ]+\.(?:png|jpg|jpeg|pdf)'
15
-
16
- gs_matches = re.findall(pattern, content)
17
- unique_gs_matches = set(gs_matches)
18
- output_gs_images = []
19
- for gs_uri in unique_gs_matches:
20
- mime_type = guess_mime_type(gs_uri)
21
- if mime_type is None:
22
- continue
23
-
24
- log.info(f"Getting bytes from GCS: {gs_uri}")
25
- image_bytes = get_bytes_from_gcs(gs_uri)
26
- if image_bytes is None:
27
- continue
28
- image_file = io.BytesIO(image_bytes)
29
- image_file.name = os.path.basename(gs_uri) # Assign a name, as some APIs require it
30
-
31
- try:
32
- uploaded_file = genai.upload_file(image_file)
33
- output_gs_images.append(uploaded_file)
34
-
35
- except Exception as e:
36
- log.error(f"Error adding {gs_uri} to base64: {str(e)}")
37
-
38
- return output_gs_images
File without changes
File without changes
File without changes
File without changes
File without changes