sunholo 0.62.6__tar.gz → 0.62.8__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 (116) hide show
  1. {sunholo-0.62.6 → sunholo-0.62.8}/PKG-INFO +2 -2
  2. {sunholo-0.62.6 → sunholo-0.62.8}/setup.py +1 -1
  3. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/chunker/publish.py +1 -1
  4. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/components/retriever.py +1 -1
  5. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/logging.py +7 -2
  6. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/pubsub/pubsub_manager.py +1 -1
  7. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/utils/config.py +2 -2
  8. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/utils/gcp.py +0 -36
  9. sunholo-0.62.8/sunholo/utils/gcp_project.py +40 -0
  10. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo.egg-info/PKG-INFO +2 -2
  11. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo.egg-info/SOURCES.txt +1 -0
  12. {sunholo-0.62.6 → sunholo-0.62.8}/LICENSE.txt +0 -0
  13. {sunholo-0.62.6 → sunholo-0.62.8}/MANIFEST.in +0 -0
  14. {sunholo-0.62.6 → sunholo-0.62.8}/README.md +0 -0
  15. {sunholo-0.62.6 → sunholo-0.62.8}/setup.cfg +0 -0
  16. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/__init__.py +0 -0
  17. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/agents/__init__.py +0 -0
  18. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/agents/chat_history.py +0 -0
  19. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/agents/dispatch_to_qa.py +0 -0
  20. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/agents/fastapi/__init__.py +0 -0
  21. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/agents/fastapi/base.py +0 -0
  22. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/agents/fastapi/qna_routes.py +0 -0
  23. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/agents/flask/__init__.py +0 -0
  24. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/agents/flask/base.py +0 -0
  25. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/agents/flask/qna_routes.py +0 -0
  26. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/agents/langserve.py +0 -0
  27. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/agents/pubsub.py +0 -0
  28. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/agents/route.py +0 -0
  29. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/agents/special_commands.py +0 -0
  30. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/archive/__init__.py +0 -0
  31. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/archive/archive.py +0 -0
  32. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/auth/__init__.py +0 -0
  33. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/auth/run.py +0 -0
  34. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/bots/__init__.py +0 -0
  35. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/bots/discord.py +0 -0
  36. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/bots/github_webhook.py +0 -0
  37. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/bots/webapp.py +0 -0
  38. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/chunker/__init__.py +0 -0
  39. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/chunker/data_to_embed_pubsub.py +0 -0
  40. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/chunker/doc_handling.py +0 -0
  41. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/chunker/images.py +0 -0
  42. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/chunker/loaders.py +0 -0
  43. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/chunker/message_data.py +0 -0
  44. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/chunker/pdfs.py +0 -0
  45. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/chunker/splitter.py +0 -0
  46. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/cli/__init__.py +0 -0
  47. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/cli/chat_vac.py +0 -0
  48. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/cli/cli.py +0 -0
  49. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/cli/cli_init.py +0 -0
  50. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/cli/configs.py +0 -0
  51. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/cli/deploy.py +0 -0
  52. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/cli/embedder.py +0 -0
  53. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/cli/merge_texts.py +0 -0
  54. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/cli/run_proxy.py +0 -0
  55. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/cli/sun_rich.py +0 -0
  56. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/components/__init__.py +0 -0
  57. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/components/llm.py +0 -0
  58. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/components/vectorstore.py +0 -0
  59. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/database/__init__.py +0 -0
  60. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/database/alloydb.py +0 -0
  61. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/database/database.py +0 -0
  62. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/database/lancedb.py +0 -0
  63. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/database/sql/sb/create_function.sql +0 -0
  64. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  65. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/database/sql/sb/create_table.sql +0 -0
  66. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  67. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/database/sql/sb/return_sources.sql +0 -0
  68. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/database/sql/sb/setup.sql +0 -0
  69. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/database/static_dbs.py +0 -0
  70. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/database/uuid.py +0 -0
  71. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/embedder/__init__.py +0 -0
  72. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/embedder/embed_chunk.py +0 -0
  73. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/gcs/__init__.py +0 -0
  74. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/gcs/add_file.py +0 -0
  75. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/gcs/download_url.py +0 -0
  76. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/gcs/metadata.py +0 -0
  77. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/langfuse/__init__.py +0 -0
  78. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/langfuse/callback.py +0 -0
  79. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/langfuse/prompts.py +0 -0
  80. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/llamaindex/__init__.py +0 -0
  81. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/llamaindex/generate.py +0 -0
  82. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/llamaindex/get_files.py +0 -0
  83. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/llamaindex/import_files.py +0 -0
  84. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/lookup/__init__.py +0 -0
  85. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/lookup/model_lookup.yaml +0 -0
  86. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/patches/__init__.py +0 -0
  87. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/patches/langchain/__init__.py +0 -0
  88. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/patches/langchain/lancedb.py +0 -0
  89. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/patches/langchain/vertexai.py +0 -0
  90. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/pubsub/__init__.py +0 -0
  91. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/pubsub/process_pubsub.py +0 -0
  92. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/qna/__init__.py +0 -0
  93. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/qna/parsers.py +0 -0
  94. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/qna/retry.py +0 -0
  95. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/streaming/__init__.py +0 -0
  96. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/streaming/content_buffer.py +0 -0
  97. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/streaming/langserve.py +0 -0
  98. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/streaming/stream_lookup.py +0 -0
  99. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/streaming/streaming.py +0 -0
  100. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/summarise/__init__.py +0 -0
  101. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/summarise/summarise.py +0 -0
  102. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/utils/__init__.py +0 -0
  103. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/utils/big_context.py +0 -0
  104. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/utils/config_schema.py +0 -0
  105. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/utils/parsers.py +0 -0
  106. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/utils/timedelta.py +0 -0
  107. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/utils/user_ids.py +0 -0
  108. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/vertex/__init__.py +0 -0
  109. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/vertex/init.py +0 -0
  110. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo/vertex/memory_tools.py +0 -0
  111. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo.egg-info/dependency_links.txt +0 -0
  112. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo.egg-info/entry_points.txt +0 -0
  113. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo.egg-info/requires.txt +0 -0
  114. {sunholo-0.62.6 → sunholo-0.62.8}/sunholo.egg-info/top_level.txt +0 -0
  115. {sunholo-0.62.6 → sunholo-0.62.8}/tests/test_chat_history.py +0 -0
  116. {sunholo-0.62.6 → sunholo-0.62.8}/tests/test_config.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.62.6
