Everett Kleven
12/10/2024, 9:08 PMclass DataType(daft.DataType):
pass
But the LanceDB team implemented a pa.DataType extension for Bfloat16, and I'm wondering if I just implement it by adding the Bfloat16 arrow extension as a new classmethod through an arrow conversion.Kevin Wang
12/10/2024, 9:17 PMEverett Kleven
12/10/2024, 9:18 PMEverett Kleven
12/10/2024, 9:19 PMKevin Wang
12/10/2024, 9:24 PMKevin Wang
12/10/2024, 9:25 PMEverett Kleven
12/10/2024, 9:27 PM_EXT_TYPE_REGISTERED = False
_STATIC_DAFT_EXTENSION = None
def _ensure_registered_super_ext_type():
global _EXT_TYPE_REGISTERED
global _STATIC_DAFT_EXTENSION
if not _EXT_TYPE_REGISTERED:
class DaftExtension(pa.ExtensionType):
def __init__(self, dtype, metadata=b""):
# attributes need to be set first before calling
# super init (as that calls serialize)
self._metadata = metadata
super().__init__(dtype, "daft.super_extension")
def __reduce__(self):
return type(self).__arrow_ext_deserialize__, (self.storage_type, self.__arrow_ext_serialize__())
def __arrow_ext_serialize__(self):
return self._metadata
@classmethod
def __arrow_ext_deserialize__(cls, storage_type, serialized):
return cls(storage_type, serialized)
_STATIC_DAFT_EXTENSION = DaftExtension
pa.register_extension_type(DaftExtension(pa.null()))
import atexit
atexit.register(lambda: pa.unregister_extension_type("daft.super_extension"))
_EXT_TYPE_REGISTERED = True
def get_super_ext_type():
_ensure_registered_super_ext_type()
https://github.com/Eventual-Inc/Daft/blob/4567601085ce9ef84203ce882e8a3d49d7ea5576/daft/datatype.py#L576Kevin Wang
12/10/2024, 9:32 PMjay
12/10/2024, 10:32 PMdaft.DataType.extension("my_custom_type", daft.DataType.binary(), metadata="somemeta")
For your case specifically, if you do daft.DataType.from_arrow_type(lancedb_custom_type) it should correctly create the intended DataType object. I believe in this case it will basically end up calling the extension type for you. Something like this:
daft.DataType.extension("bfloat16", daft.DataType.binary(), metadata="whatever_metadata_exists_for_bfloat16")jay
12/10/2024, 10:33 PMEverett Kleven
12/10/2024, 10:36 PM