From e38aec4ba2bcebe7f57c574c3e69c9cf3d6a819e Mon Sep 17 00:00:00 2001 From: Marius Seritan <39998+winding-lines@users.noreply.github.com> Date: Sun, 14 Sep 2025 13:50:02 -0700 Subject: [PATCH] Chore: bump mojo to 2025-09-14 version --- firebolt/arrays/binary.mojo | 4 +- firebolt/arrays/primitive.mojo | 12 +- firebolt/arrays/tests/test_base.mojo | 8 +- firebolt/arrays/tests/test_chunked_array.mojo | 6 +- firebolt/arrays/tests/test_nested.mojo | 18 +-- firebolt/arrays/tests/test_primitive.mojo | 2 +- firebolt/buffers.mojo | 2 +- firebolt/c_data.mojo | 64 ++++---- firebolt/test_fixtures/arrays.mojo | 2 +- firebolt/tests/test_c_data.mojo | 60 ++++---- firebolt/tests/test_dtypes.mojo | 144 +++++++++--------- firebolt/tests/test_schema.mojo | 32 ++-- pixi.lock | 76 ++++----- 13 files changed, 219 insertions(+), 211 deletions(-) diff --git a/firebolt/arrays/binary.mojo b/firebolt/arrays/binary.mojo index eee37a4..54351b7 100644 --- a/firebolt/arrays/binary.mojo +++ b/firebolt/arrays/binary.mojo @@ -9,7 +9,7 @@ struct StringArray(Array): var capacity: Int fn __init__(out self, var data: ArrayData) raises: - if data.dtype != string: + if data.dtype != materialize[string](): raise Error( "Unexpected dtype '{}' instead of 'string'.".format(data.dtype) ) @@ -37,7 +37,7 @@ struct StringArray(Array): self.capacity = capacity self.data = ArrayData( - dtype=string, + dtype=materialize[string](), length=0, bitmap=ArcPointer(bitmap^), buffers=List(ArcPointer(offsets^), ArcPointer(values^)), diff --git a/firebolt/arrays/primitive.mojo b/firebolt/arrays/primitive.mojo index 5dd88ed..6d63c61 100644 --- a/firebolt/arrays/primitive.mojo +++ b/firebolt/arrays/primitive.mojo @@ -72,9 +72,11 @@ struct PrimitiveArray[T: DataType](Array): fn __init__(out self, var data: ArrayData, offset: Int = 0) raises: # TODO(kszucs): put a dtype constraint here - if data.dtype != T: + if data.dtype != materialize[T](): raise Error( - "Unexpected dtype '{}' instead of '{}'.".format(data.dtype, T) + "Unexpected dtype '{}' instead of '{}'.".format( + data.dtype, materialize[T]() + ) ) elif len(data.buffers) != 1: raise Error("PrimitiveArray requires exactly one buffer") @@ -89,7 +91,7 @@ struct PrimitiveArray[T: DataType](Array): bitmap = ArcPointer(Bitmap.alloc(capacity)) buffer = ArcPointer(Buffer.alloc[T.native](capacity)) self.data = ArrayData( - dtype=T, + dtype=materialize[T](), length=0, bitmap=bitmap, buffers=List(buffer), @@ -151,7 +153,7 @@ struct PrimitiveArray[T: DataType](Array): var buffer = Buffer.alloc[T.native](size) return PrimitiveArray[T]( data=ArrayData( - dtype=T, + dtype=materialize[T](), length=size, bitmap=ArcPointer(bitmap^), buffers=List(ArcPointer(buffer^)), @@ -200,7 +202,7 @@ struct PrimitiveArray[T: DataType](Array): """ writer.write("PrimitiveArray( dtype=") - writer.write(Self.dtype) + writer.write(materialize[Self.dtype]()) writer.write(", offset=") writer.write(self.offset) writer.write(", capacity=") diff --git a/firebolt/arrays/tests/test_base.mojo b/firebolt/arrays/tests/test_base.mojo index 6486f26..eab9b43 100644 --- a/firebolt/arrays/tests/test_base.mojo +++ b/firebolt/arrays/tests/test_base.mojo @@ -25,7 +25,7 @@ def test_array_data_with_offset(): # Create ArrayData with offset=2 var array_data = ArrayData( - dtype=int8, + dtype=materialize[int8](), length=3, bitmap=bitmap, buffers=List(buffer), @@ -48,7 +48,7 @@ def test_array_data_fieldwise_init(): # Test creating ArrayData with all fields specified including offset var array_data = ArrayData( - dtype=int8, + dtype=materialize[int8](), length=5, bitmap=bitmap, buffers=List(buffer), @@ -56,7 +56,7 @@ def test_array_data_fieldwise_init(): offset=3, ) - assert_equal(array_data.dtype, int8) + assert_equal(array_data.dtype, materialize[int8]()) assert_equal(array_data.length, 5) assert_equal(array_data.offset, 3) @@ -81,7 +81,7 @@ def test_array_data_write_to_with_offset(): # Create ArrayData with offset=1, so logical indices 0,1,2 map to physical indices 1,2,3 var array_data = ArrayData( - dtype=dtype, + dtype=materialize[dtype](), length=3, bitmap=bitmap, buffers=List(buffer), diff --git a/firebolt/arrays/tests/test_chunked_array.mojo b/firebolt/arrays/tests/test_chunked_array.mojo index 05edd37..48264bd 100644 --- a/firebolt/arrays/tests/test_chunked_array.mojo +++ b/firebolt/arrays/tests/test_chunked_array.mojo @@ -17,7 +17,7 @@ def test_chunked_array(): var second_array_data = build_array_data(2, 0) arrays.append(second_array_data^) - var chunked_array = ChunkedArray(int8, arrays^) + var chunked_array = ChunkedArray(materialize[int8](), arrays^) assert_equal(chunked_array.length, 3) assert_equal(chunked_array.chunk(0).length, 1) @@ -35,13 +35,13 @@ def test_combine_chunked_array(): var second_array_data = build_array_data(2, 0) arrays.append(second_array_data^) - var chunked_array = ChunkedArray(int8, arrays^) + var chunked_array = ChunkedArray(materialize[int8](), arrays^) assert_equal(chunked_array.length, 3) assert_equal(len(chunked_array.chunks), 2) assert_equal(chunked_array.chunk(1).copy().as_uint8().unsafe_get(1), 1) var combined_array = chunked_array^.combine_chunks() assert_equal(combined_array.length, 3) - assert_equal(combined_array.dtype, int8) + assert_equal(combined_array.dtype, materialize[int8]()) # Ensure that the last element of the last buffer has the expected value. assert_equal(combined_array.buffers[1][].unsafe_get(1), 1) diff --git a/firebolt/arrays/tests/test_nested.mojo b/firebolt/arrays/tests/test_nested.mojo index 958baf7..787627f 100644 --- a/firebolt/arrays/tests/test_nested.mojo +++ b/firebolt/arrays/tests/test_nested.mojo @@ -20,7 +20,7 @@ fn build_list_of_list[data_type: DataType]() raises -> ListArray: buffer[].unsafe_set[data_type.native](i, i + 1) var value_data = ArrayData( - dtype=data_type, + dtype=materialize[data_type](), length=10, bitmap=bitmap, buffers=List(buffer), @@ -42,7 +42,7 @@ fn build_list_of_list[data_type: DataType]() raises -> ListArray: list_bitmap[].unsafe_range_set(0, 6, True) list_bitmap[].unsafe_set(3, False) var list_data = ArrayData( - dtype=list_(data_type), + dtype=list_(materialize[data_type]()), length=6, buffers=List(value_offset), children=List(ArcPointer(value_data^)), @@ -60,7 +60,7 @@ fn build_list_of_list[data_type: DataType]() raises -> ListArray: top_bitmap[].unsafe_range_set(0, 4, True) return ListArray( ArrayData( - dtype=list_(list_(data_type)), + dtype=list_(list_(materialize[data_type]())), length=4, buffers=List(ArcPointer(top_offsets^)), children=List(ArcPointer(list_data^)), @@ -76,7 +76,7 @@ def test_list_int_array(): ints.append(2) ints.append(3) var lists = ListArray(ints^) - assert_equal(lists.data.dtype, list_(int64)) + assert_equal(lists.data.dtype, list_(materialize[int64]())) var first_value = lists.unsafe_get(0) assert_equal(first_value.__str__().strip(), "1 2 3") @@ -137,9 +137,9 @@ def test_list_of_list(): def test_struct_array(): var fields = List[Field]( - Field("id", int64), - Field("name", string), - Field("active", bool_), + Field("id", materialize[int64]()), + Field("name", materialize[string]()), + Field("active", materialize[bool_]()), ) var struct_arr = StructArray(fields^, capacity=10) @@ -169,8 +169,8 @@ def test_list_array_str_repr(): def test_struct_array_str_repr(): var fields = List[Field]( - Field("id", int64), - Field("name", string), + Field("id", materialize[int64]()), + Field("name", materialize[string]()), ) var struct_arr = StructArray(fields^, capacity=5) diff --git a/firebolt/arrays/tests/test_primitive.mojo b/firebolt/arrays/tests/test_primitive.mojo index 845a7a6..ae53bcd 100644 --- a/firebolt/arrays/tests/test_primitive.mojo +++ b/firebolt/arrays/tests/test_primitive.mojo @@ -49,7 +49,7 @@ def test_append(): def test_array_from_ints(): var g = array[int8](1, 2) assert_equal(len(g), 2) - assert_equal(g.dtype, int8) + assert_equal(materialize[g.dtype](), materialize[int8]()) assert_equal(g.unsafe_get(0), 1) assert_equal(g.unsafe_get(1), 2) diff --git a/firebolt/buffers.mojo b/firebolt/buffers.mojo index e6424b1..02487d1 100644 --- a/firebolt/buffers.mojo +++ b/firebolt/buffers.mojo @@ -62,7 +62,7 @@ struct Buffer(Movable): @staticmethod fn alloc[I: Intable, //, T: DType = DType.uint8](length: I) -> Buffer: var size = _required_bytes(Int(length), T) - var ptr = UnsafePointer[UInt8, alignment=64].alloc(size) + var ptr = UnsafePointer[UInt8].alloc[alignment=64](size) memset_zero(ptr.bitcast[UInt8](), size) return Buffer(ptr, size) diff --git a/firebolt/c_data.mojo b/firebolt/c_data.mojo index 571b918..3a938eb 100644 --- a/firebolt/c_data.mojo +++ b/firebolt/c_data.mojo @@ -56,35 +56,35 @@ struct CArrowSchema(Copyable, Movable, Representable, Stringable, Writable): var n_children: Int64 = 0 var children = UnsafePointer[UnsafePointer[CArrowSchema]]() - if dtype == null: + if dtype == materialize[null](): fmt = "n" - elif dtype == bool_: + elif dtype == materialize[bool_](): fmt = "b" - elif dtype == int8: + elif dtype == materialize[int8](): fmt = "c" - elif dtype == uint8: + elif dtype == materialize[uint8](): fmt = "C" - elif dtype == int16: + elif dtype == materialize[int16](): fmt = "s" - elif dtype == uint16: + elif dtype == materialize[uint16](): fmt = "S" - elif dtype == int32: + elif dtype == materialize[int32](): fmt = "i" - elif dtype == uint32: + elif dtype == materialize[uint32](): fmt = "I" - elif dtype == int64: + elif dtype == materialize[int64](): fmt = "l" - elif dtype == uint64: + elif dtype == materialize[uint64](): fmt = "L" - elif dtype == float16: + elif dtype == materialize[float16](): fmt = "e" - elif dtype == float32: + elif dtype == materialize[float32](): fmt = "f" - elif dtype == float64: + elif dtype == materialize[float64](): fmt = "g" - elif dtype == binary: + elif dtype == materialize[binary](): fmt = "z" - elif dtype == string: + elif dtype == materialize[string](): fmt = "u" elif dtype.is_struct(): print("EEE") @@ -139,35 +139,35 @@ struct CArrowSchema(Copyable, Movable, Representable, Stringable, Writable): ) # TODO(kszucs): not the nicest, but dictionary literals are not supported yet if fmt == "n": - return null + return materialize[null]() elif fmt == "b": - return bool_ + return materialize[bool_]() elif fmt == "c": - return int8 + return materialize[int8]() elif fmt == "C": - return uint8 + return materialize[uint8]() elif fmt == "s": - return int16 + return materialize[int16]() elif fmt == "S": - return uint16 + return materialize[uint16]() elif fmt == "i": - return int32 + return materialize[int32]() elif fmt == "I": - return uint32 + return materialize[uint32]() elif fmt == "l": - return int64 + return materialize[int64]() elif fmt == "L": - return uint64 + return materialize[uint64]() elif fmt == "e": - return float16 + return materialize[float16]() elif fmt == "f": - return float32 + return materialize[float32]() elif fmt == "g": - return float64 + return materialize[float64]() elif fmt == "z": - return binary + return materialize[binary]() elif fmt == "u": - return string + return materialize[string]() elif fmt == "+l": var field = self.children[0][].to_field() return list_(field.dtype.copy()) @@ -251,10 +251,10 @@ struct CArrowArray(Copyable, Movable): bitmap[].unsafe_range_set(0, self.length, True) var buffers = List[ArcPointer[Buffer]]() - if dtype.is_numeric() or dtype == bool_: + if dtype.is_numeric() or dtype == materialize[bool_](): var buffer = Buffer.view(self.buffers[1], self.length, dtype.native) buffers.append(ArcPointer(buffer^)) - elif dtype == string: + elif dtype == materialize[string](): var offsets = Buffer.view( self.buffers[1], self.length + 1, DType.uint32 ) diff --git a/firebolt/test_fixtures/arrays.mojo b/firebolt/test_fixtures/arrays.mojo index baaf846..27e106d 100644 --- a/firebolt/test_fixtures/arrays.mojo +++ b/firebolt/test_fixtures/arrays.mojo @@ -38,7 +38,7 @@ def build_array_data(length: Int, nulls: Int) -> ArrayData: var buffers = List(ArcPointer(buffer^)) return ArrayData( - dtype=uint8, + dtype=materialize[uint8](), length=length, bitmap=ArcPointer(bitmap^), buffers=buffers^, diff --git a/firebolt/tests/test_c_data.mojo b/firebolt/tests/test_c_data.mojo index a960d5d..f421057 100644 --- a/firebolt/tests/test_c_data.mojo +++ b/firebolt/tests/test_c_data.mojo @@ -15,9 +15,9 @@ def test_schema_from_pyarrow(): var schema = c_schema.to_dtype() assert_equal(schema.fields[0].name, "int_field") - assert_equal(schema.fields[0].dtype, int32) + assert_equal(schema.fields[0].dtype, materialize[int32]()) assert_equal(schema.fields[1].name, "string_field") - assert_equal(schema.fields[1].dtype, string) + assert_equal(schema.fields[1].dtype, materialize[string]()) var writer = String() writer.write(c_schema) assert_equal(writer, 'CArrowSchema(name="", format="+s", n_children=2)') @@ -34,7 +34,7 @@ def test_primitive_array_from_pyarrow(): var c_schema = CArrowSchema.from_pyarrow(pyarr.type) var dtype = c_schema.to_dtype() - assert_equal(dtype, int64) + assert_equal(dtype, materialize[int64]()) assert_equal(c_array.length, 5) assert_equal(c_array.null_count, 1) assert_equal(c_array.offset, 0) @@ -72,7 +72,7 @@ def test_binary_array_from_pyarrow(): var c_schema = CArrowSchema.from_pyarrow(pyarr.type) var dtype = c_schema.to_dtype() - assert_equal(dtype, string) + assert_equal(dtype, materialize[string]()) assert_equal(c_array.length, 3) assert_equal(c_array.null_count, 1) @@ -112,7 +112,7 @@ def test_list_array_from_pyarrow(): var c_schema = CArrowSchema.from_pyarrow(pyarr.type) var dtype = c_schema.to_dtype() - assert_equal(dtype, list_(int64)) + assert_equal(dtype, list_(materialize[int64]())) assert_equal(c_array.length, 3) assert_equal(c_array.null_count, 1) @@ -144,21 +144,21 @@ def test_list_array_from_pyarrow(): def test_schema_from_dtype(): - var c_schema = CArrowSchema.from_dtype(int32) + var c_schema = CArrowSchema.from_dtype(materialize[int32]()) var dtype = c_schema.to_dtype() - assert_equal(dtype, int32) + assert_equal(dtype, materialize[int32]()) - var c_schema_str = CArrowSchema.from_dtype(string) + var c_schema_str = CArrowSchema.from_dtype(materialize[string]()) var dtype_str = c_schema_str.to_dtype() - assert_equal(dtype_str, string) + assert_equal(dtype_str, materialize[string]()) - var c_schema_bool = CArrowSchema.from_dtype(bool_) + var c_schema_bool = CArrowSchema.from_dtype(materialize[bool_]()) var dtype_bool = c_schema_bool.to_dtype() - assert_equal(dtype_bool, bool_) + assert_equal(dtype_bool, materialize[bool_]()) - var c_schema_float64 = CArrowSchema.from_dtype(float64) + var c_schema_float64 = CArrowSchema.from_dtype(materialize[float64]()) var dtype_float64 = c_schema_float64.to_dtype() - assert_equal(dtype_float64, float64) + assert_equal(dtype_float64, materialize[float64]()) def test_schema_to_field(): @@ -167,14 +167,14 @@ def test_schema_to_field(): var c_schema = CArrowSchema.from_pyarrow(pyfield) var field = c_schema.to_field() assert_equal(field.name, "test_field") - assert_equal(field.dtype, int32) + assert_equal(field.dtype, materialize[int32]()) assert_equal(field.nullable, True) var pyfield_str = pa.field("string_field", pa.string(), nullable=False) var c_schema_str = CArrowSchema.from_pyarrow(pyfield_str) var field_str = c_schema_str.to_field() assert_equal(field_str.name, "string_field") - assert_equal(field_str.dtype, string) + assert_equal(field_str.dtype, materialize[string]()) assert_equal(field_str.nullable, False) @@ -201,9 +201,9 @@ def test_arrow_array_stream(): var schema = c_schema.to_dtype() assert_equal(len(schema.fields), 2) assert_equal(schema.fields[0].name, "col1") - assert_equal(schema.fields[0].dtype, int64) + assert_equal(schema.fields[0].dtype, materialize[int64]()) assert_equal(schema.fields[1].name, "col2") - assert_equal(schema.fields[1].dtype, string) + assert_equal(schema.fields[1].dtype, materialize[string]()) var c_array = array_stream.c_next() assert_equal(c_array.length, 5) @@ -235,9 +235,9 @@ def test_struct_dtype_conversion(): assert_true(dtype.is_struct()) assert_equal(len(dtype.fields), 2) assert_equal(dtype.fields[0].name, "x") - assert_equal(dtype.fields[0].dtype, int32) + assert_equal(dtype.fields[0].dtype, materialize[int32]()) assert_equal(dtype.fields[1].name, "y") - assert_equal(dtype.fields[1].dtype, float64) + assert_equal(dtype.fields[1].dtype, materialize[float64]()) def test_list_dtype_conversion(): @@ -248,23 +248,23 @@ def test_list_dtype_conversion(): var dtype = c_schema.to_dtype() assert_true(dtype.is_list()) - assert_equal(dtype.fields[0].dtype, int32) + assert_equal(dtype.fields[0].dtype, materialize[int32]()) def test_numeric_dtypes(): var pa = Python.import_module("pyarrow") var types_to_test = [ - (pa.int8(), int8), - (pa.uint8(), uint8), - (pa.int16(), int16), - (pa.uint16(), uint16), - (pa.int32(), int32), - (pa.uint32(), uint32), - (pa.int64(), int64), - (pa.uint64(), uint64), - (pa.float32(), float32), - (pa.float64(), float64), + (pa.int8(), materialize[int8]()), + (pa.uint8(), materialize[uint8]()), + (pa.int16(), materialize[int16]()), + (pa.uint16(), materialize[uint16]()), + (pa.int32(), materialize[int32]()), + (pa.uint32(), materialize[uint32]()), + (pa.int64(), materialize[int64]()), + (pa.uint64(), materialize[uint64]()), + (pa.float32(), materialize[float32]()), + (pa.float64(), materialize[float64]()), ] for i in range(len(types_to_test)): diff --git a/firebolt/tests/test_dtypes.mojo b/firebolt/tests/test_dtypes.mojo index f316184..f8216a7 100644 --- a/firebolt/tests/test_dtypes.mojo +++ b/firebolt/tests/test_dtypes.mojo @@ -3,19 +3,23 @@ import firebolt.dtypes as dt def test_bool_type(): - assert_true(dt.bool_ == dt.bool_) - assert_false(dt.bool_ == dt.int64) - assert_true(dt.bool_ is dt.bool_) - assert_false(dt.bool_ is dt.int64) + assert_true(materialize[dt.bool_]() == materialize[dt.bool_]()) + assert_false(materialize[dt.bool_]() == materialize[dt.int64]()) + assert_true(materialize[dt.bool_]() is materialize[dt.bool_]()) + assert_false(materialize[dt.bool_]() is materialize[dt.int64]()) def test_list_type(): - assert_true(dt.list_(dt.int64) == dt.list_(dt.int64)) - assert_false(dt.list_(dt.int64) == dt.list_(dt.int32)) + assert_true( + dt.list_(materialize[dt.int64]()) == dt.list_(materialize[dt.int64]()) + ) + assert_false( + dt.list_(materialize[dt.int64]()) == dt.list_(materialize[dt.int32]()) + ) def test_field(): - var field = dt.Field("a", dt.int64, False) + var field = dt.Field("a", materialize[dt.int64](), False) var writer = String() writer.write(field) var expected = ( @@ -28,87 +32,89 @@ def test_field(): def test_struct_type(): s1 = dt.struct_( - dt.Field("a", dt.int64, False), dt.Field("b", dt.int32, False) + dt.Field("a", materialize[dt.int64](), False), + dt.Field("b", materialize[dt.int32](), False), ) s2 = dt.struct_( - dt.Field("a", dt.int64, False), dt.Field("b", dt.int32, False) + dt.Field("a", materialize[dt.int64](), False), + dt.Field("b", materialize[dt.int32](), False), ) s3 = dt.struct_( - dt.Field("a", dt.int64, False), - dt.Field("b", dt.int32, False), - dt.Field("c", dt.int8, False), + dt.Field("a", materialize[dt.int64](), False), + dt.Field("b", materialize[dt.int32](), False), + dt.Field("c", materialize[dt.int8](), False), ) assert_true(s1 == s2) assert_false(s1 == s3) def test_is_integer(): - assert_true(dt.int8.is_integer()) - assert_true(dt.int16.is_integer()) - assert_true(dt.int32.is_integer()) - assert_true(dt.int64.is_integer()) - assert_true(dt.uint8.is_integer()) - assert_true(dt.uint16.is_integer()) - assert_true(dt.uint32.is_integer()) - assert_true(dt.uint64.is_integer()) - assert_false(dt.bool_.is_integer()) - assert_false(dt.float32.is_integer()) - assert_false(dt.float64.is_integer()) - assert_false(dt.list_(dt.int64).is_integer()) + assert_true(materialize[dt.int8]().is_integer()) + assert_true(materialize[dt.int16]().is_integer()) + assert_true(materialize[dt.int32]().is_integer()) + assert_true(materialize[dt.int64]().is_integer()) + assert_true(materialize[dt.uint8]().is_integer()) + assert_true(materialize[dt.uint16]().is_integer()) + assert_true(materialize[dt.uint32]().is_integer()) + assert_true(materialize[dt.uint64]().is_integer()) + assert_false(materialize[dt.bool_]().is_integer()) + assert_false(materialize[dt.float32]().is_integer()) + assert_false(materialize[dt.float64]().is_integer()) + assert_false(dt.list_(materialize[dt.int64]()).is_integer()) def test_is_signed_integer(): - assert_true(dt.int8.is_signed_integer()) - assert_true(dt.int16.is_signed_integer()) - assert_true(dt.int32.is_signed_integer()) - assert_true(dt.int64.is_signed_integer()) - assert_false(dt.uint8.is_signed_integer()) - assert_false(dt.uint16.is_signed_integer()) - assert_false(dt.uint32.is_signed_integer()) - assert_false(dt.uint64.is_signed_integer()) - assert_false(dt.bool_.is_signed_integer()) - assert_false(dt.float32.is_signed_integer()) - assert_false(dt.float64.is_signed_integer()) + assert_true(materialize[dt.int8]().is_signed_integer()) + assert_true(materialize[dt.int16]().is_signed_integer()) + assert_true(materialize[dt.int32]().is_signed_integer()) + assert_true(materialize[dt.int64]().is_signed_integer()) + assert_false(materialize[dt.uint8]().is_signed_integer()) + assert_false(materialize[dt.uint16]().is_signed_integer()) + assert_false(materialize[dt.uint32]().is_signed_integer()) + assert_false(materialize[dt.uint64]().is_signed_integer()) + assert_false(materialize[dt.bool_]().is_signed_integer()) + assert_false(materialize[dt.float32]().is_signed_integer()) + assert_false(materialize[dt.float64]().is_signed_integer()) def test_is_unsigned_integer(): - assert_false(dt.int8.is_unsigned_integer()) - assert_false(dt.int16.is_unsigned_integer()) - assert_false(dt.int32.is_unsigned_integer()) - assert_false(dt.int64.is_unsigned_integer()) - assert_true(dt.uint8.is_unsigned_integer()) - assert_true(dt.uint16.is_unsigned_integer()) - assert_true(dt.uint32.is_unsigned_integer()) - assert_true(dt.uint64.is_unsigned_integer()) - assert_false(dt.bool_.is_unsigned_integer()) - assert_false(dt.float32.is_unsigned_integer()) - assert_false(dt.float64.is_unsigned_integer()) + assert_false(materialize[dt.int8]().is_unsigned_integer()) + assert_false(materialize[dt.int16]().is_unsigned_integer()) + assert_false(materialize[dt.int32]().is_unsigned_integer()) + assert_false(materialize[dt.int64]().is_unsigned_integer()) + assert_true(materialize[dt.uint8]().is_unsigned_integer()) + assert_true(materialize[dt.uint16]().is_unsigned_integer()) + assert_true(materialize[dt.uint32]().is_unsigned_integer()) + assert_true(materialize[dt.uint64]().is_unsigned_integer()) + assert_false(materialize[dt.bool_]().is_unsigned_integer()) + assert_false(materialize[dt.float32]().is_unsigned_integer()) + assert_false(materialize[dt.float64]().is_unsigned_integer()) def test_is_floating_point(): - assert_false(dt.int8.is_floating_point()) - assert_false(dt.int16.is_floating_point()) - assert_false(dt.int32.is_floating_point()) - assert_false(dt.int64.is_floating_point()) - assert_false(dt.uint8.is_floating_point()) - assert_false(dt.uint16.is_floating_point()) - assert_false(dt.uint32.is_floating_point()) - assert_false(dt.uint64.is_floating_point()) - assert_false(dt.bool_.is_floating_point()) - assert_true(dt.float32.is_floating_point()) - assert_true(dt.float64.is_floating_point()) + assert_false(materialize[dt.int8]().is_floating_point()) + assert_false(materialize[dt.int16]().is_floating_point()) + assert_false(materialize[dt.int32]().is_floating_point()) + assert_false(materialize[dt.int64]().is_floating_point()) + assert_false(materialize[dt.uint8]().is_floating_point()) + assert_false(materialize[dt.uint16]().is_floating_point()) + assert_false(materialize[dt.uint32]().is_floating_point()) + assert_false(materialize[dt.uint64]().is_floating_point()) + assert_false(materialize[dt.bool_]().is_floating_point()) + assert_true(materialize[dt.float32]().is_floating_point()) + assert_true(materialize[dt.float64]().is_floating_point()) def test_bitwidth(): - assert_equal(dt.int8.bitwidth(), 8) - assert_equal(dt.int16.bitwidth(), 16) - assert_equal(dt.int32.bitwidth(), 32) - assert_equal(dt.int64.bitwidth(), 64) - assert_equal(dt.uint8.bitwidth(), 8) - assert_equal(dt.uint16.bitwidth(), 16) - assert_equal(dt.uint32.bitwidth(), 32) - assert_equal(dt.uint64.bitwidth(), 64) - assert_equal(dt.bool_.bitwidth(), 1) - assert_equal(dt.float32.bitwidth(), 32) - assert_equal(dt.float64.bitwidth(), 64) - assert_equal(dt.list_(dt.int64).bitwidth(), 0) + assert_equal(materialize[dt.int8]().bitwidth(), 8) + assert_equal(materialize[dt.int16]().bitwidth(), 16) + assert_equal(materialize[dt.int32]().bitwidth(), 32) + assert_equal(materialize[dt.int64]().bitwidth(), 64) + assert_equal(materialize[dt.uint8]().bitwidth(), 8) + assert_equal(materialize[dt.uint16]().bitwidth(), 16) + assert_equal(materialize[dt.uint32]().bitwidth(), 32) + assert_equal(materialize[dt.uint64]().bitwidth(), 64) + assert_equal(materialize[dt.bool_]().bitwidth(), 1) + assert_equal(materialize[dt.float32]().bitwidth(), 32) + assert_equal(materialize[dt.float64]().bitwidth(), 64) + assert_equal(dt.list_(materialize[dt.int64]()).bitwidth(), 0) diff --git a/firebolt/tests/test_schema.mojo b/firebolt/tests/test_schema.mojo index b2f6664..dc2476c 100644 --- a/firebolt/tests/test_schema.mojo +++ b/firebolt/tests/test_schema.mojo @@ -21,19 +21,19 @@ def test_schema_primitive_fields(): # Create a schema with different data types fields = List[Field]( - Field("field1", int8, False), - Field("field2", int16, False), - Field("field3", int32, False), - Field("field4", int64, False), - Field("field5", uint8, False), - Field("field6", uint16, False), - Field("field7", uint32, False), - Field("field8", uint64, False), - Field("field9", float16, False), - Field("field10", float32, False), - Field("field11", float64, False), - Field("field12", binary, False), - Field("field13", string, False), + Field("field1", materialize[int8]()), + Field("field2", materialize[int16]()), + Field("field3", materialize[int32]()), + Field("field4", materialize[int64]()), + Field("field5", materialize[uint8]()), + Field("field6", materialize[uint16]()), + Field("field7", materialize[uint32]()), + Field("field8", materialize[uint64]()), + Field("field9", materialize[float16]()), + Field("field10", materialize[float32]()), + Field("field11", materialize[float64]()), + Field("field12", materialize[binary]()), + Field("field13", materialize[string]()), ) var nb_fields = len(fields) @@ -49,8 +49,8 @@ def test_schema_primitive_fields(): def test_schema_names() -> None: fields = List[Field]( - Field("field1", int8, False), - Field("field2", int16, False), + Field("field1", materialize[int8](), False), + Field("field2", materialize[int16](), False), ) var schema = Schema(fields=fields^) @@ -59,7 +59,7 @@ def test_schema_names() -> None: List[String](["field{}".format(i + 1) for i in range(2)]), ) - schema.append(Field("field3", int32)) + schema.append(Field("field3", materialize[int32]())) assert_equal( schema.names(), List[String](["field{}".format(i + 1) for i in range(3)]), diff --git a/pixi.lock b/pixi.lock index 0f789c8..25bb219 100644 --- a/pixi.lock +++ b/pixi.lock @@ -35,10 +35,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.1-he9a06e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.6.0.dev2025091105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/mojo-0.25.6.0.dev2025091105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/mojo-compiler-0.25.6.0.dev2025091105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-python-0.25.6.0.dev2025091105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.6.0.dev2025091406-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/mojo-0.25.6.0.dev2025091406-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/mojo-compiler-0.25.6.0.dev2025091406-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-python-0.25.6.0.dev2025091406-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.2-h26f9b46_0.conda @@ -81,10 +81,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.4-h4237e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.6.0.dev2025091105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/mojo-0.25.6.0.dev2025091105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/mojo-compiler-0.25.6.0.dev2025091105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-python-0.25.6.0.dev2025091105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.6.0.dev2025091406-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/mojo-0.25.6.0.dev2025091406-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/mojo-compiler-0.25.6.0.dev2025091406-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-python-0.25.6.0.dev2025091406-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.2-he92f556_0.conda @@ -554,9 +554,9 @@ packages: purls: [] size: 46438 timestamp: 1727963202283 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.6.0.dev2025091105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.6.0.dev2025091406-release.conda noarch: python - sha256: 165e504a2df724be6367db461933f756f8e4e7cf1c84fc4d14dc9a13f894658b + sha256: e184a9be8a57550ee7e6b23e850085f4761df090a1165e6045042762e3f3406c depends: - python >=3.9 - click >=8.0.0 @@ -568,50 +568,50 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 131751 - timestamp: 1757567997383 -- conda: https://conda.modular.com/max-nightly/linux-64/mojo-0.25.6.0.dev2025091105-release.conda - sha256: c66d5dd597e937e36be4c0a3dc188f907ccd82fc25d3ad3af08e01199631f126 + size: 131816 + timestamp: 1757830296049 +- conda: https://conda.modular.com/max-nightly/linux-64/mojo-0.25.6.0.dev2025091406-release.conda + sha256: 3685e79b9661ba49924c9dc30357ce8cd94738d2ee5a3a8e7fd7f651ed828533 depends: - python >=3.9 - - mojo-compiler ==0.25.6.0.dev2025091105 release - - mblack ==25.6.0.dev2025091105 release + - mojo-compiler ==0.25.6.0.dev2025091406 release + - mblack ==25.6.0.dev2025091406 release - jupyter_client >=8.6.2,<8.7 license: LicenseRef-Modular-Proprietary - size: 89993190 - timestamp: 1757568076836 -- conda: https://conda.modular.com/max-nightly/osx-arm64/mojo-0.25.6.0.dev2025091105-release.conda - sha256: 64b4065ca939799f7b74b24d9bfdb7f60913d0c019c250743f474093589d90cb + size: 89998308 + timestamp: 1757830372794 +- conda: https://conda.modular.com/max-nightly/osx-arm64/mojo-0.25.6.0.dev2025091406-release.conda + sha256: 5e482cad6d409f5536f7589bedfe328e5d9e1e0746aafb6c148eb9de86c03228 depends: - python >=3.9 - - mojo-compiler ==0.25.6.0.dev2025091105 release - - mblack ==25.6.0.dev2025091105 release + - mojo-compiler ==0.25.6.0.dev2025091406 release + - mblack ==25.6.0.dev2025091406 release - jupyter_client >=8.6.2,<8.7 license: LicenseRef-Modular-Proprietary - size: 75936529 - timestamp: 1757570168799 -- conda: https://conda.modular.com/max-nightly/linux-64/mojo-compiler-0.25.6.0.dev2025091105-release.conda - sha256: 410753cf3a0694027bbeb56d3b1355e82d3cea67d3279efa61340ad6a3d32f26 + size: 75937452 + timestamp: 1757831246577 +- conda: https://conda.modular.com/max-nightly/linux-64/mojo-compiler-0.25.6.0.dev2025091406-release.conda + sha256: 58745d7cd652d2b6248e3505de8927adfa5c366611c5ac9e36d08978da42995f depends: - - mojo-python ==0.25.6.0.dev2025091105 release + - mojo-python ==0.25.6.0.dev2025091406 release license: LicenseRef-Modular-Proprietary - size: 83585317 - timestamp: 1757568076836 -- conda: https://conda.modular.com/max-nightly/osx-arm64/mojo-compiler-0.25.6.0.dev2025091105-release.conda - sha256: f680867d3023126e734f75177805dc8cfe2795f52b3bb867810993a8de8720fb + size: 84780404 + timestamp: 1757830372793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/mojo-compiler-0.25.6.0.dev2025091406-release.conda + sha256: b278f0e348fe2f70019032e0f3c1f15ede14d705983a1febecd4a2388aa2919c depends: - - mojo-python ==0.25.6.0.dev2025091105 release + - mojo-python ==0.25.6.0.dev2025091406 release license: LicenseRef-Modular-Proprietary - size: 62135829 - timestamp: 1757570168798 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-python-0.25.6.0.dev2025091105-release.conda + size: 63316692 + timestamp: 1757831246577 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-python-0.25.6.0.dev2025091406-release.conda noarch: python - sha256: 0126c0744648bf6d248ddd54616569e06a3bc36afd4546724cc82feb4abed085 + sha256: c980bcdf42300b6e4f24d0bc894c66e9baff926e2dea8a59bc43ac1e7aa446ba depends: - python license: LicenseRef-Modular-Proprietary - size: 17968 - timestamp: 1757567997383 + size: 17981 + timestamp: 1757830296049 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda sha256: 6ed158e4e5dd8f6a10ad9e525631e35cee8557718f83de7a4e3966b1f772c4b1 md5: e9c622e0d00fa24a6292279af3ab6d06