3
+ Version: 0.62.8
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.62.6.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.62.8.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.62.6'
4
+ version = '0.62.8'
5
5
 
6
6
  setup(
7
7
  name='sunholo',
@@ -1,7 +1,7 @@
1
1
  from ..logging import log
2
2
  from ..pubsub import PubSubManager
3
3
  from ..utils.parsers import contains_url, extract_urls
4
- from ..utils.gcp import get_gcp_project
4
+ from ..utils.gcp_project import get_gcp_project
5
5
 
6
6
  from langchain.schema import Document
7
7
 
@@ -15,7 +15,7 @@ from ..logging import log
15
15
  from .vectorstore import pick_vectorstore
16
16
  from ..utils import load_config_key
17
17
  from .llm import get_embeddings
18
- from ..utils.gcp import get_gcp_project
18
+ from ..utils.gcp_project import get_gcp_project
19
19
 
20
20
  from langchain.retrievers import MergerRetriever
21
21
  from langchain_community.retrievers import GoogleCloudEnterpriseSearchRetriever
@@ -18,16 +18,16 @@ try:
18
18
  except ImportError:
19
19
  Client = None
20
20
 
21
- from .utils.gcp import get_gcp_project, is_running_on_gcp, is_gcp_logged_in
22
21
  import logging
23
22
  import inspect
24
23
  import os
25
24
 
26
-
27
25
  class GoogleCloudLogging:
28
26
 
29
27
  _instances = {} # Dictionary to hold instances keyed by a tuple of (project_id, logger_name)
30
28
 
29
+
30
+
31
31
  def __new__(cls, project_id=None, log_level=logging.INFO, logger_name=None):
32
32
  key = (project_id, logger_name)
33
33
  if key not in cls._instances:
@@ -36,6 +36,8 @@ class GoogleCloudLogging:
36
36
 
37
37
  def __init__(self, project_id=None, log_level=logging.INFO, logger_name=None):
38
38
  if not hasattr(self, 'initialized'): # Avoid re-initialization
39
+ from .utils.gcp_project import get_gcp_project # circular import if outside
40
+
39
41
  self.project_id = project_id or get_gcp_project()
40
42
  self.client = Client(project=self.project_id) if is_gcp_logged_in() else None
41
43
  self.logger_name = logger_name
@@ -52,6 +54,7 @@ class GoogleCloudLogging:
52
54
 
53
55
  try:
54
56
  caller_info = self._get_caller_info()
57
+ from .utils.gcp import is_running_on_gcp, is_gcp_logged_in
55
58
  if not is_running_on_gcp() and not is_gcp_logged_in():
56
59
  import logging
57
60
  logging.basicConfig(level=self.log_level, format='%(asctime)s - %(levelname)s - %(message)s')
@@ -98,6 +101,7 @@ class GoogleCloudLogging:
98
101
  if not logger_name and not self.logger_name:
99
102
  raise ValueError("Must provide a logger name e.g. 'run.googleapis.com%2Fstderr'")
100
103
 
104
+ from .utils.gcp import is_running_on_gcp, is_gcp_logged_in
101
105
  if not is_running_on_gcp() and not is_gcp_logged_in():
102
106
  log.basicConfig(level=log.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
103
107
  if log_text:
@@ -222,6 +226,7 @@ def setup_logging(logger_name=None, log_level=logging.INFO, project_id=None):
222
226
 
223
227
  if Client and os.environ.get('GOOGLE_CLOUD_LOGGING') == "1":
224
228
  if project_id is None:
229
+ from .utils.gcp_project import get_gcp_project
225
230
  project_id = get_gcp_project()
226
231
  # Instantiate the GoogleCloudLogging class
227
232
  gc_logger = GoogleCloudLogging(project_id, log_level=log_level, logger_name=logger_name)
@@ -21,7 +21,7 @@ except ImportError:
21
21
 
22
22
  import json
23
23
  from ..logging import log
24
- from ..utils.gcp import get_gcp_project
24
+ from ..utils.gcp_project import get_gcp_project
25
25
 
26
26
 
27
27
 
@@ -192,8 +192,8 @@ def load_config_key(key: str, vector_name: str, kind: str):
192
192
  print(f'API URL: {api_url}')
193
193
  ```
194
194
  """
195
- import logging # can't use sunholo.logging due to circular import
196
- log = logging.getLogger("sunholo")
195
+ # can't use sunholo.logging due to circular import
196
+ from ..logging import log
197
197
 
198
198
  if kind != 'agentConfig':
199
199
  assert isinstance(key, str), f"key must be a string got a {type(key)}"
@@ -17,7 +17,6 @@ import socket
17
17
  # can't install due to circular import sunholo.logging
18
18
  import logging
19
19
 
20
- from .config import load_config_key
21
20
 
22
21
  def is_running_on_cloudrun():
23
22
  """
@@ -66,15 +65,6 @@ def is_gcp_logged_in():
66
65
  except DefaultCredentialsError:
67
66
  return False
68
67
 
69
- def get_env_project_id():
70
- """
71
- Attempts to retrieve the project ID from environment variables.
72
-
73
- Returns:
74
- str or None: The project ID if found in environment variables, None otherwise.
75
- """
76
- return os.environ.get('GCP_PROJECT') or os.environ.get('GOOGLE_CLOUD_PROJECT')
77
-
78
68
  is_gcp_cached = None # Global variable for caching the result
79
69
  def is_running_on_gcp():
80
70
  """
@@ -122,32 +112,6 @@ def get_service_account_email():
122
112
  os.environ['GCP_DEFAULT_SERVICE_EMAIL'] = service_email
123
113
  return service_email
124
114
 
125
- def get_gcp_project():
126
- """
127
- Retrieve the GCP project ID from environment variables or the GCP metadata server.
128
-
129
- Returns:
130
- str or None: The project ID if found, None otherwise.
131
- """
132
- gcp_config = load_config_key("gcp_config", "global", "vacConfig")
133
- if gcp_config:
134
- if gcp_config.get('project_id'):
135
- return gcp_config.get('project_id')
136
-
137
- project_id = get_env_project_id()
138
- if project_id:
139
- return project_id
140
-
141
- project_id = get_metadata('project/project-id')
142
- if project_id:
143
- os.environ["GCP_PROJECT"] = project_id
144
- return project_id
145
-
146
- if not is_running_on_gcp():
147
- return None
148
-
149
- logging.warning("GCP Project ID not found. Ensure you are running on GCP or have the GCP_PROJECT environment variable set.")
150
- return None
151
115
 
152
116
 
153
117
  def get_region():
@@ -0,0 +1,40 @@
1
+ import os
2
+ from .config import load_config_key
3
+ from .gcp import get_metadata, is_running_on_gcp
4
+ import logging
5
+
6
+ def get_env_project_id():
7
+ """
8
+ Attempts to retrieve the project ID from environment variables.
9
+
10
+ Returns:
11
+ str or None: The project ID if found in environment variables, None otherwise.
12
+ """
13
+ return os.environ.get('GCP_PROJECT') or os.environ.get('GOOGLE_CLOUD_PROJECT')
14
+
15
+ def get_gcp_project():
16
+ """
17
+ Retrieve the GCP project ID from environment variables or the GCP metadata server.
18
+
19
+ Returns:
20
+ str or None: The project ID if found, None otherwise.
21
+ """
22
+ gcp_config = load_config_key("gcp_config", "global", "vacConfig")
23
+ if gcp_config:
24
+ if gcp_config.get('project_id'):
25
+ return gcp_config.get('project_id')
26
+
27
+ project_id = get_env_project_id()
28
+ if project_id:
29
+ return project_id
30
+
31
+ project_id = get_metadata('project/project-id')
32
+ if project_id:
33
+ os.environ["GCP_PROJECT"] = project_id
34
+ return project_id
35
+
36
+ if not is_running_on_gcp():
37
+ return None
38
+
39
+ logging.warning("GCP Project ID not found. Ensure you are running on GCP or have the GCP_PROJECT environment variable set.")
40
+ return None
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.62.6
3
+ Version: 0.62.8
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.62.6.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.62.8.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -104,6 +104,7 @@ sunholo/utils/big_context.py
104
104
  sunholo/utils/config.py
105
105
  sunholo/utils/config_schema.py
106
106
  sunholo/utils/gcp.py
107
+ sunholo/utils/gcp_project.py
107
108
  sunholo/utils/parsers.py
108
109
  sunholo/utils/timedelta.py
109
110
  sunholo/utils/user_ids.py
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes