sunholo 0.62.6__py3-none-any.whl → 0.62.8__py3-none-any.whl

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.
@@ -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
sunholo/logging.py CHANGED
@@ -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
 
sunholo/utils/config.py CHANGED
@@ -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)}"
sunholo/utils/gcp.py CHANGED
@@ -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
@@ -1,5 +1,5 @@
1
1
  sunholo/__init__.py,sha256=0CdpufyRKWyZe7J7UKigL6j_qOorM-p0OjHIAuf9M38,864
2
- sunholo/logging.py,sha256=1jzfy4q9h5DNG4MjwtbTiM8keZxymlrZ0gDQEtGLMHY,11400
2
+ sunholo/logging.py,sha256=A8e9vE0byIAg-CDPL1DwOvq7ybdxqH1s5qPJwViZyPA,11615
3
3
  sunholo/agents/__init__.py,sha256=CnlbVohPt-Doth9PyROSlN3P8xMV9j9yS19YE-wCS90,341
4
4
  sunholo/agents/chat_history.py,sha256=bkII7PNEbGCaobu2Rnr2rM9dim3BCK0kM-tiWhoI1tw,5219
5
5
  sunholo/agents/dispatch_to_qa.py,sha256=rJvqFLH6V-bKm3Xi_US0L2tMbGgpws3dDmKO2Jy_6v0,8343
@@ -28,7 +28,7 @@ sunholo/chunker/images.py,sha256=Xmh1vwHrVhoXm5iH2dhCc52O8YgdzE8KrDSdL-pGnp8,186
28
28
  sunholo/chunker/loaders.py,sha256=xiToUVgPz2ZzcqpUAq7aNP3PTenb_rBUAFzu0JPycIg,10268
29
29
  sunholo/chunker/message_data.py,sha256=X6aA4yX5aGN_mEvsDPWvdYRqqn5GO1BU9QhT9w5A0ec,6789
30
30
  sunholo/chunker/pdfs.py,sha256=daCZ1xjn1YvxlifIyxskWNpLJLe-Q9D_Jq12MWx3tZo,2473
31
- sunholo/chunker/publish.py,sha256=PoT8q3XJeFCg10WrLkYhuaaXIrGVkvUD3-R9IfoWoH4,2703
31
+ sunholo/chunker/publish.py,sha256=LhiF_Mp2z5xZnXhnuUeOrJn29AitcYEbiRkwuQ7IrAU,2711
32
32
  sunholo/chunker/splitter.py,sha256=FLkDhkePkg_zGQpFBK13Cznw575D-Rf9pcaCpc1HUxY,6726
33
33
  sunholo/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  sunholo/cli/chat_vac.py,sha256=Ht8EsGTeubV_-4KEUAA1P5M545Lt_wMAZU8esR6rHyI,16419
@@ -42,7 +42,7 @@ sunholo/cli/run_proxy.py,sha256=0ft_9FUL9d1NKM2ABMMPpvXRTRZd9f-lR2FCahiGzlU,1128
42
42
  sunholo/cli/sun_rich.py,sha256=UpMqeJ0C8i0pkue1AHnnyyX0bFJ9zZeJ7HBR6yhuA8A,54
43
43
  sunholo/components/__init__.py,sha256=IDoylb74zFKo6NIS3RQqUl0PDFBGVxM1dfUmO7OJ44U,176
44
44
  sunholo/components/llm.py,sha256=T4we3tGmqUj4tPwxQr9M6AXv_BALqZV_dRSvINan-oU,10374
45
- sunholo/components/retriever.py,sha256=_Lyt9RIgb2PD-rhV6oKAadiUs3ukT5uAYGW197tEskw,3755
45
+ sunholo/components/retriever.py,sha256=-ecLCuSBiilCyZKJ9cMwtj7uMLuxJwMtyHIDWTkoDME,3763
46
46
  sunholo/components/vectorstore.py,sha256=lB8vx_N6eBA44orNeVo1WRn0Q8GCIjvPPT9AfiPWBWE,5620
47
47
  sunholo/database/__init__.py,sha256=Zz0Shcq-CtStf9rJGIYB_Ybzb8rY_Q9mfSj-nviM490,241
48
48
  sunholo/database/alloydb.py,sha256=zvT50Df7r-jJPo5lEEWbjlXzVr0KuqN6WINgRtiSyxo,17014
@@ -77,7 +77,7 @@ sunholo/patches/langchain/lancedb.py,sha256=KstVpYtI2E1s6_l_kq6js8ruIPJduO6nnvAX
77
77
  sunholo/patches/langchain/vertexai.py,sha256=kX1IvC2D1kMgM3SaSzP9HEosbD6CUymLJd7w9eXo3eE,17677
78
78
  sunholo/pubsub/__init__.py,sha256=wgkrtlL3h8uzNpnlWSHdVMOq0l5Q3D7gkxF_Rp1A6Ro,94
79
79
  sunholo/pubsub/process_pubsub.py,sha256=64hvqMsxbBrf0WGJsprz_SXf9FpjeszAIsqUSBlJrA8,2780
