superduper
superduper copied to clipboard
[BUG]: The bug related to using ibis query with outputs.
trafficstars
Contact Details [Optional]
No response
System Information
main
What happened?
BUG1:
from superduper import superduper
db = superduper("sqlite://", artifact_store="filesystem:///tmp/artifact_store")
db["test"].outputs("1")
1 from superduper_ibis.query import IbisQuery
----> 2 db["test"].outputs("1")
File ~/Work/Superduper/superduper/superduper/backends/base/query.py:43, in applies_to.<locals>.decorator.<locals>.decorated(self, *args, **kwargs)
41 raise TypeError(msg)
42 assert flavour in flavours, msg
---> 43 return f(self, *args, **kwargs)
File ~/Work/Superduper/superduper/plugins/ibis/superduper_ibis/query.py:319, in IbisQuery.outputs(self, *predict_ids)
315 assert (
316 self.primary_id in args
317 ), f"Primary id: `{self.primary_id}` not in select when using outputs"
318 query = self
--> 319 attr = getattr(query, self.primary_id)
320 for identifier in predict_ids:
321 identifier = (
322 identifier
323 if identifier.startswith(CFG.output_prefix)
324 else f"{CFG.output_prefix}{identifier}"
325 )
File ~/Work/Superduper/superduper/plugins/ibis/superduper_ibis/query.py:243, in IbisQuery.primary_id(self)
240 @property
241 def primary_id(self):
242 """Return the primary id."""
--> 243 return self.base_table.primary_id
File ~/Work/Superduper/superduper/plugins/ibis/superduper_ibis/query.py:104, in IbisQuery.base_table(self)
102 """Return the base table."""
103 if self._base_table is None:
--> 104 self._base_table = self.db.load('table', self.table)
105 return self._base_table
File ~/Work/Superduper/superduper/superduper/base/datalayer.py:628, in Datalayer.load(self, type_id, identifier, version, uuid, huuid, allow_hidden)
626 assert identifier is not None
627 logging.info(f'Load ({type_id, identifier}) from metadata...')
--> 628 info = self.metadata.get_component(
629 type_id=type_id,
630 identifier=identifier,
631 allow_hidden=allow_hidden,
632 )
633 c = Document.decode(info, db=self)
634 c.db = self
File ~/Work/Superduper/superduper/superduper/backends/base/data_backend.py:222, in DataBackendProxy._try_execute.<locals>.wrapper(*args, **kwargs)
220 return attr(*args, **kwargs)
221 else:
--> 222 raise e
File ~/Work/Superduper/superduper/superduper/backends/base/data_backend.py:211, in DataBackendProxy._try_execute.<locals>.wrapper(*args, **kwargs)
208 @functools.wraps(attr)
209 def wrapper(*args, **kwargs):
210 try:
--> 211 return attr(*args, **kwargs)
212 except Exception as e:
213 error_message = str(e).lower()
File ~/Work/Superduper/superduper/superduper/backends/base/metadata.py:388, in MetaDataStore.get_component(self, type_id, identifier, version, allow_hidden)
379 """
380 Get a component from the metadata store.
381
(...)
385 :param allow_hidden: whether to allow hidden components
386 """
387 if version is None:
--> 388 version = self.get_latest_version(
389 type_id=type_id, identifier=identifier, allow_hidden=allow_hidden
390 )
391 r = self._get_component(
392 type_id=type_id,
393 identifier=identifier,
394 version=version,
395 allow_hidden=allow_hidden,
396 )
397 if r is None:
File ~/Work/Superduper/superduper/plugins/sqlalchemy/superduper_sqlalchemy/metadata.py:451, in SQLAlchemyMetadata.get_latest_version(self, type_id, identifier, allow_hidden)
449 versions = [r['version'] for r in res]
450 if len(versions) == 0:
--> 451 raise FileNotFoundError(
452 f'Can\'t find {type_id}: {identifier} in metadata'
453 )
454 return versions[0]
FileNotFoundError: Can't find table: test in metadata
BUG2:
from superduper_ibis.query import IbisQuery
IbisQuery(table="test").select().outputs("1")
RecursionError: maximum recursion depth exceeded in comparison
Steps to reproduce
No response
Relevant log output
No response