sunholo 0.81.1__tar.gz → 0.81.3__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 (150) hide show
  1. {sunholo-0.81.1 → sunholo-0.81.3}/PKG-INFO +2 -2
  2. {sunholo-0.81.1 → sunholo-0.81.3}/setup.py +1 -1
  3. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/auth/refresh.py +14 -8
  4. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/gcs/download_url.py +11 -7
  5. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo.egg-info/PKG-INFO +2 -2
  6. {sunholo-0.81.1 → sunholo-0.81.3}/LICENSE.txt +0 -0
  7. {sunholo-0.81.1 → sunholo-0.81.3}/MANIFEST.in +0 -0
  8. {sunholo-0.81.1 → sunholo-0.81.3}/README.md +0 -0
  9. {sunholo-0.81.1 → sunholo-0.81.3}/setup.cfg +0 -0
  10. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/__init__.py +0 -0
  11. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/agents/__init__.py +0 -0
  12. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/agents/chat_history.py +0 -0
  13. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/agents/dispatch_to_qa.py +0 -0
  14. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/agents/fastapi/__init__.py +0 -0
  15. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/agents/fastapi/base.py +0 -0
  16. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/agents/fastapi/qna_routes.py +0 -0
  17. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/agents/flask/__init__.py +0 -0
  18. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/agents/flask/base.py +0 -0
  19. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/agents/flask/qna_routes.py +0 -0
  20. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/agents/flask/vac_routes.py +0 -0
  21. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/agents/langserve.py +0 -0
  22. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/agents/pubsub.py +0 -0
  23. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/agents/route.py +0 -0
  24. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/agents/special_commands.py +0 -0
  25. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/agents/swagger.py +0 -0
  26. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/archive/__init__.py +0 -0
  27. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/archive/archive.py +0 -0
  28. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/auth/__init__.py +0 -0
  29. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/auth/gcloud.py +0 -0
  30. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/auth/run.py +0 -0
  31. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/azure/__init__.py +0 -0
  32. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/azure/auth.py +0 -0
  33. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/azure/blobs.py +0 -0
  34. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/azure/event_grid.py +0 -0
  35. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/bots/__init__.py +0 -0
  36. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/bots/discord.py +0 -0
  37. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/bots/github_webhook.py +0 -0
  38. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/bots/webapp.py +0 -0
  39. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/chunker/__init__.py +0 -0
  40. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/chunker/azure.py +0 -0
  41. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/chunker/doc_handling.py +0 -0
  42. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/chunker/encode_metadata.py +0 -0
  43. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/chunker/images.py +0 -0
  44. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/chunker/loaders.py +0 -0
  45. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/chunker/message_data.py +0 -0
  46. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/chunker/pdfs.py +0 -0
  47. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/chunker/process_chunker_data.py +0 -0
  48. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/chunker/publish.py +0 -0
  49. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/chunker/pubsub.py +0 -0
  50. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/chunker/splitter.py +0 -0
  51. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/cli/__init__.py +0 -0
  52. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/cli/chat_vac.py +0 -0
  53. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/cli/cli.py +0 -0
  54. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/cli/cli_init.py +0 -0
  55. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/cli/configs.py +0 -0
  56. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/cli/deploy.py +0 -0
  57. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/cli/embedder.py +0 -0
  58. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/cli/merge_texts.py +0 -0
  59. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/cli/run_proxy.py +0 -0
  60. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/cli/sun_rich.py +0 -0
  61. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/cli/swagger.py +0 -0
  62. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/cli/vertex.py +0 -0
  63. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/components/__init__.py +0 -0
  64. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/components/llm.py +0 -0
  65. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/components/retriever.py +0 -0
  66. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/components/vectorstore.py +0 -0
  67. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/custom_logging.py +0 -0
  68. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/database/__init__.py +0 -0
  69. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/database/alloydb.py +0 -0
  70. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/database/alloydb_client.py +0 -0
  71. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/database/database.py +0 -0
  72. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/database/lancedb.py +0 -0
  73. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/database/sql/sb/create_function.sql +0 -0
  74. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  75. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/database/sql/sb/create_table.sql +0 -0
  76. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  77. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/database/sql/sb/return_sources.sql +0 -0
  78. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/database/sql/sb/setup.sql +0 -0
  79. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/database/static_dbs.py +0 -0
  80. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/database/uuid.py +0 -0
  81. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/discovery_engine/__init__.py +0 -0
  82. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/discovery_engine/chunker_handler.py +0 -0
  83. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/discovery_engine/create_new.py +0 -0
  84. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/discovery_engine/discovery_engine_client.py +0 -0
  85. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/discovery_engine/get_ai_search_chunks.py +0 -0
  86. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/embedder/__init__.py +0 -0
  87. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/embedder/embed_chunk.py +0 -0
  88. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/gcs/__init__.py +0 -0
  89. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/gcs/add_file.py +0 -0
  90. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/gcs/download_folder.py +0 -0
  91. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/gcs/metadata.py +0 -0
  92. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/invoke/__init__.py +0 -0
  93. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/invoke/direct_vac_func.py +0 -0
  94. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/invoke/invoke_vac_utils.py +0 -0
  95. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/langfuse/__init__.py +0 -0
  96. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/langfuse/callback.py +0 -0
  97. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/langfuse/prompts.py +0 -0
  98. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/llamaindex/__init__.py +0 -0
  99. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/llamaindex/get_files.py +0 -0
  100. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/llamaindex/import_files.py +0 -0
  101. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/llamaindex/llamaindex_class.py +0 -0
  102. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/llamaindex/user_history.py +0 -0
  103. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/lookup/__init__.py +0 -0
  104. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/lookup/model_lookup.yaml +0 -0
  105. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/patches/__init__.py +0 -0
  106. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/patches/langchain/__init__.py +0 -0
  107. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/patches/langchain/lancedb.py +0 -0
  108. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/patches/langchain/vertexai.py +0 -0
  109. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/pubsub/__init__.py +0 -0
  110. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/pubsub/process_pubsub.py +0 -0
  111. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/pubsub/pubsub_manager.py +0 -0
  112. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/qna/__init__.py +0 -0
  113. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/qna/parsers.py +0 -0
  114. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/qna/retry.py +0 -0
  115. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/streaming/__init__.py +0 -0
  116. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/streaming/content_buffer.py +0 -0
  117. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/streaming/langserve.py +0 -0
  118. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/streaming/stream_lookup.py +0 -0
  119. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/streaming/streaming.py +0 -0
  120. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/summarise/__init__.py +0 -0
  121. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/summarise/summarise.py +0 -0
  122. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/tools/__init__.py +0 -0
  123. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/tools/web_browser.py +0 -0
  124. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/utils/__init__.py +0 -0
  125. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/utils/api_key.py +0 -0
  126. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/utils/big_context.py +0 -0
  127. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/utils/config.py +0 -0
  128. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/utils/config_class.py +0 -0
  129. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/utils/config_schema.py +0 -0
  130. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/utils/gcp.py +0 -0
  131. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/utils/gcp_project.py +0 -0
  132. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/utils/parsers.py +0 -0
  133. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/utils/timedelta.py +0 -0
  134. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/utils/user_ids.py +0 -0
  135. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/utils/version.py +0 -0
  136. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/vertex/__init__.py +0 -0
  137. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/vertex/extensions_call.py +0 -0
  138. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/vertex/extensions_class.py +0 -0
  139. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/vertex/genai_functions.py +0 -0
  140. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/vertex/init.py +0 -0
  141. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/vertex/memory_tools.py +0 -0
  142. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/vertex/safety.py +0 -0
  143. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo/vertex/type_dict_to_json.py +0 -0
  144. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo.egg-info/SOURCES.txt +0 -0
  145. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo.egg-info/dependency_links.txt +0 -0
  146. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo.egg-info/entry_points.txt +0 -0
  147. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo.egg-info/requires.txt +0 -0
  148. {sunholo-0.81.1 → sunholo-0.81.3}/sunholo.egg-info/top_level.txt +0 -0
  149. {sunholo-0.81.1 → sunholo-0.81.3}/tests/test_chat_history.py +0 -0
  150. {sunholo-0.81.1 → sunholo-0.81.3}/tests/test_config.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.81.1
