Skip to content

Commit b48403f

Browse files
committed
Fix Yaml datetime format
1 parent 5ca3c25 commit b48403f

File tree

4 files changed

+35
-7
lines changed

4 files changed

+35
-7
lines changed

libs/ktem/ktem/embeddings/ui.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import pandas as pd
55
import yaml
66
from ktem.app import BasePage
7+
from ktem.utils.file import YAMLNoDateSafeLoader
78

89
from .manager import embedding_models_manager
910

@@ -222,7 +223,7 @@ def on_register_events(self):
222223

223224
def create_emb(self, name, choices, spec, default):
224225
try:
225-
spec = yaml.safe_load(spec)
226+
spec = yaml.load(spec, Loader=YAMLNoDateSafeLoader)
226227
spec["__type__"] = (
227228
embedding_models_manager.vendors()[choices].__module__
228229
+ "."
@@ -308,7 +309,7 @@ def on_btn_delete_click(self):
308309

309310
def save_emb(self, selected_emb_name, default, spec):
310311
try:
311-
spec = yaml.safe_load(spec)
312+
spec = yaml.load(spec, Loader=YAMLNoDateSafeLoader)
312313
spec["__type__"] = embedding_models_manager.info()[selected_emb_name][
313314
"spec"
314315
]["__type__"]

libs/ktem/ktem/index/ui.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import pandas as pd
33
import yaml
44
from ktem.app import BasePage
5+
from ktem.utils.file import YAMLNoDateSafeLoader
56

67
from .manager import IndexManager
78

@@ -231,7 +232,9 @@ def create_index(self, name: str, index_type: str, config: str):
231232
"""
232233
try:
233234
self.manager.build_index(
234-
name=name, config=yaml.safe_load(config), index_type=index_type
235+
name=name,
236+
config=yaml.load(config, Loader=YAMLNoDateSafeLoader),
237+
index_type=index_type,
235238
)
236239
gr.Info(f'Create index "{name}" successfully. Please restart the app!')
237240
except Exception as e:
@@ -294,7 +297,7 @@ def on_selected_index_change(self, selected_index_id: int):
294297

295298
def update_index(self, selected_index_id: int, name: str, config: str):
296299
try:
297-
spec = yaml.safe_load(config)
300+
spec = yaml.load(config, Loader=YAMLNoDateSafeLoader)
298301
self.manager.update_index(selected_index_id, name, spec)
299302
gr.Info(f'Update index "{name}" successfully. Please restart the app!')
300303
except Exception as e:

libs/ktem/ktem/llms/ui.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import pandas as pd
55
import yaml
66
from ktem.app import BasePage
7+
from ktem.utils.file import YAMLNoDateSafeLoader
78

89
from .manager import llms
910

@@ -219,7 +220,7 @@ def on_register_events(self):
219220

220221
def create_llm(self, name, choices, spec, default):
221222
try:
222-
spec = yaml.safe_load(spec)
223+
spec = yaml.load(spec, Loader=YAMLNoDateSafeLoader)
223224
spec["__type__"] = (
224225
llms.vendors()[choices].__module__
225226
+ "."
@@ -305,12 +306,12 @@ def on_btn_delete_click(self):
305306

306307
def save_llm(self, selected_llm_name, default, spec):
307308
try:
308-
spec = yaml.safe_load(spec)
309+
spec = yaml.load(spec, Loader=YAMLNoDateSafeLoader)
309310
spec["__type__"] = llms.info()[selected_llm_name]["spec"]["__type__"]
310311
llms.update(selected_llm_name, spec=spec, default=default)
311312
gr.Info(f"LLM {selected_llm_name} saved successfully")
312313
except Exception as e:
313-
gr.Error(f"Failed to save LLM {selected_llm_name}: {e}")
314+
raise gr.Error(f"Failed to save LLM {selected_llm_name}: {e}")
314315

315316
def delete_llm(self, selected_llm_name):
316317
try:

libs/ktem/ktem/utils/file.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import yaml
2+
3+
4+
class YAMLNoDateSafeLoader(yaml.SafeLoader):
5+
"""Load datetime as strings, not dates"""
6+
7+
@classmethod
8+
def remove_implicit_resolver(cls, tag_to_remove):
9+
"""Remove implicit resolvers for a particular tag
10+
11+
Args:
12+
tag_to_remove (str): YAML tag to remove
13+
"""
14+
if "yaml_implicit_resolvers" not in cls.__dict__:
15+
cls.yaml_implicit_resolvers = cls.yaml_implicit_resolvers.copy()
16+
17+
for first_letter, mappings in cls.yaml_implicit_resolvers.items():
18+
cls.yaml_implicit_resolvers[first_letter] = [
19+
(tag, regexp) for tag, regexp in mappings if tag != tag_to_remove
20+
]
21+
22+
23+
YAMLNoDateSafeLoader.remove_implicit_resolver("tag:yaml.org,2002:timestamp")

0 commit comments

Comments
 (0)