From 885841fe0c66c3aa0ca3af342e4b02989971b963 Mon Sep 17 00:00:00 2001 From: KBolashev Date: Tue, 18 Feb 2025 14:39:25 +0200 Subject: [PATCH] refetch fields on has_field failure --- dagshub/data_engine/model/datasource.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/dagshub/data_engine/model/datasource.py b/dagshub/data_engine/model/datasource.py index ffd26523..b6537b88 100644 --- a/dagshub/data_engine/model/datasource.py +++ b/dagshub/data_engine/model/datasource.py @@ -1324,9 +1324,19 @@ def has_field(self, field_name: str) -> bool: """ Checks if a metadata field ``field_name`` exists in the datasource. """ - reserved_searchable_fields = ["path"] - fields = (f.name for f in self.fields) - return field_name in reserved_searchable_fields or field_name in fields + + def _check(): + reserved_searchable_fields = ["path"] + fields = (f.name for f in self.fields) + return field_name in reserved_searchable_fields or field_name in fields + + res = _check() + # Refetch fields once - maybe things got updated + if not res: + self.source.get_from_dagshub() + res = _check() + + return res def __repr__(self): res = f"Datasource {self.source.name}"