From 884743165b1f8fe4236201444ce2931bffdb4976 Mon Sep 17 00:00:00 2001 From: Evan Ovadia Date: Tue, 10 Dec 2024 13:15:17 -0500 Subject: [PATCH 01/10] [stdlib] Apply `__disable_del` in `Dict` Adds another use of __disable_del, the last one that operates on a Self. We're leaning towards restricting __disable_del to only work on Self, so skipping remaining mark_destroyed usages for now. MODULAR_ORIG_COMMIT_REV_ID: 0e5c5d0f92dc0be4c9e2e88f6d1e8dc4ba60dc5e --- stdlib/src/collections/dict.mojo | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index 99aa18c45f..bed109d221 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -242,14 +242,14 @@ struct DictEntry[K: KeyElement, V: CollectionElement]( self.key = other.key self.value = other.value - fn reap_value(owned self) -> V: + fn reap_value(owned self) -> V as out: """Take the value from an owned entry. Returns: The value of the entry. """ - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) - return self.value^ + out = self.value^ + __disable_del self alias _EMPTY = -1 From 52e25220a34a9a1a12bca01548b45e2f921d8af2 Mon Sep 17 00:00:00 2001 From: modularbot <116839051+modularbot@users.noreply.github.com> Date: Tue, 10 Dec 2024 13:20:58 -0600 Subject: [PATCH 02/10] [External] [stdlib] Fix allow immutable `UnsafePointer` and adjust `.unsafe_ptr()` methods (#50547) [External] [stdlib] Allow immutable `UnsafePointer` and adjust `.unsafe_ptr()` methods This changes `UnsafePointer` to support immutable origin parameters, and updates the `unsafe_ptr()` methods of many collection types to more accurately report their origin as being tied to the collection instance, instead of being unspecified `MutableAnyOrigin`. Additionally, `UnsafePointer.address_of()` has been updated to infer the origin of the returned `UnsafePointer` from the memory location being referenced. With these changes, the most common places where `MutableAnyOrigin` origins were constructed have been fixed. Although this should not break anything in well-behaved Mojo code, it may change where ASAP destruction is performed, due to the narrower origin references meaning destructors will no longer be deferred unnecessarily. Fixes MSTDL-956 ORIGINAL_AUTHOR=martinvuyk <110240700+martinvuyk@users.noreply.github.com> PUBLIC_PR_LINK=modularml/mojo#3734 --------- Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Co-authored-by: Connor Gray Closes modularml/mojo#3734 MODULAR_ORIG_COMMIT_REV_ID: a5023a5464a9c9b0608734af096fec165322dcd8 --- stdlib/scripts/run-tests.sh | 2 +- stdlib/src/builtin/sort.mojo | 16 +++--- stdlib/src/builtin/string_literal.mojo | 14 +++-- stdlib/src/collections/dict.mojo | 4 +- stdlib/src/collections/list.mojo | 12 ++-- stdlib/src/collections/string.mojo | 10 +++- stdlib/src/memory/memory.mojo | 4 +- stdlib/src/memory/span.mojo | 12 ++-- stdlib/src/memory/unsafe_pointer.mojo | 65 ++++++++++++++-------- stdlib/src/random/random.mojo | 2 +- stdlib/src/utils/string_slice.mojo | 5 +- stdlib/test/collections/test_string.mojo | 2 +- stdlib/test/memory/test_unsafepointer.mojo | 6 +- 13 files changed, 97 insertions(+), 57 deletions(-) diff --git a/stdlib/scripts/run-tests.sh b/stdlib/scripts/run-tests.sh index 70a7bf52db..a13d2e03ef 100755 --- a/stdlib/scripts/run-tests.sh +++ b/stdlib/scripts/run-tests.sh @@ -29,7 +29,7 @@ TEST_UTILS_PATH="${REPO_ROOT}/stdlib/test/test_utils" # uses the stdlib that's given in the nightly, and will fail compilation # if some breaking changes are made. export MODULAR_MOJO_NIGHTLY_IMPORT_PATH=$BUILD_DIR -mojo package "${TEST_UTILS_PATH}" -o "${BUILD_DIR}/test_utils.mojopkg" +mojo package "${TEST_UTILS_PATH}" -I ${BUILD_DIR} -o "${BUILD_DIR}/test_utils.mojopkg" TEST_PATH="${REPO_ROOT}/stdlib/test" if [[ $# -gt 0 ]]; then diff --git a/stdlib/src/builtin/sort.mojo b/stdlib/src/builtin/sort.mojo index 23429d9b4f..f3f19ba9b2 100644 --- a/stdlib/src/builtin/sort.mojo +++ b/stdlib/src/builtin/sort.mojo @@ -48,7 +48,7 @@ fn _insertion_sort[ cmp_fn: fn (_SortWrapper[type], _SortWrapper[type]) capturing [_] -> Bool, ](span: Span[type, origin]): """Sort the array[start:end] slice""" - var array = span.unsafe_ptr() + var array = span.unsafe_ptr().bitcast[origin=MutableAnyOrigin]() var size = len(span) for i in range(1, size): @@ -72,7 +72,7 @@ fn _quicksort_partition_right[ origin: MutableOrigin, //, cmp_fn: fn (_SortWrapper[type], _SortWrapper[type]) capturing [_] -> Bool, ](span: Span[type, origin]) -> Int: - var array = span.unsafe_ptr() + var array = span.unsafe_ptr().bitcast[origin=MutableAnyOrigin]() var size = len(span) var left = 1 @@ -101,7 +101,7 @@ fn _quicksort_partition_left[ origin: MutableOrigin, //, cmp_fn: fn (_SortWrapper[type], _SortWrapper[type]) capturing [_] -> Bool, ](span: Span[type, origin]) -> Int: - var array = span.unsafe_ptr() + var array = span.unsafe_ptr().bitcast[origin=MutableAnyOrigin]() var size = len(span) var left = 1 @@ -127,7 +127,7 @@ fn _heap_sort_fix_down[ origin: MutableOrigin, //, cmp_fn: fn (_SortWrapper[type], _SortWrapper[type]) capturing [_] -> Bool, ](span: Span[type, origin], idx: Int): - var array = span.unsafe_ptr() + var array = span.unsafe_ptr().bitcast[origin=MutableAnyOrigin]() var size = len(span) var i = idx var j = i * 2 + 1 @@ -148,7 +148,7 @@ fn _heap_sort[ origin: MutableOrigin, //, cmp_fn: fn (_SortWrapper[type], _SortWrapper[type]) capturing [_] -> Bool, ](span: Span[type, origin]): - var array = span.unsafe_ptr() + var array = span.unsafe_ptr().bitcast[origin=MutableAnyOrigin]() var size = len(span) # heapify for i in range(size // 2 - 1, -1, -1): @@ -177,7 +177,7 @@ fn _delegate_small_sort[ origin: MutableOrigin, //, cmp_fn: fn (_SortWrapper[type], _SortWrapper[type]) capturing [_] -> Bool, ](span: Span[type, origin]): - var array = span.unsafe_ptr() + var array = span.unsafe_ptr().bitcast[origin=MutableAnyOrigin]() var size = len(span) if size == 2: _small_sort[2, type, cmp_fn](array) @@ -209,7 +209,7 @@ fn _quicksort[ origin: MutableOrigin, //, cmp_fn: fn (_SortWrapper[type], _SortWrapper[type]) capturing [_] -> Bool, ](span: Span[type, origin]): - var array = span.unsafe_ptr() + var array = span.unsafe_ptr().bitcast[origin=MutableAnyOrigin]() var size = len(span) if size == 0: return @@ -379,7 +379,7 @@ fn _partition[ if size <= 1: return 0 - var array = span.unsafe_ptr() + var array = span.unsafe_ptr().bitcast[origin=MutableAnyOrigin]() var pivot = size // 2 var pivot_value = array[pivot] diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 377173470f..fc3ce8e14a 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -485,8 +485,9 @@ struct StringLiteral( return __mlir_op.`pop.string.size`(self.value) @always_inline("nodebug") - # FIXME(MSTDL-956): This should return a pointer with StaticConstantOrigin. - fn unsafe_ptr(self) -> UnsafePointer[UInt8]: + fn unsafe_ptr( + self, + ) -> UnsafePointer[Byte, is_mutable=False, origin=StaticConstantOrigin]: """Get raw pointer to the underlying data. Returns: @@ -497,11 +498,14 @@ struct StringLiteral( # TODO(MSTDL-555): # Remove bitcast after changing pop.string.address # return type. - return ptr.bitcast[UInt8]() + return ptr.bitcast[ + Byte, is_mutable=False, origin=StaticConstantOrigin + ]() @always_inline - # FIXME(MSTDL-956): This should return a pointer with StaticConstantOrigin. - fn unsafe_cstr_ptr(self) -> UnsafePointer[c_char]: + fn unsafe_cstr_ptr( + self, + ) -> UnsafePointer[c_char, is_mutable=False, origin=StaticConstantOrigin]: """Retrieves a C-string-compatible pointer to the underlying memory. The returned pointer is guaranteed to be NUL terminated, and not null. diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index bed109d221..f6b36900dc 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -192,7 +192,9 @@ struct _DictValueIter[ # Cast through a pointer to grant additional mutability because # _DictEntryIter.next erases it. return Self.ref_type.address_of( - UnsafePointer.address_of(entry_ref[].value)[] + UnsafePointer.address_of(entry_ref[].value).bitcast[ + origin=dict_origin + ]()[] ) @always_inline diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index bcfca0c2fa..a3a64643a3 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -22,7 +22,6 @@ from collections import List from os import abort from sys import sizeof -from sys.intrinsics import _type_is_eq from memory import Pointer, UnsafePointer, memcpy, Span @@ -924,12 +923,17 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( if elt_idx_1 != elt_idx_2: swap((self.data + elt_idx_1)[], (self.data + elt_idx_2)[]) - @always_inline - fn unsafe_ptr(self) -> UnsafePointer[T]: + fn unsafe_ptr( + ref self, + ) -> UnsafePointer[ + T, + is_mutable = Origin(__origin_of(self)).is_mutable, + origin = __origin_of(self), + ]: """Retrieves a pointer to the underlying memory. Returns: - The UnsafePointer to the underlying memory. + The pointer to the underlying memory. """ return self.data diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index fe9746584d..cef5b9a42c 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -1594,13 +1594,19 @@ struct String( buf.append(0) return String(buf^) - fn unsafe_ptr(self) -> UnsafePointer[UInt8]: + fn unsafe_ptr( + ref self, + ) -> UnsafePointer[ + Byte, + is_mutable = Origin(__origin_of(self)).is_mutable, + origin = __origin_of(self), + ]: """Retrieves a pointer to the underlying memory. Returns: The pointer to the underlying memory. """ - return self._buffer.data + return self._buffer.unsafe_ptr() fn unsafe_cstr_ptr(self) -> UnsafePointer[c_char]: """Retrieves a C-string-compatible pointer to the underlying memory. diff --git a/stdlib/src/memory/memory.mojo b/stdlib/src/memory/memory.mojo index 8d3a525cb4..0a23477416 100644 --- a/stdlib/src/memory/memory.mojo +++ b/stdlib/src/memory/memory.mojo @@ -153,7 +153,9 @@ fn memcmp[ @always_inline fn _memcpy_impl( - dest_data: UnsafePointer[Byte, **_], src_data: __type_of(dest_data), n: Int + dest_data: UnsafePointer[Byte, is_mutable=True, **_], + src_data: __type_of(dest_data), + n: Int, ): """Copies a memory area. diff --git a/stdlib/src/memory/span.mojo b/stdlib/src/memory/span.mojo index 497a084c88..03f860f899 100644 --- a/stdlib/src/memory/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -107,7 +107,7 @@ struct Span[ """ # Field - var _data: UnsafePointer[T] + var _data: UnsafePointer[T, is_mutable=is_mutable, origin=origin] var _len: Int # ===------------------------------------------------------------------===# @@ -250,14 +250,14 @@ struct Span[ # Methods # ===------------------------------------------------------------------===# - fn unsafe_ptr(self) -> UnsafePointer[T]: - """ - Gets a pointer to the first element of this slice. + fn unsafe_ptr( + self, + ) -> UnsafePointer[T, is_mutable=is_mutable, origin=origin]: + """Retrieves a pointer to the underlying memory. Returns: - A pointer pointing at the first element of this slice. + The pointer to the underlying memory. """ - return self._data fn as_ref(self) -> Pointer[T, origin]: diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index 047bb61ac7..a5feb34736 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -28,7 +28,6 @@ from sys.intrinsics import ( strided_load, strided_store, ) - from bit import is_power_of_two from memory.memory import _free, _malloc @@ -47,13 +46,19 @@ fn _default_alignment[type: DType, width: Int = 1]() -> Int: return _default_alignment[Scalar[type]]() +alias _must_be_mut_err = "UnsafePointer must be mutable for this operation" + + @register_passable("trivial") struct UnsafePointer[ type: AnyType, *, address_space: AddressSpace = AddressSpace.GENERIC, alignment: Int = _default_alignment[type](), - origin: Origin[True] = MutableAnyOrigin, + is_mutable: Bool = True, + origin: Origin[is_mutable] = Origin[is_mutable] + .cast_from[MutableAnyOrigin] + .result, ]( ImplicitlyBoolable, CollectionElement, @@ -79,6 +84,7 @@ struct UnsafePointer[ type: The type the pointer points to. address_space: The address space associated with the UnsafePointer allocated memory. alignment: The minimum alignment of this pointer known statically. + is_mutable: Whether the origin is mutable. origin: The origin of the memory being addressed. """ @@ -158,8 +164,8 @@ struct UnsafePointer[ type, address_space=address_space, alignment=1, - origin=MutableAnyOrigin - # TODO: Propagate origin of the argument. + is_mutable = Origin(__origin_of(arg)).is_mutable, + origin = __origin_of(arg), ], ): """Gets the address of the argument. @@ -198,9 +204,7 @@ struct UnsafePointer[ # ===-------------------------------------------------------------------===# @always_inline - fn __getitem__( - self, - ) -> ref [origin, address_space] type: + fn __getitem__(self) -> ref [origin, address_space] type: """Return a reference to the underlying data. Returns: @@ -211,12 +215,7 @@ struct UnsafePointer[ alias _ref_type = Pointer[type, origin, address_space] return __get_litref_as_mvalue( __mlir_op.`lit.ref.from_pointer`[_type = _ref_type._mlir_type]( - UnsafePointer[ - type, - address_space=address_space, - alignment=alignment, - origin=origin, - ](self).address + self.address ) ) @@ -372,7 +371,8 @@ struct UnsafePointer[ rhs: The value of the other pointer. Returns: - True if this pointer represents a higher than or equal address and False otherwise. + True if this pointer represents a higher than or equal address and + False otherwise. """ return int(self) > int(rhs) @@ -386,7 +386,8 @@ struct UnsafePointer[ rhs: The value of the other pointer. Returns: - True if this pointer represents a higher than or equal address and False otherwise. + True if this pointer represents a higher than or equal address and + False otherwise. """ return int(self) >= int(rhs) @@ -450,11 +451,7 @@ struct UnsafePointer[ # ===-------------------------------------------------------------------===# @always_inline("nodebug") - fn as_noalias_ptr( - self, - ) -> UnsafePointer[ - type, address_space=address_space, alignment=alignment, origin=origin - ]: + fn as_noalias_ptr(self) -> Self: """Cast the pointer to a new pointer that is known not to locally alias any other pointer. In other words, the pointer transitively does not alias any other memory value declared in the local function context. @@ -641,6 +638,7 @@ struct UnsafePointer[ offset: The offset to store to. val: The value to store. """ + constrained[is_mutable, _must_be_mut_err]() self.offset(offset)._store[alignment=alignment, volatile=volatile](val) @always_inline @@ -673,6 +671,7 @@ struct UnsafePointer[ offset: The offset to store to. val: The value to store. """ + constrained[is_mutable, _must_be_mut_err]() self.offset(offset).store[alignment=alignment, volatile=volatile](val) @always_inline @@ -702,6 +701,7 @@ struct UnsafePointer[ offset: The offset to store to. val: The value to store. """ + constrained[is_mutable, _must_be_mut_err]() constrained[offset_type.is_integral(), "offset must be integer"]() self.offset(int(offset))._store[alignment=alignment, volatile=volatile]( val @@ -736,6 +736,7 @@ struct UnsafePointer[ offset: The offset to store to. val: The value to store. """ + constrained[is_mutable, _must_be_mut_err]() constrained[offset_type.is_integral(), "offset must be integer"]() self.offset(int(offset))._store[alignment=alignment, volatile=volatile]( val @@ -761,6 +762,7 @@ struct UnsafePointer[ Args: val: The value to store. """ + constrained[is_mutable, _must_be_mut_err]() self._store[alignment=alignment, volatile=volatile](val) @always_inline("nodebug") @@ -785,6 +787,7 @@ struct UnsafePointer[ Args: val: The value to store. """ + constrained[is_mutable, _must_be_mut_err]() self._store[alignment=alignment, volatile=volatile](val) @always_inline("nodebug") @@ -795,6 +798,7 @@ struct UnsafePointer[ alignment: Int = _default_alignment[type, width](), volatile: Bool = False, ](self: UnsafePointer[Scalar[type], **_], val: SIMD[type, width]): + constrained[is_mutable, _must_be_mut_err]() constrained[width > 0, "width must be a positive integer value"]() constrained[ alignment > 0, "alignment must be a positive integer value" @@ -850,6 +854,7 @@ struct UnsafePointer[ val: The SIMD value to store. stride: The stride between stores. """ + constrained[is_mutable, _must_be_mut_err]() strided_store(val, self, int(stride), True) @always_inline("nodebug") @@ -949,6 +954,7 @@ struct UnsafePointer[ mask: The SIMD vector of boolean values, indicating for each element whether to store at memory or not. """ + constrained[is_mutable, _must_be_mut_err]() constrained[ offset.type.is_integral(), "offset type must be an integral type", @@ -972,9 +978,17 @@ struct UnsafePointer[ /, address_space: AddressSpace = Self.address_space, alignment: Int = Self.alignment, - origin: Origin[True] = Self.origin, + *, + is_mutable: Bool = Self.is_mutable, + origin: Origin[is_mutable] = Origin[is_mutable] + .cast_from[Self.origin] + .result, ](self) -> UnsafePointer[ - T, address_space=address_space, alignment=alignment, origin=origin + T, + address_space=address_space, + alignment=alignment, + is_mutable=is_mutable, + origin=origin, ]: """Bitcasts a UnsafePointer to a different type. @@ -982,6 +996,7 @@ struct UnsafePointer[ T: The target type. address_space: The address space of the result. alignment: Alignment of the destination pointer. + is_mutable: Whether the origin is mutable. origin: Origin of the destination pointer. Returns: @@ -1006,6 +1021,7 @@ struct UnsafePointer[ more efficient because it doesn't invoke `__moveinit__`. """ + constrained[is_mutable, _must_be_mut_err]() _ = __get_address_as_owned_value(self.address) @always_inline @@ -1028,6 +1044,7 @@ struct UnsafePointer[ Returns: The value at the pointer. """ + constrained[is_mutable, _must_be_mut_err]() return __get_address_as_owned_value(self.address) # TODO: Allow overloading on more specific traits @@ -1054,6 +1071,7 @@ struct UnsafePointer[ Args: value: The value to emplace. """ + constrained[is_mutable, _must_be_mut_err]() __get_address_as_uninit_lvalue(self.address) = value^ @always_inline @@ -1079,6 +1097,7 @@ struct UnsafePointer[ Args: value: The value to emplace. """ + constrained[is_mutable, _must_be_mut_err]() __get_address_as_uninit_lvalue(self.address) = value @always_inline @@ -1105,6 +1124,7 @@ struct UnsafePointer[ Args: value: The value to emplace. """ + constrained[is_mutable, _must_be_mut_err]() __get_address_as_uninit_lvalue(self.address) = T(other=value) @always_inline @@ -1139,6 +1159,7 @@ struct UnsafePointer[ Args: dst: Destination pointer that the value will be moved into. """ + constrained[is_mutable, _must_be_mut_err]() __get_address_as_uninit_lvalue( dst.address ) = __get_address_as_owned_value(self.address) diff --git a/stdlib/src/random/random.mojo b/stdlib/src/random/random.mojo index 8ac75d5a8f..e64ec3373b 100644 --- a/stdlib/src/random/random.mojo +++ b/stdlib/src/random/random.mojo @@ -122,7 +122,7 @@ fn randint[ fn rand[ type: DType ]( - ptr: UnsafePointer[Scalar[type], **_], + ptr: UnsafePointer[Scalar[type], is_mutable=True, **_], size: Int, /, *, diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 03ed9be490..454f7968d9 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -758,13 +758,14 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( return self._slice @always_inline - fn unsafe_ptr(self) -> UnsafePointer[UInt8]: + fn unsafe_ptr( + self, + ) -> UnsafePointer[Byte, is_mutable=is_mutable, origin=origin]: """Gets a pointer to the first element of this string slice. Returns: A pointer pointing at the first element of this string slice. """ - return self._slice.unsafe_ptr() @always_inline diff --git a/stdlib/test/collections/test_string.mojo b/stdlib/test/collections/test_string.mojo index da23f5d9c7..ff5da33ee7 100644 --- a/stdlib/test/collections/test_string.mojo +++ b/stdlib/test/collections/test_string.mojo @@ -1263,7 +1263,7 @@ def test_string_iter(): assert_equal(321, atol(concat)) for v in vs: - v.unsafe_ptr()[] = ord("1") + v.unsafe_ptr().bitcast[is_mutable=True]()[] = ord("1") # Borrow immutably for v in vs: diff --git a/stdlib/test/memory/test_unsafepointer.mojo b/stdlib/test/memory/test_unsafepointer.mojo index d6339f7e18..3331764e47 100644 --- a/stdlib/test/memory/test_unsafepointer.mojo +++ b/stdlib/test/memory/test_unsafepointer.mojo @@ -150,15 +150,15 @@ def test_unsafepointer_string(): def test_eq(): var local = 1 - var p1 = UnsafePointer[Int].address_of(local) + var p1 = UnsafePointer.address_of(local).bitcast[is_mutable=False]() var p2 = p1 assert_equal(p1, p2) var other_local = 2 - var p3 = UnsafePointer[Int].address_of(other_local) + var p3 = UnsafePointer.address_of(other_local).bitcast[is_mutable=False]() assert_not_equal(p1, p3) - var p4 = UnsafePointer[Int].address_of(local) + var p4 = UnsafePointer.address_of(local).bitcast[is_mutable=False]() assert_equal(p1, p4) _ = local _ = other_local From 0c26ac9014c1e6b799daa7983cbbe306375808b6 Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Tue, 10 Dec 2024 11:51:20 -0800 Subject: [PATCH 03/10] [Docs] Mojo 24.6 changelog. That's all, folks. MODULAR_ORIG_COMMIT_REV_ID: 98f4a7713b4767bb8a1b244adb187414eb1d200f --- docs/changelog-released.md | 736 +++++++++++++++++++++++++++++++++++++ docs/changelog.md | 687 +--------------------------------- 2 files changed, 744 insertions(+), 679 deletions(-) diff --git a/docs/changelog-released.md b/docs/changelog-released.md index 79b64934eb..44376a6153 100644 --- a/docs/changelog-released.md +++ b/docs/changelog-released.md @@ -20,6 +20,742 @@ conda](/magic/conda). ::: +## v24.6 (2024-12-17) + +### ✨ Highlights + +Here's a brief summary of some of the major changes in this release, with more +detailed information in the following sections: + +- The `inout` and `borrowed` argument conventions have been renamed to `mut` + and `read`, respectively. See Language changes for details. + +- `Lifetime` and related types have been renamed to `Origin` in the standard + library to better clarify that parameters of this type indicate where a + reference is derived from, not the more complicated notion of where a variable + is initialized and destroyed. As a consequence the `__lifetime_of()` operator + is now named `__origin_of()`. There are also a number of other origin-related + improvements in this release, described under Language changes and Standard + library changes below. + + For background information and rationale on the name change see + [the proposal](https://github.com/modularml/mojo/issues/3623). For more + information on origins, see + [Lifetimes, origins and references](/mojo/manual/values/lifetimes) in the Mojo + Manual. + +- Implicit conversions are now opt-in using the `@implicit` decorator. See + Language changes for details. + +- Lots of new docs, including a brand new + [Mojo tutorial](/mojo/manual/get-started), new pages on + [operators and expressions](/mojo/manual/operators), + [error handling](/mojo/manual/errors), and + [pointers](/mojo/manual/pointers/), and many smaller additions and + improvements. + +### Language changes + +- The `inout` and `borrowed` argument conventions have been renamed to the `mut` + and `read` argument conventions (respectively). These verbs reflect + declaratively what the callee can do to the argument value passed into the + caller, without tying in the requirement for the programmer to know about + advanced features like references. + +- The argument convention for the `self` argument in `__init__()`, + `__copyinit__()`, and `__moveinit__()` methods has been changed from `inout` + to `out`, reflecting that a constructor method initializes its `self` value + without reading from it. This also enables spelling the type of an initializer + correctly, which was not supported before: + + ```mojo + struct Foo: + fn __init__(out self): pass + + fn test(): + # This works now + var fnPtr : fn(out x: Foo)->None = Foo.__init__ + + var someFoo : Foo + fnPtr(someFoo) # initializes someFoo. + ``` + + The previous `fn __init__(inout self)` syntax is still supported in this + release of Mojo, but will be removed in the future. Please migrate to the + new syntax. + +- Similarly, the spelling of "named functions results" has switched to use `out` + syntax instead of `-> T as name`. Functions may have at most one named result + or return type specified with the usual `->` syntax. `out` arguments may + occur anywhere in the argument list, but are typically last (except for + `__init__` methods, where they are typically first). + + ```mojo + # This function has type "fn() -> String" + fn example(out result: String): + result = "foo" + ``` + + The parser still accepts the old syntax as a synonym for this, but that will + eventually be deprecated and removed. + + This was [discussed extensively in a public + proposal](https://github.com/modularml/mojo/issues/3623). For more + information, see + [Named results](/nightly/mojo/manual/functions#named-results) in the Mojo + Manual. + +- Single argument constructors now require a `@implicit` decorator to allow + for implicit conversions. Previously you could define an `__init__` that + takes a single argument: + + ```mojo + struct Foo: + var value: Int + + fn __init__(out self, value: Int): + self.value = value + ``` + + And this would allow you to pass an `Int` in the position of a `Foo`: + + ```mojo + fn func(foo: Foo): + print("implicitly converted Int to Foo:", foo.value) + + fn main(): + func(Int(42)) + ``` + + This can result in complicated errors that are difficult to debug. By default + this implicit behavior is now turned off, so you have to explicitly construct + `Foo`: + + ```mojo + fn main(): + func(Foo(42)) + ``` + + You can still opt into implicit conversions by adding the `@implicit` + decorator. For example, to enable implicit conversions from `Int` to `Foo`: + + ```mojo + struct Foo: + var value: Int + + @implicit + fn __init__(out self, value: Int): + self.value = value + ``` + + For more information see + [Constructors and implicit conversion](/mojo/manual/lifecycle/life#constructors-and-implicit-conversion) + in the Mojo Manual. + +- Various improvements to origin handling and syntax have landed, including + support for the ternary operator and allowing multiple arguments in a `ref` + specifier (which are implicitly unions). This enables expression of simple + algorithms cleanly: + + ```mojo + fn my_min[T: Comparable](ref a: T, ref b: T) -> ref [a, b] T: + return a if a < b else b + ``` + + It is also nice that `my_min` automatically and implicitly propagates the + mutability of its arguments, so things like `my_min(str1, str2) += "foo"` is + valid. + +- `Origin` is now a complete wrapper around the MLIR origin type. + + - The `Origin.type` alias has been renamed to `_mlir_origin`. In parameter + lists, you can now write just `Origin[..]`, instead of `Origin[..].type`. + + - `ImmutableOrigin` and `MutableOrigin` are now, respectively, just aliases + for `Origin[False]` and `Origin[True]`. + + - `Origin` struct values are now supported in the brackets of a `ref [..]` + argument. + + - Added `Origin.cast_from` for casting the mutability of an origin value. + +- `ref` argument and result specifiers now allow providing a memory value + directly in the origin specifier, rather than requiring the use of + `__origin_of()`. It is still fine to use `__origin_of()` explicitly though, + and this is required when specifying origins for parameters (e.g. to the + `Pointer` type). For example, this is now valid without `__origin_of()`: + + ```mojo + fn return_ref(a: String) -> ref [a] String: + return a + ``` + +- `ref` function arguments without an origin clause are now treated as + `ref [_]`, which is more syntactically convenient and consistent: + + ```mojo + fn takes_and_return_ref(ref a: String) -> ref [a] String: + return a + ``` + +- The `__type_of(x)` and `__origin_of(x)` operators are much more general now: + they allow arbitrary expressions inside of them, allow referring to dynamic + values in parameter contexts, and even allow referring to raising functions + in non-raising contexts. These operations never evaluate their expression, so + any side effects that occur in the expression are never evaluated at runtime, + eliminating concerns about `__type_of(expensive())` being a problem. + +- The destructor insertion logic in Mojo is now aware that types that take an + `MutableAnyOrigin` or `ImmutableAnyOrigin` as part of their signature could + potentially access any live value that destructor insertion is tracking, + eliminating a significant usability issue with unsafe APIs like + `UnsafePointer`. Consider a typical example working with strings before this + change: + + ```mojo + var str = String(...) + var ptr = str.unsafe_ptr() + some_low_level_api(ptr) + _ = str^ # OLD HACK: Explicitly keep string alive until here! + ``` + + The `_ = str^` pattern was formerly required because the Mojo compiler has no + idea what "ptr" might reference. As a consequence, it had no idea that + `some_low_level_api()` might access `str` and therefore thought it was ok to + destroy the `String` before the call - this is why the explicit lifetime + extension was required. + + Mojo now knows that `UnsafePointer` may access the `MutableAnyOrigin` origin, + and now assumes that any API that uses that origin could use live values. + In this case, it assumes that `some_low_level_api()` might access `str` and + because it might be using it, it cannot destroy `str` until after the call. + The consequence of this is that the old hack is no longer needed for these + cases! + +- Infer-only parameters may now be explicitly bound with keywords, enabling + some important patterns in the standard library: + + ```mojo + struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]: ... + alias ImmStringSlice = StringSlice[is_mutable=False] + # This auto-parameterizes on the origin, but constrains it to being an + # immutable slice instead of a potentially mutable one. + fn take_imm_slice(a: ImmStringSlice): ... + ``` + +- Automatic parameterization of parameters is now supported. Specifying a + parameterized type with unbound parameters causes them to be implicitly added + to the function signature as infer-only parameters. + + ```mojo + fn foo[value: SIMD[DType.int32, _]](): + pass + + # Equivalent to + fn foo[size: Int, //, value: SIMD[DType.int32, size]](): + pass + ``` + +- Function types now accept an origin set parameter. This parameter represents + the origins of values captured by a parameter closure. The compiler + automatically tags parameter closures with the right set of origins. This + enables lifetimes and parameter closures to correctly compose. + + ```mojo + fn call_it[f: fn() capturing [_] -> None](): + f() + + fn test(): + var msg = String("hello world") + + @parameter + fn say_hi(): + print(msg) + + call_it[say_hi]() + # no longer need to write `_ = msg^`!! + ``` + + Note that this only works for higher-order functions which have explicitly + added `[_]` as the capture origins. By default, the compiler still assumes + a `capturing` closure does not reference any origins. This will soon change. + +- Mojo can now interpret simple LLVM intrinsics in parameter expressions, + enabling things like `count_leading_zeros` to work at compile time: + [Issue #933](https://github.com/modularml/mojo/issues/933). + +- Introduced the `@explicit_destroy` annotation, the `__disable_del` keyword, + the `UnknownDestructibility` trait, and the `ImplicitlyDestructible` keyword, + for the experimental explicitly destroyed types feature. + +- Added associated types; we can now have aliases like `alias T: AnyType`, + `alias N: Int`, etc. in a trait, and then specify them in structs that conform + to that trait. For more information, see + [Associated aliases for generics](/mojo/manual/traits#associated-aliases-for-generics). + +### Standard library changes {#24-6-standard-library-changes} + +- Add the `Floatable` and `FloatableRaising` traits to denote types that can + be converted to a `Float64` value using the builtin `float` function. + - Make `SIMD` and `FloatLiteral` conform to the `Floatable` trait. + + ```mojo + fn foo[F: Floatable](v: F): + ... + + var f = float(Int32(45)) + ``` + + ([PR #3163](https://github.com/modularml/mojo/pull/3163)) + +- Add `DLHandle.get_symbol()`, for getting a pointer to a symbol in a dynamic + library. This is more general purpose than the existing methods for getting + function pointers. + +- Introduce `TypedPythonObject` as a light-weight way to annotate `PythonObject` + values with static type information. This design will likely evolve and + change significantly. + + - Added `TypedPythonObject["Tuple].__getitem__` for accessing the elements of + a Python tuple. + +- Added `Python.add_object()`, to add a named `PythonObject` value to a Python + 'module' object instance. + +- Added `Python.unsafe_get_python_exception()`, as an efficient low-level + utility to get the Mojo `Error` equivalent of the current CPython error state. + +- Add `PythonObject.from_borrowed_ptr()`, to simplify the construction of + `PythonObject` values from CPython 'borrowed reference' pointers. + + The existing `PythonObject.__init__(PyObjectPtr)` should continue to be used + for the more common case of constructing a `PythonObject` from a + 'strong reference' pointer. + +- The `rebind` standard library function now works with memory-only types in + addition to `@register_passable("trivial")` ones, without requiring a copy. + +- Introduce `random.shuffle` for `List`. + ([PR #3327](https://github.com/modularml/mojo/pull/3327)) + + Example: + + ```mojo + from random import shuffle + + var l = List[Int](1, 2, 3, 4, 5) + shuffle(l) + ``` + +- The `Dict.__getitem__` method now returns a reference instead of a copy of + the value (or raises). This improves the performance of common code that + uses `Dict` by allowing borrows from the `Dict` elements. + +- `Slice.step` is now an `Optional[Int]`, matching the optionality of + `slice.step` in Python. + ([PR #3160](https://github.com/modularml/mojo/pull/3160)) + +- `StringRef` now implements `split()` which can be used to split a + `StringRef` into a `List[StringRef]` by a delimiter. + ([PR #2705](https://github.com/modularml/mojo/pull/2705)) + +- Support for multi-dimensional indexing for `PythonObject` + ([PR #3583](https://github.com/modularml/mojo/pull/3583)). + +- Support for multi-dimensional indexing and slicing for `PythonObject` + (PR [#3549](https://github.com/modularml/mojo/pull/3549), + PR [#3583](https://github.com/modularml/mojo/pull/3583)). + + ```mojo + var np = Python.import_module("numpy") + var a = np.array(PythonObject([1,2,3,4,5,6])).reshape(2,3) + print((a[0, 1])) # 2 + print((a[1][::-1])) # [6 5 4] + ``` + + Note, that the syntax, `a[1, ::-1]`, is currently not supported. + +- There is now a [`Byte`](/mojo/stdlib/builtin/simd/Byte) alias to better + express intent when working with a pack of bits. + ([PR #3670](https://github.com/modularml/mojo/pull/3670)). + +- Expanded `os.path` with new functions (by [@thatstoasty](https://github.com/thatstoasty)): + - `os.path.expandvars`: Expands environment variables in a path ([PR #3735](https://github.com/modularml/mojo/pull/3735)). + - `os.path.splitroot`: Split a path into drive, root and tail. + ([PR #3780](https://github.com/modularml/mojo/pull/3780)). + +- Added a `reserve` method and new constructor to the `String` struct to + allocate additional capacity. + ([PR #3755](https://github.com/modularml/mojo/pull/3755)). + +- Introduced a new `Deque` (double-ended queue) collection type, based on a + dynamically resizing circular buffer for efficient O(1) additions and removals + at both ends as well as O(1) direct access to all elements. + + The `Deque` supports the full Python `collections.deque` API, ensuring that all + expected deque operations perform as in Python. + + Enhancements to the standard Python API include `peek()` and `peekleft()` + methods for non-destructive access to the last and first elements, and advanced + constructor options (`capacity`, `min_capacity`, and `shrink`) for customizing + memory allocation and performance. These options allow for optimized memory usage + and reduced buffer reallocations, providing flexibility based on application requirements. + +- A new `StringLiteral.get[some_stringable]()` method is available. It + allows forming a runtime-constant StringLiteral from a compile-time-dynamic + `Stringable` value. + +- `Span` now implements `__reversed__`. This means that one can get a + reverse iterator over a `Span` using `reversed(my_span)`. Users should + currently prefer this method over `my_span[::-1]`. + +- `StringSlice` now implements `strip`, `rstrip`, and `lstrip`. + +- `StringRef` is now representable so `repr(StringRef("hello"))` will return + `StringRef('hello')`. + +- The `UnsafePointer` type now has an `origin` parameter that can be used when + the `UnsafePointer` is known to point to a value with a known origin. This + origin is propagated through the `ptr[]` indirection operation. + +- You can now index into `UnsafePointer` using SIMD scalar integral types: + + ```mojo + p = UnsafePointer[Int].alloc(1) + i = UInt8(1) + p[i] = 42 + print(p[i]) + ``` + +- `UnsafePointer` parameters (other than the type) are now keyword-only. + +- Added a new [`OwnedPointer`](/mojo/stdlib/memory/owned_pointer/OwnedPointer) + type as a safe, single-owner, non-nullable smart pointer with similar + semantics to Rust's + [`Box<>`](https://doc.rust-lang.org/std/boxed/struct.Box.html) and C++'s + [`std::unique_ptr`](https://en.cppreference.com/w/cpp/memory/unique_ptr). + ([PR #3524](https://github.com/modularml/mojo/pull/3524)) + +- `Arc` has been renamed to [`ArcPointer`](/mojo/stdlib/memory/arc/ArcPointer), + for consistency with `OwnedPointer`. + +- [`ArcPointer`](/mojo/stdlib/memory/arc/ArcPointer) now implements + [`Identifiable`](/mojo/stdlib/builtin/identifiable/Identifiable), and can be + compared for pointer equivalence using `a is b`. + +- Added `PythonObject.__contains__`. + ([PR #3101](https://github.com/modularml/mojo/pull/3101)) + + Example usage: + + ```mojo + x = PythonObject([1,2,3]) + if 1 in x: + print("1 in x") + +- `Span` has moved from the `utils` module to the `memory` module. + + - More things have been removed from the auto-exported set of entities in the + `prelude` module from the Mojo standard library: + - `UnsafePointer` has been removed. Please explicitly import it via + `from memory import UnsafePointer`. + - `StringRef` has been removed. Please explicitly import it via + `from utils import StringRef`. + +- The `Reference` type has been renamed to `Pointer`: a memory safe complement + to `UnsafePointer`. This change is motivated by the fact that `Pointer` + is assignable and requires an explicit dereference with `ptr[]`. Renaming + to `Pointer` clarifies that "references" means `ref` arguments and results, + and gives us a model that is more similar to what the C++ community would + expect. + +- A new `as_noalias_ptr` method as been added to `UnsafePointer`. This method + specifies to the compiler that the resultant pointer is a distinct + identifiable object that does not alias any other memory in the local scope. + +- The `AnyLifetime` type (useful for declaring origin types as parameters) has + been renamed to `Origin`. + +- Restored implicit copyability of `Tuple` and `ListLiteral`. + +- The aliases for C FFI have been renamed: `C_int` -> `c_int`, `C_long` -> `c_long` + and so on. + +- The `Formatter` struct has changed to a `Writer` trait to enable buffered IO, + increasing print and file writing perf to the same speed as C. It's now more + general purpose and can write any `Span[Byte]`. To align with this the + `Formattable` trait is now named `Writable`, and the `String.format_sequence` + static methods to initialize a new `String` have been renamed to + `String.write`. Here's an example of using all the changes: + + ```mojo + from memory import Span + + @value + struct NewString(Writer, Writable): + var s: String + + # Writer requirement to write a Span of Bytes + fn write_bytes(inout self, bytes: Span[Byte, _]): + self.s._iadd[False](bytes) + + # Writer requirement to take multiple args + fn write[*Ts: Writable](inout self, *args: *Ts): + @parameter + fn write_arg[T: Writable](arg: T): + arg.write_to(self) + + args.each[write_arg]() + + # Also make it Writable to allow `print` to write the inner String + fn write_to[W: Writer](self, inout writer: W): + writer.write(self.s) + + + @value + struct Point(Writable): + var x: Int + var y: Int + + # Pass multiple args to the Writer. The Int and StringLiteral types call + # `writer.write_bytes` in their own `write_to` implementations. + fn write_to[W: Writer](self, inout writer: W): + writer.write("Point(", self.x, ", ", self.y, ")") + + # Enable conversion to a String using `str(point)` + fn __str__(self) -> String: + return String.write(self) + + + fn main(): + var point = Point(1, 2) + var new_string = NewString(str(point)) + new_string.write("\n", Point(3, 4)) + print(new_string) + ``` + + Point(1, 2) + Point(3, 4) + +- You can now use the `+=` and `*` operators on a `StringLiteral` at compile + time using the `alias` keyword: + + ```mojo + alias original = "mojo" + alias concat = original * 3 + assert_equal("mojomojomojo", concat) + ``` + + Or inside a `fn` that is being evaluated at compile time: + + ```mojo + fn add_literal( + owned original: StringLiteral, add: StringLiteral, n: Int + ) -> StringLiteral: + for _ in range(n): + original += add + return original + + + fn main(): + alias original = "mojo" + alias concat = add_literal(original, "!", 4) + assert_equal("mojo!!!!", concat) + ``` + + These operators can't be evaluated at runtime, as a `StringLiteral` must be + written into the binary during compilation. + +- The `StaticIntTuple` data structure in the `utils` package has been renamed to + `IndexList`. The data structure now allows one to specify the index bitwidth + of the elements along with whether the underlying indices are signed or + unsigned. + +- A new `AsBytes` trait has been added to enable taking a `Span[Byte]` of a + type with `s.as_bytes()`. `String.as_bytes` and `String.as_bytes_slice` have + been consolidated under `s.as_bytes` to return a `Span[Byte]`, you can convert + it to a `List` if you require a copy with `List(s.as_bytes())`. + +### Tooling changes + +- The VS Code Mojo Debugger now has a `buildArgs` JSON debug configuration + setting that can be used in conjunction with `mojoFile` to define the build + arguments when compiling the Mojo file. + +- The VS Code extension now supports a `Configure Build and Run Args` command + that helps set the build and run args for actions file `Run Mojo File` and + `Debug Mojo File`. A corresponding button appears in `Run and Debug` selector + in the top right corner of a Mojo File. + +- The VS Code extension now has the `mojo.run.focusOnTerminalAfterLaunch` + setting, which controls whether to focus on the terminal used by the + `Mojo: Run Mojo File` command or on the editor after launch. + [Issue #3532](https://github.com/modularml/mojo/issues/3532). + +- The VS Code extension now has the `mojo.SDK.additionalSDKs` setting, which + allows the user to provide a list of MAX SDKs that the extension can use when + determining a default SDK to use. The user can select the default SDK to use + with the `Mojo: Select the default MAX SDK` command. + +- The VS Code extension now supports setting [data breakpoints](https://code.visualstudio.com/docs/editor/debugging#_data-breakpoints) + as well as [function breakpoints](https://code.visualstudio.com/docs/editor/debugging#_function-breakpoints). + +- The Mojo LLDB debugger now supports symbol breakpoints, e.g. `b main` or + `b my_module::main`. + +- The VS Code extension now allows cancelling the installation of its private + MAX SDK. + +- The VS Code extension now opens the Run and Debug tab automatically whenever + a debug session starts. + +- The `mojo debug --vscode` command now support the `--init-command` and + `--stop-on-entry` flags. Execute `mojo debug --help` for more information. + +- The Mojo LLDB debugger on VS Code now supports inspecting the raw attributes + of variables that are handled as synthetic types, e.g. `List` from Mojo or + `std::vector` from C++. + +- The VS Code extension now allows selecting a default SDK when multiple are + available. + +- The flag for turning on asserts has changed, e.g. to enable all checks: + + ```bash + mojo -D ASSERT=all main.mojo + ``` + + The levels are: + + - `none`: all assertions off + - `warn`: print assertion errors e.g. for multithreaded tests (previously `-D + ASSERT_WARNING`) + - `safe`: the default mode for standard CPU safety assertions + - `all`: turn on all assertions (previously `-D MOJO_ENABLE_ASSERTIONS`) + + You can now also pass `Stringable` args to format a message, which will have + no runtime penalty or IR bloat cost when assertions are off. Previously you + had to: + + ```mojo + x = -1 + debug_assert( + x > 0, String.format_sequence(“expected x to be more than 0 but got: ”, x) + ) + ``` + + Which can't be optimized away by the compiler in release builds, you can now + pass multiple args for a formatted message at no runtime cost: + + ```mojo + debug_assert(x > 0, “expected x to be more than 0 but got: ”, x) + ``` + +- Float32 and Float64 are now printed and converted to strings with roundtrip + guarantee and shortest representation: + + ```plaintext + Value Old New + Float64(0.3) 0.29999999999999999 0.3 + Float32(0.3) 0.30000001192092896 0.3 + Float64(0.0001) 0.0001 0.0001 + Float32(0.0001) 9.9999997473787516e-05 0.0001 + Float64(-0.00001) -1.0000000000000001e-05 -1e-05 + Float32(-0.00001) -9.9999997473787516e-06 -1e-05 + Float32(0.00001234) 1.2339999557298142e-05 1.234e-05 + Float32(-0.00000123456) -1.2345600453045336e-06 -1.23456e-06 + Float64(1.1234567e-320) 1.1235052786429946e-320 1.1235e-320 + Float64(1.234 * 10**16) 12340000000000000.0 1.234e+16 + ``` + +### ❌ Removed + +- The `UnsafePointer.bitcast` overload for `DType` has been removed. Wrap your + `DType` in a `Scalar[my_dtype]` to call the only overload of `bitcast` now. + +### 🛠️ Fixed + +- Lifetime tracking is now fully field sensitive, which makes the uninitialized + variable checker more precise. + +- [Issue #1310](https://github.com/modularml/mojo/issues/1310) - Mojo permits + the use of any constructor for implicit conversions + +- [Issue #1632](https://github.com/modularml/mojo/issues/1632) - Mojo produces + weird error when inout function is used in non mutating function + +- [Issue #3444](https://github.com/modularml/mojo/issues/3444) - Raising init + causing use of uninitialized variable + +- [Issue #3544](https://github.com/modularml/mojo/issues/3544) - Known + mutable `ref` argument are not optimized as `noalias` by LLVM. + +- [Issue #3559](https://github.com/modularml/mojo/issues/3559) - VariadicPack + doesn't extend the lifetimes of the values it references. + +- [Issue #3627](https://github.com/modularml/mojo/issues/3627) - Compiler + overlooked exclusivity violation caused by `ref [MutableAnyOrigin] T` + +- [Issue #3710](https://github.com/modularml/mojo/issues/3710) - Mojo frees + memory while reference to it is still in use. + +- [Issue #3805](https://github.com/modularml/mojo/issues/3805) - Crash When + Initializing !llvm.ptr. + +- [Issue #3816](https://github.com/modularml/mojo/issues/3816) - Ternary + if-operator doesn't propagate origin information. + +- [Issue #3815](https://github.com/modularml/mojo/issues/3815) - + [BUG] Mutability not preserved when taking the union of two origins. + +- [Issue #3829](https://github.com/modularml/mojo/issues/3829) - Poor error + message when invoking a function pointer upon an argument of the wrong origin + +- [Issue #3830](https://github.com/modularml/mojo/issues/3830) - Failures + emitting register RValues to ref arguments. + +- The VS Code extension now auto-updates its private copy of the MAX SDK. + +- The variadic initializer for `SIMD` now works in parameter expressions. + +- The VS Code extension now downloads its private copy of the MAX SDK in a way + that prevents ETXTBSY errors on Linux. + +- The VS Code extension now allows invoking a mojo formatter from SDK + installations that contain white spaces in their path. + +- Error messages that include type names no longer include inferred or defaulted + parameters when they aren't needed. For example, previously Mojo complained + about things like: + + ```plaintext + ... cannot be converted from 'UnsafePointer[UInt, 0, _default_alignment::AnyType](), MutableAnyOrigin]' to 'UnsafePointer[Int, 0, _default_alignment[::AnyType](), MutableAnyOrigin]' + ``` + + it now complains more helpfully that: + + ```plaintext + ... cannot be converted from 'UnsafePointer[UInt]' to 'UnsafePointer[Int]' + ``` + +- Tooling now prints the origins of `ref` arguments and results correctly, and + prints `self` instead of `self: Self` in methods. + +- The LSP and generated documentation now print parametric result types + correctly, e.g. showing `SIMD[type, simd_width]` instead of `SIMD[$0, $1]`. + +### Special thanks + +Special thanks to our community contributors: +[@soraos](https://github.com/soraros), [@jjvraw](https://github.com/jjvraw), +[@bgreni](https://github.com/bgreni), +[@thatstoasty](https://github.com/thatstoasty), +[@szbergeron](https://github.com/szbergeron), +[@rd4com](https://github.com/rd4com), +[@fknfilewalker](https://github.com/fknfilewalker), +[@gabrieldemarmiesse](https://github.com/gabrieldemarmiesse), +[@avitkauskas](https://github.com/avitkauskas) + ## v24.5 (2024-09-13) ### ✨ Highlights diff --git a/docs/changelog.md b/docs/changelog.md index a57e0db1b2..9f6a1c4e3e 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -7,694 +7,23 @@ what we publish. [//]: # Here's the template to use when starting a new batch of notes: [//]: ## UNRELEASED -[//]: ### ⭐️ New -[//]: ### 🦋 Changed +[//]: ### ✨ Highlights +[//]: ### Language changes +[//]: ### Standard library changes +[//]: ### Tooling changes [//]: ### ❌ Removed [//]: ### 🛠️ Fixed ## UNRELEASED -### ⭐️ New +### ✨ Highlights -- `StringRef` is now representable so `repr(StringRef("hello"))` will return - `StringRef('hello')`. +### Language changes -- Mojo can now interpret simple LLVM intrinsics in parameter expressions, - enabling things like `count_leading_zeros` to work at compile time: - [Issue #933](https://github.com/modularml/mojo/issues/933). +### Standard library changes -- The destructor insertion logic in Mojo is now aware that types that take an - `MutableAnyOrigin` or `ImmutableAnyOrigin` as part of their signature could - potentially access any live value that destructor insertion is tracking, - eliminating a significant usability issue with unsafe APIs like - `UnsafePointer`. Consider a typical example working with strings before this - change: - - ```mojo - var str = String(...) - var ptr = str.unsafe_ptr() - some_low_level_api(ptr) - _ = str^ # OLD HACK: Explicitly keep string alive until here! - ``` - - The `_ = str^` pattern was formerly required because the Mojo compiler has no - idea what "ptr" might reference. As a consequence, it had no idea that - `some_low_level_api()` might access `str` and therefore thought it was ok to - destroy the `String` before the call - this is why the explicit lifetime - extension was required. - - Mojo now knows that `UnsafePointer` may access the `MutableAnyOrigin` origin, - and now assumes that any API that uses that origin could use live values. - In this case, it assumes that `some_low_level_api()` might access `str` and - because it might be using it, it cannot destroy `str` until after the call. - The consequence of this is that the old hack is no longer needed for these - cases! - -- Various improvements to origin handling and syntax have landed, including - support for the ternary operator and allowing multiple arguments in a `ref` - specifier (which are implicitly unions). This enables expression of simple - algorithms cleanly: - - ```mojo - fn my_min[T: Comparable](ref a: T, ref b: T) -> ref [a, b] T: - return a if a < b else b - ``` - - It is also nice that `my_min` automatically and implicitly propagates the - mutability of its arguments, so things like `my_min(str1, str2) += "foo"` is - valid. - -- The `UnsafePointer` type now has an `origin` parameter that can be used when - the `UnsafePointer` is known to point to a value with a known origin. This - origin is propagated through the `ptr[]` indirection operation. - -- The VS Code Mojo Debugger now has a `buildArgs` JSON debug configuration - setting that can be used in conjunction with `mojoFile` to define the build - arguments when compiling the Mojo file. - -- The VS Code extension now supports a `Configure Build and Run Args` command - that helps set the build and run args for actions file `Run Mojo File` and - `Debug Mojo File`. A corresponding button appears in `Run and Debug` selector - in the top right corner of a Mojo File. - -- Add the `Floatable` and `FloatableRaising` traits to denote types that can - be converted to a `Float64` value using the builtin `float` function. - - Make `SIMD` and `FloatLiteral` conform to the `Floatable` trait. - - ```mojo - fn foo[F: Floatable](v: F): - ... - - var f = float(Int32(45)) - ``` - - ([PR #3163](https://github.com/modularml/mojo/pull/3163) by [@bgreni](https://github.com/bgreni)) - -- Add `DLHandle.get_symbol()`, for getting a pointer to a symbol in a dynamic - library. This is more general purpose than the existing methods for getting - function pointers. - -- Introduce `TypedPythonObject` as a light-weight way to annotate `PythonObject` - values with static type information. This design will likely evolve and - change significantly. - - - Added `TypedPythonObject["Tuple].__getitem__` for accessing the elements of - a Python tuple. - -- Added `Python.add_object()`, to add a named `PythonObject` value to a Python - 'module' object instance. - -- Added `Python.unsafe_get_python_exception()`, as an efficient low-level - utility to get the Mojo `Error` equivalent of the current CPython error state. - -- The `__type_of(x)` and `__origin_of(x)` operators are much more general now: - they allow arbitrary expressions inside of them, allow referring to dynamic - values in parameter contexts, and even allow referring to raising functions - in non-raising contexts. These operations never evaluate their expression, so - any side effects that occur in the expression are never evaluated at runtime, - eliminating concerns about `__type_of(expensive())` being a problem. - -- Add `PythonObject.from_borrowed_ptr()`, to simplify the construction of - `PythonObject` values from CPython 'borrowed reference' pointers. - - The existing `PythonObject.__init__(PyObjectPtr)` should continue to be used - for the more common case of constructing a `PythonObject` from a - 'strong reference' pointer. - -- The `rebind` standard library function now works with memory-only types in - addition to `@register_passable("trivial")` ones, without requiring a copy. - -- Introduce `random.shuffle` for `List`. - ([PR #3327](https://github.com/modularml/mojo/pull/3327) by [@jjvraw](https://github.com/jjvraw)) - - Example: - - ```mojo - from random import shuffle - - var l = List[Int](1, 2, 3, 4, 5) - shuffle(l) - ``` - -- The `Dict.__getitem__` method now returns a reference instead of a copy of - the value (or raises). This improves the performance of common code that - uses `Dict` by allowing borrows from the `Dict` elements. - -- Autoparameterization of parameters is now supported. Specifying a parameter - type with unbound parameters causes them to be implicitly added to the - function signature as inferred parameters. - - ```mojo - fn foo[value: SIMD[DType.int32, _]](): - pass - - # Equivalent to - fn foo[size: Int, //, value: SIMD[DType.int32, size]](): - pass - ``` - -- Function types now accept an origin set parameter. This parameter represents - the origins of values captured by a parameter closure. The compiler - automatically tags parameter closures with the right set of origins. This - enables lifetimes and parameter closures to correctly compose. - - ```mojo - fn call_it[f: fn() capturing [_] -> None](): - f() - - fn test(): - var msg = String("hello world") - - @parameter - fn say_hi(): - print(msg) - - call_it[say_hi]() - # no longer need to write `_ = msg^`!! - ``` - - Note that this only works for higher-order functions which have explicitly - added `[_]` as the capture origins. By default, the compiler still assumes - a `capturing` closure does not reference any origins. This will soon change. - -- The VS Code extension now has the `mojo.run.focusOnTerminalAfterLaunch` - setting, which controls whether to focus on the terminal used by the - `Mojo: Run Mojo File` command or on the editor after launch. - [Issue #3532](https://github.com/modularml/mojo/issues/3532). - -- The VS Code extension now has the `mojo.SDK.additionalSDKs` setting, which - allows the user to provide a list of MAX SDKs that the extension can use when - determining a default SDK to use. The user can select the default SDK to use - with the `Mojo: Select the default MAX SDK` command. - -- Added a new [`OwnedPointer`](/mojo/stdlib/memory/owned_pointer/OwnedPointer) - type as a safe, single-owner, non-nullable smart pointer with similar - semantics to Rust's - [`Box<>`](https://doc.rust-lang.org/std/boxed/struct.Box.html) and C++'s - [`std::unique_ptr`](https://en.cppreference.com/w/cpp/memory/unique_ptr). - - ([PR #3524](https://github.com/modularml/mojo/pull/3524) by [@szbergeron](https://github.com/szbergeron)) - -- `ref` argument and result specifiers now allow providing a memory value - directly in the origin specifier, rather than requiring the use of - `__origin_of()`. It is still fine to use `__origin_of()` explicitly though, - and this is required when specifying origins for parameters (e.g. to the - `Pointer` type). For example, this is now valid without `__origin_of()`: - - ```mojo - fn return_ref(a: String) -> ref [a] String: - return a - ``` - -- `ref` function arguments without an origin clause are now treated as - `ref [_]`, which is more syntactically convenient and consistent: - - ```mojo - fn takes_and_return_ref(ref a: String) -> ref [a] String: - return a - ``` - -- `Slice.step` is now an `Optional[Int]`, matching the optionality of - `slice.step` in Python. - ([PR #3160](https://github.com/modularml/mojo/pull/3160) by - [@bgreni](https://github.com/bgreni)) - -- `StringRef` now implements `split()` which can be used to split a - `StringRef` into a `List[StringRef]` by a delimiter. - ([PR #2705](https://github.com/modularml/mojo/pull/2705) by [@fknfilewalker](https://github.com/fknfilewalker)) - -- Support for multi-dimensional indexing for `PythonObject` - ([PR #3583](https://github.com/modularml/mojo/pull/3583) by [@jjvraw](https://github.com/jjvraw)). - -- Support for multi-dimensional indexing and slicing for `PythonObject` - (PRs [#3549](https://github.com/modularml/mojo/pull/3549), - [#3583](https://github.com/modularml/mojo/pull/3583) by [@jjvraw](https://github.com/jjvraw)). - - ```mojo - var np = Python.import_module("numpy") - var a = np.array(PythonObject([1,2,3,4,5,6])).reshape(2,3) - print((a[0, 1])) # 2 - print((a[1][::-1])) # [6 5 4] - ``` - - Note, that the syntax, `a[1, ::-1]`, is currently not supported. - -- [`Arc`](/mojo/stdlib/memory/arc/Arc) now implements - [`Identifiable`](/mojo/stdlib/builtin/identifiable/Identifiable), and can be - compared for pointer equivalence using `a is b`. - -- There is now a [`Byte`](/mojo/stdlib/builtin/simd/Byte) alias to better - express intent when working with a pack of bits. - ([PR #3670](https://github.com/modularml/mojo/pull/3670) by [@soraos](https://github.com/soraros)). - -- The VS Code extension now supports setting [data breakpoints](https://code.visualstudio.com/docs/editor/debugging#_data-breakpoints) - as well as [function breakpoints](https://code.visualstudio.com/docs/editor/debugging#_function-breakpoints). - -- The Mojo LLDB debugger now supports symbol breakpoints, e.g. `b main` or - `b my_module::main`. - -- The VS Code extension now allows cancelling the installation of its private - MAX SDK. - -- The VS Code extension now opens the Run and Debug tab automatically whenever - a debug session starts. - -- The `mojo debug --vscode` command now support the `--init-command` and - `--stop-on-entry` flags. Execute `mojo debug --help` for more information. - -- The Mojo LLDB debugger on VS Code now supports inspecting the raw attributes - of variables that are handled as synthetic types, e.g. `List` from Mojo or - `std::vector` from C++. - -- Expanded `os.path` with new functions (by [@thatstoasty](https://github.com/thatstoasty)): - - `os.path.expandvars`: Expands environment variables in a path ([PR #3735](https://github.com/modularml/mojo/pull/3735)). - - `os.path.splitroot`: Split a path into drive, root and tail. - ([PR #3780](https://github.com/modularml/mojo/pull/3780)). - -- Added a `reserve` method and new constructor to the `String` struct to - allocate additional capacity. - ([PR #3755](https://github.com/modularml/mojo/pull/3755) by [@thatstoasty](https://github.com/thatstoasty)). - -- Introduced a new `Deque` (double-ended queue) collection type, based on a - dynamically resizing circular buffer for efficient O(1) additions and removals - at both ends as well as O(1) direct access to all elements. - - The `Deque` supports the full Python `collections.deque` API, ensuring that all - expected deque operations perform as in Python. - - Enhancements to the standard Python API include `peek()` and `peekleft()` - methods for non-destructive access to the last and first elements, and advanced - constructor options (`capacity`, `min_capacity`, and `shrink`) for customizing - memory allocation and performance. These options allow for optimized memory usage - and reduced buffer reallocations, providing flexibility based on application requirements. - -- A new `StringLiteral.get[some_stringable]()` method is available. It - allows forming a runtime-constant StringLiteral from a compile-time-dynamic - `Stringable` value. - -- `Span` now implements `__reversed__`. This means that one can get a - reverse iterator over a `Span` using `reversed(my_span)`. Users should - currently prefer this method over `my_span[::-1]`. - -- `StringSlice` now implements `strip`, `rstrip`, and `lstrip`. - -- Introduced the `@explicit_destroy` annotation, the `__disable_del` keyword, - the `UnknownDestructibility` trait, and the `ImplicitlyDestructible` keyword, - for the experimental explicitly destroyed types feature. - -- Added associated types; we can now have aliases like `alias T: AnyType`, - `alias N: Int`, etc. in a trait, and then specify them in structs that conform - to that trait. - -### 🦋 Changed - -- The `inout` and `borrowed` argument conventions have been renamed to the `mut` - and `read` argument conventions (respectively). These verbs reflect - declaratively what the callee can do to the argument value passed into the - caller, without tying in the requirement for the programmer to know about - advanced features like references. - -- The argument convention for `__init__` methods has been changed from `inout` - to `out`, reflecting that an `__init__` method initializes its `self` without - reading from it. This also enables spelling the type of an initializer - correctly, which was not supported before: - - ```mojo - struct Foo: - fn __init__(out self): pass - - fn test(): - # This works now - var fnPtr : fn(out x: Foo)->None = Foo.__init__ - - var someFoo : Foo - fnPtr(someFoo) # initializes someFoo. - ``` - - The previous `fn __init__(inout self)` syntax is still supported in this - release of Mojo, but will be removed in the future. Please migrate to the - new syntax. - -- Similarly, the spelling of "named functions results" has switched to use `out` - syntax instead of `-> T as name`. Functions may have at most one named result - or return type specified with the usual `->` syntax. `out` arguments may - occur anywhere in the argument list, but are typically last (except for - `__init__` methods, where they are typically first). - - ```mojo - # This function has type "fn() -> String" - fn example(out result: String): - result = "foo" - ``` - - The parser still accepts the old syntax as a synonym for this, but that will - eventually be deprecated and removed. - - This was [discussed extensively in a public - proposal](https://github.com/modularml/mojo/issues/3623). - -- More things have been removed from the auto-exported set of entities in the `prelude` - module from the Mojo standard library. - - `UnsafePointer` has been removed. Please explicitly import it via - `from memory import UnsafePointer`. - - `StringRef` has been removed. Please explicitly import it via - `from utils import StringRef`. - -- The `Reference` type has been renamed to `Pointer`: a memory safe complement - to `UnsafePointer`. This change is motivated by the fact that `Pointer` - is assignable and requires an explicit dereference with `ptr[]`. Renaming - to `Pointer` clarifies that "references" means `ref` arguments and results, - and gives us a model that is more similar to what the C++ community would - expect. - -- A new `as_noalias_ptr` method as been added to `UnsafePointer`. This method - specifies to the compiler that the resultant pointer is a distinct - identifiable object that does not alias any other memory in the local scope. - -- The `AnyLifetime` type (useful for declaring origin types as parameters) has - been renamed to `Origin`. - -- Restore implicit copyability of `Tuple` and `ListLiteral`. - -- The aliases for C FFI have been renamed: `C_int` -> `c_int`, `C_long` -> `c_long` - and so on. - -- The VS Code extension now allows selecting a default SDK when multiple are available. - -- The `Formatter` struct has changed to a `Writer` trait to enable buffered IO, - increasing print and file writing perf to the same speed as C. It's now more - general purpose and can write any `Span[Byte]`. To align with this the - `Formattable` trait is now named `Writable`, and the `String.format_sequence` - static methods to initialize a new `String` have been renamed to - `String.write`. Here's an example of using all the changes: - - ```mojo - from memory import Span - - @value - struct NewString(Writer, Writable): - var s: String - - # Writer requirement to write a Span of Bytes - fn write_bytes(inout self, bytes: Span[Byte, _]): - self.s._iadd[False](bytes) - - # Writer requirement to take multiple args - fn write[*Ts: Writable](inout self, *args: *Ts): - @parameter - fn write_arg[T: Writable](arg: T): - arg.write_to(self) - - args.each[write_arg]() - - # Also make it Writable to allow `print` to write the inner String - fn write_to[W: Writer](self, inout writer: W): - writer.write(self.s) - - - @value - struct Point(Writable): - var x: Int - var y: Int - - # Pass multiple args to the Writer. The Int and StringLiteral types call - # `writer.write_bytes` in their own `write_to` implementations. - fn write_to[W: Writer](self, inout writer: W): - writer.write("Point(", self.x, ", ", self.y, ")") - - # Enable conversion to a String using `str(point)` - fn __str__(self) -> String: - return String.write(self) - - - fn main(): - var point = Point(1, 2) - var new_string = NewString(str(point)) - new_string.write("\n", Point(3, 4)) - print(new_string) - ``` - - Point(1, 2) - Point(3, 4) - -- The flag for turning on asserts has changed, e.g. to enable all checks: - - ```bash - mojo -D ASSERT=all main.mojo - ``` - - The levels are: - - - none: all assertions off - - warn: print assertion errors e.g. for multithreaded tests (previously -D - ASSERT_WARNING) - - safe: the default mode for standard CPU safety assertions - - all: turn on all assertions (previously -D MOJO_ENABLE_ASSERTIONS) - - You can now also pass `Stringable` args to format a message, which will have - no runtime penalty or IR bloat cost when assertions are off. Previously you - had to: - - ```mojo - x = -1 - debug_assert( - x > 0, String.format_sequence(“expected x to be more than 0 but got: ”, x) - ) - ``` - - Which can't be optimized away by the compiler in release builds, you can now - pass multiple args for a formatted message at no runtime cost: - - ```mojo - debug_assert(x > 0, “expected x to be more than 0 but got: ”, x) - ``` - -- The `StaticIntTuple` datastructure in the `utils` package has been renamed to - `IndexList`. The datastructure now allows one to specify the index bitwidth of - the elements along with whether the underlying indices are signed or unsigned. - -- A new trait has been added `AsBytes` to enable taking a `Span[Byte]` of a - type with `s.as_bytes()`. `String.as_bytes` and `String.as_bytes_slice` have - been consolidated under `s.as_bytes` to return a `Span[Byte]`, you can convert - it to a `List` if you require a copy with `List(s.as_bytes())`. - -- `Lifetime` and related types have been renamed to `Origin` in the standard - library to better clarify that parameters of this type indicate where a - reference is derived from, not the more complicated notion of where a variable - is initialized and destroyed. Please see [the proposal](https://github.com/modularml/mojo/blob/main/proposals/lifetimes-keyword-renaming.md) - for more information and rationale. As a consequence the `__lifetime_of()` - operator is now named `__origin_of()`. - -- `Origin` is now a complete wrapper around the MLIR origin type. - - - The `Origin.type` alias has been renamed to `_mlir_origin`. In parameter - lists, you can now write just `Origin[..]`, instead of `Origin[..].type`. - - - `ImmutableOrigin` and `MutableOrigin` are now, respectively, just aliases - for `Origin[False]` and `Origin[True]`. - - - `Origin` struct values are now supported in the brackets of a `ref [..]` - argument. - - - Added `Origin.cast_from` for casting the mutability of an origin value. - -- You can now use the `+=` and `*` operators on a `StringLiteral` at compile - time using the `alias` keyword: - - ```mojo - alias original = "mojo" - alias concat = original * 3 - assert_equal("mojomojomojo", concat) - ``` - - Or inside a `fn` that is being evaluated at compile time: - - ```mojo - fn add_literal( - owned original: StringLiteral, add: StringLiteral, n: Int - ) -> StringLiteral: - for _ in range(n): - original += add - return original - - - fn main(): - alias original = "mojo" - alias concat = add_literal(original, "!", 4) - assert_equal("mojo!!!!", concat) - ``` - - These operators can't be evaluated at runtime, as a `StringLiteral` must be - written into the binary during compilation. - -- You can now index into `UnsafePointer` using SIMD scalar integral types: - - ```mojo - p = UnsafePointer[Int].alloc(1) - i = UInt8(1) - p[i] = 42 - print(p[i]) - ``` - -- Float32 and Float64 are now printed and converted to strings with roundtrip - guarantee and shortest representation: - - ```plaintext - Value Old New - Float64(0.3) 0.29999999999999999 0.3 - Float32(0.3) 0.30000001192092896 0.3 - Float64(0.0001) 0.0001 0.0001 - Float32(0.0001) 9.9999997473787516e-05 0.0001 - Float64(-0.00001) -1.0000000000000001e-05 -1e-05 - Float32(-0.00001) -9.9999997473787516e-06 -1e-05 - Float32(0.00001234) 1.2339999557298142e-05 1.234e-05 - Float32(-0.00000123456) -1.2345600453045336e-06 -1.23456e-06 - Float64(1.1234567e-320) 1.1235052786429946e-320 1.1235e-320 - Float64(1.234 * 10**16) 12340000000000000.0 1.234e+16 - ``` - -- Single argument constructors now require a `@implicit` decorator to allow - for implicit conversions. Previously you could define an `__init__` that - takes a single argument: - - ```mojo - struct Foo: - var value: Int - - fn __init__(out self, value: Int): - self.value = value - ``` - - And this would allow you to pass an `Int` in the position of a `Foo`: - - ```mojo - fn func(foo: Foo): - print("implicitly converted Int to Foo:", foo.value) - - fn main(): - func(Int(42)) - ``` - - This can result in complicated errors that are difficult to debug. By default - this implicit behavior is now turned off, so you have to explicitly construct - `Foo`: - - ```mojo - fn main(): - func(Foo(42)) - ``` - - You can still opt into implicit conversions by adding the `@implicit` - decorator. For example, to enable implicit conversions from `Int` to `Foo`: - - ```mojo - struct Foo: - var value: Int - - @implicit - fn __init__(out self, value: Int): - self.value = value - ``` - -- `Arc` has been renamed to `ArcPointer`, for consistency with `OwnedPointer`. - -- `UnsafePointer` parameters (other than the type) are now keyword-only. - -- Inferred-only parameters may now be explicitly bound with keywords, enabling - some important patterns in the standard library: - - ```mojo - struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]: ... - alias ImmStringSlice = StringSlice[is_mutable=False] - # This auto-parameterizes on the origin, but constrains it to being an - # immutable slice instead of a potentially mutable one. - fn take_imm_slice(a: ImmStringSlice): ... - ``` - -- Added `PythonObject.__contains__`. - ([PR #3101](https://github.com/modularml/mojo/pull/3101) by [@rd4com](https://github.com/rd4com)) - - Example usage: - - ```mojo - x = PythonObject([1,2,3]) - if 1 in x: - print("1 in x") - -- `Span` has moved from the `utils` module to the `memory` module. +### Tooling changes ### ❌ Removed -- The `UnsafePointer.bitcast` overload for `DType` has been removed. Wrap your - `DType` in a `Scalar[my_dtype]` to call the only overload of `bitcast` now. - ### 🛠️ Fixed - -- Lifetime tracking is now fully field sensitive, which makes the uninitialized - variable checker more precise. - -- [Issue #1310](https://github.com/modularml/mojo/issues/1310) - Mojo permits - the use of any constructor for implicit conversions - -- [Issue #1632](https://github.com/modularml/mojo/issues/1632) - Mojo produces - weird error when inout function is used in non mutating function - -- [Issue #3444](https://github.com/modularml/mojo/issues/3444) - Raising init - causing use of uninitialized variable - -- [Issue #3544](https://github.com/modularml/mojo/issues/3544) - Known - mutable `ref` argument are not optimized as `noalias` by LLVM. - -- [Issue #3559](https://github.com/modularml/mojo/issues/3559) - VariadicPack - doesn't extend the lifetimes of the values it references. - -- [Issue #3627](https://github.com/modularml/mojo/issues/3627) - Compiler - overlooked exclusivity violation caused by `ref [MutableAnyOrigin] T` - -- [Issue #3710](https://github.com/modularml/mojo/issues/3710) - Mojo frees - memory while reference to it is still in use. - -- [Issue #3805](https://github.com/modularml/mojo/issues/3805) - Crash When - Initializing !llvm.ptr. - -- [Issue #3816](https://github.com/modularml/mojo/issues/3816) - Ternary - if-operator doesn't propagate origin information. - -- [Issue #3815](https://github.com/modularml/mojo/issues/3815) - - [BUG] Mutability not preserved when taking the union of two origins. - -- [Issue #3829](https://github.com/modularml/mojo/issues/3829) - Poor error - message when invoking a function pointer upon an argument of the wrong origin - -- [Issue #3830](https://github.com/modularml/mojo/issues/3830) - Failures - emitting register RValues to ref arguments. - -- The VS Code extension now auto-updates its private copy of the MAX SDK. - -- The variadic initializer for `SIMD` now works in parameter expressions. - -- The VS Code extension now downloads its private copy of the MAX SDK in a way - that prevents ETXTBSY errors on Linux. - -- The VS Code extension now allows invoking a mojo formatter from SDK - installations that contain white spaces in their path. - -- Error messages that include type names no longer include inferred or defaulted - parameters when they aren't needed. For example, previously Mojo complained - about things like: - - ```plaintext - ... cannot be converted from 'UnsafePointer[UInt, 0, _default_alignment::AnyType](), MutableAnyOrigin]' to 'UnsafePointer[Int, 0, _default_alignment[::AnyType](), MutableAnyOrigin]' - ``` - - it now complains more helpfully that: - - ```plaintext - ... cannot be converted from 'UnsafePointer[UInt]' to 'UnsafePointer[Int]' - ``` - -- Tooling now prints the origins of `ref` arguments and results correctly, and - prints `self` instead of `self: Self` in methods. - -- The LSP and generated documentation now print parametric result types - correctly, e.g. showing `SIMD[type, simd_width]` instead of `SIMD[$0, $1]`. From eabc67cc865ac692ff140e42ba5d68cda82f4a65 Mon Sep 17 00:00:00 2001 From: Christian Hernandez <95982760+cnhz95@users.noreply.github.com> Date: Tue, 10 Dec 2024 14:13:55 -0600 Subject: [PATCH 04/10] [External] [docs] Typo fix (#52539) [External] [docs] Typo fix Co-authored-by: Christian Hernandez <95982760+cnhz95@users.noreply.github.com> Closes modularml/mojo#3853 MODULAR_ORIG_COMMIT_REV_ID: cb525f70b5a3dfa9afd457080a4fb62d3615c429 --- docs/manual/decorators/parameter.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/manual/decorators/parameter.md b/docs/manual/decorators/parameter.md index c82d9c6783..2b9f27e9e0 100644 --- a/docs/manual/decorators/parameter.md +++ b/docs/manual/decorators/parameter.md @@ -29,9 +29,9 @@ this will be included in the binary ## Parametric for statement -You can add the `@parameter` decorator to an `for` loop to create a loop that's +You can add the `@parameter` decorator to a `for` loop to create a loop that's evaluated at compile time. The loop sequence and induction values must be -a valid parameter expressions (that is, an expressions that evaluate at compile +valid parameter expressions (that is, expressions that evaluate at compile time). This has the effect of "unrolling" the loop. From 9930b676cee4455242e8f0eec38609a5a002e2fc Mon Sep 17 00:00:00 2001 From: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Date: Tue, 10 Dec 2024 14:20:18 -0600 Subject: [PATCH 05/10] [External] [stdlib] [NFC] Fix docstrings for `string.strip()` function family (#52540) [External] [stdlib] [NFC] Fix docstrings for `string.strip()` function family Fix docstrings for `string.strip()` function family. Was deleted in b0094d3d9dfc6e38154393862098c22a0c1dec89. @lsh I really don't want that documentation deleted, this is very often not included and caused me quite a couple of headaches in finding the correct information and backward compatibility reasons for using those characters. And we should be explicit that this method does not yet support full Python spaces until we can run the methods with `.isspace()` at compile time. Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Closes modularml/mojo#3843 MODULAR_ORIG_COMMIT_REV_ID: 95456c663bc28381d8c9fc1dd98c4d03d38d0ca4 --- stdlib/src/builtin/string_literal.mojo | 13 +++++++++---- stdlib/src/collections/string.mojo | 11 ++++++++--- stdlib/src/utils/string_slice.mojo | 11 ++++++++--- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index fc3ce8e14a..727ac65555 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -893,8 +893,9 @@ struct StringLiteral( return str(self).islower() fn strip(self) -> String: - """Return a copy of the string literal with leading and trailing whitespaces - removed. + """Return a copy of the string literal with leading and trailing + whitespaces removed. This only takes ASCII whitespace into account: + `" \\t\\n\\v\\f\\r\\x1c\\x1d\\x1e"`. Returns: A string with no leading or trailing whitespaces. @@ -926,7 +927,9 @@ struct StringLiteral( return str(self).rstrip(chars) fn rstrip(self) -> String: - """Return a copy of the string with trailing whitespaces removed. + """Return a copy of the string with trailing whitespaces removed. This + only takes ASCII whitespace into account: + `" \\t\\n\\v\\f\\r\\x1c\\x1d\\x1e"`. Returns: A copy of the string with no trailing whitespaces. @@ -945,7 +948,9 @@ struct StringLiteral( return str(self).lstrip(chars) fn lstrip(self) -> String: - """Return a copy of the string with leading whitespaces removed. + """Return a copy of the string with leading whitespaces removed. This + only takes ASCII whitespace into account: + `" \\t\\n\\v\\f\\r\\x1c\\x1d\\x1e"`. Returns: A copy of the string with no leading whitespaces. diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index cef5b9a42c..7e09a482ff 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -1968,7 +1968,8 @@ struct String( fn strip(self) -> StringSlice[__origin_of(self)]: """Return a copy of the string with leading and trailing whitespaces - removed. + removed. This only takes ASCII whitespace into account: + `" \\t\\n\\v\\f\\r\\x1c\\x1d\\x1e"`. Returns: A copy of the string with no leading or trailing whitespaces. @@ -1988,7 +1989,9 @@ struct String( return self.as_string_slice().rstrip(chars) fn rstrip(self) -> StringSlice[__origin_of(self)]: - """Return a copy of the string with trailing whitespaces removed. + """Return a copy of the string with trailing whitespaces removed. This + only takes ASCII whitespace into account: + `" \\t\\n\\v\\f\\r\\x1c\\x1d\\x1e"`. Returns: A copy of the string with no trailing whitespaces. @@ -2008,7 +2011,9 @@ struct String( return self.as_string_slice().lstrip(chars) fn lstrip(self) -> StringSlice[__origin_of(self)]: - """Return a copy of the string with leading whitespaces removed. + """Return a copy of the string with leading whitespaces removed. This + only takes ASCII whitespace into account: + `" \\t\\n\\v\\f\\r\\x1c\\x1d\\x1e"`. Returns: A copy of the string with no leading whitespaces. diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 454f7968d9..09372e41e1 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -638,7 +638,8 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( @always_inline fn strip(self) -> Self: """Return a copy of the string with leading and trailing whitespaces - removed. + removed. This only takes ASCII whitespace into account: + `" \\t\\n\\v\\f\\r\\x1c\\x1d\\x1e"`. Returns: A copy of the string with no leading or trailing whitespaces. @@ -678,7 +679,9 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( @always_inline fn rstrip(self) -> Self: - """Return a copy of the string with trailing whitespaces removed. + """Return a copy of the string with trailing whitespaces removed. This + only takes ASCII whitespace into account: + `" \\t\\n\\v\\f\\r\\x1c\\x1d\\x1e"`. Returns: A copy of the string with no trailing whitespaces. @@ -726,7 +729,9 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( @always_inline fn lstrip(self) -> Self: - """Return a copy of the string with leading whitespaces removed. + """Return a copy of the string with leading whitespaces removed. This + only takes ASCII whitespace into account: + `" \\t\\n\\v\\f\\r\\x1c\\x1d\\x1e"`. Returns: A copy of the string with no leading whitespaces. From 8123754e2dc08b0fe78506291c756bf053b18ab7 Mon Sep 17 00:00:00 2001 From: Alvydas Vitkauskas Date: Tue, 10 Dec 2024 15:56:30 -0600 Subject: [PATCH 06/10] [External] [stdlib] Deque - don't use non-self out args (#52550) [External] [stdlib] Deque - don't use non-self out args As the original author of the Deque, I would like to propose to not use the `out` args instead of `-> ElementType as element` in `pop()` and `popleft()` methods. The named return variable was just a simple convenience in these functions and not needed at all. In general, having something in the args list of the function that you do not pass to the function at the call site looks weird (except for constructors). In my opinion, it makes the function signature just less clear to read and the return type of the function unnecessarily hidden inside the args list. So, let's just use normal return statements here and have a clear function signatures. Co-authored-by: Alvydas Vitkauskas Closes modularml/mojo#3851 MODULAR_ORIG_COMMIT_REV_ID: acae8a18cea7f91639d059e03dff88e3e3d1f5a5 --- stdlib/src/collections/deque.mojo | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index 6415979277..e8c1138071 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -794,7 +794,7 @@ struct Deque[ElementType: CollectionElement]( return (self._data + self._head)[] - fn pop(mut self, out element: ElementType) raises: + fn pop(mut self) raises -> ElementType: """Removes and returns the element from the right side of the deque. Returns: @@ -816,9 +816,9 @@ struct Deque[ElementType: CollectionElement]( ): self._realloc(self._capacity >> 1) - return + return element - fn popleft(mut self, out element: ElementType) raises: + fn popleft(mut self) raises -> ElementType: """Removes and returns the element from the left side of the deque. Returns: @@ -840,7 +840,7 @@ struct Deque[ElementType: CollectionElement]( ): self._realloc(self._capacity >> 1) - return + return element fn reverse(mut self): """Reverses the elements of the deque in-place.""" From ef4e86f7ab05a628e80c4a7b5da29e75db4f3b7d Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Tue, 10 Dec 2024 16:39:19 -0700 Subject: [PATCH 07/10] [stdlib] [GPU] Fix address spaces for AMD The address space values for AMD are incorrect, so adjust the definitions to be correct for both Nvidia and AMD. Note that there are some other oddities with address spaces we'll deal with in a follow-up. MODULAR_ORIG_COMMIT_REV_ID: a9feb989eba84e8cd69242dcd82e6188bb0c8437 --- stdlib/src/memory/pointer.mojo | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index 16a4eadd29..007343d63f 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -19,6 +19,8 @@ from memory import Pointer ``` """ +from sys import is_nvidia_gpu + # ===-----------------------------------------------------------------------===# # AddressSpace @@ -36,13 +38,13 @@ struct _GPUAddressSpace(EqualityComparable): """Generic address space.""" alias GLOBAL = AddressSpace(1) """Global address space.""" - alias CONSTANT = AddressSpace(2) + alias CONSTANT = AddressSpace(2) if is_nvidia_gpu() else AddressSpace(4) """Constant address space.""" alias SHARED = AddressSpace(3) """Shared address space.""" alias PARAM = AddressSpace(4) """Param address space.""" - alias LOCAL = AddressSpace(5) + alias LOCAL = AddressSpace(5) if is_nvidia_gpu() else AddressSpace(3) """Local address space.""" @always_inline("nodebug") From 3efbf0908e84feff332bed7003cebc7c9983e960 Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Tue, 10 Dec 2024 17:41:12 -0700 Subject: [PATCH 08/10] [stdlib][GPU] Fix invalid constant addr space On Nvidia, address space value of 2 in the IR is reserved. So, it's invalid for us to represent the constant address space with the value of `2`. Good news: nobody is setting this value currently. So, just remove it. While here, rename the existing `PARAM` address space name to be called "CONSTANT" instead, which is more consistent with the [docs](https://docs.nvidia.com/cuda/nvvm-ir-spec/#address-space). Note that AMD calls address space 4 "constant" as well. MODULAR_ORIG_COMMIT_REV_ID: 35bbc8ad2b82efdddf6fa4cf537132af2ca2d3af --- stdlib/src/memory/memory.mojo | 7 +++++-- stdlib/src/memory/pointer.mojo | 6 ++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/stdlib/src/memory/memory.mojo b/stdlib/src/memory/memory.mojo index 0a23477416..ed72524482 100644 --- a/stdlib/src/memory/memory.mojo +++ b/stdlib/src/memory/memory.mojo @@ -414,9 +414,12 @@ fn stack_allocation[ @parameter if is_gpu(): - # On NVGPU, SHARED and PARAM address spaces lower to global memory. + # On NVGPU, SHARED and CONSTANT address spaces lower to global memory. @parameter - if address_space in (_GPUAddressSpace.SHARED, _GPUAddressSpace.PARAM): + if address_space in ( + _GPUAddressSpace.SHARED, + _GPUAddressSpace.CONSTANT, + ): alias global_name = name.value() if name else "_global_alloc" return __mlir_op.`pop.global_alloc`[ name = global_name.value, diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index 007343d63f..f3833563f3 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -38,12 +38,10 @@ struct _GPUAddressSpace(EqualityComparable): """Generic address space.""" alias GLOBAL = AddressSpace(1) """Global address space.""" - alias CONSTANT = AddressSpace(2) if is_nvidia_gpu() else AddressSpace(4) - """Constant address space.""" alias SHARED = AddressSpace(3) """Shared address space.""" - alias PARAM = AddressSpace(4) - """Param address space.""" + alias CONSTANT = AddressSpace(4) + """Constant address space.""" alias LOCAL = AddressSpace(5) if is_nvidia_gpu() else AddressSpace(3) """Local address space.""" From ddf1aca9fb21f78cc9c308ca4cf479abf1863f3f Mon Sep 17 00:00:00 2001 From: Walter Erquinigo Date: Tue, 10 Dec 2024 23:24:23 -0500 Subject: [PATCH 09/10] [mblack] Ignore non mojo files For context, in https://github.com/modularml/mojo/pull/3832 we decided that mblack (aka mojo format) will no longer format non mojo files. The change is trivial fortunately. However, this doesn't solve the problem if formatting mojo cells in notebooks, but that's a problem for the future. MODULAR_ORIG_COMMIT_REV_ID: a28bc715affc0d83bff92b72c7eb313e1f80db96 --- docs/changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 9f6a1c4e3e..cbae1be090 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -24,6 +24,9 @@ what we publish. ### Tooling changes +- mblack (aka `mojo format`) no longer formats non-mojo files. This prevents + unexpected formatting of python files. + ### ❌ Removed ### 🛠️ Fixed From 7ea103c905765610c9ff88b60bddb4eacc07d1aa Mon Sep 17 00:00:00 2001 From: modularbot Date: Wed, 11 Dec 2024 17:11:19 +0000 Subject: [PATCH 10/10] Update lockfiles to point to latest nightly version: 25.1.0.dev2024121105 --- examples/life/magic.lock | 260 ++++++++++++++++++++-------------- examples/magic.lock | 260 ++++++++++++++++++++-------------- examples/notebooks/magic.lock | 258 +++++++++++++++++++-------------- examples/operators/magic.lock | 260 ++++++++++++++++++++-------------- magic.lock | 260 ++++++++++++++++++++-------------- 5 files changed, 754 insertions(+), 544 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index e9b082c770..9fa015dd3f 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -57,7 +57,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 @@ -170,14 +170,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024121016-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda @@ -234,6 +234,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda @@ -333,7 +334,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fluidsynth-2.3.7-h4f58cef_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 @@ -446,14 +447,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024121016-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda @@ -510,6 +511,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda @@ -604,7 +606,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fluidsynth-2.3.7-h80fea77_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 @@ -705,12 +707,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024121016-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda @@ -768,6 +770,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.10-h994913f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda @@ -2808,22 +2811,22 @@ packages: timestamp: 1733362427885 - kind: conda name: fastapi-cli - version: 0.0.5 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.0.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - sha256: 2294f02beff318614a737454f1a432a6f4ae22216a85b296b7041fedab293516 - md5: d141225aba450ec07c771c73ac57bb43 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda + sha256: f0a900e1d8158915c71d9064699d97fc137058f71f5cdd257d79dbac07a41b63 + md5: 3256783cc0dd4cf3ff17198ce3b1782e depends: - - python >=3.8 + - python >=3.9 + - rich-toolkit >=0.11.1 - typer >=0.12.3 - uvicorn-standard >=0.15.0 license: MIT license_family: MIT - size: 14441 - timestamp: 1728947860847 + size: 15512 + timestamp: 1733881782160 - kind: conda name: filelock version: 3.16.1 @@ -3662,6 +3665,7 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 + license_family: APACHE size: 275466 timestamp: 1733852454004 - kind: conda @@ -4199,6 +4203,7 @@ packages: - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 8040629 timestamp: 1733810319239 - kind: conda @@ -4242,6 +4247,7 @@ packages: - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 8786061 timestamp: 1733810643966 - kind: conda @@ -4283,6 +4289,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 5494797 timestamp: 1733808145854 - kind: conda @@ -4299,6 +4306,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 578091 timestamp: 1733810378092 - kind: conda @@ -4316,6 +4324,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 611745 timestamp: 1733810698469 - kind: conda @@ -4332,6 +4341,7 @@ packages: - libarrow 18.1.0 h4a2f8bd_6_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 483713 timestamp: 1733808246880 - kind: conda @@ -4350,6 +4360,7 @@ packages: - libparquet 18.1.0 hfc78867_6_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 559673 timestamp: 1733810461646 - kind: conda @@ -4369,6 +4380,7 @@ packages: - libparquet 18.1.0 h081d1f1_6_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 586627 timestamp: 1733810842604 - kind: conda @@ -4387,6 +4399,7 @@ packages: - libcxx >=18 - libparquet 18.1.0 h636d7b7_6_cpu license: Apache-2.0 + license_family: APACHE size: 489948 timestamp: 1733809328231 - kind: conda @@ -4409,6 +4422,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 519989 timestamp: 1733810903274 - kind: conda @@ -4430,6 +4444,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 515928 timestamp: 1733810503359 - kind: conda @@ -4451,6 +4466,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 451623 timestamp: 1733809487176 - kind: conda @@ -6509,6 +6525,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1204535 timestamp: 1733810811118 - kind: conda @@ -6527,6 +6544,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 873134 timestamp: 1733809271282 - kind: conda @@ -6545,6 +6563,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1117592 timestamp: 1733810440129 - kind: conda @@ -7665,76 +7684,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - sha256: 615362341010917619474535366acf091cb347c23119bed104fe480c8850d5da - md5: ebeefd1387ece5a368049d2fd0335b3e - depends: - - max-core ==24.6.0.dev2024121016 release - - max-python >=24.6.0.dev2024121016,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024121016 release - - mblack ==24.6.0.dev2024121016 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + sha256: c53b72587f9fa54a9b0f5cb5345e772711cb0779610100ab4389b1f312a7ebc7 + md5: b91bff8456bcd2fd2aada4bafa51a358 + depends: + - max-core ==25.1.0.dev2024121105 release + - max-python >=25.1.0.dev2024121105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121105 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1733849930254 + size: 9923 + timestamp: 1733894234676 - kind: conda name: max-core - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024121016-release.conda - sha256: 9b26505259984bb428ab3ee931ae54762c7dc8169343eff23a77ebfbd04a9044 - md5: fc4ae46f8723642288111dd01e901813 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121105-release.conda + sha256: 23a9b3a31eddf232c2d91b45362eb79b0a8dfd4842e7d41f2719aa40bc53c37a + md5: c95a33b823ca2f36431033c1122212ba depends: - - mblack ==24.6.0.dev2024121016 release + - mblack ==25.1.0.dev2024121105 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247664506 - timestamp: 1733849767240 + size: 247768202 + timestamp: 1733894244133 - kind: conda name: max-core - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024121016-release.conda - sha256: 779ef6524a738c5f9c140f845d0febf9dbe321f76331dbd434a4d549251db0c2 - md5: 86075990f86559126140561a14c8aafc + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121105-release.conda + sha256: 22bb680d1e11a3640ae28b9d9faafa089b92a2fd6474ebdcc6b5c0e4da618664 + md5: 6e976d732a16860852a22686f7334ce4 depends: - - mblack ==24.6.0.dev2024121016 release + - mblack ==25.1.0.dev2024121105 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251595828 - timestamp: 1733849930252 + size: 251679560 + timestamp: 1733894234674 - kind: conda name: max-core - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024121016-release.conda - sha256: 3f2e56d822eca8789ee72e6d1eaa95fa2d633fa5a4991f73b5cbf64d62e2d73d - md5: 1928c2f7f79e2587edf7dd1be10bb2f7 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121105-release.conda + sha256: 5733d843377af66e94de2dd91cd8872d8f49baac81c6120ce2294a866d2f227f + md5: 84d6da2eb7585c49e1f71deec028c11a depends: - - mblack ==24.6.0.dev2024121016 release + - mblack ==25.1.0.dev2024121105 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212115307 - timestamp: 1733850300421 + size: 212215227 + timestamp: 1733894448570 - kind: conda name: max-python - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024121016-3.12release.conda - sha256: 6ad60d7c6c2234f3f02bc36267bfb0744c40dfcb70834710c9d90776db2a516f - md5: 7fef71eb6ab9bde6a60494f367ed0223 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121105-3.12release.conda + sha256: ad71429b6fa8d4e972a20a0a8f684420b6f162fdb1b22d36c32758a4f0f35d54 + md5: b7acc92cf44907a4c460026ad9c2cc45 depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python 3.12.* - fastapi - httpx @@ -7757,18 +7776,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123894250 - timestamp: 1733849767250 + size: 123912464 + timestamp: 1733894244143 - kind: conda name: max-python - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024121016-3.12release.conda - sha256: 98f0fb331b1f3eb89e1f0a7340d8364a8d5f84fc91f25bdd076bae8225d24950 - md5: 23c72404d9e7f8bc76745502b2e53609 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121105-3.12release.conda + sha256: 26f0f84532443a5e78098c17127dd0a04ca05a7c107e50aebc6b92abc9fe8a9f + md5: c4908b0138b01e14f9a8002624b42e25 depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python 3.12.* - fastapi - httpx @@ -7791,18 +7810,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127528623 - timestamp: 1733849930263 + size: 127580719 + timestamp: 1733894234684 - kind: conda name: max-python - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024121016-3.12release.conda - sha256: a12ef8ce21aee4490a7cf307a6072eaf84cd6df4d3e75dfbf61e438efffd5fd4 - md5: 6acba84a184a311186a957ba3e374a12 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121105-3.12release.conda + sha256: 42e409756f37919fdfda6e86d45e1814f68c102f23a8be42dd88b4f3dd816fae + md5: 4a180f1ab8a83b78d7282baf60e9280b depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python 3.12.* - fastapi - httpx @@ -7825,17 +7844,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112564915 - timestamp: 1733850300425 + size: 112620525 + timestamp: 1733894448573 - kind: conda name: mblack - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda - sha256: f9acaa65326bbc7f7e3158b1e20b0cdc7ac7da0ca925278566da7f80731146b5 - md5: 6e4496ad926e9f2e8c187f3c1cdd6a0c + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda + sha256: ee5c623d7908731bc5c42079cbb5d7ac461481c5bcaf615e25c4c8263f041793 + md5: 1271b7b52a8cc538e26ffbdd22743d3a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7845,8 +7864,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130747 - timestamp: 1733849930259 + size: 130789 + timestamp: 1733894234681 - kind: conda name: mdurl version: 0.1.2 @@ -7865,21 +7884,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda - sha256: e2a2514e4570f219e25f3f6f948d9035723b80df4fb9209598f34af17239a4f6 - md5: 0b20302cee375040ce15e8b795d7cda4 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda + sha256: c59130a6e8190e55b8881bd43429377da5368df6afed78b04c8df236d253a047 + md5: 35cc55bad72e3b9d0d490ff7af58c446 depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 23064 - timestamp: 1733849930259 + size: 22932 + timestamp: 1733894234682 - kind: conda name: mpg123 version: 1.32.9 @@ -7929,12 +7948,12 @@ packages: - kind: conda name: multidict version: 6.1.0 - build: py312h178313f_1 - build_number: 1 + build: py312h178313f_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - sha256: bf9cb8487f447098bd4a8248b4f176f34dd55be729a67b8ac2fdb984b80c5d46 - md5: e397d9b841c37fc3180b73275ce7e990 + url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 + md5: 5b5e3267d915a107eca793d52e1b780a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7942,17 +7961,17 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 61519 - timestamp: 1729065799315 + size: 61507 + timestamp: 1733913288935 - kind: conda name: multidict version: 6.1.0 - build: py312hcc812fe_1 - build_number: 1 + build: py312hcc812fe_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - sha256: 39264fd518c5dcda3affed162b874a58c775a5f5eb81e0aaf2387e92408a3490 - md5: 7629c9ce86495fa01cdfc3ea5418d03f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e + md5: dcf3ae213cf0ab40ebcc10452e1ed9fa depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -7960,8 +7979,8 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 62830 - timestamp: 1729065694252 + size: 63077 + timestamp: 1733913233032 - kind: conda name: multidict version: 6.1.0 @@ -8176,6 +8195,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause + license_family: BSD size: 377796 timestamp: 1733816683252 - kind: conda @@ -8194,6 +8214,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause + license_family: BSD size: 342988 timestamp: 1733816638720 - kind: conda @@ -8211,6 +8232,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause + license_family: BSD size: 319362 timestamp: 1733816781741 - kind: conda @@ -9351,6 +9373,7 @@ packages: - python >=3.9 - python-dotenv >=0.21.0 license: MIT + license_family: MIT size: 30832 timestamp: 1733851937909 - kind: conda @@ -10153,6 +10176,25 @@ packages: license_family: MIT size: 185646 timestamp: 1733342347277 +- kind: conda + name: rich-toolkit + version: 0.11.3 + build: pyh29332c3_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda + sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 + md5: 4ba15ae9388b67d09782798347481f69 + depends: + - python >=3.9 + - rich >=13.7.1 + - click >=8.1.7 + - typing_extensions >=4.12.2 + - python + license: MIT + license_family: MIT + size: 17357 + timestamp: 1733750834072 - kind: conda name: s2n version: 1.5.9 diff --git a/examples/magic.lock b/examples/magic.lock index 1f7d98b605..0294201855 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -50,7 +50,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py311h9ecbd09_0.conda @@ -131,13 +131,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024121016-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121105-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py311h459d7ec_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda @@ -186,6 +186,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda @@ -267,7 +268,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py311ha879c10_0.conda @@ -349,13 +350,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024121016-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121105-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py311hcd402e7_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda @@ -404,6 +405,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda @@ -484,7 +486,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py311hae2e1ce_0.conda @@ -558,12 +560,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024121016-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121105-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py311heffc1b2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -613,6 +615,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py311h481aa64_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda @@ -2354,22 +2357,22 @@ packages: timestamp: 1733362427885 - kind: conda name: fastapi-cli - version: 0.0.5 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.0.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - sha256: 2294f02beff318614a737454f1a432a6f4ae22216a85b296b7041fedab293516 - md5: d141225aba450ec07c771c73ac57bb43 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda + sha256: f0a900e1d8158915c71d9064699d97fc137058f71f5cdd257d79dbac07a41b63 + md5: 3256783cc0dd4cf3ff17198ce3b1782e depends: - - python >=3.8 + - python >=3.9 + - rich-toolkit >=0.11.1 - typer >=0.12.3 - uvicorn-standard >=0.15.0 license: MIT license_family: MIT - size: 14441 - timestamp: 1728947860847 + size: 15512 + timestamp: 1733881782160 - kind: conda name: filelock version: 3.16.1 @@ -2775,6 +2778,7 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 + license_family: APACHE size: 275466 timestamp: 1733852454004 - kind: conda @@ -3215,6 +3219,7 @@ packages: - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 8040629 timestamp: 1733810319239 - kind: conda @@ -3258,6 +3263,7 @@ packages: - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 8786061 timestamp: 1733810643966 - kind: conda @@ -3299,6 +3305,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 5494797 timestamp: 1733808145854 - kind: conda @@ -3315,6 +3322,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 578091 timestamp: 1733810378092 - kind: conda @@ -3332,6 +3340,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 611745 timestamp: 1733810698469 - kind: conda @@ -3348,6 +3357,7 @@ packages: - libarrow 18.1.0 h4a2f8bd_6_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 483713 timestamp: 1733808246880 - kind: conda @@ -3366,6 +3376,7 @@ packages: - libparquet 18.1.0 hfc78867_6_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 559673 timestamp: 1733810461646 - kind: conda @@ -3385,6 +3396,7 @@ packages: - libparquet 18.1.0 h081d1f1_6_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 586627 timestamp: 1733810842604 - kind: conda @@ -3403,6 +3415,7 @@ packages: - libcxx >=18 - libparquet 18.1.0 h636d7b7_6_cpu license: Apache-2.0 + license_family: APACHE size: 489948 timestamp: 1733809328231 - kind: conda @@ -3425,6 +3438,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 519989 timestamp: 1733810903274 - kind: conda @@ -3446,6 +3460,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 515928 timestamp: 1733810503359 - kind: conda @@ -3467,6 +3482,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 451623 timestamp: 1733809487176 - kind: conda @@ -4880,6 +4896,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1204535 timestamp: 1733810811118 - kind: conda @@ -4898,6 +4915,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 873134 timestamp: 1733809271282 - kind: conda @@ -4916,6 +4934,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1117592 timestamp: 1733810440129 - kind: conda @@ -5886,76 +5905,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - sha256: 615362341010917619474535366acf091cb347c23119bed104fe480c8850d5da - md5: ebeefd1387ece5a368049d2fd0335b3e - depends: - - max-core ==24.6.0.dev2024121016 release - - max-python >=24.6.0.dev2024121016,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024121016 release - - mblack ==24.6.0.dev2024121016 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + sha256: c53b72587f9fa54a9b0f5cb5345e772711cb0779610100ab4389b1f312a7ebc7 + md5: b91bff8456bcd2fd2aada4bafa51a358 + depends: + - max-core ==25.1.0.dev2024121105 release + - max-python >=25.1.0.dev2024121105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121105 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1733849930254 + size: 9923 + timestamp: 1733894234676 - kind: conda name: max-core - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024121016-release.conda - sha256: 9b26505259984bb428ab3ee931ae54762c7dc8169343eff23a77ebfbd04a9044 - md5: fc4ae46f8723642288111dd01e901813 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121105-release.conda + sha256: 23a9b3a31eddf232c2d91b45362eb79b0a8dfd4842e7d41f2719aa40bc53c37a + md5: c95a33b823ca2f36431033c1122212ba depends: - - mblack ==24.6.0.dev2024121016 release + - mblack ==25.1.0.dev2024121105 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247664506 - timestamp: 1733849767240 + size: 247768202 + timestamp: 1733894244133 - kind: conda name: max-core - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024121016-release.conda - sha256: 779ef6524a738c5f9c140f845d0febf9dbe321f76331dbd434a4d549251db0c2 - md5: 86075990f86559126140561a14c8aafc + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121105-release.conda + sha256: 22bb680d1e11a3640ae28b9d9faafa089b92a2fd6474ebdcc6b5c0e4da618664 + md5: 6e976d732a16860852a22686f7334ce4 depends: - - mblack ==24.6.0.dev2024121016 release + - mblack ==25.1.0.dev2024121105 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251595828 - timestamp: 1733849930252 + size: 251679560 + timestamp: 1733894234674 - kind: conda name: max-core - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024121016-release.conda - sha256: 3f2e56d822eca8789ee72e6d1eaa95fa2d633fa5a4991f73b5cbf64d62e2d73d - md5: 1928c2f7f79e2587edf7dd1be10bb2f7 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121105-release.conda + sha256: 5733d843377af66e94de2dd91cd8872d8f49baac81c6120ce2294a866d2f227f + md5: 84d6da2eb7585c49e1f71deec028c11a depends: - - mblack ==24.6.0.dev2024121016 release + - mblack ==25.1.0.dev2024121105 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212115307 - timestamp: 1733850300421 + size: 212215227 + timestamp: 1733894448570 - kind: conda name: max-python - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024121016-3.11release.conda - sha256: 2f24f2a838446515ebb49c3070c519d49920cc39f92a83314ff23737af1f9d84 - md5: 6326520f38d19d49f633ea77b0e8bfbc + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121105-3.11release.conda + sha256: 904ca17c0fee00733ca99428389e1710336ac34e0241a226ffc8d32bc5c54865 + md5: 3db74bf0ad5e48aeda0116f6206891f7 depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python 3.11.* - fastapi - httpx @@ -5978,18 +5997,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123880936 - timestamp: 1733849767247 + size: 123931619 + timestamp: 1733894244140 - kind: conda name: max-python - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024121016-3.11release.conda - sha256: 9224e8520677d4c2b4825dd9a817e35d1d53f8cd9c3f60bd9bcf17918ace0015 - md5: 4897a8cad68a55360727e3b7be35f94a + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121105-3.11release.conda + sha256: db33e9554a5f4cfe9260b8e32c5abee2f58cf32ec62daecc737c57212ca95eae + md5: 6cbaa5d456908961d8c7de2d6f2f8e0d depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python 3.11.* - fastapi - httpx @@ -6012,18 +6031,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127531643 - timestamp: 1733849930260 + size: 127581438 + timestamp: 1733894234682 - kind: conda name: max-python - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024121016-3.11release.conda - sha256: 597742dd59d02f97bd46d90a3b112c5c4c0b269f3033be949f084f182b0e0d0b - md5: 5f6bc1ac73ca9cd93ca918a72f1342aa + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121105-3.11release.conda + sha256: 38151b14b19c0b000215b4360f445afbeddf072eb65440b73a52d2e74f33a787 + md5: aa8ff7f500e2668163a295dffb7a51cb depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python 3.11.* - fastapi - httpx @@ -6046,17 +6065,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112597602 - timestamp: 1733850300424 + size: 112583374 + timestamp: 1733894448572 - kind: conda name: mblack - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda - sha256: f9acaa65326bbc7f7e3158b1e20b0cdc7ac7da0ca925278566da7f80731146b5 - md5: 6e4496ad926e9f2e8c187f3c1cdd6a0c + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda + sha256: ee5c623d7908731bc5c42079cbb5d7ac461481c5bcaf615e25c4c8263f041793 + md5: 1271b7b52a8cc538e26ffbdd22743d3a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6066,8 +6085,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130747 - timestamp: 1733849930259 + size: 130789 + timestamp: 1733894234681 - kind: conda name: mdurl version: 0.1.2 @@ -6086,30 +6105,30 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda - sha256: e2a2514e4570f219e25f3f6f948d9035723b80df4fb9209598f34af17239a4f6 - md5: 0b20302cee375040ce15e8b795d7cda4 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda + sha256: c59130a6e8190e55b8881bd43429377da5368df6afed78b04c8df236d253a047 + md5: 35cc55bad72e3b9d0d490ff7af58c446 depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 23064 - timestamp: 1733849930259 + size: 22932 + timestamp: 1733894234682 - kind: conda name: multidict version: 6.1.0 - build: py311h2dc5d0c_1 - build_number: 1 + build: py311h2dc5d0c_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - sha256: a7216675325306e3efe30d7036c53379eb391517792d051d738027bc3740aad5 - md5: 5384f857bd8b0fc3a62ce1ece858c89f + url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda + sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a + md5: bb8ca118919836624d920b4c44383a15 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6117,8 +6136,8 @@ packages: - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: APACHE - size: 63150 - timestamp: 1729065611493 + size: 62595 + timestamp: 1733913166104 - kind: conda name: multidict version: 6.1.0 @@ -6140,12 +6159,12 @@ packages: - kind: conda name: multidict version: 6.1.0 - build: py311h58d527c_1 - build_number: 1 + build: py311h58d527c_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - sha256: c37b29609e6779d7d1b2dd43d1f7d42fecff99fa0959cba5a0e63e7b6a1c8c67 - md5: b2ed30e04aa9a856b9e649f2ee9e2aa0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_2.conda + sha256: d892579630fb36f03325cfe6164d625cc14956f37055d1801c9a140a87a7406f + md5: 6951744a4c40630a76a7e976fb858952 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -6153,8 +6172,8 @@ packages: - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: APACHE - size: 64042 - timestamp: 1729065776220 + size: 63847 + timestamp: 1733913235773 - kind: conda name: multiprocess version: 0.70.15 @@ -6351,6 +6370,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause + license_family: BSD size: 377796 timestamp: 1733816683252 - kind: conda @@ -6369,6 +6389,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause + license_family: BSD size: 342988 timestamp: 1733816638720 - kind: conda @@ -6386,6 +6407,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause + license_family: BSD size: 319362 timestamp: 1733816781741 - kind: conda @@ -7237,6 +7259,7 @@ packages: - python >=3.9 - python-dotenv >=0.21.0 license: MIT + license_family: MIT size: 30832 timestamp: 1733851937909 - kind: conda @@ -7912,6 +7935,25 @@ packages: license_family: MIT size: 185646 timestamp: 1733342347277 +- kind: conda + name: rich-toolkit + version: 0.11.3 + build: pyh29332c3_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda + sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 + md5: 4ba15ae9388b67d09782798347481f69 + depends: + - python >=3.9 + - rich >=13.7.1 + - click >=8.1.7 + - typing_extensions >=4.12.2 + - python + license: MIT + license_family: MIT + size: 17357 + timestamp: 1733750834072 - kind: conda name: s2n version: 1.5.9 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index b98790de44..7661304812 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -66,7 +66,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda @@ -166,14 +166,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024121016-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda @@ -242,6 +242,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.3-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda @@ -354,7 +355,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda @@ -455,14 +456,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024121016-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda @@ -531,6 +532,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.3-py312ha4e36d7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda @@ -643,7 +645,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda @@ -736,13 +738,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024121016-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -814,6 +816,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.3-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -2933,22 +2936,22 @@ packages: timestamp: 1733362427885 - kind: conda name: fastapi-cli - version: 0.0.5 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.0.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - sha256: 2294f02beff318614a737454f1a432a6f4ae22216a85b296b7041fedab293516 - md5: d141225aba450ec07c771c73ac57bb43 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda + sha256: f0a900e1d8158915c71d9064699d97fc137058f71f5cdd257d79dbac07a41b63 + md5: 3256783cc0dd4cf3ff17198ce3b1782e depends: - - python >=3.8 + - python >=3.9 + - rich-toolkit >=0.11.1 - typer >=0.12.3 - uvicorn-standard >=0.15.0 license: MIT license_family: MIT - size: 14441 - timestamp: 1728947860847 + size: 15512 + timestamp: 1733881782160 - kind: conda name: filelock version: 3.16.1 @@ -3371,6 +3374,7 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 + license_family: APACHE size: 275466 timestamp: 1733852454004 - kind: conda @@ -4243,6 +4247,7 @@ packages: - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 8040629 timestamp: 1733810319239 - kind: conda @@ -4286,6 +4291,7 @@ packages: - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 8786061 timestamp: 1733810643966 - kind: conda @@ -4327,6 +4333,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 5494797 timestamp: 1733808145854 - kind: conda @@ -4343,6 +4350,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 578091 timestamp: 1733810378092 - kind: conda @@ -4360,6 +4368,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 611745 timestamp: 1733810698469 - kind: conda @@ -4376,6 +4385,7 @@ packages: - libarrow 18.1.0 h4a2f8bd_6_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 483713 timestamp: 1733808246880 - kind: conda @@ -4394,6 +4404,7 @@ packages: - libparquet 18.1.0 hfc78867_6_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 559673 timestamp: 1733810461646 - kind: conda @@ -4413,6 +4424,7 @@ packages: - libparquet 18.1.0 h081d1f1_6_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 586627 timestamp: 1733810842604 - kind: conda @@ -4431,6 +4443,7 @@ packages: - libcxx >=18 - libparquet 18.1.0 h636d7b7_6_cpu license: Apache-2.0 + license_family: APACHE size: 489948 timestamp: 1733809328231 - kind: conda @@ -4453,6 +4466,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 519989 timestamp: 1733810903274 - kind: conda @@ -4474,6 +4488,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 515928 timestamp: 1733810503359 - kind: conda @@ -4495,6 +4510,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 451623 timestamp: 1733809487176 - kind: conda @@ -5908,6 +5924,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1204535 timestamp: 1733810811118 - kind: conda @@ -5926,6 +5943,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 873134 timestamp: 1733809271282 - kind: conda @@ -5944,6 +5962,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1117592 timestamp: 1733810440129 - kind: conda @@ -6931,76 +6950,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - sha256: 615362341010917619474535366acf091cb347c23119bed104fe480c8850d5da - md5: ebeefd1387ece5a368049d2fd0335b3e + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + sha256: c53b72587f9fa54a9b0f5cb5345e772711cb0779610100ab4389b1f312a7ebc7 + md5: b91bff8456bcd2fd2aada4bafa51a358 depends: - - max-core ==24.6.0.dev2024121016 release - - max-python >=24.6.0.dev2024121016,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024121016 release - - mblack ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release + - max-python >=25.1.0.dev2024121105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121105 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1733849930254 + size: 9923 + timestamp: 1733894234676 - kind: conda name: max-core - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024121016-release.conda - sha256: 9b26505259984bb428ab3ee931ae54762c7dc8169343eff23a77ebfbd04a9044 - md5: fc4ae46f8723642288111dd01e901813 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121105-release.conda + sha256: 23a9b3a31eddf232c2d91b45362eb79b0a8dfd4842e7d41f2719aa40bc53c37a + md5: c95a33b823ca2f36431033c1122212ba depends: - - mblack ==24.6.0.dev2024121016 release + - mblack ==25.1.0.dev2024121105 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247664506 - timestamp: 1733849767240 + size: 247768202 + timestamp: 1733894244133 - kind: conda name: max-core - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024121016-release.conda - sha256: 779ef6524a738c5f9c140f845d0febf9dbe321f76331dbd434a4d549251db0c2 - md5: 86075990f86559126140561a14c8aafc + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121105-release.conda + sha256: 22bb680d1e11a3640ae28b9d9faafa089b92a2fd6474ebdcc6b5c0e4da618664 + md5: 6e976d732a16860852a22686f7334ce4 depends: - - mblack ==24.6.0.dev2024121016 release + - mblack ==25.1.0.dev2024121105 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251595828 - timestamp: 1733849930252 + size: 251679560 + timestamp: 1733894234674 - kind: conda name: max-core - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024121016-release.conda - sha256: 3f2e56d822eca8789ee72e6d1eaa95fa2d633fa5a4991f73b5cbf64d62e2d73d - md5: 1928c2f7f79e2587edf7dd1be10bb2f7 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121105-release.conda + sha256: 5733d843377af66e94de2dd91cd8872d8f49baac81c6120ce2294a866d2f227f + md5: 84d6da2eb7585c49e1f71deec028c11a depends: - - mblack ==24.6.0.dev2024121016 release + - mblack ==25.1.0.dev2024121105 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212115307 - timestamp: 1733850300421 + size: 212215227 + timestamp: 1733894448570 - kind: conda name: max-python - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024121016-3.12release.conda - sha256: 6ad60d7c6c2234f3f02bc36267bfb0744c40dfcb70834710c9d90776db2a516f - md5: 7fef71eb6ab9bde6a60494f367ed0223 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121105-3.12release.conda + sha256: ad71429b6fa8d4e972a20a0a8f684420b6f162fdb1b22d36c32758a4f0f35d54 + md5: b7acc92cf44907a4c460026ad9c2cc45 depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python 3.12.* - fastapi - httpx @@ -7023,18 +7042,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123894250 - timestamp: 1733849767250 + size: 123912464 + timestamp: 1733894244143 - kind: conda name: max-python - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024121016-3.12release.conda - sha256: 98f0fb331b1f3eb89e1f0a7340d8364a8d5f84fc91f25bdd076bae8225d24950 - md5: 23c72404d9e7f8bc76745502b2e53609 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121105-3.12release.conda + sha256: 26f0f84532443a5e78098c17127dd0a04ca05a7c107e50aebc6b92abc9fe8a9f + md5: c4908b0138b01e14f9a8002624b42e25 depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python 3.12.* - fastapi - httpx @@ -7057,18 +7076,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127528623 - timestamp: 1733849930263 + size: 127580719 + timestamp: 1733894234684 - kind: conda name: max-python - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024121016-3.12release.conda - sha256: a12ef8ce21aee4490a7cf307a6072eaf84cd6df4d3e75dfbf61e438efffd5fd4 - md5: 6acba84a184a311186a957ba3e374a12 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121105-3.12release.conda + sha256: 42e409756f37919fdfda6e86d45e1814f68c102f23a8be42dd88b4f3dd816fae + md5: 4a180f1ab8a83b78d7282baf60e9280b depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python 3.12.* - fastapi - httpx @@ -7091,17 +7110,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112564915 - timestamp: 1733850300425 + size: 112620525 + timestamp: 1733894448573 - kind: conda name: mblack - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda - sha256: f9acaa65326bbc7f7e3158b1e20b0cdc7ac7da0ca925278566da7f80731146b5 - md5: 6e4496ad926e9f2e8c187f3c1cdd6a0c + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda + sha256: ee5c623d7908731bc5c42079cbb5d7ac461481c5bcaf615e25c4c8263f041793 + md5: 1271b7b52a8cc538e26ffbdd22743d3a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7111,8 +7130,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130747 - timestamp: 1733849930259 + size: 130789 + timestamp: 1733894234681 - kind: conda name: mdurl version: 0.1.2 @@ -7147,30 +7166,30 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda - sha256: e2a2514e4570f219e25f3f6f948d9035723b80df4fb9209598f34af17239a4f6 - md5: 0b20302cee375040ce15e8b795d7cda4 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda + sha256: c59130a6e8190e55b8881bd43429377da5368df6afed78b04c8df236d253a047 + md5: 35cc55bad72e3b9d0d490ff7af58c446 depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 23064 - timestamp: 1733849930259 + size: 22932 + timestamp: 1733894234682 - kind: conda name: multidict version: 6.1.0 - build: py312h178313f_1 - build_number: 1 + build: py312h178313f_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - sha256: bf9cb8487f447098bd4a8248b4f176f34dd55be729a67b8ac2fdb984b80c5d46 - md5: e397d9b841c37fc3180b73275ce7e990 + url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 + md5: 5b5e3267d915a107eca793d52e1b780a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7178,17 +7197,17 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 61519 - timestamp: 1729065799315 + size: 61507 + timestamp: 1733913288935 - kind: conda name: multidict version: 6.1.0 - build: py312hcc812fe_1 - build_number: 1 + build: py312hcc812fe_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - sha256: 39264fd518c5dcda3affed162b874a58c775a5f5eb81e0aaf2387e92408a3490 - md5: 7629c9ce86495fa01cdfc3ea5418d03f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e + md5: dcf3ae213cf0ab40ebcc10452e1ed9fa depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -7196,8 +7215,8 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 62830 - timestamp: 1729065694252 + size: 63077 + timestamp: 1733913233032 - kind: conda name: multidict version: 6.1.0 @@ -7519,6 +7538,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause + license_family: BSD size: 377796 timestamp: 1733816683252 - kind: conda @@ -7537,6 +7557,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause + license_family: BSD size: 342988 timestamp: 1733816638720 - kind: conda @@ -7554,6 +7575,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause + license_family: BSD size: 319362 timestamp: 1733816781741 - kind: conda @@ -8613,6 +8635,7 @@ packages: - python >=3.9 - python-dotenv >=0.21.0 license: MIT + license_family: MIT size: 30832 timestamp: 1733851937909 - kind: conda @@ -9392,6 +9415,25 @@ packages: license_family: MIT size: 185646 timestamp: 1733342347277 +- kind: conda + name: rich-toolkit + version: 0.11.3 + build: pyh29332c3_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda + sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 + md5: 4ba15ae9388b67d09782798347481f69 + depends: + - python >=3.9 + - rich >=13.7.1 + - click >=8.1.7 + - typing_extensions >=4.12.2 + - python + license: MIT + license_family: MIT + size: 17357 + timestamp: 1733750834072 - kind: conda name: rpds-py version: 0.22.3 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index e2f9fe5e1e..7d43e54e0f 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -50,7 +50,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda @@ -131,13 +131,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024121016-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda @@ -186,6 +186,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda @@ -267,7 +268,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda @@ -349,13 +350,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024121016-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda @@ -404,6 +405,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda @@ -484,7 +486,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda @@ -558,12 +560,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024121016-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -613,6 +615,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda @@ -2354,22 +2357,22 @@ packages: timestamp: 1733362427885 - kind: conda name: fastapi-cli - version: 0.0.5 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.0.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - sha256: 2294f02beff318614a737454f1a432a6f4ae22216a85b296b7041fedab293516 - md5: d141225aba450ec07c771c73ac57bb43 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda + sha256: f0a900e1d8158915c71d9064699d97fc137058f71f5cdd257d79dbac07a41b63 + md5: 3256783cc0dd4cf3ff17198ce3b1782e depends: - - python >=3.8 + - python >=3.9 + - rich-toolkit >=0.11.1 - typer >=0.12.3 - uvicorn-standard >=0.15.0 license: MIT license_family: MIT - size: 14441 - timestamp: 1728947860847 + size: 15512 + timestamp: 1733881782160 - kind: conda name: filelock version: 3.16.1 @@ -2775,6 +2778,7 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 + license_family: APACHE size: 275466 timestamp: 1733852454004 - kind: conda @@ -3215,6 +3219,7 @@ packages: - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 8040629 timestamp: 1733810319239 - kind: conda @@ -3258,6 +3263,7 @@ packages: - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 8786061 timestamp: 1733810643966 - kind: conda @@ -3299,6 +3305,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 5494797 timestamp: 1733808145854 - kind: conda @@ -3315,6 +3322,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 578091 timestamp: 1733810378092 - kind: conda @@ -3332,6 +3340,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 611745 timestamp: 1733810698469 - kind: conda @@ -3348,6 +3357,7 @@ packages: - libarrow 18.1.0 h4a2f8bd_6_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 483713 timestamp: 1733808246880 - kind: conda @@ -3366,6 +3376,7 @@ packages: - libparquet 18.1.0 hfc78867_6_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 559673 timestamp: 1733810461646 - kind: conda @@ -3385,6 +3396,7 @@ packages: - libparquet 18.1.0 h081d1f1_6_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 586627 timestamp: 1733810842604 - kind: conda @@ -3403,6 +3415,7 @@ packages: - libcxx >=18 - libparquet 18.1.0 h636d7b7_6_cpu license: Apache-2.0 + license_family: APACHE size: 489948 timestamp: 1733809328231 - kind: conda @@ -3425,6 +3438,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 519989 timestamp: 1733810903274 - kind: conda @@ -3446,6 +3460,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 515928 timestamp: 1733810503359 - kind: conda @@ -3467,6 +3482,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 451623 timestamp: 1733809487176 - kind: conda @@ -4880,6 +4896,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1204535 timestamp: 1733810811118 - kind: conda @@ -4898,6 +4915,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 873134 timestamp: 1733809271282 - kind: conda @@ -4916,6 +4934,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1117592 timestamp: 1733810440129 - kind: conda @@ -5886,76 +5905,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - sha256: 615362341010917619474535366acf091cb347c23119bed104fe480c8850d5da - md5: ebeefd1387ece5a368049d2fd0335b3e - depends: - - max-core ==24.6.0.dev2024121016 release - - max-python >=24.6.0.dev2024121016,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024121016 release - - mblack ==24.6.0.dev2024121016 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + sha256: c53b72587f9fa54a9b0f5cb5345e772711cb0779610100ab4389b1f312a7ebc7 + md5: b91bff8456bcd2fd2aada4bafa51a358 + depends: + - max-core ==25.1.0.dev2024121105 release + - max-python >=25.1.0.dev2024121105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121105 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1733849930254 + size: 9923 + timestamp: 1733894234676 - kind: conda name: max-core - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024121016-release.conda - sha256: 9b26505259984bb428ab3ee931ae54762c7dc8169343eff23a77ebfbd04a9044 - md5: fc4ae46f8723642288111dd01e901813 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121105-release.conda + sha256: 23a9b3a31eddf232c2d91b45362eb79b0a8dfd4842e7d41f2719aa40bc53c37a + md5: c95a33b823ca2f36431033c1122212ba depends: - - mblack ==24.6.0.dev2024121016 release + - mblack ==25.1.0.dev2024121105 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247664506 - timestamp: 1733849767240 + size: 247768202 + timestamp: 1733894244133 - kind: conda name: max-core - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024121016-release.conda - sha256: 779ef6524a738c5f9c140f845d0febf9dbe321f76331dbd434a4d549251db0c2 - md5: 86075990f86559126140561a14c8aafc + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121105-release.conda + sha256: 22bb680d1e11a3640ae28b9d9faafa089b92a2fd6474ebdcc6b5c0e4da618664 + md5: 6e976d732a16860852a22686f7334ce4 depends: - - mblack ==24.6.0.dev2024121016 release + - mblack ==25.1.0.dev2024121105 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251595828 - timestamp: 1733849930252 + size: 251679560 + timestamp: 1733894234674 - kind: conda name: max-core - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024121016-release.conda - sha256: 3f2e56d822eca8789ee72e6d1eaa95fa2d633fa5a4991f73b5cbf64d62e2d73d - md5: 1928c2f7f79e2587edf7dd1be10bb2f7 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121105-release.conda + sha256: 5733d843377af66e94de2dd91cd8872d8f49baac81c6120ce2294a866d2f227f + md5: 84d6da2eb7585c49e1f71deec028c11a depends: - - mblack ==24.6.0.dev2024121016 release + - mblack ==25.1.0.dev2024121105 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212115307 - timestamp: 1733850300421 + size: 212215227 + timestamp: 1733894448570 - kind: conda name: max-python - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024121016-3.12release.conda - sha256: 6ad60d7c6c2234f3f02bc36267bfb0744c40dfcb70834710c9d90776db2a516f - md5: 7fef71eb6ab9bde6a60494f367ed0223 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121105-3.12release.conda + sha256: ad71429b6fa8d4e972a20a0a8f684420b6f162fdb1b22d36c32758a4f0f35d54 + md5: b7acc92cf44907a4c460026ad9c2cc45 depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python 3.12.* - fastapi - httpx @@ -5978,18 +5997,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123894250 - timestamp: 1733849767250 + size: 123912464 + timestamp: 1733894244143 - kind: conda name: max-python - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024121016-3.12release.conda - sha256: 98f0fb331b1f3eb89e1f0a7340d8364a8d5f84fc91f25bdd076bae8225d24950 - md5: 23c72404d9e7f8bc76745502b2e53609 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121105-3.12release.conda + sha256: 26f0f84532443a5e78098c17127dd0a04ca05a7c107e50aebc6b92abc9fe8a9f + md5: c4908b0138b01e14f9a8002624b42e25 depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python 3.12.* - fastapi - httpx @@ -6012,18 +6031,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127528623 - timestamp: 1733849930263 + size: 127580719 + timestamp: 1733894234684 - kind: conda name: max-python - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024121016-3.12release.conda - sha256: a12ef8ce21aee4490a7cf307a6072eaf84cd6df4d3e75dfbf61e438efffd5fd4 - md5: 6acba84a184a311186a957ba3e374a12 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121105-3.12release.conda + sha256: 42e409756f37919fdfda6e86d45e1814f68c102f23a8be42dd88b4f3dd816fae + md5: 4a180f1ab8a83b78d7282baf60e9280b depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python 3.12.* - fastapi - httpx @@ -6046,17 +6065,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112564915 - timestamp: 1733850300425 + size: 112620525 + timestamp: 1733894448573 - kind: conda name: mblack - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda - sha256: f9acaa65326bbc7f7e3158b1e20b0cdc7ac7da0ca925278566da7f80731146b5 - md5: 6e4496ad926e9f2e8c187f3c1cdd6a0c + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda + sha256: ee5c623d7908731bc5c42079cbb5d7ac461481c5bcaf615e25c4c8263f041793 + md5: 1271b7b52a8cc538e26ffbdd22743d3a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6066,8 +6085,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130747 - timestamp: 1733849930259 + size: 130789 + timestamp: 1733894234681 - kind: conda name: mdurl version: 0.1.2 @@ -6086,30 +6105,30 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda - sha256: e2a2514e4570f219e25f3f6f948d9035723b80df4fb9209598f34af17239a4f6 - md5: 0b20302cee375040ce15e8b795d7cda4 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda + sha256: c59130a6e8190e55b8881bd43429377da5368df6afed78b04c8df236d253a047 + md5: 35cc55bad72e3b9d0d490ff7af58c446 depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 23064 - timestamp: 1733849930259 + size: 22932 + timestamp: 1733894234682 - kind: conda name: multidict version: 6.1.0 - build: py312h178313f_1 - build_number: 1 + build: py312h178313f_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - sha256: bf9cb8487f447098bd4a8248b4f176f34dd55be729a67b8ac2fdb984b80c5d46 - md5: e397d9b841c37fc3180b73275ce7e990 + url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 + md5: 5b5e3267d915a107eca793d52e1b780a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6117,17 +6136,17 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 61519 - timestamp: 1729065799315 + size: 61507 + timestamp: 1733913288935 - kind: conda name: multidict version: 6.1.0 - build: py312hcc812fe_1 - build_number: 1 + build: py312hcc812fe_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - sha256: 39264fd518c5dcda3affed162b874a58c775a5f5eb81e0aaf2387e92408a3490 - md5: 7629c9ce86495fa01cdfc3ea5418d03f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e + md5: dcf3ae213cf0ab40ebcc10452e1ed9fa depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6135,8 +6154,8 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 62830 - timestamp: 1729065694252 + size: 63077 + timestamp: 1733913233032 - kind: conda name: multidict version: 6.1.0 @@ -6351,6 +6370,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause + license_family: BSD size: 377796 timestamp: 1733816683252 - kind: conda @@ -6369,6 +6389,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause + license_family: BSD size: 342988 timestamp: 1733816638720 - kind: conda @@ -6386,6 +6407,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause + license_family: BSD size: 319362 timestamp: 1733816781741 - kind: conda @@ -7237,6 +7259,7 @@ packages: - python >=3.9 - python-dotenv >=0.21.0 license: MIT + license_family: MIT size: 30832 timestamp: 1733851937909 - kind: conda @@ -7912,6 +7935,25 @@ packages: license_family: MIT size: 185646 timestamp: 1733342347277 +- kind: conda + name: rich-toolkit + version: 0.11.3 + build: pyh29332c3_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda + sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 + md5: 4ba15ae9388b67d09782798347481f69 + depends: + - python >=3.9 + - rich >=13.7.1 + - click >=8.1.7 + - typing_extensions >=4.12.2 + - python + license: MIT + license_family: MIT + size: 17357 + timestamp: 1733750834072 - kind: conda name: s2n version: 1.5.9 diff --git a/magic.lock b/magic.lock index 55952a5c89..912dc45d9a 100644 --- a/magic.lock +++ b/magic.lock @@ -50,7 +50,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda @@ -132,13 +132,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024121016-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda @@ -187,6 +187,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda @@ -268,7 +269,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda @@ -351,13 +352,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024121016-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda @@ -406,6 +407,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda @@ -486,7 +488,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda @@ -561,12 +563,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024121016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024121016-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -616,6 +618,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda @@ -2357,22 +2360,22 @@ packages: timestamp: 1733362427885 - kind: conda name: fastapi-cli - version: 0.0.5 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.0.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - sha256: 2294f02beff318614a737454f1a432a6f4ae22216a85b296b7041fedab293516 - md5: d141225aba450ec07c771c73ac57bb43 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda + sha256: f0a900e1d8158915c71d9064699d97fc137058f71f5cdd257d79dbac07a41b63 + md5: 3256783cc0dd4cf3ff17198ce3b1782e depends: - - python >=3.8 + - python >=3.9 + - rich-toolkit >=0.11.1 - typer >=0.12.3 - uvicorn-standard >=0.15.0 license: MIT license_family: MIT - size: 14441 - timestamp: 1728947860847 + size: 15512 + timestamp: 1733881782160 - kind: conda name: filelock version: 3.16.1 @@ -2778,6 +2781,7 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 + license_family: APACHE size: 275466 timestamp: 1733852454004 - kind: conda @@ -3218,6 +3222,7 @@ packages: - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 8040629 timestamp: 1733810319239 - kind: conda @@ -3261,6 +3266,7 @@ packages: - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 8786061 timestamp: 1733810643966 - kind: conda @@ -3302,6 +3308,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 5494797 timestamp: 1733808145854 - kind: conda @@ -3318,6 +3325,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 578091 timestamp: 1733810378092 - kind: conda @@ -3335,6 +3343,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 611745 timestamp: 1733810698469 - kind: conda @@ -3351,6 +3360,7 @@ packages: - libarrow 18.1.0 h4a2f8bd_6_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 483713 timestamp: 1733808246880 - kind: conda @@ -3369,6 +3379,7 @@ packages: - libparquet 18.1.0 hfc78867_6_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 559673 timestamp: 1733810461646 - kind: conda @@ -3388,6 +3399,7 @@ packages: - libparquet 18.1.0 h081d1f1_6_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 586627 timestamp: 1733810842604 - kind: conda @@ -3406,6 +3418,7 @@ packages: - libcxx >=18 - libparquet 18.1.0 h636d7b7_6_cpu license: Apache-2.0 + license_family: APACHE size: 489948 timestamp: 1733809328231 - kind: conda @@ -3428,6 +3441,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 519989 timestamp: 1733810903274 - kind: conda @@ -3449,6 +3463,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 515928 timestamp: 1733810503359 - kind: conda @@ -3470,6 +3485,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 451623 timestamp: 1733809487176 - kind: conda @@ -4883,6 +4899,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1204535 timestamp: 1733810811118 - kind: conda @@ -4901,6 +4918,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 873134 timestamp: 1733809271282 - kind: conda @@ -4919,6 +4937,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1117592 timestamp: 1733810440129 - kind: conda @@ -5904,76 +5923,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024121016-release.conda - sha256: 615362341010917619474535366acf091cb347c23119bed104fe480c8850d5da - md5: ebeefd1387ece5a368049d2fd0335b3e - depends: - - max-core ==24.6.0.dev2024121016 release - - max-python >=24.6.0.dev2024121016,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024121016 release - - mblack ==24.6.0.dev2024121016 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda + sha256: c53b72587f9fa54a9b0f5cb5345e772711cb0779610100ab4389b1f312a7ebc7 + md5: b91bff8456bcd2fd2aada4bafa51a358 + depends: + - max-core ==25.1.0.dev2024121105 release + - max-python >=25.1.0.dev2024121105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121105 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1733849930254 + size: 9923 + timestamp: 1733894234676 - kind: conda name: max-core - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024121016-release.conda - sha256: 9b26505259984bb428ab3ee931ae54762c7dc8169343eff23a77ebfbd04a9044 - md5: fc4ae46f8723642288111dd01e901813 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121105-release.conda + sha256: 23a9b3a31eddf232c2d91b45362eb79b0a8dfd4842e7d41f2719aa40bc53c37a + md5: c95a33b823ca2f36431033c1122212ba depends: - - mblack ==24.6.0.dev2024121016 release + - mblack ==25.1.0.dev2024121105 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247664506 - timestamp: 1733849767240 + size: 247768202 + timestamp: 1733894244133 - kind: conda name: max-core - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024121016-release.conda - sha256: 779ef6524a738c5f9c140f845d0febf9dbe321f76331dbd434a4d549251db0c2 - md5: 86075990f86559126140561a14c8aafc + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121105-release.conda + sha256: 22bb680d1e11a3640ae28b9d9faafa089b92a2fd6474ebdcc6b5c0e4da618664 + md5: 6e976d732a16860852a22686f7334ce4 depends: - - mblack ==24.6.0.dev2024121016 release + - mblack ==25.1.0.dev2024121105 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251595828 - timestamp: 1733849930252 + size: 251679560 + timestamp: 1733894234674 - kind: conda name: max-core - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024121016-release.conda - sha256: 3f2e56d822eca8789ee72e6d1eaa95fa2d633fa5a4991f73b5cbf64d62e2d73d - md5: 1928c2f7f79e2587edf7dd1be10bb2f7 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121105-release.conda + sha256: 5733d843377af66e94de2dd91cd8872d8f49baac81c6120ce2294a866d2f227f + md5: 84d6da2eb7585c49e1f71deec028c11a depends: - - mblack ==24.6.0.dev2024121016 release + - mblack ==25.1.0.dev2024121105 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212115307 - timestamp: 1733850300421 + size: 212215227 + timestamp: 1733894448570 - kind: conda name: max-python - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024121016-3.12release.conda - sha256: 6ad60d7c6c2234f3f02bc36267bfb0744c40dfcb70834710c9d90776db2a516f - md5: 7fef71eb6ab9bde6a60494f367ed0223 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121105-3.12release.conda + sha256: ad71429b6fa8d4e972a20a0a8f684420b6f162fdb1b22d36c32758a4f0f35d54 + md5: b7acc92cf44907a4c460026ad9c2cc45 depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python 3.12.* - fastapi - httpx @@ -5996,18 +6015,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123894250 - timestamp: 1733849767250 + size: 123912464 + timestamp: 1733894244143 - kind: conda name: max-python - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024121016-3.12release.conda - sha256: 98f0fb331b1f3eb89e1f0a7340d8364a8d5f84fc91f25bdd076bae8225d24950 - md5: 23c72404d9e7f8bc76745502b2e53609 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121105-3.12release.conda + sha256: 26f0f84532443a5e78098c17127dd0a04ca05a7c107e50aebc6b92abc9fe8a9f + md5: c4908b0138b01e14f9a8002624b42e25 depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python 3.12.* - fastapi - httpx @@ -6030,18 +6049,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127528623 - timestamp: 1733849930263 + size: 127580719 + timestamp: 1733894234684 - kind: conda name: max-python - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024121016-3.12release.conda - sha256: a12ef8ce21aee4490a7cf307a6072eaf84cd6df4d3e75dfbf61e438efffd5fd4 - md5: 6acba84a184a311186a957ba3e374a12 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121105-3.12release.conda + sha256: 42e409756f37919fdfda6e86d45e1814f68c102f23a8be42dd88b4f3dd816fae + md5: 4a180f1ab8a83b78d7282baf60e9280b depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python 3.12.* - fastapi - httpx @@ -6064,17 +6083,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112564915 - timestamp: 1733850300425 + size: 112620525 + timestamp: 1733894448573 - kind: conda name: mblack - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda - sha256: f9acaa65326bbc7f7e3158b1e20b0cdc7ac7da0ca925278566da7f80731146b5 - md5: 6e4496ad926e9f2e8c187f3c1cdd6a0c + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda + sha256: ee5c623d7908731bc5c42079cbb5d7ac461481c5bcaf615e25c4c8263f041793 + md5: 1271b7b52a8cc538e26ffbdd22743d3a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6084,8 +6103,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130747 - timestamp: 1733849930259 + size: 130789 + timestamp: 1733894234681 - kind: conda name: mdurl version: 0.1.2 @@ -6104,30 +6123,30 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024121016 + version: 25.1.0.dev2024121105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda - sha256: e2a2514e4570f219e25f3f6f948d9035723b80df4fb9209598f34af17239a4f6 - md5: 0b20302cee375040ce15e8b795d7cda4 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda + sha256: c59130a6e8190e55b8881bd43429377da5368df6afed78b04c8df236d253a047 + md5: 35cc55bad72e3b9d0d490ff7af58c446 depends: - - max-core ==24.6.0.dev2024121016 release + - max-core ==25.1.0.dev2024121105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 23064 - timestamp: 1733849930259 + size: 22932 + timestamp: 1733894234682 - kind: conda name: multidict version: 6.1.0 - build: py312h178313f_1 - build_number: 1 + build: py312h178313f_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - sha256: bf9cb8487f447098bd4a8248b4f176f34dd55be729a67b8ac2fdb984b80c5d46 - md5: e397d9b841c37fc3180b73275ce7e990 + url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 + md5: 5b5e3267d915a107eca793d52e1b780a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6135,17 +6154,17 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 61519 - timestamp: 1729065799315 + size: 61507 + timestamp: 1733913288935 - kind: conda name: multidict version: 6.1.0 - build: py312hcc812fe_1 - build_number: 1 + build: py312hcc812fe_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - sha256: 39264fd518c5dcda3affed162b874a58c775a5f5eb81e0aaf2387e92408a3490 - md5: 7629c9ce86495fa01cdfc3ea5418d03f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e + md5: dcf3ae213cf0ab40ebcc10452e1ed9fa depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6153,8 +6172,8 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 62830 - timestamp: 1729065694252 + size: 63077 + timestamp: 1733913233032 - kind: conda name: multidict version: 6.1.0 @@ -6369,6 +6388,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause + license_family: BSD size: 377796 timestamp: 1733816683252 - kind: conda @@ -6387,6 +6407,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause + license_family: BSD size: 342988 timestamp: 1733816638720 - kind: conda @@ -6404,6 +6425,7 @@ packages: - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause + license_family: BSD size: 319362 timestamp: 1733816781741 - kind: conda @@ -7255,6 +7277,7 @@ packages: - python >=3.9 - python-dotenv >=0.21.0 license: MIT + license_family: MIT size: 30832 timestamp: 1733851937909 - kind: conda @@ -7930,6 +7953,25 @@ packages: license_family: MIT size: 185646 timestamp: 1733342347277 +- kind: conda + name: rich-toolkit + version: 0.11.3 + build: pyh29332c3_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda + sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 + md5: 4ba15ae9388b67d09782798347481f69 + depends: + - python >=3.9 + - rich >=13.7.1 + - click >=8.1.7 + - typing_extensions >=4.12.2 + - python + license: MIT + license_family: MIT + size: 17357 + timestamp: 1733750834072 - kind: conda name: s2n version: 1.5.9