sunholo 0.81.2__py3-none-any.whl → 0.81.4__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.
- sunholo/gcs/download_url.py +6 -2
- sunholo/utils/config_class.py +22 -1
- {sunholo-0.81.2.dist-info → sunholo-0.81.4.dist-info}/METADATA +2 -2
- {sunholo-0.81.2.dist-info → sunholo-0.81.4.dist-info}/RECORD +8 -8
- {sunholo-0.81.2.dist-info → sunholo-0.81.4.dist-info}/LICENSE.txt +0 -0
- {sunholo-0.81.2.dist-info → sunholo-0.81.4.dist-info}/WHEEL +0 -0
- {sunholo-0.81.2.dist-info → sunholo-0.81.4.dist-info}/entry_points.txt +0 -0
- {sunholo-0.81.2.dist-info → sunholo-0.81.4.dist-info}/top_level.txt +0 -0
sunholo/gcs/download_url.py
CHANGED
|
@@ -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)
|
|
@@ -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
|
|
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:
|
sunholo/utils/config_class.py
CHANGED
|
@@ -3,6 +3,8 @@ import json
|
|
|
3
3
|
import yaml
|
|
4
4
|
from datetime import datetime, timedelta
|
|
5
5
|
from collections import defaultdict
|
|
6
|
+
from yaml.constructor import SafeConstructor, ConstructorError
|
|
7
|
+
|
|
6
8
|
from .timedelta import format_timedelta
|
|
7
9
|
|
|
8
10
|
class ConfigManager:
|
|
@@ -120,11 +122,30 @@ class ConfigManager:
|
|
|
120
122
|
dict: The loaded configuration.
|
|
121
123
|
"""
|
|
122
124
|
from ..custom_logging import log
|
|
125
|
+
|
|
126
|
+
class NoDuplicateKeyConstructor(SafeConstructor):
|
|
127
|
+
def construct_mapping(self, node, deep=False):
|
|
128
|
+
mapping = {}
|
|
129
|
+
for key_node, value_node in node.value:
|
|
130
|
+
key = self.construct_object(key_node, deep=deep)
|
|
131
|
+
if key in mapping:
|
|
132
|
+
raise ConstructorError(f"Duplicate key found: {key_node.start_mark}")
|
|
133
|
+
value = self.construct_object(value_node, deep=deep)
|
|
134
|
+
mapping[key] = value
|
|
135
|
+
return mapping
|
|
136
|
+
|
|
137
|
+
NoDuplicateKeyLoader = yaml.Loader
|
|
138
|
+
NoDuplicateKeyLoader.add_constructor(
|
|
139
|
+
yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG,
|
|
140
|
+
NoDuplicateKeyConstructor.construct_mapping
|
|
141
|
+
)
|
|
142
|
+
|
|
123
143
|
with open(config_file, 'r') as file:
|
|
124
144
|
if filename.endswith('.json'):
|
|
125
145
|
config = json.load(file)
|
|
126
146
|
else:
|
|
127
|
-
config = yaml.
|
|
147
|
+
config = yaml.load(file, Loader=NoDuplicateKeyLoader)
|
|
148
|
+
|
|
128
149
|
self.config_cache[filename] = (config, datetime.now())
|
|
129
150
|
if is_local:
|
|
130
151
|
log.warning(f"Local configuration override for {filename} via {self.local_config_folder}")
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sunholo
|
|
3
|
-
Version: 0.81.
|
|
3
|
+
Version: 0.81.4
|
|
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.
|
|
6
|
+
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.81.4.tar.gz
|
|
7
7
|
Author: Holosun ApS
|
|
8
8
|
Author-email: multivac@sunholo.com
|
|
9
9
|
License: Apache License, Version 2.0
|
|
@@ -80,7 +80,7 @@ sunholo/embedder/embed_chunk.py,sha256=MCbTePWjUbIRVDFFhHJ94BvOZvIom62-mTr0PmfQy
|
|
|
80
80
|
sunholo/gcs/__init__.py,sha256=SZvbsMFDko40sIRHTHppA37IijvJTae54vrhooEF5-4,90
|
|
81
81
|
sunholo/gcs/add_file.py,sha256=wkBQBfnjUbItnRNGiG9oBr7Jf2QfLpZf2nA5zT435ss,7107
|
|
82
82
|
sunholo/gcs/download_folder.py,sha256=ijJTnS595JqZhBH8iHFErQilMbkuKgL-bnTCMLGuvlA,1614
|
|
83
|
-
sunholo/gcs/download_url.py,sha256=
|
|
83
|
+
sunholo/gcs/download_url.py,sha256=q1NiJSvEhdNrmU5ZJ-sBCMC_J5CxzrajY8LRgdPOV_M,6130
|
|
84
84
|
sunholo/gcs/metadata.py,sha256=oQLcXi4brsZ74aegWyC1JZmhlaEV270HS5_UWtAYYWE,898
|
|
85
85
|
sunholo/invoke/__init__.py,sha256=bELcqIjzKvaupcIN5OQmDgGx_8jARtH9T6PCe8UgcvE,99
|
|
86
86
|
sunholo/invoke/direct_vac_func.py,sha256=wvrYDZNLoLeO_uQiqRdGUlhwjhLr05dVNBST9TxwwBA,4478
|
|
@@ -118,7 +118,7 @@ sunholo/utils/__init__.py,sha256=Hv02T5L2zYWvCso5hzzwm8FQogwBq0OgtUbN_7Quzqc,89
|
|
|
118
118
|
sunholo/utils/api_key.py,sha256=Ct4bIAQZxzPEw14hP586LpVxBAVi_W9Serpy0BK-7KI,244
|
|
119
119
|
sunholo/utils/big_context.py,sha256=gJIP7_ZL-YSLhOMq8jmFTMqH1wq8eB1NK7oKPeZAq2s,5578
|
|
120
120
|
sunholo/utils/config.py,sha256=aG29MXcL5qzQMtCMqcdy-2ysDCYf9Zn_ZLk5NNOQNSE,8982
|
|
121
|
-
sunholo/utils/config_class.py,sha256=
|
|
121
|
+
sunholo/utils/config_class.py,sha256=ygKw3E-Q6MLc1XZKRULCTPTibsOFlEfyCA3GyxOhPa8,9869
|
|
122
122
|
sunholo/utils/config_schema.py,sha256=Wv-ncitzljOhgbDaq9qnFqH5LCuxNv59dTGDWgd1qdk,4189
|
|
123
123
|
sunholo/utils/gcp.py,sha256=uueODEpA-P6O15-t0hmcGC9dONLO_hLfzSsSoQnkUss,4854
|
|
124
124
|
sunholo/utils/gcp_project.py,sha256=Fa0IhCX12bZ1ctF_PKN8PNYd7hihEUfb90kilBfUDjg,1411
|
|
@@ -134,9 +134,9 @@ sunholo/vertex/init.py,sha256=1OQwcPBKZYBTDPdyU7IM4X4OmiXLdsNV30C-fee2scQ,2875
|
|
|
134
134
|
sunholo/vertex/memory_tools.py,sha256=pgSahVDh7GPEulu3nl-w0jb5lTClb4TCnVxPnMokNZY,7533
|
|
135
135
|
sunholo/vertex/safety.py,sha256=S9PgQT1O_BQAkcqauWncRJaydiP8Q_Jzmu9gxYfy1VA,2482
|
|
136
136
|
sunholo/vertex/type_dict_to_json.py,sha256=uTzL4o9tJRao4u-gJOFcACgWGkBOtqACmb6ihvCErL8,4694
|
|
137
|
-
sunholo-0.81.
|
|
138
|
-
sunholo-0.81.
|
|
139
|
-
sunholo-0.81.
|
|
140
|
-
sunholo-0.81.
|
|
141
|
-
sunholo-0.81.
|
|
142
|
-
sunholo-0.81.
|
|
137
|
+
sunholo-0.81.4.dist-info/LICENSE.txt,sha256=SdE3QjnD3GEmqqg9EX3TM9f7WmtOzqS1KJve8rhbYmU,11345
|
|
138
|
+
sunholo-0.81.4.dist-info/METADATA,sha256=cCI0nirNVKWA2M3ocqxpse6iClUWl68YYG-aAOnZr-E,7348
|
|
139
|
+
sunholo-0.81.4.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
|
140
|
+
sunholo-0.81.4.dist-info/entry_points.txt,sha256=bZuN5AIHingMPt4Ro1b_T-FnQvZ3teBes-3OyO0asl4,49
|
|
141
|
+
sunholo-0.81.4.dist-info/top_level.txt,sha256=wt5tadn5--5JrZsjJz2LceoUvcrIvxjHJe-RxuudxAk,8
|
|
142
|
+
sunholo-0.81.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|