80
- sunholo/pubsub/pubsub_manager.py,sha256=M85QPCXYBPzmE8Ha0FYHdzpA-LRX9p3lu6b-UAHAyac,6400
80
+ sunholo/pubsub/pubsub_manager.py,sha256=7ZGarPVMifsQZYFs-1pYXNiz3lBc6TDFYucvzuebzUs,6408
81
81
  sunholo/qna/__init__.py,sha256=F8q1uR_HreoSX0IfmKY1qoSwIgXhO2Q8kuDSxh9_-EE,28
82
82
  sunholo/qna/parsers.py,sha256=mH_SIgN2yXzvcoQZt9ITkdJSw3jgZGuu0p8q_H-kdSM,2140
83
83
  sunholo/qna/retry.py,sha256=gFgOf9AxrZMIO9OwOYu1EW7rhNhyfnw_o4XAsNLBOVQ,2021
@@ -90,18 +90,19 @@ sunholo/summarise/__init__.py,sha256=MZk3dblUMODcPb1crq4v-Z508NrFIpkSWNf9FIO8BcU
90
90
  sunholo/summarise/summarise.py,sha256=C3HhjepTjUhUC8FLk4jMQIBvq1BcORniwuTFHjPVhVo,3784
91
91
  sunholo/utils/__init__.py,sha256=G11nN_6ATjxpuMfG_BvcUr9UU8onPIgkpTK6CjOcbr8,48
92
92
  sunholo/utils/big_context.py,sha256=gJIP7_ZL-YSLhOMq8jmFTMqH1wq8eB1NK7oKPeZAq2s,5578
93
- sunholo/utils/config.py,sha256=wqwmrQed6_N8ygyLd5QwiFj0GE9xv6aodJMI_mKag70,8977
93
+ sunholo/utils/config.py,sha256=GdEXYq2NeO7tz--vZp4ZSdNt5lpIuJb3nb_2BP1KE9Y,8953
94
94
  sunholo/utils/config_schema.py,sha256=Wv-ncitzljOhgbDaq9qnFqH5LCuxNv59dTGDWgd1qdk,4189
95
- sunholo/utils/gcp.py,sha256=oi0r8pbsUK63sf1RR4XjrETCZVvkRnBiUnTCThEctkI,5998
95
+ sunholo/utils/gcp.py,sha256=uueODEpA-P6O15-t0hmcGC9dONLO_hLfzSsSoQnkUss,4854
96
+ sunholo/utils/gcp_project.py,sha256=qJ7xn0TqkodaeTVPFmPd33jFZItN6OwLF00WzHHZA2U,1218
96
97
  sunholo/utils/parsers.py,sha256=OrHmASqIbI45atVOhiGodgLvnfrzkvVzyHnSvAXD89I,3841
97
98
  sunholo/utils/timedelta.py,sha256=BbLabEx7_rbErj_YbNM0MBcaFN76DC4PTe4zD2ucezg,493
98
99
  sunholo/utils/user_ids.py,sha256=SQd5_H7FE7vcTZp9AQuQDWBXd4FEEd7TeVMQe1H4Ny8,292
99
100
  sunholo/vertex/__init__.py,sha256=7B5Wf41da0dl9JOOrwq35Ob5jcKen_w5T-Tw5f4eoWE,75
100
101
  sunholo/vertex/init.py,sha256=JDMUaBRdednzbKF-5p33qqLit2LMsvgvWW-NRz0AqO0,1801
101
102
  sunholo/vertex/memory_tools.py,sha256=-o9cas_UeRU5gPLi0qcvNwR0HTU5TamzddGLTHOVjZ4,3598
102
- sunholo-0.62.6.dist-info/LICENSE.txt,sha256=SdE3QjnD3GEmqqg9EX3TM9f7WmtOzqS1KJve8rhbYmU,11345
103
- sunholo-0.62.6.dist-info/METADATA,sha256=a_1-YOqnCw4eBCw2Z6s1LCANDibu9TM5b-K25DGKCJU,8057
104
- sunholo-0.62.6.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
105
- sunholo-0.62.6.dist-info/entry_points.txt,sha256=bZuN5AIHingMPt4Ro1b_T-FnQvZ3teBes-3OyO0asl4,49
106
- sunholo-0.62.6.dist-info/top_level.txt,sha256=wt5tadn5--5JrZsjJz2LceoUvcrIvxjHJe-RxuudxAk,8
107
- sunholo-0.62.6.dist-info/RECORD,,
103
+ sunholo-0.62.8.dist-info/LICENSE.txt,sha256=SdE3QjnD3GEmqqg9EX3TM9f7WmtOzqS1KJve8rhbYmU,11345
104
+ sunholo-0.62.8.dist-info/METADATA,sha256=dBltxZ-H_ayYM5k_lcqS0Hmlc73MUqxgpk_Cg9BgfuM,8057
105
+ sunholo-0.62.8.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
106
+ sunholo-0.62.8.dist-info/entry_points.txt,sha256=bZuN5AIHingMPt4Ro1b_T-FnQvZ3teBes-3OyO0asl4,49
107
+ sunholo-0.62.8.dist-info/top_level.txt,sha256=wt5tadn5--5JrZsjJz2LceoUvcrIvxjHJe-RxuudxAk,8
108
+ sunholo-0.62.8.dist-info/RECORD,,