3
+ Version: 0.81.3
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.81.1.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.81.3.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -1,7 +1,7 @@
1
1
  from setuptools import setup, find_packages
2
2
 
3
3
  # Define your base version
4
- version = '0.81.1'
4
+ version = '0.81.3'
5
5
 
6
6
  setup(
7
7
  name='sunholo',
@@ -7,12 +7,14 @@ from ..utils.gcp import is_running_on_gcp
7
7
  from ..custom_logging import log
8
8
 
9
9
  def get_default_email():
10
- if not refresh_credentials():
11
- log.error("Could not refresh the credentials properly.")
12
- return None
10
+
13
11
  # https://stackoverflow.com/questions/64234214/how-to-generate-a-blob-signed-url-in-google-cloud-run
14
12
 
15
- gcs_credentials, project_id = get_default_creds()
13
+ gcs_credentials, project_id = refresh_credentials()
14
+
15
+ if gcs_credentials is None:
16
+ log.error("Could not refresh the credentials properly.")
17
+ return None
16
18
 
17
19
  service_account_email = getattr(gcs_credentials, 'service_account_email', None)
18
20
  # If you use a service account credential, you can use the embedded email
@@ -34,20 +36,24 @@ def get_default_creds():
34
36
  return gcs_credentials, project_id
35
37
 
36
38
  def refresh_credentials():
39
+ """
40
+ Need to refresh to get a valid email/token for signing URLs from a default service account
41
+ """
37
42
  if not is_running_on_gcp():
38
43
  log.debug("Not running on Google Cloud so no credentials available for GCS.")
39
- return False
44
+ return None, None
40
45
 
41
46
  gcs_credentials, project_id = get_default_creds()
42
47
 
43
48
  if not gcs_credentials.token or gcs_credentials.expired or not gcs_credentials.valid:
44
49
  try:
45
- gcs_credentials.refresh(requests.Request())
50
+ r = requests.Request()
51
+ gcs_credentials.refresh(r)
46
52
 
47
- return True
53
+ return gcs_credentials, project_id
48
54
 
49
55
  except Exception as e:
50
56
  log.error(f"Failed to refresh gcs credentials: {e}")
51
57
 
52
- return False
58
+ return None, None
53
59
 
@@ -110,6 +110,9 @@ def sign_gcs_url(bucket_name:str, object_name:str, expiry_secs:int = 86400) -> O
110
110
 
111
111
  expires = datetime.now() + timedelta(seconds=expiry_secs)
112
112
 
113
+ if object_name.startswith("gs://"):
114
+ object_name = object_name.replace(f"gs://{bucket_name}/","")
115
+
113
116
  try:
114
117
  bucket = get_bucket(bucket_name)
115
118
  blob = bucket.blob(object_name)
@@ -123,8 +126,8 @@ def sign_gcs_url(bucket_name:str, object_name:str, expiry_secs:int = 86400) -> O
123
126
  return url
124
127
  except RefreshError:
125
128
  log.info("Refreshing gcs_credentials due to token expiration.")
126
- refreshed = refresh_credentials()
127
- if refreshed:
129
+ credentials, token = refresh_credentials()
130
+ if credentials:
128
131
  return sign_gcs_url(bucket_name, object_name, expiry_secs)
129
132
  log.error("Failed to refresh gcs credentials")
130
133
  return None
@@ -136,9 +139,10 @@ def sign_gcs_url(bucket_name:str, object_name:str, expiry_secs:int = 86400) -> O
136
139
  def construct_download_link(source_uri: str) -> Tuple[str, str, bool]:
137
140
  """Creates a viewable Cloud Storage web browser link from a gs:// URI."""
138
141
  if not source_uri.startswith("gs://"):
139
- return source_uri, source_uri, False # Return the URI as is if it doesn't start with gs://
140
-
142
+ return source_uri, source_uri, False # Return the URI if it doesn't start with gs://
143
+
141
144
  bucket_name, object_name = parse_gs_uri(source_uri)
145
+ log.info(f"Source URL: {source_uri} parsed to {bucket_name=} - {object_name=}")
142
146
 
143
147
  signed_url = sign_gcs_url(bucket_name, object_name)
144
148
  if signed_url:
@@ -161,9 +165,9 @@ def construct_download_link_simple(bucket_name:str, object_name:str) -> Tuple[st
161
165
  """
162
166
 
163
167
  if object_name.startswith("gs://"):
164
- object_name = object_name.replace("gs://", "https://storage.cloud.google.com")
165
-
166
- public_url = f"https://storage.cloud.google.com/{bucket_name}/{quote(object_name)}"
168
+ public_url = object_name.replace("gs://", "https://storage.cloud.google.com")
169
+ else:
170
+ public_url = f"https://storage.cloud.google.com/{bucket_name}/{quote(object_name)}"
167
171
  filename = os.path.basename(object_name)
168
172
  return public_url, filename, False
169
173
 
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.81.1
3
+ Version: 0.81.3
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.81.1.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.81.3.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